@spectrum-web-components/button 0.17.6 → 0.18.1-devmode.0

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 (159) hide show
  1. package/package.json +51 -17
  2. package/sp-button.dev.js +3 -0
  3. package/sp-button.dev.js.map +7 -0
  4. package/sp-button.js +3 -14
  5. package/sp-button.js.map +7 -1
  6. package/sp-clear-button.dev.js +3 -0
  7. package/sp-clear-button.dev.js.map +7 -0
  8. package/sp-clear-button.js +3 -14
  9. package/sp-clear-button.js.map +7 -1
  10. package/sp-close-button.dev.js +3 -0
  11. package/sp-close-button.dev.js.map +7 -0
  12. package/sp-close-button.js +3 -14
  13. package/sp-close-button.js.map +7 -1
  14. package/src/Button.dev.js +79 -0
  15. package/src/Button.dev.js.map +7 -0
  16. package/src/Button.js +72 -87
  17. package/src/Button.js.map +7 -1
  18. package/src/ButtonBase.dev.js +215 -0
  19. package/src/ButtonBase.dev.js.map +7 -0
  20. package/src/ButtonBase.js +198 -201
  21. package/src/ButtonBase.js.map +7 -1
  22. package/src/ClearButton.dev.js +70 -0
  23. package/src/ClearButton.dev.js.map +7 -0
  24. package/src/ClearButton.js +45 -52
  25. package/src/ClearButton.js.map +7 -1
  26. package/src/CloseButton.dev.js +65 -0
  27. package/src/CloseButton.dev.js.map +7 -0
  28. package/src/CloseButton.js +42 -49
  29. package/src/CloseButton.js.map +7 -1
  30. package/src/StyledButton.dev.js +8 -0
  31. package/src/StyledButton.dev.js.map +7 -0
  32. package/src/StyledButton.js +6 -17
  33. package/src/StyledButton.js.map +7 -1
  34. package/src/button-base.css.dev.js +10 -0
  35. package/src/button-base.css.dev.js.map +7 -0
  36. package/src/button-base.css.js +3 -14
  37. package/src/button-base.css.js.map +7 -1
  38. package/src/button.css.dev.js +619 -0
  39. package/src/button.css.dev.js.map +7 -0
  40. package/src/button.css.js +3 -14
  41. package/src/button.css.js.map +7 -1
  42. package/src/index.dev.js +6 -0
  43. package/src/index.dev.js.map +7 -0
  44. package/src/index.js +6 -17
  45. package/src/index.js.map +7 -1
  46. package/src/spectrum-button-base.css.dev.js +6 -0
  47. package/src/spectrum-button-base.css.dev.js.map +7 -0
  48. package/src/spectrum-button-base.css.js +3 -14
  49. package/src/spectrum-button-base.css.js.map +7 -1
  50. package/src/spectrum-button.css.dev.js +587 -0
  51. package/src/spectrum-button.css.dev.js.map +7 -0
  52. package/src/spectrum-button.css.js +3 -14
  53. package/src/spectrum-button.css.js.map +7 -1
  54. package/stories/button-accent-fill-sizes.stories.js +21 -18
  55. package/stories/button-accent-fill-sizes.stories.js.map +7 -1
  56. package/stories/button-accent-fill.stories.js +24 -14
  57. package/stories/button-accent-fill.stories.js.map +7 -1
  58. package/stories/button-accent-outline-sizes.stories.js +21 -18
  59. package/stories/button-accent-outline-sizes.stories.js.map +7 -1
  60. package/stories/button-accent-outline.stories.js +24 -14
  61. package/stories/button-accent-outline.stories.js.map +7 -1
  62. package/stories/button-black-fill-sizes.stories.js +22 -19
  63. package/stories/button-black-fill-sizes.stories.js.map +7 -1
  64. package/stories/button-black-fill.stories.js +26 -15
  65. package/stories/button-black-fill.stories.js.map +7 -1
  66. package/stories/button-black-outline-sizes.stories.js +22 -19
  67. package/stories/button-black-outline-sizes.stories.js.map +7 -1
  68. package/stories/button-black-outline.stories.js +26 -15
  69. package/stories/button-black-outline.stories.js.map +7 -1
  70. package/stories/button-negative-fill-sizes.stories.js +21 -18
  71. package/stories/button-negative-fill-sizes.stories.js.map +7 -1
  72. package/stories/button-negative-fill.stories.js +24 -14
  73. package/stories/button-negative-fill.stories.js.map +7 -1
  74. package/stories/button-negative-outline-sizes.stories.js +21 -18
  75. package/stories/button-negative-outline-sizes.stories.js.map +7 -1
  76. package/stories/button-negative-outline.stories.js +24 -14
  77. package/stories/button-negative-outline.stories.js.map +7 -1
  78. package/stories/button-primary-fill-sizes.stories.js +21 -18
  79. package/stories/button-primary-fill-sizes.stories.js.map +7 -1
  80. package/stories/button-primary-fill.stories.js +24 -14
  81. package/stories/button-primary-fill.stories.js.map +7 -1
  82. package/stories/button-primary-outline-sizes.stories.js +21 -18
  83. package/stories/button-primary-outline-sizes.stories.js.map +7 -1
  84. package/stories/button-primary-outline.stories.js +24 -14
  85. package/stories/button-primary-outline.stories.js.map +7 -1
  86. package/stories/button-secondary-fill-sizes.stories.js +21 -18
  87. package/stories/button-secondary-fill-sizes.stories.js.map +7 -1
  88. package/stories/button-secondary-fill.stories.js +24 -14
  89. package/stories/button-secondary-fill.stories.js.map +7 -1
  90. package/stories/button-secondary-outline-sizes.stories.js +21 -18
  91. package/stories/button-secondary-outline-sizes.stories.js.map +7 -1
  92. package/stories/button-secondary-outline.stories.js +24 -14
  93. package/stories/button-secondary-outline.stories.js.map +7 -1
  94. package/stories/button-white-fill-sizes.stories.js +22 -19
  95. package/stories/button-white-fill-sizes.stories.js.map +7 -1
  96. package/stories/button-white-fill.stories.js +26 -15
  97. package/stories/button-white-fill.stories.js.map +7 -1
  98. package/stories/button-white-outline-sizes.stories.js +22 -19
  99. package/stories/button-white-outline-sizes.stories.js.map +7 -1
  100. package/stories/button-white-outline.stories.js +26 -15
  101. package/stories/button-white-outline.stories.js.map +7 -1
  102. package/stories/index.js +99 -94
  103. package/stories/index.js.map +7 -1
  104. package/test/benchmark/test-basic.js +5 -16
  105. package/test/benchmark/test-basic.js.map +7 -1
  106. package/test/button-accent-fill-sizes.test-vrt.js +4 -15
  107. package/test/button-accent-fill-sizes.test-vrt.js.map +7 -1
  108. package/test/button-accent-fill.test-vrt.js +4 -15
  109. package/test/button-accent-fill.test-vrt.js.map +7 -1
  110. package/test/button-accent-outline-sizes.test-vrt.js +4 -15
  111. package/test/button-accent-outline-sizes.test-vrt.js.map +7 -1
  112. package/test/button-accent-outline.test-vrt.js +4 -15
  113. package/test/button-accent-outline.test-vrt.js.map +7 -1
  114. package/test/button-black-fill-sizes.test-vrt.js +4 -15
  115. package/test/button-black-fill-sizes.test-vrt.js.map +7 -1
  116. package/test/button-black-fill.test-vrt.js +4 -15
  117. package/test/button-black-fill.test-vrt.js.map +7 -1
  118. package/test/button-black-outline-sizes.test-vrt.js +4 -15
  119. package/test/button-black-outline-sizes.test-vrt.js.map +7 -1
  120. package/test/button-black-outline.test-vrt.js +4 -15
  121. package/test/button-black-outline.test-vrt.js.map +7 -1
  122. package/test/button-negative-fill-sizes.test-vrt.js +4 -15
  123. package/test/button-negative-fill-sizes.test-vrt.js.map +7 -1
  124. package/test/button-negative-fill.test-vrt.js +4 -15
  125. package/test/button-negative-fill.test-vrt.js.map +7 -1
  126. package/test/button-negative-outline-sizes.test-vrt.js +4 -15
  127. package/test/button-negative-outline-sizes.test-vrt.js.map +7 -1
  128. package/test/button-negative-outline.test-vrt.js +4 -15
  129. package/test/button-negative-outline.test-vrt.js.map +7 -1
  130. package/test/button-primary-fill-sizes.test-vrt.js +4 -15
  131. package/test/button-primary-fill-sizes.test-vrt.js.map +7 -1
  132. package/test/button-primary-fill.test-vrt.js +4 -15
  133. package/test/button-primary-fill.test-vrt.js.map +7 -1
  134. package/test/button-primary-outline-sizes.test-vrt.js +4 -15
  135. package/test/button-primary-outline-sizes.test-vrt.js.map +7 -1
  136. package/test/button-primary-outline.test-vrt.js +4 -15
  137. package/test/button-primary-outline.test-vrt.js.map +7 -1
  138. package/test/button-secondary-fill-sizes.test-vrt.js +4 -15
  139. package/test/button-secondary-fill-sizes.test-vrt.js.map +7 -1
  140. package/test/button-secondary-fill.test-vrt.js +4 -15
  141. package/test/button-secondary-fill.test-vrt.js.map +7 -1
  142. package/test/button-secondary-outline-sizes.test-vrt.js +4 -15
  143. package/test/button-secondary-outline-sizes.test-vrt.js.map +7 -1
  144. package/test/button-secondary-outline.test-vrt.js +4 -15
  145. package/test/button-secondary-outline.test-vrt.js.map +7 -1
  146. package/test/button-white-fill-sizes.test-vrt.js +4 -15
  147. package/test/button-white-fill-sizes.test-vrt.js.map +7 -1
  148. package/test/button-white-fill.test-vrt.js +4 -15
  149. package/test/button-white-fill.test-vrt.js.map +7 -1
  150. package/test/button-white-outline-sizes.test-vrt.js +4 -15
  151. package/test/button-white-outline-sizes.test-vrt.js.map +7 -1
  152. package/test/button-white-outline.test-vrt.js +4 -15
  153. package/test/button-white-outline.test-vrt.js.map +7 -1
  154. package/test/button.test.js +315 -320
  155. package/test/button.test.js.map +7 -1
  156. package/test/clear-button.test.js +9 -20
  157. package/test/clear-button.test.js.map +7 -1
  158. package/test/close-button.test.js +9 -20
  159. package/test/close-button.test.js.map +7 -1
@@ -1,390 +1,385 @@
1
- /*
2
- Copyright 2020 Adobe. All rights reserved.
3
- This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License. You may obtain a copy
5
- of the License at http://www.apache.org/licenses/LICENSE-2.0
6
-
7
- Unless required by applicable law or agreed to in writing, software distributed under
8
- the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
- OF ANY KIND, either express or implied. See the License for the specific language
10
- governing permissions and limitations under the License.
11
- */
12
- import '@spectrum-web-components/button/sp-button.js';
13
- import { elementUpdated, expect, fixture, html, waitUntil, } from '@open-wc/testing';
14
- import { shiftTabEvent } from '../../../test/testing-helpers.js';
15
- import { spy } from 'sinon';
16
- describe('Button', () => {
17
- it('loads default', async () => {
18
- const el = await fixture(html `
1
+ import "@spectrum-web-components/button/sp-button.js";
2
+ import {
3
+ elementUpdated,
4
+ expect,
5
+ fixture,
6
+ html,
7
+ waitUntil
8
+ } from "@open-wc/testing";
9
+ import { shiftTabEvent } from "../../../test/testing-helpers.js";
10
+ import { spy } from "sinon";
11
+ describe("Button", () => {
12
+ it("loads default", async () => {
13
+ const el = await fixture(html`
19
14
  <sp-button tabindex="0">Button</sp-button>
20
15
  `);
21
- await elementUpdated(el);
22
- expect(el).to.not.be.undefined;
23
- expect(el.textContent).to.include('Button');
24
- await expect(el).to.be.accessible();
25
- });
26
- it('loads default w/ element content', async () => {
27
- const el = await fixture(html `
16
+ await elementUpdated(el);
17
+ expect(el).to.not.be.undefined;
18
+ expect(el.textContent).to.include("Button");
19
+ await expect(el).to.be.accessible();
20
+ });
21
+ it("loads default w/ element content", async () => {
22
+ const el = await fixture(html`
28
23
  <sp-button label="Button"><svg></svg></sp-button>
29
24
  `);
30
- await elementUpdated(el);
31
- expect(el).to.not.be.undefined;
32
- await expect(el).to.be.accessible();
33
- });
34
- it('loads default w/ an icon', async () => {
35
- const el = await fixture(html `
25
+ await elementUpdated(el);
26
+ expect(el).to.not.be.undefined;
27
+ await expect(el).to.be.accessible();
28
+ });
29
+ it("loads default w/ an icon", async () => {
30
+ const el = await fixture(html`
36
31
  <sp-button label="">
37
32
  Button
38
33
  <svg slot="icon"></svg>
39
34
  </sp-button>
40
35
  `);
41
- await elementUpdated(el);
42
- expect(el).to.not.be.undefined;
43
- expect(el.textContent).to.include('Button');
44
- expect(!el.hasIcon);
45
- await expect(el).to.be.accessible();
46
- });
47
- it('loads default only icon', async () => {
48
- const el = await fixture(html `
36
+ await elementUpdated(el);
37
+ expect(el).to.not.be.undefined;
38
+ expect(el.textContent).to.include("Button");
39
+ expect(!el.hasIcon);
40
+ await expect(el).to.be.accessible();
41
+ });
42
+ it("loads default only icon", async () => {
43
+ const el = await fixture(html`
49
44
  <sp-button label="Button">
50
45
  <svg slot="icon"></svg>
51
46
  </sp-button>
52
47
  `);
53
- await elementUpdated(el);
54
- expect(el).to.not.be.undefined;
55
- await expect(el).to.be.accessible();
56
- });
57
- it('manages "role"', async () => {
58
- const el = await fixture(html `
48
+ await elementUpdated(el);
49
+ expect(el).to.not.be.undefined;
50
+ await expect(el).to.be.accessible();
51
+ });
52
+ it('manages "role"', async () => {
53
+ const el = await fixture(html`
59
54
  <sp-button>Button</sp-button>
60
55
  `);
61
- await elementUpdated(el);
62
- expect(el.getAttribute('role')).to.equal('button');
63
- el.href = '#';
64
- await elementUpdated(el);
65
- expect(el.getAttribute('role')).to.equal('link');
66
- el.removeAttribute('href');
67
- await elementUpdated(el);
68
- expect(el.getAttribute('role')).to.equal('button');
69
- });
70
- it('allows label to be toggled', async () => {
71
- const testNode = document.createTextNode('Button');
72
- const el = await fixture(html `
56
+ await elementUpdated(el);
57
+ expect(el.getAttribute("role")).to.equal("button");
58
+ el.href = "#";
59
+ await elementUpdated(el);
60
+ expect(el.getAttribute("role")).to.equal("link");
61
+ el.removeAttribute("href");
62
+ await elementUpdated(el);
63
+ expect(el.getAttribute("role")).to.equal("button");
64
+ });
65
+ it("allows label to be toggled", async () => {
66
+ const testNode = document.createTextNode("Button");
67
+ const el = await fixture(html`
73
68
  <sp-button>
74
69
  ${testNode}
75
70
  <svg slot="icon"></svg>
76
71
  </sp-button>
77
72
  `);
78
- await elementUpdated(el);
79
- const labelTestableEl = el;
80
- expect(labelTestableEl.hasLabel, 'starts with label').to.be.true;
81
- testNode.textContent = '';
82
- await elementUpdated(el);
83
- await waitUntil(() => !labelTestableEl.hasLabel, 'label is removed');
84
- testNode.textContent = 'Button';
85
- await elementUpdated(el);
86
- expect(labelTestableEl.hasLabel, 'label is returned').to.be.true;
87
- });
88
- it('loads with href', async () => {
89
- const el = await fixture(html `
73
+ await elementUpdated(el);
74
+ const labelTestableEl = el;
75
+ expect(labelTestableEl.hasLabel, "starts with label").to.be.true;
76
+ testNode.textContent = "";
77
+ await elementUpdated(el);
78
+ await waitUntil(() => !labelTestableEl.hasLabel, "label is removed");
79
+ testNode.textContent = "Button";
80
+ await elementUpdated(el);
81
+ expect(labelTestableEl.hasLabel, "label is returned").to.be.true;
82
+ });
83
+ it("loads with href", async () => {
84
+ const el = await fixture(html`
90
85
  <sp-button href="test_url">With Href</sp-button>
91
86
  `);
92
- await elementUpdated(el);
93
- expect(el).to.not.be.undefined;
94
- expect(el.textContent).to.include('With Href');
95
- });
96
- it('loads with href and target', async () => {
97
- const el = await fixture(html `
87
+ await elementUpdated(el);
88
+ expect(el).to.not.be.undefined;
89
+ expect(el.textContent).to.include("With Href");
90
+ });
91
+ it("loads with href and target", async () => {
92
+ const el = await fixture(html`
98
93
  <sp-button href="test_url" target="_blank">
99
94
  With Target
100
95
  </sp-button>
101
96
  `);
102
- await elementUpdated(el);
103
- expect(el).to.not.be.undefined;
104
- expect(el.textContent).to.include('With Target');
105
- });
106
- it('accepts shit+tab interactions', async () => {
107
- let focusedCount = 0;
108
- const el = await fixture(html `
97
+ await elementUpdated(el);
98
+ expect(el).to.not.be.undefined;
99
+ expect(el.textContent).to.include("With Target");
100
+ });
101
+ it("accepts shit+tab interactions", async () => {
102
+ let focusedCount = 0;
103
+ const el = await fixture(html`
109
104
  <sp-button href="test_url" target="_blank">
110
105
  With Target
111
106
  </sp-button>
112
107
  `);
113
- await elementUpdated(el);
114
- const focusElement = el.focusElement;
115
- focusElement.addEventListener('focus', () => (focusedCount += 1));
116
- expect(focusedCount).to.equal(0);
117
- el.focus();
118
- await elementUpdated(el);
119
- expect(focusedCount).to.equal(1);
120
- el.dispatchEvent(shiftTabEvent());
121
- el.dispatchEvent(new Event('focusin'));
122
- await elementUpdated(el);
123
- expect(focusedCount).to.equal(1);
124
- });
125
- it('manages `disabled`', async () => {
126
- const clickSpy = spy();
127
- const el = await fixture(html `
108
+ await elementUpdated(el);
109
+ const focusElement = el.focusElement;
110
+ focusElement.addEventListener("focus", () => focusedCount += 1);
111
+ expect(focusedCount).to.equal(0);
112
+ el.focus();
113
+ await elementUpdated(el);
114
+ expect(focusedCount).to.equal(1);
115
+ el.dispatchEvent(shiftTabEvent());
116
+ el.dispatchEvent(new Event("focusin"));
117
+ await elementUpdated(el);
118
+ expect(focusedCount).to.equal(1);
119
+ });
120
+ it("manages `disabled`", async () => {
121
+ const clickSpy = spy();
122
+ const el = await fixture(html`
128
123
  <sp-button @click=${() => clickSpy()}>Button</sp-button>
129
124
  `);
130
- await elementUpdated(el);
131
- el.click();
132
- await elementUpdated(el);
133
- expect(clickSpy.calledOnce).to.be.true;
134
- clickSpy.resetHistory();
135
- el.disabled = true;
136
- await elementUpdated(el);
137
- el.click();
138
- await elementUpdated(el);
139
- expect(clickSpy.callCount).to.equal(0);
140
- clickSpy.resetHistory();
141
- await elementUpdated(el);
142
- el.dispatchEvent(new Event('click', {}));
143
- await elementUpdated(el);
144
- expect(clickSpy.callCount).to.equal(0);
145
- clickSpy.resetHistory();
146
- el.disabled = false;
147
- el.click();
148
- await elementUpdated(el);
149
- expect(clickSpy.calledOnce).to.be.true;
150
- });
151
- it('manages `aria-disabled`', async () => {
152
- const el = await fixture(html `
125
+ await elementUpdated(el);
126
+ el.click();
127
+ await elementUpdated(el);
128
+ expect(clickSpy.calledOnce).to.be.true;
129
+ clickSpy.resetHistory();
130
+ el.disabled = true;
131
+ await elementUpdated(el);
132
+ el.click();
133
+ await elementUpdated(el);
134
+ expect(clickSpy.callCount).to.equal(0);
135
+ clickSpy.resetHistory();
136
+ await elementUpdated(el);
137
+ el.dispatchEvent(new Event("click", {}));
138
+ await elementUpdated(el);
139
+ expect(clickSpy.callCount).to.equal(0);
140
+ clickSpy.resetHistory();
141
+ el.disabled = false;
142
+ el.click();
143
+ await elementUpdated(el);
144
+ expect(clickSpy.calledOnce).to.be.true;
145
+ });
146
+ it("manages `aria-disabled`", async () => {
147
+ const el = await fixture(html`
153
148
  <sp-button href="test_url" target="_blank">
154
149
  With Target
155
150
  </sp-button>
156
151
  `);
157
- await elementUpdated(el);
158
- expect(el.hasAttribute('aria-disabled'), 'initially not').to.be.false;
159
- el.disabled = true;
160
- await elementUpdated(el);
161
- expect(el.getAttribute('aria-disabled')).to.equal('true');
162
- el.disabled = false;
163
- await elementUpdated(el);
164
- expect(el.hasAttribute('aria-disabled'), 'finally not').to.be.false;
165
- });
166
- it('manages tabIndex while disabled', async () => {
167
- const el = await fixture(html `
152
+ await elementUpdated(el);
153
+ expect(el.hasAttribute("aria-disabled"), "initially not").to.be.false;
154
+ el.disabled = true;
155
+ await elementUpdated(el);
156
+ expect(el.getAttribute("aria-disabled")).to.equal("true");
157
+ el.disabled = false;
158
+ await elementUpdated(el);
159
+ expect(el.hasAttribute("aria-disabled"), "finally not").to.be.false;
160
+ });
161
+ it("manages tabIndex while disabled", async () => {
162
+ const el = await fixture(html`
168
163
  <sp-button href="test_url" target="_blank">
169
164
  With Target
170
165
  </sp-button>
171
166
  `);
172
- await elementUpdated(el);
173
- expect(el.tabIndex).to.equal(0);
174
- el.disabled = true;
175
- await elementUpdated(el);
176
- expect(el.tabIndex).to.equal(-1);
177
- el.tabIndex = 2;
178
- await elementUpdated(el);
179
- expect(el.tabIndex).to.equal(-1);
180
- el.disabled = false;
181
- await elementUpdated(el);
182
- expect(el.tabIndex).to.equal(2);
183
- });
184
- it('swallows `click` interaction when `[disabled]`', async () => {
185
- const clickSpy = spy();
186
- const el = await fixture(html `
167
+ await elementUpdated(el);
168
+ expect(el.tabIndex).to.equal(0);
169
+ el.disabled = true;
170
+ await elementUpdated(el);
171
+ expect(el.tabIndex).to.equal(-1);
172
+ el.tabIndex = 2;
173
+ await elementUpdated(el);
174
+ expect(el.tabIndex).to.equal(-1);
175
+ el.disabled = false;
176
+ await elementUpdated(el);
177
+ expect(el.tabIndex).to.equal(2);
178
+ });
179
+ it("swallows `click` interaction when `[disabled]`", async () => {
180
+ const clickSpy = spy();
181
+ const el = await fixture(html`
187
182
  <sp-button disabled @click=${() => clickSpy()}>
188
183
  Button
189
184
  </sp-button>
190
185
  `);
191
- await elementUpdated(el);
192
- expect(clickSpy.callCount).to.equal(0);
193
- el.click();
194
- await elementUpdated(el);
195
- expect(clickSpy.callCount).to.equal(0);
196
- });
197
- it('translates keyboard interactions to click', async () => {
198
- const clickSpy = spy();
199
- const el = await fixture(html `
186
+ await elementUpdated(el);
187
+ expect(clickSpy.callCount).to.equal(0);
188
+ el.click();
189
+ await elementUpdated(el);
190
+ expect(clickSpy.callCount).to.equal(0);
191
+ });
192
+ it("translates keyboard interactions to click", async () => {
193
+ const clickSpy = spy();
194
+ const el = await fixture(html`
200
195
  <sp-button @click=${() => clickSpy()}>Button</sp-button>
201
196
  `);
202
- await elementUpdated(el);
203
- el.dispatchEvent(new KeyboardEvent('keypress', {
204
- bubbles: true,
205
- composed: true,
206
- cancelable: true,
207
- code: 'Enter',
208
- key: 'Enter',
209
- }));
210
- await elementUpdated(el);
211
- expect(clickSpy.callCount).to.equal(1);
212
- clickSpy.resetHistory();
213
- el.dispatchEvent(new KeyboardEvent('keypress', {
214
- bubbles: true,
215
- composed: true,
216
- cancelable: true,
217
- code: 'NumpadEnter',
218
- key: 'NumpadEnter',
219
- }));
220
- await elementUpdated(el);
221
- expect(clickSpy.callCount).to.equal(1);
222
- clickSpy.resetHistory();
223
- el.dispatchEvent(new KeyboardEvent('keypress', {
224
- bubbles: true,
225
- composed: true,
226
- cancelable: true,
227
- code: 'Space',
228
- key: 'Space',
229
- }));
230
- await elementUpdated(el);
231
- expect(clickSpy.callCount).to.equal(0);
232
- clickSpy.resetHistory();
233
- el.dispatchEvent(new KeyboardEvent('keydown', {
234
- bubbles: true,
235
- composed: true,
236
- cancelable: true,
237
- code: 'Space',
238
- key: 'Space',
239
- }));
240
- el.dispatchEvent(new KeyboardEvent('keyup', {
241
- bubbles: true,
242
- composed: true,
243
- cancelable: true,
244
- code: 'Space',
245
- key: 'Space',
246
- }));
247
- await elementUpdated(el);
248
- expect(clickSpy.callCount).to.equal(1);
249
- clickSpy.resetHistory();
250
- el.dispatchEvent(new KeyboardEvent('keydown', {
251
- bubbles: true,
252
- composed: true,
253
- cancelable: true,
254
- code: 'Space',
255
- key: 'Space',
256
- }));
257
- el.dispatchEvent(new KeyboardEvent('keyup', {
258
- bubbles: true,
259
- composed: true,
260
- cancelable: true,
261
- code: 'KeyG',
262
- key: 'g',
263
- }));
264
- await elementUpdated(el);
265
- expect(clickSpy.callCount).to.equal(0);
266
- el.dispatchEvent(new KeyboardEvent('keyup', {
267
- bubbles: true,
268
- composed: true,
269
- cancelable: true,
270
- code: 'Space',
271
- key: 'Space',
272
- }));
273
- clickSpy.resetHistory();
274
- el.dispatchEvent(new KeyboardEvent('keydown', {
275
- bubbles: true,
276
- composed: true,
277
- cancelable: true,
278
- code: 'KeyG',
279
- key: 'g',
280
- }));
281
- el.dispatchEvent(new KeyboardEvent('keyup', {
282
- bubbles: true,
283
- composed: true,
284
- cancelable: true,
285
- code: 'Space',
286
- key: 'Space',
287
- }));
288
- await elementUpdated(el);
289
- expect(clickSpy.callCount).to.equal(0);
290
- });
291
- it('proxies clicks by "type"', async () => {
292
- const submitSpy = spy();
293
- const resetSpy = spy();
294
- const test = await fixture(html `
197
+ await elementUpdated(el);
198
+ el.dispatchEvent(new KeyboardEvent("keypress", {
199
+ bubbles: true,
200
+ composed: true,
201
+ cancelable: true,
202
+ code: "Enter",
203
+ key: "Enter"
204
+ }));
205
+ await elementUpdated(el);
206
+ expect(clickSpy.callCount).to.equal(1);
207
+ clickSpy.resetHistory();
208
+ el.dispatchEvent(new KeyboardEvent("keypress", {
209
+ bubbles: true,
210
+ composed: true,
211
+ cancelable: true,
212
+ code: "NumpadEnter",
213
+ key: "NumpadEnter"
214
+ }));
215
+ await elementUpdated(el);
216
+ expect(clickSpy.callCount).to.equal(1);
217
+ clickSpy.resetHistory();
218
+ el.dispatchEvent(new KeyboardEvent("keypress", {
219
+ bubbles: true,
220
+ composed: true,
221
+ cancelable: true,
222
+ code: "Space",
223
+ key: "Space"
224
+ }));
225
+ await elementUpdated(el);
226
+ expect(clickSpy.callCount).to.equal(0);
227
+ clickSpy.resetHistory();
228
+ el.dispatchEvent(new KeyboardEvent("keydown", {
229
+ bubbles: true,
230
+ composed: true,
231
+ cancelable: true,
232
+ code: "Space",
233
+ key: "Space"
234
+ }));
235
+ el.dispatchEvent(new KeyboardEvent("keyup", {
236
+ bubbles: true,
237
+ composed: true,
238
+ cancelable: true,
239
+ code: "Space",
240
+ key: "Space"
241
+ }));
242
+ await elementUpdated(el);
243
+ expect(clickSpy.callCount).to.equal(1);
244
+ clickSpy.resetHistory();
245
+ el.dispatchEvent(new KeyboardEvent("keydown", {
246
+ bubbles: true,
247
+ composed: true,
248
+ cancelable: true,
249
+ code: "Space",
250
+ key: "Space"
251
+ }));
252
+ el.dispatchEvent(new KeyboardEvent("keyup", {
253
+ bubbles: true,
254
+ composed: true,
255
+ cancelable: true,
256
+ code: "KeyG",
257
+ key: "g"
258
+ }));
259
+ await elementUpdated(el);
260
+ expect(clickSpy.callCount).to.equal(0);
261
+ el.dispatchEvent(new KeyboardEvent("keyup", {
262
+ bubbles: true,
263
+ composed: true,
264
+ cancelable: true,
265
+ code: "Space",
266
+ key: "Space"
267
+ }));
268
+ clickSpy.resetHistory();
269
+ el.dispatchEvent(new KeyboardEvent("keydown", {
270
+ bubbles: true,
271
+ composed: true,
272
+ cancelable: true,
273
+ code: "KeyG",
274
+ key: "g"
275
+ }));
276
+ el.dispatchEvent(new KeyboardEvent("keyup", {
277
+ bubbles: true,
278
+ composed: true,
279
+ cancelable: true,
280
+ code: "Space",
281
+ key: "Space"
282
+ }));
283
+ await elementUpdated(el);
284
+ expect(clickSpy.callCount).to.equal(0);
285
+ });
286
+ it('proxies clicks by "type"', async () => {
287
+ const submitSpy = spy();
288
+ const resetSpy = spy();
289
+ const test = await fixture(html`
295
290
  <form
296
291
  @submit=${(event) => {
297
- event.preventDefault();
298
- submitSpy();
299
- }}
292
+ event.preventDefault();
293
+ submitSpy();
294
+ }}
300
295
  @reset=${(event) => {
301
- event.preventDefault();
302
- resetSpy();
303
- }}
296
+ event.preventDefault();
297
+ resetSpy();
298
+ }}
304
299
  >
305
300
  <sp-button>Button</sp-button>
306
301
  </form>
307
302
  `);
308
- const el = test.querySelector('sp-button');
309
- await elementUpdated(el);
310
- el.type = 'submit';
311
- await elementUpdated(el);
312
- el.click();
313
- expect(submitSpy.callCount).to.equal(1);
314
- expect(resetSpy.callCount).to.equal(0);
315
- el.type = 'reset';
316
- await elementUpdated(el);
317
- el.click();
318
- expect(submitSpy.callCount).to.equal(1);
319
- expect(resetSpy.callCount).to.equal(1);
320
- el.type = 'button';
321
- await elementUpdated(el);
322
- el.click();
323
- expect(submitSpy.callCount).to.equal(1);
324
- expect(resetSpy.callCount).to.equal(1);
325
- });
326
- it('proxies click by [href]', async () => {
327
- const clickSpy = spy();
328
- const el = await fixture(html `
303
+ const el = test.querySelector("sp-button");
304
+ await elementUpdated(el);
305
+ el.type = "submit";
306
+ await elementUpdated(el);
307
+ el.click();
308
+ expect(submitSpy.callCount).to.equal(1);
309
+ expect(resetSpy.callCount).to.equal(0);
310
+ el.type = "reset";
311
+ await elementUpdated(el);
312
+ el.click();
313
+ expect(submitSpy.callCount).to.equal(1);
314
+ expect(resetSpy.callCount).to.equal(1);
315
+ el.type = "button";
316
+ await elementUpdated(el);
317
+ el.click();
318
+ expect(submitSpy.callCount).to.equal(1);
319
+ expect(resetSpy.callCount).to.equal(1);
320
+ });
321
+ it("proxies click by [href]", async () => {
322
+ const clickSpy = spy();
323
+ const el = await fixture(html`
329
324
  <sp-button href="test_url">With Href</sp-button>
330
325
  `);
331
- await elementUpdated(el);
332
- el.anchorElement.addEventListener('click', (event) => {
333
- event.preventDefault();
334
- event.stopPropagation();
335
- clickSpy();
336
- });
337
- expect(clickSpy.callCount).to.equal(0);
338
- el.click();
339
- await elementUpdated(el);
340
- expect(clickSpy.callCount).to.equal(1);
326
+ await elementUpdated(el);
327
+ el.anchorElement.addEventListener("click", (event) => {
328
+ event.preventDefault();
329
+ event.stopPropagation();
330
+ clickSpy();
341
331
  });
342
- it('manages "active" while focused', async () => {
343
- const el = await fixture(html `
332
+ expect(clickSpy.callCount).to.equal(0);
333
+ el.click();
334
+ await elementUpdated(el);
335
+ expect(clickSpy.callCount).to.equal(1);
336
+ });
337
+ it('manages "active" while focused', async () => {
338
+ const el = await fixture(html`
344
339
  <sp-button label="Button">
345
340
  <svg slot="icon"></svg>
346
341
  </sp-button>
347
342
  `);
348
- await elementUpdated(el);
349
- el.active = true;
350
- await elementUpdated(el);
351
- el.dispatchEvent(new FocusEvent('focusout'));
352
- await elementUpdated(el);
353
- expect(el.active).to.be.false;
354
- });
355
- describe('deprecated variants and attributes', () => {
356
- it('manages [quiet]', async () => {
357
- const el = await fixture(html `
343
+ await elementUpdated(el);
344
+ el.active = true;
345
+ await elementUpdated(el);
346
+ el.dispatchEvent(new FocusEvent("focusout"));
347
+ await elementUpdated(el);
348
+ expect(el.active).to.be.false;
349
+ });
350
+ describe("deprecated variants and attributes", () => {
351
+ it("manages [quiet]", async () => {
352
+ const el = await fixture(html`
358
353
  <sp-button quiet>Button</sp-button>
359
354
  `);
360
- await elementUpdated(el);
361
- expect(el.treatment).to.equal('outline');
362
- el.quiet = false;
363
- await elementUpdated(el);
364
- expect(el.treatment).to.equal('fill');
365
- });
366
- it('upgrades [variant="cta"] to [variant="accent"]', async () => {
367
- const el = await fixture(html `
355
+ await elementUpdated(el);
356
+ expect(el.treatment).to.equal("outline");
357
+ el.quiet = false;
358
+ await elementUpdated(el);
359
+ expect(el.treatment).to.equal("fill");
360
+ });
361
+ it('upgrades [variant="cta"] to [variant="accent"]', async () => {
362
+ const el = await fixture(html`
368
363
  <sp-button variant="cta">Button</sp-button>
369
364
  `);
370
- await elementUpdated(el);
371
- expect(el.variant).to.equal('accent');
372
- });
373
- it('manages [variant="overBackground"]', async () => {
374
- const el = await fixture(html `
365
+ await elementUpdated(el);
366
+ expect(el.variant).to.equal("accent");
367
+ });
368
+ it('manages [variant="overBackground"]', async () => {
369
+ const el = await fixture(html`
375
370
  <sp-button variant="overBackground">Button</sp-button>
376
371
  `);
377
- await elementUpdated(el);
378
- expect(el.variant).to.equal('white');
379
- expect(el.treatment).to.equal('outline');
380
- });
381
- it('forces [variant="accent"]', async () => {
382
- const el = await fixture(html `
372
+ await elementUpdated(el);
373
+ expect(el.variant).to.equal("white");
374
+ expect(el.treatment).to.equal("outline");
375
+ });
376
+ it('forces [variant="accent"]', async () => {
377
+ const el = await fixture(html`
383
378
  <sp-button variant="not-supported">Button</sp-button>
384
379
  `);
385
- await elementUpdated(el);
386
- expect(el.variant).to.equal('accent');
387
- });
380
+ await elementUpdated(el);
381
+ expect(el.variant).to.equal("accent");
388
382
  });
383
+ });
389
384
  });
390
- //# sourceMappingURL=button.test.js.map
385
+ //# sourceMappingURL=button.test.js.map