@noctuatech/uswds 0.0.4 → 0.0.6

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 (59) hide show
  1. package/assets/uswds.min.js +1 -1
  2. package/package.json +16 -4
  3. package/src/lib/accordion/accordion.element.ts +22 -19
  4. package/src/lib/accordion/accordion.test.ts +50 -48
  5. package/src/lib/checkbox/checkbox.element.ts +3 -1
  6. package/src/lib/define.ts +2 -0
  7. package/src/lib/link/link.element.ts +6 -2
  8. package/src/lib/radio/radio-option.element.ts +31 -13
  9. package/src/lib/radio/radio.element.ts +26 -40
  10. package/src/lib/radio/radio.stories.ts +18 -8
  11. package/src/lib/select/select-option.element.ts +10 -11
  12. package/src/lib/select/select.element.ts +5 -19
  13. package/src/lib/side-nav/side-nav-item.element.ts +86 -0
  14. package/src/lib/side-nav/side-nav.element.ts +25 -0
  15. package/src/lib/side-nav/side-nav.stories.ts +62 -0
  16. package/src/lib/side-nav/side-nav.test.ts +110 -0
  17. package/src/lib.ts +1 -0
  18. package/target/lib/accordion/accordion.element.d.ts +5 -5
  19. package/target/lib/accordion/accordion.element.js +18 -15
  20. package/target/lib/accordion/accordion.element.js.map +1 -1
  21. package/target/lib/accordion/accordion.test.js +50 -40
  22. package/target/lib/accordion/accordion.test.js.map +1 -1
  23. package/target/lib/checkbox/checkbox.element.js +3 -1
  24. package/target/lib/checkbox/checkbox.element.js.map +1 -1
  25. package/target/lib/define.d.ts +2 -0
  26. package/target/lib/define.js +2 -0
  27. package/target/lib/define.js.map +1 -1
  28. package/target/lib/link/link.element.js +6 -2
  29. package/target/lib/link/link.element.js.map +1 -1
  30. package/target/lib/radio/radio-option.element.d.ts +5 -2
  31. package/target/lib/radio/radio-option.element.js +37 -15
  32. package/target/lib/radio/radio-option.element.js.map +1 -1
  33. package/target/lib/radio/radio.element.d.ts +2 -3
  34. package/target/lib/radio/radio.element.js +29 -38
  35. package/target/lib/radio/radio.element.js.map +1 -1
  36. package/target/lib/radio/radio.stories.d.ts +7 -2
  37. package/target/lib/radio/radio.stories.js +13 -7
  38. package/target/lib/radio/radio.stories.js.map +1 -1
  39. package/target/lib/select/select-option.element.d.ts +2 -1
  40. package/target/lib/select/select-option.element.js +8 -11
  41. package/target/lib/select/select-option.element.js.map +1 -1
  42. package/target/lib/select/select.element.d.ts +1 -3
  43. package/target/lib/select/select.element.js +8 -19
  44. package/target/lib/select/select.element.js.map +1 -1
  45. package/target/lib/side-nav/side-nav-item.element.d.ts +8 -0
  46. package/target/lib/side-nav/side-nav-item.element.js +109 -0
  47. package/target/lib/side-nav/side-nav-item.element.js.map +1 -0
  48. package/target/lib/side-nav/side-nav.element.d.ts +8 -0
  49. package/target/lib/side-nav/side-nav.element.js +36 -0
  50. package/target/lib/side-nav/side-nav.element.js.map +1 -0
  51. package/target/lib/side-nav/side-nav.stories.d.ts +12 -0
  52. package/target/lib/side-nav/side-nav.stories.js +55 -0
  53. package/target/lib/side-nav/side-nav.stories.js.map +1 -0
  54. package/target/lib/side-nav/side-nav.test.d.ts +2 -0
  55. package/target/lib/side-nav/side-nav.test.js +92 -0
  56. package/target/lib/side-nav/side-nav.test.js.map +1 -0
  57. package/target/lib.d.ts +1 -0
  58. package/target/lib.js +1 -0
  59. package/target/lib.js.map +1 -1
@@ -1,20 +1,16 @@
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
3
  let USARadioElement = (() => {
4
- var _USARadioElement_radios, _USARadioElement_internals, _USARadioElement_value_accessor_storage, _USARadioElement_name_accessor_storage, _USARadioElement_tiled_accessor_storage;
4
+ var _USARadioElement_internals, _USARadioElement_value_accessor_storage, _USARadioElement_name_accessor_storage, _USARadioElement_tiled_accessor_storage;
5
5
  let _classDecorators = [element({
6
6
  tagName: "usa-radio",
7
7
  shadowDom: [
8
8
  css `
9
9
  :host {
10
- display: block;
11
- max-width: 30rem;
12
- }
13
-
14
- .radios {
15
10
  display: flex;
16
11
  flex-direction: column;
17
12
  gap: 1rem;
13
+ max-width: 30rem;
18
14
  }
19
15
 
20
16
  label {
@@ -53,7 +49,7 @@ let USARadioElement = (() => {
53
49
  outline-offset: 0.25rem;
54
50
  }
55
51
 
56
- :host([tiled]) .radios {
52
+ :host([tiled]) {
57
53
  gap: 0.5rem;
58
54
  }
59
55
 
@@ -69,12 +65,16 @@ let USARadioElement = (() => {
69
65
  background-color: rgba(0, 94, 162, 0.1);
70
66
  border-color: #005ea2;
71
67
  }
72
- `,
73
- html `
74
- <slot></slot>
75
68
 
76
- <div class="radios"></div>
69
+ slot {
70
+ display: flex;
71
+ }
72
+
73
+ slot#main {
74
+ margin-bottom: 0.5rem;
75
+ }
77
76
  `,
77
+ html `<slot id="main"></slot>`,
78
78
  ],
79
79
  })];
80
80
  let _classDescriptor;
@@ -92,14 +92,14 @@ let USARadioElement = (() => {
92
92
  let _tiled_initializers = [];
93
93
  let _tiled_extraInitializers = [];
94
94
  let _onChange_decorators;
95
+ let _onOptionAdded_decorators;
95
96
  var USARadioElement = _classThis = class extends _classSuper {
96
97
  constructor() {
97
98
  super(...arguments);
98
99
  _USARadioElement_value_accessor_storage.set(this, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, "")));
99
100
  _USARadioElement_name_accessor_storage.set(this, (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _name_initializers, "")));
100
101
  _USARadioElement_tiled_accessor_storage.set(this, (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _tiled_initializers, false)));
101
- _USARadioElement_radios.set(this, (__runInitializers(this, _tiled_extraInitializers), query(".radios")));
102
- _USARadioElement_internals.set(this, this.attachInternals());
102
+ _USARadioElement_internals.set(this, (__runInitializers(this, _tiled_extraInitializers), this.attachInternals()));
103
103
  }
104
104
  get value() { return __classPrivateFieldGet(this, _USARadioElement_value_accessor_storage, "f"); }
105
105
  set value(value) { __classPrivateFieldSet(this, _USARadioElement_value_accessor_storage, value, "f"); }
@@ -107,6 +107,9 @@ let USARadioElement = (() => {
107
107
  set name(value) { __classPrivateFieldSet(this, _USARadioElement_name_accessor_storage, value, "f"); }
108
108
  get tiled() { return __classPrivateFieldGet(this, _USARadioElement_tiled_accessor_storage, "f"); }
109
109
  set tiled(value) { __classPrivateFieldSet(this, _USARadioElement_tiled_accessor_storage, value, "f"); }
110
+ get shadow() {
111
+ return this.shadowRoot;
112
+ }
110
113
  onChange(e) {
111
114
  if (e.target instanceof HTMLInputElement) {
112
115
  if (e.target.checked) {
@@ -121,35 +124,19 @@ let USARadioElement = (() => {
121
124
  }
122
125
  }
123
126
  attributeChangedCallback() {
124
- const radios = __classPrivateFieldGet(this, _USARadioElement_radios, "f").call(this);
125
- for (let radio of radios.querySelectorAll("input")) {
127
+ for (let radio of this.shadow.querySelectorAll("usa-radio-option")) {
126
128
  radio.checked = radio.value === this.value;
127
129
  radio.name = this.name;
128
130
  }
129
131
  }
130
- onOptionAdded(el) {
131
- const radios = __classPrivateFieldGet(this, _USARadioElement_radios, "f").call(this);
132
- const radioLabel = document.createElement("label");
133
- radioLabel.id = el.value;
134
- const input = document.createElement("input");
135
- input.type = "radio";
136
- input.name = this.name;
137
- input.value = el.value;
138
- input.checked = this.value === el.value;
139
- const slot = document.createElement("slot");
140
- slot.name = el.value;
141
- radioLabel.append(input, slot);
142
- radios.append(radioLabel);
143
- }
144
- onOptionRemoved(el) {
145
- const radios = __classPrivateFieldGet(this, _USARadioElement_radios, "f").call(this);
146
- const option = radios.querySelector(`#${el.value}`);
147
- if (option) {
148
- option.remove();
149
- }
132
+ onOptionAdded(e) {
133
+ e.stopPropagation();
134
+ const target = e.target;
135
+ target.checked = target.value === this.value;
136
+ target.name = this.name;
137
+ this.shadow.append(target.radio);
150
138
  }
151
139
  };
152
- _USARadioElement_radios = new WeakMap();
153
140
  _USARadioElement_internals = new WeakMap();
154
141
  _USARadioElement_value_accessor_storage = new WeakMap();
155
142
  _USARadioElement_name_accessor_storage = new WeakMap();
@@ -159,12 +146,16 @@ let USARadioElement = (() => {
159
146
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
160
147
  _value_decorators = [attr()];
161
148
  _name_decorators = [attr()];
162
- _tiled_decorators = [attr()];
149
+ _tiled_decorators = [attr({
150
+ observed: false,
151
+ })];
163
152
  _onChange_decorators = [listen("change")];
153
+ _onOptionAdded_decorators = [listen("usa::radio::option::added", (el) => el)];
164
154
  __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);
165
155
  __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);
166
156
  __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);
167
157
  __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);
158
+ __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);
168
159
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
169
160
  USARadioElement = _classThis = _classDescriptor.value;
170
161
  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;IAqFrD,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,CAAC,CAAC,eAAe,EAAE,CAAC;YAEpB,MAAM,MAAM,GAAG,CAAC,CAAC,MAA+B,CAAC;YAEjD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;YAC7C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,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,7 @@
1
1
  import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers, __setFunctionName } from "tslib";
2
2
  import { attr, css, element, html, listen, query } from "@joist/element";
3
3
  let USASelectElement = (() => {
4
- var _USASelectElement_instances, _USASelectElement_select, _USASelectElement_internals, _USASelectElement_createId, _USASelectElement_value_accessor_storage, _USASelectElement_name_accessor_storage;
4
+ var _USASelectElement_select, _USASelectElement_internals, _USASelectElement_value_accessor_storage, _USASelectElement_name_accessor_storage;
5
5
  let _classDecorators = [element({
6
6
  tagName: "usa-select",
7
7
  shadowDom: [
@@ -74,10 +74,10 @@ let USASelectElement = (() => {
74
74
  let _name_initializers = [];
75
75
  let _name_extraInitializers = [];
76
76
  let _onSelectChange_decorators;
77
+ let _onOptionAdded_decorators;
77
78
  var USASelectElement = _classThis = class extends _classSuper {
78
79
  constructor() {
79
80
  super(...arguments);
80
- _USASelectElement_instances.add(this);
81
81
  _USASelectElement_value_accessor_storage.set(this, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, "")));
82
82
  _USASelectElement_name_accessor_storage.set(this, (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _name_initializers, "")));
83
83
  _USASelectElement_select.set(this, (__runInitializers(this, _name_extraInitializers), query("select")));
@@ -97,39 +97,28 @@ let USASelectElement = (() => {
97
97
  const select = __classPrivateFieldGet(this, _USASelectElement_select, "f").call(this);
98
98
  __classPrivateFieldGet(this, _USASelectElement_internals, "f").setFormValue(select.value);
99
99
  }
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);
100
+ onOptionAdded(e) {
101
+ const target = e.target;
102
+ e.stopPropagation();
105
103
  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();
113
- }
104
+ select.append(target.option);
114
105
  }
115
106
  };
116
107
  _USASelectElement_select = new WeakMap();
117
108
  _USASelectElement_internals = new WeakMap();
118
- _USASelectElement_instances = new WeakSet();
119
109
  _USASelectElement_value_accessor_storage = new WeakMap();
120
110
  _USASelectElement_name_accessor_storage = new WeakMap();
121
- _USASelectElement_createId = function _USASelectElement_createId(val) {
122
- return val.split(" ").join("-").toLowerCase();
123
- };
124
111
  __setFunctionName(_classThis, "USASelectElement");
125
112
  (() => {
126
113
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
127
114
  _value_decorators = [attr()];
128
115
  _name_decorators = [attr()];
129
116
  _onSelectChange_decorators = [listen("change")];
117
+ _onOptionAdded_decorators = [listen("usa::select::option::added")];
130
118
  __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
119
  __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
120
  __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);
121
+ __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
122
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
134
123
  USASelectElement = _classThis = _classDescriptor.value;
135
124
  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;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;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,MAAM,MAAM,GAAG,CAAC,CAAC,MAA+B,CAAC;YAEjD,CAAC,CAAC,eAAe,EAAE,CAAC;YAEpB,MAAM,MAAM,GAAG,uBAAA,IAAI,gCAAQ,MAAZ,IAAI,CAAU,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,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"}
@@ -0,0 +1,2 @@
1
+ import "../link/link.element.js";
2
+ import "./side-nav.element.js";