@noctuatech/uswds 0.0.3 → 0.0.5

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 (65) hide show
  1. package/README.md +1 -1
  2. package/assets/uswds.min.js +1 -1
  3. package/package.json +4 -4
  4. package/src/lib/accordion/accordion.element.ts +147 -0
  5. package/src/lib/accordion/accordion.stories.ts +49 -0
  6. package/src/lib/accordion/accordion.test.ts +160 -0
  7. package/src/lib/checkbox/checkbox.element.ts +4 -1
  8. package/src/lib/define.ts +4 -0
  9. package/src/lib/link/link.element.ts +6 -2
  10. package/src/lib/radio/radio-option.element.ts +31 -13
  11. package/src/lib/radio/radio.element.ts +28 -40
  12. package/src/lib/radio/radio.stories.ts +18 -8
  13. package/src/lib/select/select-option.element.ts +10 -11
  14. package/src/lib/select/select.element.ts +7 -21
  15. package/src/lib/side-nav/side-nav-item.element.ts +86 -0
  16. package/src/lib/side-nav/side-nav.element.ts +25 -0
  17. package/src/lib/side-nav/side-nav.stories.ts +62 -0
  18. package/src/lib/side-nav/side-nav.test.ts +110 -0
  19. package/src/lib.ts +2 -0
  20. package/target/lib/accordion/accordion.element.d.ts +19 -0
  21. package/target/lib/accordion/accordion.element.js +172 -0
  22. package/target/lib/accordion/accordion.element.js.map +1 -0
  23. package/target/lib/accordion/accordion.stories.d.ts +12 -0
  24. package/target/lib/accordion/accordion.stories.js +42 -0
  25. package/target/lib/accordion/accordion.stories.js.map +1 -0
  26. package/target/lib/accordion/accordion.test.d.ts +1 -0
  27. package/target/lib/accordion/accordion.test.js +113 -0
  28. package/target/lib/accordion/accordion.test.js.map +1 -0
  29. package/target/lib/checkbox/checkbox.element.js +4 -1
  30. package/target/lib/checkbox/checkbox.element.js.map +1 -1
  31. package/target/lib/define.d.ts +4 -0
  32. package/target/lib/define.js +4 -0
  33. package/target/lib/define.js.map +1 -1
  34. package/target/lib/link/link.element.js +6 -2
  35. package/target/lib/link/link.element.js.map +1 -1
  36. package/target/lib/radio/radio-option.element.d.ts +5 -2
  37. package/target/lib/radio/radio-option.element.js +37 -15
  38. package/target/lib/radio/radio-option.element.js.map +1 -1
  39. package/target/lib/radio/radio.element.d.ts +2 -3
  40. package/target/lib/radio/radio.element.js +31 -36
  41. package/target/lib/radio/radio.element.js.map +1 -1
  42. package/target/lib/radio/radio.stories.d.ts +7 -2
  43. package/target/lib/radio/radio.stories.js +13 -7
  44. package/target/lib/radio/radio.stories.js.map +1 -1
  45. package/target/lib/select/select-option.element.d.ts +2 -1
  46. package/target/lib/select/select-option.element.js +8 -11
  47. package/target/lib/select/select-option.element.js.map +1 -1
  48. package/target/lib/select/select.element.d.ts +1 -3
  49. package/target/lib/select/select.element.js +10 -19
  50. package/target/lib/select/select.element.js.map +1 -1
  51. package/target/lib/side-nav/side-nav-item.element.d.ts +8 -0
  52. package/target/lib/side-nav/side-nav-item.element.js +109 -0
  53. package/target/lib/side-nav/side-nav-item.element.js.map +1 -0
  54. package/target/lib/side-nav/side-nav.element.d.ts +8 -0
  55. package/target/lib/side-nav/side-nav.element.js +36 -0
  56. package/target/lib/side-nav/side-nav.element.js.map +1 -0
  57. package/target/lib/side-nav/side-nav.stories.d.ts +12 -0
  58. package/target/lib/side-nav/side-nav.stories.js +55 -0
  59. package/target/lib/side-nav/side-nav.stories.js.map +1 -0
  60. package/target/lib/side-nav/side-nav.test.d.ts +2 -0
  61. package/target/lib/side-nav/side-nav.test.js +92 -0
  62. package/target/lib/side-nav/side-nav.test.js.map +1 -0
  63. package/target/lib.d.ts +2 -0
  64. package/target/lib.js +2 -0
  65. package/target/lib.js.map +1 -1
@@ -1,19 +1,17 @@
1
1
  import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers, __setFunctionName } from "tslib";
2
- import { attr, css, element, html, listen, query } from "@joist/element";
2
+ import { attr, css, element, html, listen } from "@joist/element";
3
+ import { USARadioOptionElement } from "./radio-option.element.js";
3
4
  let USARadioElement = (() => {
4
- var _USARadioElement_radios, _USARadioElement_internals, _USARadioElement_value_accessor_storage, _USARadioElement_name_accessor_storage, _USARadioElement_tiled_accessor_storage;
5
+ var _USARadioElement_internals, _USARadioElement_value_accessor_storage, _USARadioElement_name_accessor_storage, _USARadioElement_tiled_accessor_storage;
5
6
  let _classDecorators = [element({
6
7
  tagName: "usa-radio",
7
8
  shadowDom: [
8
9
  css `
9
10
  :host {
10
- display: block;
11
- }
12
-
13
- .radios {
14
11
  display: flex;
15
12
  flex-direction: column;
16
13
  gap: 1rem;
14
+ max-width: 30rem;
17
15
  }
18
16
 
19
17
  label {
@@ -37,6 +35,7 @@ let USARadioElement = (() => {
37
35
  width: 1.25rem;
38
36
  background: #fff;
39
37
  box-shadow: 0 0 0 2px #1b1b1b;
38
+ flex: 0 0 1.25rem;
40
39
  }
41
40
 
42
41
  label:has(input:checked)::before {
@@ -51,7 +50,7 @@ let USARadioElement = (() => {
51
50
  outline-offset: 0.25rem;
52
51
  }
53
52
 
54
- :host([tiled]) .radios {
53
+ :host([tiled]) {
55
54
  gap: 0.5rem;
56
55
  }
57
56
 
@@ -67,12 +66,16 @@ let USARadioElement = (() => {
67
66
  background-color: rgba(0, 94, 162, 0.1);
68
67
  border-color: #005ea2;
69
68
  }
70
- `,
71
- html `
72
- <slot></slot>
73
69
 
74
- <div class="radios"></div>
70
+ slot {
71
+ display: flex;
72
+ }
73
+
74
+ slot#main {
75
+ margin-bottom: 0.5rem;
76
+ }
75
77
  `,
78
+ html `<slot id="main"></slot>`,
76
79
  ],
77
80
  })];
78
81
  let _classDescriptor;
@@ -90,14 +93,14 @@ let USARadioElement = (() => {
90
93
  let _tiled_initializers = [];
91
94
  let _tiled_extraInitializers = [];
92
95
  let _onChange_decorators;
96
+ let _onOptionAdded_decorators;
93
97
  var USARadioElement = _classThis = class extends _classSuper {
94
98
  constructor() {
95
99
  super(...arguments);
96
100
  _USARadioElement_value_accessor_storage.set(this, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, "")));
97
101
  _USARadioElement_name_accessor_storage.set(this, (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _name_initializers, "")));
98
102
  _USARadioElement_tiled_accessor_storage.set(this, (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _tiled_initializers, false)));
99
- _USARadioElement_radios.set(this, (__runInitializers(this, _tiled_extraInitializers), query(".radios")));
100
- _USARadioElement_internals.set(this, this.attachInternals());
103
+ _USARadioElement_internals.set(this, (__runInitializers(this, _tiled_extraInitializers), this.attachInternals()));
101
104
  }
102
105
  get value() { return __classPrivateFieldGet(this, _USARadioElement_value_accessor_storage, "f"); }
103
106
  set value(value) { __classPrivateFieldSet(this, _USARadioElement_value_accessor_storage, value, "f"); }
@@ -105,6 +108,9 @@ let USARadioElement = (() => {
105
108
  set name(value) { __classPrivateFieldSet(this, _USARadioElement_name_accessor_storage, value, "f"); }
106
109
  get tiled() { return __classPrivateFieldGet(this, _USARadioElement_tiled_accessor_storage, "f"); }
107
110
  set tiled(value) { __classPrivateFieldSet(this, _USARadioElement_tiled_accessor_storage, value, "f"); }
111
+ get shadow() {
112
+ return this.shadowRoot;
113
+ }
108
114
  onChange(e) {
109
115
  if (e.target instanceof HTMLInputElement) {
110
116
  if (e.target.checked) {
@@ -119,35 +125,20 @@ let USARadioElement = (() => {
119
125
  }
120
126
  }
121
127
  attributeChangedCallback() {
122
- const radios = __classPrivateFieldGet(this, _USARadioElement_radios, "f").call(this);
123
- for (let radio of radios.querySelectorAll("input")) {
128
+ for (let radio of this.shadow.querySelectorAll("usa-radio-option")) {
124
129
  radio.checked = radio.value === this.value;
125
130
  radio.name = this.name;
126
131
  }
127
132
  }
128
- onOptionAdded(el) {
129
- const radios = __classPrivateFieldGet(this, _USARadioElement_radios, "f").call(this);
130
- const radioLabel = document.createElement("label");
131
- radioLabel.id = el.value;
132
- const input = document.createElement("input");
133
- input.type = "radio";
134
- input.name = this.name;
135
- input.value = el.value;
136
- input.checked = this.value === el.value;
137
- const slot = document.createElement("slot");
138
- slot.name = el.value;
139
- radioLabel.append(input, slot);
140
- radios.append(radioLabel);
141
- }
142
- onOptionRemoved(el) {
143
- const radios = __classPrivateFieldGet(this, _USARadioElement_radios, "f").call(this);
144
- const option = radios.querySelector(`#${el.value}`);
145
- if (option) {
146
- option.remove();
133
+ onOptionAdded(e) {
134
+ if (e.target instanceof USARadioOptionElement) {
135
+ e.stopPropagation();
136
+ e.target.checked = e.target.value === this.value;
137
+ e.target.name = this.name;
138
+ this.shadow.append(e.target.radio);
147
139
  }
148
140
  }
149
141
  };
150
- _USARadioElement_radios = new WeakMap();
151
142
  _USARadioElement_internals = new WeakMap();
152
143
  _USARadioElement_value_accessor_storage = new WeakMap();
153
144
  _USARadioElement_name_accessor_storage = new WeakMap();
@@ -157,12 +148,16 @@ let USARadioElement = (() => {
157
148
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
158
149
  _value_decorators = [attr()];
159
150
  _name_decorators = [attr()];
160
- _tiled_decorators = [attr()];
151
+ _tiled_decorators = [attr({
152
+ observed: false,
153
+ })];
161
154
  _onChange_decorators = [listen("change")];
155
+ _onOptionAdded_decorators = [listen("usa::radio::option::added", (el) => el)];
162
156
  __esDecorate(_classThis, 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);
163
157
  __esDecorate(_classThis, 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);
164
158
  __esDecorate(_classThis, null, _tiled_decorators, { kind: "accessor", name: "tiled", static: false, private: false, access: { has: obj => "tiled" in obj, get: obj => obj.tiled, set: (obj, value) => { obj.tiled = value; } }, metadata: _metadata }, _tiled_initializers, _tiled_extraInitializers);
165
159
  __esDecorate(_classThis, 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);
160
+ __esDecorate(_classThis, null, _onOptionAdded_decorators, { kind: "method", name: "onOptionAdded", static: false, private: false, access: { has: obj => "onOptionAdded" in obj, get: obj => obj.onOptionAdded }, metadata: _metadata }, null, _instanceExtraInitializers);
166
161
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
167
162
  USARadioElement = _classThis = _classDescriptor.value;
168
163
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -1 +1 @@
1
- {"version":3,"file":"radio.element.js","sourceRoot":"","sources":["../../../src/lib/radio/radio.element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radio.element.js","sourceRoot":"","sources":["../../../src/lib/radio/radio.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;IAmFrD,eAAe;;4BA3E3B,OAAO,CAAC;YACP,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE;gBACT,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoEF;gBACD,IAAI,CAAA,yBAAyB;aAC9B;SACF,CAAC;;;;sBACmC,WAAW;;;;;;;;;;;;;4CAAnB,SAAQ,WAAW;;;YAIrC,mDAJE,mDAAe,+CAIT,EAAE,IAAC;YAGX,iJAAO,EAAE,IAAC;YAKV,kJAAQ,KAAK,IAAC;YAMvB,yFAAa,IAAI,CAAC,eAAe,EAAE,GAAC;QAoCtC,CAAC;QAlDC,IAAS,KAAK,yFAAM;QAApB,IAAS,KAAK,8FAAM;QAGpB,IAAS,IAAI,wFAAM;QAAnB,IAAS,IAAI,6FAAM;QAKnB,IAAS,KAAK,yFAAS;QAAvB,IAAS,KAAK,8FAAS;QAEvB,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,UAAW,CAAC;QAC1B,CAAC;QAKD,QAAQ,CAAC,CAAQ;YACf,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,EAAE,CAAC;gBACzC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACrB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC5B,uBAAA,IAAI,kCAAW,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAED,iBAAiB;YACf,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,uBAAA,IAAI,kCAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,wBAAwB;YACtB,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACnE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;gBAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACzB,CAAC;QACH,CAAC;QAGD,aAAa,CAAC,CAAQ;YACpB,IAAI,CAAC,CAAC,MAAM,YAAY,qBAAqB,EAAE,CAAC;gBAC9C,CAAC,CAAC,eAAe,EAAE,CAAC;gBAEpB,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;gBACjD,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBAE1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;;;;;;;;;6BAlDA,IAAI,EAAE;4BAGN,IAAI,EAAE;6BAGN,IAAI,CAAC;gBACJ,QAAQ,EAAE,KAAK;aAChB,CAAC;gCASD,MAAM,CAAC,QAAQ,CAAC;qCAuBhB,MAAM,CAAC,2BAA2B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAvChD,0KAAS,KAAK,6BAAL,KAAK,qFAAM;QAGpB,uKAAS,IAAI,6BAAJ,IAAI,mFAAM;QAKnB,0KAAS,KAAK,6BAAL,KAAK,qFAAS;QASvB,iLAAA,QAAQ,6DAOP;QAgBD,gMAAA,aAAa,6DASZ;QArDH,6KAsDC;;;;IArDQ,yBAAc,GAAG,IAAI,AAAP,CAAQ;;QADlB,uDAAe;;;;SAAf,eAAe"}
@@ -3,9 +3,14 @@ import type { USARadioElement } from "./radio.element.js";
3
3
  declare const meta: {
4
4
  title: string;
5
5
  tags: string[];
6
- render(args: USARadioElement): import("lit-html").TemplateResult<1>;
6
+ render(args: USARadioElement & {
7
+ description: string;
8
+ }): import("lit-html").TemplateResult<1>;
7
9
  argTypes: {};
8
- args: {};
10
+ args: {
11
+ tiled: true;
12
+ description: string;
13
+ };
9
14
  };
10
15
  export default meta;
11
16
  type Story = StoryObj<USARadioElement>;
@@ -1,22 +1,25 @@
1
1
  import { html } from "lit";
2
+ import { when } from "lit/directives/when.js";
2
3
  // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
3
4
  const meta = {
4
5
  title: "usa-radio",
5
6
  tags: ["autodocs"],
6
7
  render(args) {
7
8
  return html `
8
- <usa-radio name="historical-figures" value="frederick-douglass" tiled>
9
+ <usa-radio
10
+ name="historical-figures"
11
+ value="frederick-douglass"
12
+ ?tiled=${args.tiled}
13
+ >
14
+ <legend>Select one historical figure</legend>
15
+
9
16
  <usa-radio-option value="sojourner-truth">
10
17
  Sojourner Truth
11
18
  </usa-radio-option>
12
19
 
13
20
  <usa-radio-option value="frederick-douglass">
14
21
  Frederick Douglass
15
-
16
- <usa-description>
17
- This is optional text that can be used to describe the label in more
18
- detail.
19
- </usa-description>
22
+ ${when(args.description, () => html `<usa-description>${args.description}</usa-description>`)}
20
23
  </usa-radio-option>
21
24
 
22
25
  <usa-radio-option value="booker-t-washington">
@@ -30,7 +33,10 @@ const meta = {
30
33
  `;
31
34
  },
32
35
  argTypes: {},
33
- args: {},
36
+ args: {
37
+ tiled: true,
38
+ description: "This is optional text that can be used to describe the label in more detail.",
39
+ },
34
40
  };
35
41
  export default meta;
36
42
  // More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
@@ -1 +1 @@
1
- {"version":3,"file":"radio.stories.js","sourceRoot":"","sources":["../../../src/lib/radio/radio.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,CAAC,IAAI;QACT,OAAO,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;KAuBV,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,EAAE;CACuB,CAAC;AAElC,eAAe,IAAI,CAAC;AAIpB,wFAAwF;AACxF,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,EAAE;CACT,CAAC"}
1
+ {"version":3,"file":"radio.stories.js","sourceRoot":"","sources":["../../../src/lib/radio/radio.stories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,kFAAkF;AAClF,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,CAAA;;;;iBAIE,IAAI,CAAC,KAAK;;;;;;;;;;YAUf,IAAI,CACJ,IAAI,CAAC,WAAW,EAChB,GAAG,EAAE,CAAC,IAAI,CAAA,oBAAoB,IAAI,CAAC,WAAW,oBAAoB,CACnE;;;;;;;;;;;KAWN,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,WAAW,EACT,8EAA8E;KACjF;CACwD,CAAC;AAE5D,eAAe,IAAI,CAAC;AAIpB,wFAAwF;AACxF,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -4,8 +4,9 @@ declare global {
4
4
  }
5
5
  }
6
6
  export declare class USASelecOptionElement extends HTMLElement {
7
- #private;
8
7
  accessor value: string;
8
+ readonly option: HTMLOptionElement;
9
+ attributeChangedCallback(): void;
9
10
  connectedCallback(): void;
10
11
  disconnectedCallback(): void;
11
12
  }
@@ -1,8 +1,7 @@
1
1
  import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers, __setFunctionName } from "tslib";
2
2
  import { attr, css, element } from "@joist/element";
3
- import { USASelectElement } from "./select.element.js";
4
3
  let USASelecOptionElement = (() => {
5
- var _USASelecOptionElement_parent, _USASelecOptionElement_value_accessor_storage;
4
+ var _USASelecOptionElement_value_accessor_storage;
6
5
  let _classDecorators = [element({
7
6
  tagName: "usa-select-option",
8
7
  shadowDom: [
@@ -24,23 +23,21 @@ let USASelecOptionElement = (() => {
24
23
  constructor() {
25
24
  super(...arguments);
26
25
  _USASelecOptionElement_value_accessor_storage.set(this, __runInitializers(this, _value_initializers, ""));
27
- _USASelecOptionElement_parent.set(this, (__runInitializers(this, _value_extraInitializers), null));
26
+ this.option = (__runInitializers(this, _value_extraInitializers), document.createElement("option"));
28
27
  }
29
28
  get value() { return __classPrivateFieldGet(this, _USASelecOptionElement_value_accessor_storage, "f"); }
30
29
  set value(value) { __classPrivateFieldSet(this, _USASelecOptionElement_value_accessor_storage, value, "f"); }
30
+ attributeChangedCallback() {
31
+ this.option.textContent = this.textContent;
32
+ this.option.value = this.value;
33
+ }
31
34
  connectedCallback() {
32
- if (this.parentElement instanceof USASelectElement) {
33
- __classPrivateFieldSet(this, _USASelecOptionElement_parent, this.parentElement, "f");
34
- this.parentElement.onOptionAdded(this);
35
- }
35
+ this.dispatchEvent(new Event("usa::select::option::added", { bubbles: true }));
36
36
  }
37
37
  disconnectedCallback() {
38
- if (__classPrivateFieldGet(this, _USASelecOptionElement_parent, "f")) {
39
- __classPrivateFieldGet(this, _USASelecOptionElement_parent, "f").onOptionRemoved(this);
40
- }
38
+ this.option.remove();
41
39
  }
42
40
  };
43
- _USASelecOptionElement_parent = new WeakMap();
44
41
  _USASelecOptionElement_value_accessor_storage = new WeakMap();
45
42
  __setFunctionName(_classThis, "USASelecOptionElement");
46
43
  (() => {
@@ -1 +1 @@
1
- {"version":3,"file":"select-option.element.js","sourceRoot":"","sources":["../../../src/lib/select/select-option.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;IAkB1C,qBAAqB;;4BAVjC,OAAO,CAAC;YACP,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE;gBACT,GAAG,CAAA;;;;KAIF;aACF;SACF,CAAC;;;;sBACyC,WAAW;;;;kDAAnB,SAAQ,WAAW;;;YAE3C,qGAAQ,EAAE,GAAC;YAEpB,4FAAmC,IAAI,GAAC;QAe1C,CAAC;QAjBC,IAAS,KAAK,+FAAM;QAApB,IAAS,KAAK,oGAAM;QAIpB,iBAAiB;YACf,IAAI,IAAI,CAAC,aAAa,YAAY,gBAAgB,EAAE,CAAC;gBACnD,uBAAA,IAAI,iCAAW,IAAI,CAAC,aAAa,MAAA,CAAC;gBAElC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,oBAAoB;YAClB,IAAI,uBAAA,IAAI,qCAAQ,EAAE,CAAC;gBACjB,uBAAA,IAAI,qCAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;;;;;;;6BAjBA,IAAI,EAAE;QACP,0KAAS,KAAK,6BAAL,KAAK,qFAAM;QAFtB,6KAmBC;;;QAnBY,uDAAqB;;;;SAArB,qBAAqB"}
1
+ {"version":3,"file":"select-option.element.js","sourceRoot":"","sources":["../../../src/lib/select/select-option.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;IAkBvC,qBAAqB;;4BAVjC,OAAO,CAAC;YACP,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE;gBACT,GAAG,CAAA;;;;KAIF;aACF;SACF,CAAC;;;;sBACyC,WAAW;;;;kDAAnB,SAAQ,WAAW;;;YAE3C,qGAAQ,EAAE,GAAC;YAEX,WAAM,uDAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAC;QAgBrD,CAAC;QAlBC,IAAS,KAAK,+FAAM;QAApB,IAAS,KAAK,oGAAM;QAIpB,wBAAwB;YACtB,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,CAAC;QAED,iBAAiB;YACf,IAAI,CAAC,aAAa,CAChB,IAAI,KAAK,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAC3D,CAAC;QACJ,CAAC;QAED,oBAAoB;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;;;;;;6BAlBA,IAAI,EAAE;QACP,0KAAS,KAAK,6BAAL,KAAK,qFAAM;QAFtB,6KAoBC;;;QApBY,uDAAqB;;;;SAArB,qBAAqB"}
@@ -1,4 +1,3 @@
1
- import type { USASelecOptionElement } from "./select-option.element.js";
2
1
  declare global {
3
2
  interface HTMLElementTagNameMap {
4
3
  "usa-select": USASelectElement;
@@ -11,6 +10,5 @@ export declare class USASelectElement extends HTMLElement {
11
10
  accessor name: string;
12
11
  connectedCallback(): void;
13
12
  onSelectChange(): void;
14
- onOptionAdded(el: USASelecOptionElement): void;
15
- onOptionRemoved(el: USASelecOptionElement): void;
13
+ onOptionAdded(e: Event): void;
16
14
  }
@@ -1,7 +1,8 @@
1
1
  import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers, __setFunctionName } from "tslib";
2
2
  import { attr, css, element, html, listen, query } from "@joist/element";
3
+ import { USASelecOptionElement } from "./select-option.element.js";
3
4
  let USASelectElement = (() => {
4
- var _USASelectElement_instances, _USASelectElement_select, _USASelectElement_internals, _USASelectElement_createId, _USASelectElement_value_accessor_storage, _USASelectElement_name_accessor_storage;
5
+ var _USASelectElement_select, _USASelectElement_internals, _USASelectElement_value_accessor_storage, _USASelectElement_name_accessor_storage;
5
6
  let _classDecorators = [element({
6
7
  tagName: "usa-select",
7
8
  shadowDom: [
@@ -74,10 +75,10 @@ let USASelectElement = (() => {
74
75
  let _name_initializers = [];
75
76
  let _name_extraInitializers = [];
76
77
  let _onSelectChange_decorators;
78
+ let _onOptionAdded_decorators;
77
79
  var USASelectElement = _classThis = class extends _classSuper {
78
80
  constructor() {
79
81
  super(...arguments);
80
- _USASelectElement_instances.add(this);
81
82
  _USASelectElement_value_accessor_storage.set(this, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, "")));
82
83
  _USASelectElement_name_accessor_storage.set(this, (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _name_initializers, "")));
83
84
  _USASelectElement_select.set(this, (__runInitializers(this, _name_extraInitializers), query("select")));
@@ -97,39 +98,29 @@ let USASelectElement = (() => {
97
98
  const select = __classPrivateFieldGet(this, _USASelectElement_select, "f").call(this);
98
99
  __classPrivateFieldGet(this, _USASelectElement_internals, "f").setFormValue(select.value);
99
100
  }
100
- onOptionAdded(el) {
101
- const option = document.createElement("option");
102
- option.value = el.value;
103
- option.innerHTML = el.innerHTML;
104
- option.id = __classPrivateFieldGet(this, _USASelectElement_instances, "m", _USASelectElement_createId).call(this, el.value);
105
- const select = __classPrivateFieldGet(this, _USASelectElement_select, "f").call(this);
106
- select.append(option);
107
- }
108
- onOptionRemoved(el) {
109
- const select = __classPrivateFieldGet(this, _USASelectElement_select, "f").call(this);
110
- const option = select.querySelector(`#${__classPrivateFieldGet(this, _USASelectElement_instances, "m", _USASelectElement_createId).call(this, el.value)}`);
111
- if (option) {
112
- option.remove();
101
+ onOptionAdded(e) {
102
+ if (e.target instanceof USASelecOptionElement) {
103
+ e.stopPropagation();
104
+ const select = __classPrivateFieldGet(this, _USASelectElement_select, "f").call(this);
105
+ select.append(e.target.option);
113
106
  }
114
107
  }
115
108
  };
116
109
  _USASelectElement_select = new WeakMap();
117
110
  _USASelectElement_internals = new WeakMap();
118
- _USASelectElement_instances = new WeakSet();
119
111
  _USASelectElement_value_accessor_storage = new WeakMap();
120
112
  _USASelectElement_name_accessor_storage = new WeakMap();
121
- _USASelectElement_createId = function _USASelectElement_createId(val) {
122
- return val.split(" ").join("-").toLowerCase();
123
- };
124
113
  __setFunctionName(_classThis, "USASelectElement");
125
114
  (() => {
126
115
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
127
116
  _value_decorators = [attr()];
128
117
  _name_decorators = [attr()];
129
118
  _onSelectChange_decorators = [listen("change")];
119
+ _onOptionAdded_decorators = [listen("usa::select::option::added")];
130
120
  __esDecorate(_classThis, 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);
131
121
  __esDecorate(_classThis, 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);
132
122
  __esDecorate(_classThis, null, _onSelectChange_decorators, { kind: "method", name: "onSelectChange", static: false, private: false, access: { has: obj => "onSelectChange" in obj, get: obj => obj.onSelectChange }, metadata: _metadata }, null, _instanceExtraInitializers);
123
+ __esDecorate(_classThis, null, _onOptionAdded_decorators, { kind: "method", name: "onOptionAdded", static: false, private: false, access: { has: obj => "onOptionAdded" in obj, get: obj => obj.onOptionAdded }, metadata: _metadata }, null, _instanceExtraInitializers);
133
124
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
134
125
  USASelectElement = _classThis = _classDescriptor.value;
135
126
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -1 +1 @@
1
- {"version":3,"file":"select.element.js","sourceRoot":"","sources":["../../../src/lib/select/select.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;IAsE5D,gBAAgB;;4BA5D5B,OAAO,CAAC;YACP,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE;gBACT,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2CF;gBACD,IAAI,CAAA;;;;;;;;;;KAUH;aACF;SACF,CAAC;;;;sBACoC,WAAW;;;;;;;;;6CAAnB,SAAQ,WAAW;;;;YAItC,oDAJE,mDAAgB,+CAIV,EAAE,IAAC;YAGX,kJAAO,EAAE,IAAC;YAEnB,sFAAU,KAAK,CAAC,QAAQ,CAAC,GAAC;YAC1B,sCAAa,IAAI,CAAC,eAAe,EAAE,EAAC;QAwCtC,CAAC;QA9CC,IAAS,KAAK,0FAAM;QAApB,IAAS,KAAK,+FAAM;QAGpB,IAAS,IAAI,yFAAM;QAAnB,IAAS,IAAI,8FAAM;QAKnB,iBAAiB;YACf,MAAM,MAAM,GAAG,uBAAA,IAAI,gCAAQ,MAAZ,IAAI,CAAU,CAAC;YAC9B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,uBAAA,IAAI,mCAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAGD,cAAc;YACZ,MAAM,MAAM,GAAG,uBAAA,IAAI,gCAAQ,MAAZ,IAAI,CAAU,CAAC;YAE9B,uBAAA,IAAI,mCAAW,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,aAAa,CAAC,EAAyB;YACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACxB,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;YAChC,MAAM,CAAC,EAAE,GAAG,uBAAA,IAAI,+DAAU,MAAd,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,uBAAA,IAAI,gCAAQ,MAAZ,IAAI,CAAU,CAAC;YAE9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,eAAe,CAAC,EAAyB;YACvC,MAAM,MAAM,GAAG,uBAAA,IAAI,gCAAQ,MAAZ,IAAI,CAAU,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,uBAAA,IAAI,+DAAU,MAAd,IAAI,EAAW,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAEpE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;;;;;;;qEAES,GAAW;QACnB,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,CAAC;;;;6BA9CA,IAAI,EAAE;4BAGN,IAAI,EAAE;sCAcN,MAAM,CAAC,QAAQ,CAAC;QAhBjB,0KAAS,KAAK,6BAAL,KAAK,qFAAM;QAGpB,uKAAS,IAAI,6BAAJ,IAAI,mFAAM;QAcnB,mMAAA,cAAc,6DAIb;QAzBH,6KAkDC;;;;IAjDQ,yBAAc,GAAG,IAAI,AAAP,CAAQ;;QADlB,uDAAgB;;;;SAAhB,gBAAgB"}
1
+ {"version":3,"file":"select.element.js","sourceRoot":"","sources":["../../../src/lib/select/select.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;IAoEtD,gBAAgB;;4BA5D5B,OAAO,CAAC;YACP,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE;gBACT,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2CF;gBACD,IAAI,CAAA;;;;;;;;;;KAUH;aACF;SACF,CAAC;;;;sBACoC,WAAW;;;;;;;;;;6CAAnB,SAAQ,WAAW;;;YAItC,oDAJE,mDAAgB,+CAIV,EAAE,IAAC;YAGX,kJAAO,EAAE,IAAC;YAEnB,sFAAU,KAAK,CAAC,QAAQ,CAAC,GAAC;YAC1B,sCAAa,IAAI,CAAC,eAAe,EAAE,EAAC;QA0BtC,CAAC;QAhCC,IAAS,KAAK,0FAAM;QAApB,IAAS,KAAK,+FAAM;QAGpB,IAAS,IAAI,yFAAM;QAAnB,IAAS,IAAI,8FAAM;QAKnB,iBAAiB;YACf,MAAM,MAAM,GAAG,uBAAA,IAAI,gCAAQ,MAAZ,IAAI,CAAU,CAAC;YAC9B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,uBAAA,IAAI,mCAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAGD,cAAc;YACZ,MAAM,MAAM,GAAG,uBAAA,IAAI,gCAAQ,MAAZ,IAAI,CAAU,CAAC;YAE9B,uBAAA,IAAI,mCAAW,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAGD,aAAa,CAAC,CAAQ;YACpB,IAAI,CAAC,CAAC,MAAM,YAAY,qBAAqB,EAAE,CAAC;gBAC9C,CAAC,CAAC,eAAe,EAAE,CAAC;gBAEpB,MAAM,MAAM,GAAG,uBAAA,IAAI,gCAAQ,MAAZ,IAAI,CAAU,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;;;;;;;;;6BAhCA,IAAI,EAAE;4BAGN,IAAI,EAAE;sCAcN,MAAM,CAAC,QAAQ,CAAC;qCAOhB,MAAM,CAAC,4BAA4B,CAAC;QAvBrC,0KAAS,KAAK,6BAAL,KAAK,qFAAM;QAGpB,uKAAS,IAAI,6BAAJ,IAAI,mFAAM;QAcnB,mMAAA,cAAc,6DAIb;QAGD,gMAAA,aAAa,6DAOZ;QAnCH,6KAoCC;;;;IAnCQ,yBAAc,GAAG,IAAI,AAAP,CAAQ;;QADlB,uDAAgB;;;;SAAhB,gBAAgB"}
@@ -0,0 +1,8 @@
1
+ declare global {
2
+ interface HTMLElementTagNameMap {
3
+ "usa-side-nav-item": USASideNavItemElement;
4
+ }
5
+ }
6
+ export declare class USASideNavItemElement extends HTMLElement {
7
+ accessor current: boolean;
8
+ }
@@ -0,0 +1,109 @@
1
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers, __setFunctionName } from "tslib";
2
+ import { attr, css, element, html } from "@joist/element";
3
+ let USASideNavItemElement = (() => {
4
+ var _USASideNavItemElement_current_accessor_storage;
5
+ let _classDecorators = [element({
6
+ tagName: "usa-side-nav-item",
7
+ shadowDom: [
8
+ css `
9
+ :host {
10
+ --usa-nav-item-padding-left: 2rem;
11
+
12
+ display: block;
13
+ border-top: 1px solid #e6e6e6;
14
+ }
15
+
16
+ .side-nav-item {
17
+ display: flex;
18
+ padding: 0.5rem 1rem;
19
+ text-decoration: none;
20
+ position: relative;
21
+ }
22
+
23
+ .side-nav-item:hover {
24
+ background-color: #f0f0f0;
25
+ color: #005ea2;
26
+ }
27
+
28
+ ::slotted(*) {
29
+ color: #5c5c5c;
30
+ text-decoration: none;
31
+ display: block;
32
+ width: 100%;
33
+ }
34
+
35
+ :host(:hover) ::slotted(*) {
36
+ color: #005ea2;
37
+ }
38
+
39
+ :host([current]) ::slotted(*:not(usa-side-nav-item)) {
40
+ color: #005ea2;
41
+ font-weight: 700;
42
+ }
43
+
44
+ :host([current]) .side-nav-item::after {
45
+ background-color: #005ea2;
46
+ border-radius: 99rem;
47
+ content: "";
48
+ display: block;
49
+ position: absolute;
50
+ bottom: 0.25rem;
51
+ top: 0.25rem;
52
+ width: 0.25rem;
53
+ left: 0;
54
+ }
55
+
56
+ :host([slot="children"]) .side-nav-item {
57
+ padding-left: var(--usa-nav-item-padding-left);
58
+ }
59
+
60
+ :host([slot="children"]) ::slotted(usa-side-nav-item) {
61
+ --usa-nav-item-padding-left: 3rem;
62
+ }
63
+
64
+ :host([slot="children"]) .side-nav-item::after {
65
+ display: none;
66
+ }
67
+ `,
68
+ html `
69
+ <div class="side-nav-item">
70
+ <slot></slot>
71
+ </div>
72
+
73
+ <slot name="children"></slot>
74
+ `,
75
+ ],
76
+ })];
77
+ let _classDescriptor;
78
+ let _classExtraInitializers = [];
79
+ let _classThis;
80
+ let _classSuper = HTMLElement;
81
+ let _current_decorators;
82
+ let _current_initializers = [];
83
+ let _current_extraInitializers = [];
84
+ var USASideNavItemElement = _classThis = class extends _classSuper {
85
+ get current() { return __classPrivateFieldGet(this, _USASideNavItemElement_current_accessor_storage, "f"); }
86
+ set current(value) { __classPrivateFieldSet(this, _USASideNavItemElement_current_accessor_storage, value, "f"); }
87
+ constructor() {
88
+ super(...arguments);
89
+ _USASideNavItemElement_current_accessor_storage.set(this, __runInitializers(this, _current_initializers, false));
90
+ __runInitializers(this, _current_extraInitializers);
91
+ }
92
+ };
93
+ _USASideNavItemElement_current_accessor_storage = new WeakMap();
94
+ __setFunctionName(_classThis, "USASideNavItemElement");
95
+ (() => {
96
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
97
+ _current_decorators = [attr({
98
+ observed: false,
99
+ })];
100
+ __esDecorate(_classThis, null, _current_decorators, { kind: "accessor", name: "current", static: false, private: false, access: { has: obj => "current" in obj, get: obj => obj.current, set: (obj, value) => { obj.current = value; } }, metadata: _metadata }, _current_initializers, _current_extraInitializers);
101
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
102
+ USASideNavItemElement = _classThis = _classDescriptor.value;
103
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
104
+ __runInitializers(_classThis, _classExtraInitializers);
105
+ })();
106
+ return USASideNavItemElement = _classThis;
107
+ })();
108
+ export { USASideNavItemElement };
109
+ //# sourceMappingURL=side-nav-item.element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"side-nav-item.element.js","sourceRoot":"","sources":["../../../src/lib/side-nav/side-nav-item.element.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;IAgF7C,qBAAqB;;4BAxEjC,OAAO,CAAC;YACP,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE;gBACT,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2DF;gBACD,IAAI,CAAA;;;;;;KAMH;aACF;SACF,CAAC;;;;sBACyC,WAAW;;;;kDAAnB,SAAQ,WAAW;QAIpD,IAAS,OAAO,iGAAS;QAAzB,IAAS,OAAO,sGAAS;;;YAAhB,yGAAU,KAAK,GAAC;;;;;;;;+BAHxB,IAAI,CAAC;gBACJ,QAAQ,EAAE,KAAK;aAChB,CAAC;QACF,gLAAS,OAAO,6BAAP,OAAO,yFAAS;QAJ3B,6KAKC;;;QALY,uDAAqB;;;;SAArB,qBAAqB"}
@@ -0,0 +1,8 @@
1
+ import "./side-nav-item.element.js";
2
+ declare global {
3
+ interface HTMLElementTagNameMap {
4
+ "usa-side-nav": USASideNavElement;
5
+ }
6
+ }
7
+ export declare class USASideNavElement extends HTMLElement {
8
+ }
@@ -0,0 +1,36 @@
1
+ import { __esDecorate, __runInitializers, __setFunctionName } from "tslib";
2
+ import "./side-nav-item.element.js";
3
+ import { css, element, html } from "@joist/element";
4
+ let USASideNavElement = (() => {
5
+ let _classDecorators = [element({
6
+ tagName: "usa-side-nav",
7
+ shadowDom: [
8
+ css `
9
+ :host {
10
+ display: block;
11
+ font-size: 1.06rem;
12
+ line-height: 1.3;
13
+ border-bottom: 1px solid #e6e6e6;
14
+ }
15
+ `,
16
+ html `<slot></slot>`,
17
+ ],
18
+ })];
19
+ let _classDescriptor;
20
+ let _classExtraInitializers = [];
21
+ let _classThis;
22
+ let _classSuper = HTMLElement;
23
+ var USASideNavElement = _classThis = class extends _classSuper {
24
+ };
25
+ __setFunctionName(_classThis, "USASideNavElement");
26
+ (() => {
27
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
28
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
29
+ USASideNavElement = _classThis = _classDescriptor.value;
30
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
31
+ __runInitializers(_classThis, _classExtraInitializers);
32
+ })();
33
+ return USASideNavElement = _classThis;
34
+ })();
35
+ export { USASideNavElement };
36
+ //# sourceMappingURL=side-nav.element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"side-nav.element.js","sourceRoot":"","sources":["../../../src/lib/side-nav/side-nav.element.ts"],"names":[],"mappings":";AAAA,OAAO,4BAA4B,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;IAsBvC,iBAAiB;4BAd7B,OAAO,CAAC;YACP,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE;gBACT,GAAG,CAAA;;;;;;;KAOF;gBACD,IAAI,CAAA,eAAe;aACpB;SACF,CAAC;;;;sBACqC,WAAW;8CAAnB,SAAQ,WAAW;;;;;QAAlD,6KAAqD;;;QAAxC,uDAAiB;;;;SAAjB,iBAAiB"}
@@ -0,0 +1,12 @@
1
+ import type { StoryObj } from "@storybook/web-components";
2
+ import type { USASideNavElement } from "./side-nav.element.js";
3
+ declare const meta: {
4
+ title: string;
5
+ tags: string[];
6
+ render(args: USASideNavElement): import("lit-html").TemplateResult<1>;
7
+ argTypes: {};
8
+ args: {};
9
+ };
10
+ export default meta;
11
+ type Story = StoryObj<USASideNavElement>;
12
+ export declare const Primary: Story;
@@ -0,0 +1,55 @@
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-side-nav",
5
+ tags: ["autodocs"],
6
+ render(args) {
7
+ return html `
8
+ <usa-side-nav>
9
+ <usa-side-nav-item current>
10
+ <usa-link href="#">Current Page</usa-link>
11
+
12
+ <usa-side-nav-item slot="children">
13
+ <usa-link href="#">Child</usa-link>
14
+ </usa-side-nav-item>
15
+
16
+ <usa-side-nav-item slot="children" current>
17
+ <usa-link href="#">Child</usa-link>
18
+
19
+ <usa-side-nav-item slot="children">
20
+ <usa-link href="#">Grandchild</usa-link>
21
+ </usa-side-nav-item>
22
+
23
+ <usa-side-nav-item slot="children" current>
24
+ <usa-link href="#">Grandchild</usa-link>
25
+ </usa-side-nav-item>
26
+
27
+ <usa-side-nav-item slot="children">
28
+ <usa-link href="#">Grandchild</usa-link>
29
+ </usa-side-nav-item>
30
+ </usa-side-nav-item>
31
+
32
+ <usa-side-nav-item slot="children">
33
+ <usa-link href="#">Child</usa-link>
34
+ </usa-side-nav-item>
35
+ </usa-side-nav-item>
36
+
37
+ <usa-side-nav-item>
38
+ <usa-link href="#">Parent</usa-link>
39
+ </usa-side-nav-item>
40
+
41
+ <usa-side-nav-item>
42
+ <usa-link href="#">Parent</usa-link>
43
+ </usa-side-nav-item>
44
+ </usa-side-nav>
45
+ `;
46
+ },
47
+ argTypes: {},
48
+ args: {},
49
+ };
50
+ export default meta;
51
+ // More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
52
+ export const Primary = {
53
+ args: {},
54
+ };
55
+ //# sourceMappingURL=side-nav.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"side-nav.stories.js","sourceRoot":"","sources":["../../../src/lib/side-nav/side-nav.stories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAI3B,kFAAkF;AAClF,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsCV,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,EAAE;CACyB,CAAC;AAEpC,eAAe,IAAI,CAAC;AAIpB,wFAAwF;AACxF,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,EAAE;CACT,CAAC"}