@noctuatech/uswds 0.0.28 → 0.0.29

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 (253) hide show
  1. package/assets/uswds.min.js +1 -0
  2. package/package.json +1 -1
  3. package/src/lib/file-input/file-input-preview/file-input-preview.test.ts +2 -2
  4. package/src/lib/file-input/file-input.element.ts +58 -20
  5. package/target/lib/accordion/accordion.element.d.ts +19 -0
  6. package/target/lib/accordion/accordion.element.js +166 -0
  7. package/target/lib/accordion/accordion.element.js.map +1 -0
  8. package/target/lib/accordion/accordion.stories.d.ts +12 -0
  9. package/target/lib/accordion/accordion.stories.js +42 -0
  10. package/target/lib/accordion/accordion.stories.js.map +1 -0
  11. package/target/lib/accordion/accordion.test.d.ts +1 -0
  12. package/target/lib/accordion/accordion.test.js +113 -0
  13. package/target/lib/accordion/accordion.test.js.map +1 -0
  14. package/target/lib/alert/alert-types.d.ts +7 -0
  15. package/target/lib/alert/alert-types.js +25 -0
  16. package/target/lib/alert/alert-types.js.map +1 -0
  17. package/target/lib/alert/alert.element.d.ts +11 -0
  18. package/target/lib/alert/alert.element.js +122 -0
  19. package/target/lib/alert/alert.element.js.map +1 -0
  20. package/target/lib/alert/alert.stories.d.ts +11 -0
  21. package/target/lib/alert/alert.stories.js +56 -0
  22. package/target/lib/alert/alert.stories.js.map +1 -0
  23. package/target/lib/alert/alert.test.d.ts +1 -0
  24. package/target/lib/alert/alert.test.js +20 -0
  25. package/target/lib/alert/alert.test.js.map +1 -0
  26. package/target/lib/button/button.element.d.ts +20 -0
  27. package/target/lib/button/button.element.js +263 -0
  28. package/target/lib/button/button.element.js.map +1 -0
  29. package/target/lib/button/button.stories.d.ts +12 -0
  30. package/target/lib/button/button.stories.js +22 -0
  31. package/target/lib/button/button.stories.js.map +1 -0
  32. package/target/lib/button/button.test.d.ts +1 -0
  33. package/target/lib/button/button.test.js +14 -0
  34. package/target/lib/button/button.test.js.map +1 -0
  35. package/target/lib/card/card-body/card-body.element.d.ts +7 -0
  36. package/target/lib/card/card-body/card-body.element.js +35 -0
  37. package/target/lib/card/card-body/card-body.element.js.map +1 -0
  38. package/target/lib/card/card-footer/card-footer.element.d.ts +7 -0
  39. package/target/lib/card/card-footer/card-footer.element.js +33 -0
  40. package/target/lib/card/card-footer/card-footer.element.js.map +1 -0
  41. package/target/lib/card/card-group/card-group.element.d.ts +8 -0
  42. package/target/lib/card/card-group/card-group.element.js +51 -0
  43. package/target/lib/card/card-group/card-group.element.js.map +1 -0
  44. package/target/lib/card/card-header/card-header.element.d.ts +7 -0
  45. package/target/lib/card/card-header/card-header.element.js +43 -0
  46. package/target/lib/card/card-header/card-header.element.js.map +1 -0
  47. package/target/lib/card/card-media/card-media.element.d.ts +8 -0
  48. package/target/lib/card/card-media/card-media.element.js +71 -0
  49. package/target/lib/card/card-media/card-media.element.js.map +1 -0
  50. package/target/lib/card/card.element.d.ts +9 -0
  51. package/target/lib/card/card.element.js +79 -0
  52. package/target/lib/card/card.element.js.map +1 -0
  53. package/target/lib/card/card.stories.d.ts +12 -0
  54. package/target/lib/card/card.stories.js +126 -0
  55. package/target/lib/card/card.stories.js.map +1 -0
  56. package/target/lib/card/card.test.d.ts +6 -0
  57. package/target/lib/card/card.test.js +33 -0
  58. package/target/lib/card/card.test.js.map +1 -0
  59. package/target/lib/checkbox/checkbox.element.d.ts +17 -0
  60. package/target/lib/checkbox/checkbox.element.js +206 -0
  61. package/target/lib/checkbox/checkbox.element.js.map +1 -0
  62. package/target/lib/checkbox/checkbox.stories.d.ts +31 -0
  63. package/target/lib/checkbox/checkbox.stories.js +46 -0
  64. package/target/lib/checkbox/checkbox.stories.js.map +1 -0
  65. package/target/lib/checkbox/checkbox.test.d.ts +1 -0
  66. package/target/lib/checkbox/checkbox.test.js +52 -0
  67. package/target/lib/checkbox/checkbox.test.js.map +1 -0
  68. package/target/lib/config/config.element.d.ts +6 -0
  69. package/target/lib/config/config.element.js +53 -0
  70. package/target/lib/config/config.element.js.map +1 -0
  71. package/target/lib/config/config.test.d.ts +1 -0
  72. package/target/lib/config/config.test.js +11 -0
  73. package/target/lib/config/config.test.js.map +1 -0
  74. package/target/lib/define.d.ts +32 -0
  75. package/target/lib/define.js +33 -0
  76. package/target/lib/define.js.map +1 -0
  77. package/target/lib/description/description.element.d.ts +7 -0
  78. package/target/lib/description/description.element.js +34 -0
  79. package/target/lib/description/description.element.js.map +1 -0
  80. package/target/lib/description/description.test.d.ts +1 -0
  81. package/target/lib/description/description.test.js +11 -0
  82. package/target/lib/description/description.test.js.map +1 -0
  83. package/target/lib/file-input/file-input-preview/file-input-preview.element.d.ts +12 -0
  84. package/target/lib/file-input/file-input-preview/file-input-preview.element.js +153 -0
  85. package/target/lib/file-input/file-input-preview/file-input-preview.element.js.map +1 -0
  86. package/target/lib/file-input/file-input-preview/file-input-preview.test.d.ts +2 -0
  87. package/target/lib/file-input/file-input-preview/file-input-preview.test.js +67 -0
  88. package/target/lib/file-input/file-input-preview/file-input-preview.test.js.map +1 -0
  89. package/target/lib/file-input/file-input.element.d.ts +19 -0
  90. package/target/lib/file-input/file-input.element.js +217 -0
  91. package/target/lib/file-input/file-input.element.js.map +1 -0
  92. package/target/lib/file-input/file-input.stories.d.ts +12 -0
  93. package/target/lib/file-input/file-input.stories.js +34 -0
  94. package/target/lib/file-input/file-input.stories.js.map +1 -0
  95. package/target/lib/file-input/file-input.test.d.ts +1 -0
  96. package/target/lib/file-input/file-input.test.js +37 -0
  97. package/target/lib/file-input/file-input.test.js.map +1 -0
  98. package/target/lib/icon/icon-types.d.ts +2 -0
  99. package/target/lib/icon/icon-types.js +262 -0
  100. package/target/lib/icon/icon-types.js.map +1 -0
  101. package/target/lib/icon/icon.element.d.ts +13 -0
  102. package/target/lib/icon/icon.element.js +72 -0
  103. package/target/lib/icon/icon.element.js.map +1 -0
  104. package/target/lib/icon/icon.stories.d.ts +12 -0
  105. package/target/lib/icon/icon.stories.js +39 -0
  106. package/target/lib/icon/icon.stories.js.map +1 -0
  107. package/target/lib/input/input.element.d.ts +24 -0
  108. package/target/lib/input/input.element.js +235 -0
  109. package/target/lib/input/input.element.js.map +1 -0
  110. package/target/lib/input/input.stories.d.ts +12 -0
  111. package/target/lib/input/input.stories.js +25 -0
  112. package/target/lib/input/input.stories.js.map +1 -0
  113. package/target/lib/input/input.test.d.ts +1 -0
  114. package/target/lib/input/input.test.js +50 -0
  115. package/target/lib/input/input.test.js.map +1 -0
  116. package/target/lib/input-mask/format.d.ts +15 -0
  117. package/target/lib/input-mask/format.js +47 -0
  118. package/target/lib/input-mask/format.js.map +1 -0
  119. package/target/lib/input-mask/input-mask.element.d.ts +12 -0
  120. package/target/lib/input-mask/input-mask.element.js +106 -0
  121. package/target/lib/input-mask/input-mask.element.js.map +1 -0
  122. package/target/lib/input-mask/input-mask.stories.d.ts +14 -0
  123. package/target/lib/input-mask/input-mask.stories.js +30 -0
  124. package/target/lib/input-mask/input-mask.stories.js.map +1 -0
  125. package/target/lib/input-mask/input-mask.test.d.ts +2 -0
  126. package/target/lib/input-mask/input-mask.test.js +89 -0
  127. package/target/lib/input-mask/input-mask.test.js.map +1 -0
  128. package/target/lib/input-mask/maskable.element.d.ts +5 -0
  129. package/target/lib/input-mask/maskable.element.js +2 -0
  130. package/target/lib/input-mask/maskable.element.js.map +1 -0
  131. package/target/lib/link/link.element.d.ts +13 -0
  132. package/target/lib/link/link.element.js +93 -0
  133. package/target/lib/link/link.element.js.map +1 -0
  134. package/target/lib/link/link.stories.d.ts +16 -0
  135. package/target/lib/link/link.stories.js +23 -0
  136. package/target/lib/link/link.stories.js.map +1 -0
  137. package/target/lib/modal/modal-close/modal-close.element.d.ts +8 -0
  138. package/target/lib/modal/modal-close/modal-close.element.js +76 -0
  139. package/target/lib/modal/modal-close/modal-close.element.js.map +1 -0
  140. package/target/lib/modal/modal-close/modal-close.test.d.ts +1 -0
  141. package/target/lib/modal/modal-close/modal-close.test.js +11 -0
  142. package/target/lib/modal/modal-close/modal-close.test.js.map +1 -0
  143. package/target/lib/modal/modal-heading/modal-heading.element.d.ts +7 -0
  144. package/target/lib/modal/modal-heading/modal-heading.element.js +50 -0
  145. package/target/lib/modal/modal-heading/modal-heading.element.js.map +1 -0
  146. package/target/lib/modal/modal-heading/modal-heading.test.d.ts +1 -0
  147. package/target/lib/modal/modal-heading/modal-heading.test.js +11 -0
  148. package/target/lib/modal/modal-heading/modal-heading.test.js.map +1 -0
  149. package/target/lib/modal/modal.element.d.ts +13 -0
  150. package/target/lib/modal/modal.element.js +91 -0
  151. package/target/lib/modal/modal.element.js.map +1 -0
  152. package/target/lib/modal/modal.stories.d.ts +12 -0
  153. package/target/lib/modal/modal.stories.js +34 -0
  154. package/target/lib/modal/modal.stories.js.map +1 -0
  155. package/target/lib/modal/modal.test.d.ts +3 -0
  156. package/target/lib/modal/modal.test.js +21 -0
  157. package/target/lib/modal/modal.test.js.map +1 -0
  158. package/target/lib/radio/context.d.ts +7 -0
  159. package/target/lib/radio/context.js +3 -0
  160. package/target/lib/radio/context.js.map +1 -0
  161. package/target/lib/radio/radio-option/radio-option.element.d.ts +12 -0
  162. package/target/lib/radio/radio-option/radio-option.element.js +89 -0
  163. package/target/lib/radio/radio-option/radio-option.element.js.map +1 -0
  164. package/target/lib/radio/radio-option/radio-option.test.d.ts +2 -0
  165. package/target/lib/radio/radio-option/radio-option.test.js +15 -0
  166. package/target/lib/radio/radio-option/radio-option.test.js.map +1 -0
  167. package/target/lib/radio/radio.element.d.ts +17 -0
  168. package/target/lib/radio/radio.element.js +169 -0
  169. package/target/lib/radio/radio.element.js.map +1 -0
  170. package/target/lib/radio/radio.stories.d.ts +17 -0
  171. package/target/lib/radio/radio.stories.js +46 -0
  172. package/target/lib/radio/radio.stories.js.map +1 -0
  173. package/target/lib/radio/radio.test.d.ts +2 -0
  174. package/target/lib/radio/radio.test.js +143 -0
  175. package/target/lib/radio/radio.test.js.map +1 -0
  176. package/target/lib/select/context.d.ts +6 -0
  177. package/target/lib/select/context.js +3 -0
  178. package/target/lib/select/context.js.map +1 -0
  179. package/target/lib/select/select-option/select-option.element.d.ts +14 -0
  180. package/target/lib/select/select-option/select-option.element.js +74 -0
  181. package/target/lib/select/select-option/select-option.element.js.map +1 -0
  182. package/target/lib/select/select.element.d.ts +17 -0
  183. package/target/lib/select/select.element.js +141 -0
  184. package/target/lib/select/select.element.js.map +1 -0
  185. package/target/lib/select/select.stories.d.ts +12 -0
  186. package/target/lib/select/select.stories.js +26 -0
  187. package/target/lib/select/select.stories.js.map +1 -0
  188. package/target/lib/select/select.test.d.ts +2 -0
  189. package/target/lib/select/select.test.js +105 -0
  190. package/target/lib/select/select.test.js.map +1 -0
  191. package/target/lib/services/http.service.d.ts +3 -0
  192. package/target/lib/services/http.service.js +24 -0
  193. package/target/lib/services/http.service.js.map +1 -0
  194. package/target/lib/services/icon.service.d.ts +4 -0
  195. package/target/lib/services/icon.service.js +60 -0
  196. package/target/lib/services/icon.service.js.map +1 -0
  197. package/target/lib/services/icon.service.test.d.ts +1 -0
  198. package/target/lib/services/icon.service.test.js +52 -0
  199. package/target/lib/services/icon.service.test.js.map +1 -0
  200. package/target/lib/side-nav/side-nav-item/side-nav-item.element.d.ts +8 -0
  201. package/target/lib/side-nav/side-nav-item/side-nav-item.element.js +107 -0
  202. package/target/lib/side-nav/side-nav-item/side-nav-item.element.js.map +1 -0
  203. package/target/lib/side-nav/side-nav.element.d.ts +8 -0
  204. package/target/lib/side-nav/side-nav.element.js +47 -0
  205. package/target/lib/side-nav/side-nav.element.js.map +1 -0
  206. package/target/lib/side-nav/side-nav.stories.d.ts +12 -0
  207. package/target/lib/side-nav/side-nav.stories.js +55 -0
  208. package/target/lib/side-nav/side-nav.stories.js.map +1 -0
  209. package/target/lib/side-nav/side-nav.test.d.ts +3 -0
  210. package/target/lib/side-nav/side-nav.test.js +93 -0
  211. package/target/lib/side-nav/side-nav.test.js.map +1 -0
  212. package/target/lib/step-indicator/step/step.element.d.ts +10 -0
  213. package/target/lib/step-indicator/step/step.element.js +151 -0
  214. package/target/lib/step-indicator/step/step.element.js.map +1 -0
  215. package/target/lib/step-indicator/step-indicator.element.d.ts +8 -0
  216. package/target/lib/step-indicator/step-indicator.element.js +48 -0
  217. package/target/lib/step-indicator/step-indicator.element.js.map +1 -0
  218. package/target/lib/step-indicator/step-indicator.stories.d.ts +21 -0
  219. package/target/lib/step-indicator/step-indicator.stories.js +45 -0
  220. package/target/lib/step-indicator/step-indicator.stories.js.map +1 -0
  221. package/target/lib/step-indicator/step-indicator.test.d.ts +2 -0
  222. package/target/lib/step-indicator/step-indicator.test.js +18 -0
  223. package/target/lib/step-indicator/step-indicator.test.js.map +1 -0
  224. package/target/lib/summary-box/summary-box.element.d.ts +7 -0
  225. package/target/lib/summary-box/summary-box.element.js +40 -0
  226. package/target/lib/summary-box/summary-box.element.js.map +1 -0
  227. package/target/lib/summary-box/summary-box.stories.d.ts +12 -0
  228. package/target/lib/summary-box/summary-box.stories.js +17 -0
  229. package/target/lib/summary-box/summary-box.stories.js.map +1 -0
  230. package/target/lib/summary-box/summary-box.test.d.ts +1 -0
  231. package/target/lib/summary-box/summary-box.test.js +11 -0
  232. package/target/lib/summary-box/summary-box.test.js.map +1 -0
  233. package/target/lib/tag/tag.element.d.ts +10 -0
  234. package/target/lib/tag/tag.element.js +57 -0
  235. package/target/lib/tag/tag.element.js.map +1 -0
  236. package/target/lib/tag/tag.stories.d.ts +19 -0
  237. package/target/lib/tag/tag.stories.js +25 -0
  238. package/target/lib/tag/tag.stories.js.map +1 -0
  239. package/target/lib/tag/tag.test.d.ts +1 -0
  240. package/target/lib/tag/tag.test.js +11 -0
  241. package/target/lib/tag/tag.test.js.map +1 -0
  242. package/target/lib/textarea/textarea.element.d.ts +19 -0
  243. package/target/lib/textarea/textarea.element.js +171 -0
  244. package/target/lib/textarea/textarea.element.js.map +1 -0
  245. package/target/lib/textarea/textarea.stories.d.ts +12 -0
  246. package/target/lib/textarea/textarea.stories.js +17 -0
  247. package/target/lib/textarea/textarea.stories.js.map +1 -0
  248. package/target/lib/textarea/textarea.test.d.ts +1 -0
  249. package/target/lib/textarea/textarea.test.js +50 -0
  250. package/target/lib/textarea/textarea.test.js.map +1 -0
  251. package/target/lib.d.ts +32 -0
  252. package/target/lib.js +33 -0
  253. package/target/lib.js.map +1 -0
@@ -0,0 +1,72 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { inject, injectable, injected } from "@joist/di";
3
+ import { attr, css, element } from "@joist/element";
4
+ import { IconService } from "../services/icon.service.js";
5
+ let USAIconElement = (() => {
6
+ let _classDecorators = [element({
7
+ tagName: "usa-icon",
8
+ shadowDom: [
9
+ css `
10
+ :host {
11
+ display: inline-block;
12
+ height: 2rem;
13
+ position: relative;
14
+ width: 2rem;
15
+ }
16
+
17
+ svg {
18
+ fill: currentColor;
19
+ height: 100%;
20
+ width: 100%;
21
+ }
22
+ `,
23
+ ],
24
+ }), injectable()];
25
+ let _classDescriptor;
26
+ let _classExtraInitializers = [];
27
+ let _classThis;
28
+ let _classSuper = HTMLElement;
29
+ let _instanceExtraInitializers = [];
30
+ let _icon_decorators;
31
+ let _icon_initializers = [];
32
+ let _icon_extraInitializers = [];
33
+ let _onInjected_decorators;
34
+ var USAIconElement = class extends _classSuper {
35
+ static { _classThis = this; }
36
+ static {
37
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
38
+ _icon_decorators = [attr()];
39
+ _onInjected_decorators = [injected()];
40
+ __esDecorate(this, null, _icon_decorators, { kind: "accessor", name: "icon", static: false, private: false, access: { has: obj => "icon" in obj, get: obj => obj.icon, set: (obj, value) => { obj.icon = value; } }, metadata: _metadata }, _icon_initializers, _icon_extraInitializers);
41
+ __esDecorate(this, null, _onInjected_decorators, { kind: "method", name: "onInjected", static: false, private: false, access: { has: obj => "onInjected" in obj, get: obj => obj.onInjected }, metadata: _metadata }, null, _instanceExtraInitializers);
42
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
43
+ USAIconElement = _classThis = _classDescriptor.value;
44
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
45
+ __runInitializers(_classThis, _classExtraInitializers);
46
+ }
47
+ #icon_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _icon_initializers, "accessibility_new"));
48
+ get icon() { return this.#icon_accessor_storage; }
49
+ set icon(value) { this.#icon_accessor_storage = value; }
50
+ ariaHidden = (__runInitializers(this, _icon_extraInitializers), "true");
51
+ #icon = inject(IconService);
52
+ #injected = false;
53
+ onInjected() {
54
+ this.#injected = true;
55
+ this.#updateIcon();
56
+ }
57
+ attributeChangedCallback() {
58
+ if (this.#injected) {
59
+ this.#updateIcon();
60
+ }
61
+ }
62
+ async #updateIcon() {
63
+ const icon = this.#icon();
64
+ if (this.shadowRoot) {
65
+ this.shadowRoot.append(await icon.getIcon(this.icon));
66
+ }
67
+ }
68
+ };
69
+ return USAIconElement = _classThis;
70
+ })();
71
+ export { USAIconElement };
72
+ //# sourceMappingURL=icon.element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.element.js","sourceRoot":"","sources":["../../../src/lib/icon/icon.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;IA6B7C,cAAc;4BApB1B,OAAO,CAAC;YACP,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE;gBACT,GAAG,CAAA;;;;;;;;;;;;;KAaF;aACF;SACF,CAAC,EACD,UAAU,EAAE;;;;sBACuB,WAAW;;;;;;8BAAnB,SAAQ,WAAW;;;;gCAC5C,IAAI,EAAE;sCAQN,QAAQ,EAAE;YAPX,iKAAS,IAAI,6BAAJ,IAAI,mFAAgC;YAQ7C,iLAAA,UAAU,6DAGT;YAbH,6KA4BC;;;YA5BY,uDAAc;;QAEzB,0BAFW,mDAAc,8CAEA,mBAAmB,GAAC;QAA7C,IAAS,IAAI,0CAAgC;QAA7C,IAAS,IAAI,gDAAgC;QAE7C,UAAU,sDAAkB,MAAM,EAAC;QAEnC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5B,SAAS,GAAG,KAAK,CAAC;QAGlB,UAAU;YACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;QAED,wBAAwB;YACtB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,WAAW;YACf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAE1B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;;;;SA3BU,cAAc"}
@@ -0,0 +1,12 @@
1
+ import type { StoryObj } from "@storybook/web-components";
2
+ import type { USAIconElement } from "./icon.element.js";
3
+ declare const meta: {
4
+ title: string;
5
+ tags: never[];
6
+ render(args: USAIconElement): import("lit-html").TemplateResult<1>;
7
+ argTypes: {};
8
+ args: {};
9
+ };
10
+ export default meta;
11
+ type Story = StoryObj<USAIconElement>;
12
+ export declare const AllIcons: Story;
@@ -0,0 +1,39 @@
1
+ import { html } from "lit";
2
+ import { ICON_TYPES } from "./icon-types.js";
3
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
4
+ const meta = {
5
+ title: "usa-icon",
6
+ tags: [],
7
+ render(args) {
8
+ return html `<usa-icon icon=${args.icon}></usa-icon>`;
9
+ },
10
+ argTypes: {},
11
+ args: {},
12
+ };
13
+ export default meta;
14
+ export const AllIcons = {
15
+ render() {
16
+ async function copyIcon(icon) {
17
+ try {
18
+ await navigator.clipboard.writeText(`<usa-icon icon=${icon}></usa-icon>`);
19
+ alert(`copied markup for ${icon}`);
20
+ }
21
+ catch (err) {
22
+ console.error("Failed to copy: ", err);
23
+ }
24
+ }
25
+ return html `<div style="display: flex; flex-wrap: wrap; gap: .75rem;">
26
+ ${html `${ICON_TYPES.map((icon) => html `
27
+ <button
28
+ @click=${() => copyIcon(icon)}
29
+ style="padding: .5rem 1rem .5rem .5rem; cursor: pointer; background: #fff; border-radius: 4px; gap: .5rem; display: flex; align-items: center"
30
+ >
31
+ <usa-icon icon=${icon}></usa-icon>
32
+
33
+ ${icon}
34
+ </button>
35
+ `)}`}
36
+ </div>`;
37
+ },
38
+ };
39
+ //# sourceMappingURL=icon.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.stories.js","sourceRoot":"","sources":["../../../src/lib/icon/icon.stories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,kFAAkF;AAClF,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,EAAE;IACR,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,CAAA,kBAAkB,IAAI,CAAC,IAAI,cAAc,CAAC;IACvD,CAAC;IACD,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,EAAE;CACsB,CAAC;AAEjC,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,MAAM;QACJ,KAAK,UAAU,QAAQ,CAAC,IAAY;YAClC,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CACjC,kBAAkB,IAAI,cAAc,CACrC,CAAC;gBACF,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;QACP,IAAI,CAAA,GAAG,UAAU,CAAC,GAAG,CACrB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;;qBAED,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;;;6BAGZ,IAAI;;cAEnB,IAAI;;SAET,CACF,EAAE;WACE,CAAC;IACV,CAAC;CACF,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type Changes } from "@joist/observable";
2
+ import type { MaskableElement } from "../input-mask/maskable.element.js";
3
+ declare global {
4
+ interface HTMLElementTagNameMap {
5
+ "usa-input": USATextInputElement;
6
+ }
7
+ }
8
+ export declare class USATextInputElement extends HTMLElement implements MaskableElement {
9
+ #private;
10
+ static formAssociated: boolean;
11
+ accessor name: string;
12
+ accessor autocomplete: AutoFill;
13
+ accessor placeholder: string;
14
+ accessor required: boolean;
15
+ accessor detail: "pfx" | "sfx" | "";
16
+ accessor value: string;
17
+ accessor selectionStart: number | null;
18
+ accessor selectionEnd: number | null;
19
+ onReady(): void;
20
+ connectedCallback(): void;
21
+ onChange(changes: Changes<this>): void;
22
+ onInputChange(): void;
23
+ attributeChangedCallback(attr: string): void;
24
+ }
@@ -0,0 +1,235 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { attr, css, element, html, listen, query, ready } from "@joist/element";
3
+ import { effect, observe } from "@joist/observable";
4
+ let USATextInputElement = (() => {
5
+ let _classDecorators = [element({
6
+ tagName: "usa-input",
7
+ shadowDomOpts: {
8
+ mode: "open",
9
+ delegatesFocus: true,
10
+ },
11
+ shadowDom: [
12
+ css `
13
+ * {
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ :host {
18
+ font-size: 1.06rem;
19
+ line-height: 1.3;
20
+ display: block;
21
+ font-weight: 400;
22
+ max-width: 30rem;
23
+ margin-bottom: 1.5rem;
24
+ position: relative;
25
+ }
26
+
27
+ input {
28
+ border-width: 1px;
29
+ border-color: #5c5c5c;
30
+ border-style: solid;
31
+ border-radius: 0;
32
+ color: #1b1b1b;
33
+ display: block;
34
+ height: 2.5rem;
35
+ line-height: 1.3;
36
+ font-size: 1.06rem;
37
+ margin-top: 0.5rem;
38
+ padding: 0.5rem;
39
+ width: 100%;
40
+ }
41
+
42
+ input:not(:disabled):focus {
43
+ outline: 0.25rem solid #2491ff;
44
+ outline-offset: 0;
45
+ }
46
+
47
+ slot[name="detail"]::slotted(*) {
48
+ color: #757575;
49
+ }
50
+
51
+ slot[name="detail"]::slotted(usa-icon) {
52
+ width: 1.5rem;
53
+ height: 1.5rem;
54
+ }
55
+
56
+ slot[name="detail"] {
57
+ display: block;
58
+ position: absolute;
59
+ bottom: 0.21rem;
60
+ left: 0.5rem;
61
+ }
62
+
63
+ :host([detail="pfx"]) input {
64
+ padding-left: 2.5rem;
65
+ }
66
+
67
+ :host([detail="sfx"]) input {
68
+ padding-right: 2.5rem;
69
+ }
70
+
71
+ :host([detail="sfx"]) slot[name="detail"] {
72
+ right: 0.5rem;
73
+ left: auto;
74
+ }
75
+ `,
76
+ html `
77
+ <label>
78
+ <slot name="detail"></slot>
79
+
80
+ <slot></slot>
81
+
82
+ <input tabindex="0" />
83
+ </label>
84
+ `,
85
+ ],
86
+ })];
87
+ let _classDescriptor;
88
+ let _classExtraInitializers = [];
89
+ let _classThis;
90
+ let _classSuper = HTMLElement;
91
+ let _instanceExtraInitializers = [];
92
+ let _name_decorators;
93
+ let _name_initializers = [];
94
+ let _name_extraInitializers = [];
95
+ let _autocomplete_decorators;
96
+ let _autocomplete_initializers = [];
97
+ let _autocomplete_extraInitializers = [];
98
+ let _placeholder_decorators;
99
+ let _placeholder_initializers = [];
100
+ let _placeholder_extraInitializers = [];
101
+ let _required_decorators;
102
+ let _required_initializers = [];
103
+ let _required_extraInitializers = [];
104
+ let _detail_decorators;
105
+ let _detail_initializers = [];
106
+ let _detail_extraInitializers = [];
107
+ let _value_decorators;
108
+ let _value_initializers = [];
109
+ let _value_extraInitializers = [];
110
+ let _selectionStart_decorators;
111
+ let _selectionStart_initializers = [];
112
+ let _selectionStart_extraInitializers = [];
113
+ let _selectionEnd_decorators;
114
+ let _selectionEnd_initializers = [];
115
+ let _selectionEnd_extraInitializers = [];
116
+ let _onReady_decorators;
117
+ let _onChange_decorators;
118
+ let _onInputChange_decorators;
119
+ var USATextInputElement = class extends _classSuper {
120
+ static { _classThis = this; }
121
+ static {
122
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
123
+ _name_decorators = [attr()];
124
+ _autocomplete_decorators = [attr()];
125
+ _placeholder_decorators = [attr()];
126
+ _required_decorators = [attr()];
127
+ _detail_decorators = [attr({
128
+ observed: false,
129
+ })];
130
+ _value_decorators = [attr({
131
+ reflect: false,
132
+ }), observe()];
133
+ _selectionStart_decorators = [observe()];
134
+ _selectionEnd_decorators = [observe()];
135
+ _onReady_decorators = [ready()];
136
+ _onChange_decorators = [effect()];
137
+ _onInputChange_decorators = [listen("input")];
138
+ __esDecorate(this, null, _name_decorators, { kind: "accessor", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
139
+ __esDecorate(this, null, _autocomplete_decorators, { kind: "accessor", name: "autocomplete", static: false, private: false, access: { has: obj => "autocomplete" in obj, get: obj => obj.autocomplete, set: (obj, value) => { obj.autocomplete = value; } }, metadata: _metadata }, _autocomplete_initializers, _autocomplete_extraInitializers);
140
+ __esDecorate(this, null, _placeholder_decorators, { kind: "accessor", name: "placeholder", static: false, private: false, access: { has: obj => "placeholder" in obj, get: obj => obj.placeholder, set: (obj, value) => { obj.placeholder = value; } }, metadata: _metadata }, _placeholder_initializers, _placeholder_extraInitializers);
141
+ __esDecorate(this, null, _required_decorators, { kind: "accessor", name: "required", static: false, private: false, access: { has: obj => "required" in obj, get: obj => obj.required, set: (obj, value) => { obj.required = value; } }, metadata: _metadata }, _required_initializers, _required_extraInitializers);
142
+ __esDecorate(this, null, _detail_decorators, { kind: "accessor", name: "detail", static: false, private: false, access: { has: obj => "detail" in obj, get: obj => obj.detail, set: (obj, value) => { obj.detail = value; } }, metadata: _metadata }, _detail_initializers, _detail_extraInitializers);
143
+ __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
144
+ __esDecorate(this, null, _selectionStart_decorators, { kind: "accessor", name: "selectionStart", static: false, private: false, access: { has: obj => "selectionStart" in obj, get: obj => obj.selectionStart, set: (obj, value) => { obj.selectionStart = value; } }, metadata: _metadata }, _selectionStart_initializers, _selectionStart_extraInitializers);
145
+ __esDecorate(this, null, _selectionEnd_decorators, { kind: "accessor", name: "selectionEnd", static: false, private: false, access: { has: obj => "selectionEnd" in obj, get: obj => obj.selectionEnd, set: (obj, value) => { obj.selectionEnd = value; } }, metadata: _metadata }, _selectionEnd_initializers, _selectionEnd_extraInitializers);
146
+ __esDecorate(this, null, _onReady_decorators, { kind: "method", name: "onReady", static: false, private: false, access: { has: obj => "onReady" in obj, get: obj => obj.onReady }, metadata: _metadata }, null, _instanceExtraInitializers);
147
+ __esDecorate(this, null, _onChange_decorators, { kind: "method", name: "onChange", static: false, private: false, access: { has: obj => "onChange" in obj, get: obj => obj.onChange }, metadata: _metadata }, null, _instanceExtraInitializers);
148
+ __esDecorate(this, null, _onInputChange_decorators, { kind: "method", name: "onInputChange", static: false, private: false, access: { has: obj => "onInputChange" in obj, get: obj => obj.onInputChange }, metadata: _metadata }, null, _instanceExtraInitializers);
149
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
150
+ USATextInputElement = _classThis = _classDescriptor.value;
151
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
152
+ }
153
+ static formAssociated = true;
154
+ #name_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _name_initializers, ""));
155
+ get name() { return this.#name_accessor_storage; }
156
+ set name(value) { this.#name_accessor_storage = value; }
157
+ #autocomplete_accessor_storage = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _autocomplete_initializers, "on"));
158
+ get autocomplete() { return this.#autocomplete_accessor_storage; }
159
+ set autocomplete(value) { this.#autocomplete_accessor_storage = value; }
160
+ #placeholder_accessor_storage = (__runInitializers(this, _autocomplete_extraInitializers), __runInitializers(this, _placeholder_initializers, ""));
161
+ get placeholder() { return this.#placeholder_accessor_storage; }
162
+ set placeholder(value) { this.#placeholder_accessor_storage = value; }
163
+ #required_accessor_storage = (__runInitializers(this, _placeholder_extraInitializers), __runInitializers(this, _required_initializers, false));
164
+ get required() { return this.#required_accessor_storage; }
165
+ set required(value) { this.#required_accessor_storage = value; }
166
+ #detail_accessor_storage = (__runInitializers(this, _required_extraInitializers), __runInitializers(this, _detail_initializers, ""));
167
+ get detail() { return this.#detail_accessor_storage; }
168
+ set detail(value) { this.#detail_accessor_storage = value; }
169
+ #value_accessor_storage = (__runInitializers(this, _detail_extraInitializers), __runInitializers(this, _value_initializers, ""));
170
+ get value() { return this.#value_accessor_storage; }
171
+ set value(value) { this.#value_accessor_storage = value; }
172
+ #selectionStart_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _selectionStart_initializers, null));
173
+ get selectionStart() { return this.#selectionStart_accessor_storage; }
174
+ set selectionStart(value) { this.#selectionStart_accessor_storage = value; }
175
+ #selectionEnd_accessor_storage = (__runInitializers(this, _selectionStart_extraInitializers), __runInitializers(this, _selectionEnd_initializers, null));
176
+ get selectionEnd() { return this.#selectionEnd_accessor_storage; }
177
+ set selectionEnd(value) { this.#selectionEnd_accessor_storage = value; }
178
+ #internals = (__runInitializers(this, _selectionEnd_extraInitializers), this.attachInternals());
179
+ #input = query("input");
180
+ onReady() {
181
+ const input = this.#input();
182
+ input.autofocus = this.autofocus;
183
+ }
184
+ connectedCallback() {
185
+ this.#syncFormState();
186
+ }
187
+ onChange(changes) {
188
+ const input = this.#input();
189
+ input.value = this.value;
190
+ if (changes.has("selectionStart")) {
191
+ input.selectionStart = this.selectionStart;
192
+ }
193
+ if (changes.has("selectionEnd")) {
194
+ input.selectionEnd = this.selectionEnd;
195
+ }
196
+ this.#syncFormState();
197
+ }
198
+ onInputChange() {
199
+ const input = this.#input();
200
+ this.value = input.value;
201
+ this.selectionStart = input.selectionStart;
202
+ this.selectionEnd = input.selectionEnd;
203
+ }
204
+ attributeChangedCallback(attr) {
205
+ const input = this.#input();
206
+ switch (attr) {
207
+ case "autocomplete":
208
+ input.autocomplete = this.autocomplete;
209
+ break;
210
+ case "placeholder":
211
+ input.placeholder = this.placeholder;
212
+ break;
213
+ case "name":
214
+ input.name = this.name;
215
+ break;
216
+ }
217
+ }
218
+ #syncFormState() {
219
+ const input = this.#input();
220
+ this.#internals.setFormValue(input.value);
221
+ if (this.required && !input.value) {
222
+ this.#internals.setValidity({ valueMissing: true }, "Required", input);
223
+ }
224
+ else {
225
+ this.#internals.setValidity({});
226
+ }
227
+ }
228
+ static {
229
+ __runInitializers(_classThis, _classExtraInitializers);
230
+ }
231
+ };
232
+ return USATextInputElement = _classThis;
233
+ })();
234
+ export { USATextInputElement };
235
+ //# sourceMappingURL=input.element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.element.js","sourceRoot":"","sources":["../../../src/lib/input/input.element.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { StoryObj } from "@storybook/web-components";
2
+ import type { USATextInputElement } from "./input.element.js";
3
+ declare const meta: {
4
+ title: string;
5
+ tags: string[];
6
+ render(): import("lit-html").TemplateResult<1>;
7
+ argTypes: {};
8
+ args: {};
9
+ };
10
+ export default meta;
11
+ type Story = StoryObj<USATextInputElement>;
12
+ export declare const Primary: Story;
@@ -0,0 +1,25 @@
1
+ import { html } from "lit";
2
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
3
+ const meta = {
4
+ title: "usa-input",
5
+ tags: ["autodocs"],
6
+ render() {
7
+ return html `
8
+ <form>
9
+ <usa-input name="fname" value="Danny" autocomplete="off" detail="pfx">
10
+ <usa-icon icon="credit_card" slot="detail"></usa-icon>
11
+
12
+ First name
13
+ </usa-input>
14
+
15
+ <usa-button type="submit">Submit</usa-button>
16
+ </form>
17
+ `;
18
+ },
19
+ argTypes: {},
20
+ args: {},
21
+ };
22
+ export default meta;
23
+ // More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
24
+ export const Primary = {};
25
+ //# sourceMappingURL=input.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.stories.js","sourceRoot":"","sources":["../../../src/lib/input/input.stories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAI3B,kFAAkF;AAClF,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;;;KAUV,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,EAAE;CAC2B,CAAC;AAEtC,eAAe,IAAI,CAAC;AAIpB,wFAAwF;AACxF,MAAM,CAAC,MAAM,OAAO,GAAU,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ import "./input.element.js";
@@ -0,0 +1,50 @@
1
+ import "./input.element.js";
2
+ import { fireEvent } from "@noctuatech-uswds/testing";
3
+ import { assert, fixture, html } from "@open-wc/testing";
4
+ describe("usa-input", () => {
5
+ it("should be accessible", async () => {
6
+ const form = await fixture(html `
7
+ <usa-input name="fname" value="Foo">Hello World</usa-input>
8
+ `);
9
+ return assert.isAccessible(form);
10
+ });
11
+ it("should submit form with default values", async () => {
12
+ const form = await fixture(html `
13
+ <form>
14
+ <usa-input name="fname" value="Foo">Hello World</usa-input>
15
+
16
+ <button>Submit</button>
17
+ </form>
18
+ `);
19
+ const value = new FormData(form);
20
+ assert.equal(value.get("fname"), "Foo");
21
+ });
22
+ it("should update form value as input value changed", async () => {
23
+ const form = await fixture(html `
24
+ <form>
25
+ <usa-input name="fname">Hello World</usa-input>
26
+
27
+ <button>Submit</button>
28
+ </form>
29
+ `);
30
+ const input = form.querySelector("usa-input");
31
+ const nativeInput = input?.shadowRoot?.querySelector("input");
32
+ if (nativeInput) {
33
+ nativeInput.value = "Bar";
34
+ await fireEvent.input(nativeInput, { bubbles: true });
35
+ }
36
+ const value = new FormData(form);
37
+ assert.equal(value.get("fname"), "Bar");
38
+ });
39
+ it("should not submit when not valid", async () => {
40
+ const form = await fixture(html `
41
+ <form>
42
+ <usa-input name="fname" required>Hello World</usa-input>
43
+
44
+ <button>Submit</button>
45
+ </form>
46
+ `);
47
+ assert.equal(form.checkValidity(), false);
48
+ });
49
+ });
50
+ //# sourceMappingURL=input.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.test.js","sourceRoot":"","sources":["../../../src/lib/input/input.test.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEzD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;KAE/C,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;;;;;KAM/C,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;;;;;KAM/C,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,KAAK,EAAE,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;YAE1B,MAAM,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAA;;;;;;KAM/C,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare enum PatternChar {
2
+ Any = "*",
3
+ Number = "9",
4
+ Letter = "A"
5
+ }
6
+ export declare const PATTERN_CHARS: PatternChar[];
7
+ export declare const REG_EXPS: {
8
+ Letters: RegExp;
9
+ Numbers: RegExp;
10
+ };
11
+ export interface FormattedResult {
12
+ raw: string;
13
+ formatted: string;
14
+ }
15
+ export declare function format(value: string, pattern: string): FormattedResult;
@@ -0,0 +1,47 @@
1
+ export var PatternChar;
2
+ (function (PatternChar) {
3
+ PatternChar["Any"] = "*";
4
+ PatternChar["Number"] = "9";
5
+ PatternChar["Letter"] = "A";
6
+ })(PatternChar || (PatternChar = {}));
7
+ export const PATTERN_CHARS = Object.values(PatternChar);
8
+ export const REG_EXPS = {
9
+ Letters: /^[a-z]/i,
10
+ Numbers: /^[0-9]/i,
11
+ };
12
+ export function format(value, pattern) {
13
+ const raw = value.replace(/[^a-z0-9]/gi, ""); // remove all special chars
14
+ const chars = raw.split("");
15
+ let count = 0;
16
+ let formatted = "";
17
+ for (let i = 0; i < pattern.length; i++) {
18
+ const patternChar = pattern[i];
19
+ const char = chars[count];
20
+ if (char && patternChar) {
21
+ if (patternChar === PatternChar.Any) {
22
+ // Any letter or number
23
+ formatted += char;
24
+ count++;
25
+ }
26
+ else if (patternChar === PatternChar.Number) {
27
+ // Numbers only
28
+ if (/^[0-9]/i.test(char)) {
29
+ formatted += char;
30
+ }
31
+ count++;
32
+ }
33
+ else if (patternChar === PatternChar.Letter) {
34
+ // Letters only
35
+ if (/^[a-z]/i.test(char)) {
36
+ formatted += char;
37
+ }
38
+ count++;
39
+ }
40
+ else {
41
+ formatted += patternChar;
42
+ }
43
+ }
44
+ }
45
+ return { raw, formatted };
46
+ }
47
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/lib/input-mask/format.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,wBAAS,CAAA;IACT,2BAAY,CAAA;IACZ,2BAAY,CAAA;AACd,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACnB,CAAC;AAOF,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,OAAe;IACnD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,2BAA2B;IACzE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;YACxB,IAAI,WAAW,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpC,uBAAuB;gBACvB,SAAS,IAAI,IAAI,CAAC;gBAClB,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,IAAI,WAAW,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC9C,eAAe;gBACf,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,SAAS,IAAI,IAAI,CAAC;gBACpB,CAAC;gBAED,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,IAAI,WAAW,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC9C,eAAe;gBACf,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,SAAS,IAAI,IAAI,CAAC;gBACpB,CAAC;gBAED,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,SAAS,IAAI,WAAW,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,12 @@
1
+ declare global {
2
+ interface HTMLElementTagNameMap {
3
+ "usa-input-mask": USAInputMaskElement;
4
+ }
5
+ }
6
+ export declare class USAInputMaskElement extends HTMLElement {
7
+ #private;
8
+ accessor mask: string;
9
+ connectedCallback(): void;
10
+ onInput(e: Event): void;
11
+ onKeyDown(e: KeyboardEvent): void;
12
+ }