@spectrum-web-components/card 0.10.13 → 0.10.14-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.
package/test/card.test.js CHANGED
@@ -1,27 +1,20 @@
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 '../sp-card.js';
13
- import '@spectrum-web-components/action-menu/sp-action-menu.js';
14
- import '@spectrum-web-components/menu/sp-menu.js';
15
- import '@spectrum-web-components/menu/sp-menu-item.js';
16
- import '@spectrum-web-components/menu/sp-menu-divider.js';
17
- import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
18
- import { Default, href, smallHorizontal, } from '../stories/card.stories.js';
19
- import { spy } from 'sinon';
20
- import { spaceEvent } from '../../../test/testing-helpers.js';
21
- import { sendMouse } from '../../../test/plugins/browser.js';
22
- describe('card', () => {
23
- it('loads', async () => {
24
- const el = await fixture(html `
1
+ import "@spectrum-web-components/card/sp-card.js";
2
+ import "@spectrum-web-components/action-menu/sp-action-menu.js";
3
+ import "@spectrum-web-components/menu/sp-menu.js";
4
+ import "@spectrum-web-components/menu/sp-menu-item.js";
5
+ import "@spectrum-web-components/menu/sp-menu-divider.js";
6
+ import { elementUpdated, expect, fixture, html } from "@open-wc/testing";
7
+ import {
8
+ Default,
9
+ href,
10
+ smallHorizontal
11
+ } from "../stories/card.stories.js";
12
+ import { spy } from "sinon";
13
+ import { spaceEvent } from "../../../test/testing-helpers.js";
14
+ import { sendMouse } from "../../../test/plugins/browser.js";
15
+ describe("card", () => {
16
+ it("loads", async () => {
17
+ const el = await fixture(html`
25
18
  <sp-card heading="Card Heading" subheading="JPG">
26
19
  <img
27
20
  slot="preview"
@@ -31,11 +24,11 @@ describe('card', () => {
31
24
  <div slot="footer">Footer</div>
32
25
  </sp-card>
33
26
  `);
34
- await elementUpdated(el);
35
- await expect(el).to.be.accessible();
36
- });
37
- it('loads - [quiet]', async () => {
38
- const el = await fixture(html `
27
+ await elementUpdated(el);
28
+ await expect(el).to.be.accessible();
29
+ });
30
+ it("loads - [quiet]", async () => {
31
+ const el = await fixture(html`
39
32
  <sp-card
40
33
  variant="quiet"
41
34
  heading="Card Heading"
@@ -50,11 +43,11 @@ describe('card', () => {
50
43
  <div slot="footer">Footer</div>
51
44
  </sp-card>
52
45
  `);
53
- await elementUpdated(el);
54
- await expect(el).to.be.accessible();
55
- });
56
- it('loads - [quiet][small]', async () => {
57
- const el = await fixture(html `
46
+ await elementUpdated(el);
47
+ await expect(el).to.be.accessible();
48
+ });
49
+ it("loads - [quiet][small]", async () => {
50
+ const el = await fixture(html`
58
51
  <sp-card
59
52
  size="s"
60
53
  heading="Card Heading"
@@ -85,11 +78,11 @@ describe('card', () => {
85
78
  </sp-action-menu>
86
79
  </sp-card>
87
80
  `);
88
- await elementUpdated(el);
89
- await expect(el).to.be.accessible();
90
- });
91
- it('loads - [gallery]', async () => {
92
- const el = await fixture(html `
81
+ await elementUpdated(el);
82
+ await expect(el).to.be.accessible();
83
+ });
84
+ it("loads - [gallery]", async () => {
85
+ const el = await fixture(html`
93
86
  <sp-card
94
87
  variant="gallery"
95
88
  heading="Card Heading"
@@ -104,187 +97,185 @@ describe('card', () => {
104
97
  <div slot="footer">Footer</div>
105
98
  </sp-card>
106
99
  `);
107
- await elementUpdated(el);
108
- await expect(el).to.be.accessible();
109
- });
110
- it('loads - [horizontal]', async () => {
111
- const el = await fixture(smallHorizontal(smallHorizontal.args));
112
- await elementUpdated(el);
113
- await expect(el).to.be.accessible();
100
+ await elementUpdated(el);
101
+ await expect(el).to.be.accessible();
102
+ });
103
+ it("loads - [horizontal]", async () => {
104
+ const el = await fixture(smallHorizontal(smallHorizontal.args));
105
+ await elementUpdated(el);
106
+ await expect(el).to.be.accessible();
107
+ });
108
+ it("[href] is clickable", async () => {
109
+ const clickSpy = spy();
110
+ const el = await fixture(href({}));
111
+ await elementUpdated(el);
112
+ el.addEventListener("click", (event) => {
113
+ const composedTarget = event.composedPath()[0];
114
+ if (composedTarget.id !== "like-anchor")
115
+ return;
116
+ clickSpy();
114
117
  });
115
- it('[href] is clickable', async () => {
116
- const clickSpy = spy();
117
- const el = await fixture(href({}));
118
- await elementUpdated(el);
119
- el.addEventListener('click', (event) => {
120
- const composedTarget = event.composedPath()[0];
121
- if (composedTarget.id !== 'like-anchor')
122
- return;
123
- clickSpy();
124
- });
125
- el.click();
126
- expect(clickSpy.callCount).to.equal(1);
127
- el.shadowRoot.querySelector('#like-anchor').click();
128
- expect(clickSpy.callCount).to.equal(2);
129
- const img = el.querySelector('img');
130
- const boundingRect = img.getBoundingClientRect();
131
- await sendMouse({
132
- steps: [
133
- {
134
- type: 'move',
135
- position: [
136
- boundingRect.x + boundingRect.width / 2,
137
- boundingRect.y + boundingRect.height / 2,
138
- ],
139
- },
140
- {
141
- type: 'down',
142
- },
143
- {
144
- type: 'up',
145
- },
146
- ],
147
- });
148
- expect(clickSpy.callCount).to.equal(3);
118
+ el.click();
119
+ expect(clickSpy.callCount).to.equal(1);
120
+ el.shadowRoot.querySelector("#like-anchor").click();
121
+ expect(clickSpy.callCount).to.equal(2);
122
+ const img = el.querySelector("img");
123
+ const boundingRect = img.getBoundingClientRect();
124
+ await sendMouse({
125
+ steps: [
126
+ {
127
+ type: "move",
128
+ position: [
129
+ boundingRect.x + boundingRect.width / 2,
130
+ boundingRect.y + boundingRect.height / 2
131
+ ]
132
+ },
133
+ {
134
+ type: "down"
135
+ },
136
+ {
137
+ type: "up"
138
+ }
139
+ ]
149
140
  });
150
- it('links in [href] do not pass their click', async () => {
151
- const clickSpy = spy();
152
- const el = await fixture(href({}));
153
- el.setAttribute('style', [
154
- 'width: 200px;',
155
- 'display: inline-flex;',
156
- '--spectrum-card-coverphoto-height: 136px;',
157
- '--spectrum-actionbutton-height: 32px;',
158
- '--spectrum-icon-tshirt-size-height: 18px;',
159
- '--spectrum-icon-tshirt-size-width: 18px;',
160
- ].join(''));
161
- await elementUpdated(el);
162
- el.addEventListener('click', (event) => {
163
- event.preventDefault();
164
- const path = event.composedPath();
165
- const hasLikeAnchor = path.some((el) => el.id === 'like-anchor');
166
- if (!hasLikeAnchor)
167
- return;
168
- clickSpy();
169
- });
170
- el.click();
171
- expect(clickSpy.callCount).to.equal(1);
172
- const footer = el.querySelector('[slot="footer"]');
173
- let boundingRect = footer.getBoundingClientRect();
174
- await sendMouse({
175
- steps: [
176
- {
177
- type: 'move',
178
- position: [boundingRect.x, boundingRect.y],
179
- },
180
- {
181
- type: 'down',
182
- },
183
- {
184
- type: 'up',
185
- },
186
- ],
187
- });
188
- expect(clickSpy.callCount).to.equal(2);
189
- const link = el.querySelector('sp-link[href="https://google.com"]');
190
- link.setAttribute('style', 'display: block');
191
- boundingRect = link.getBoundingClientRect();
192
- await sendMouse({
193
- steps: [
194
- {
195
- type: 'move',
196
- position: [boundingRect.x + 1, boundingRect.y + 1],
197
- },
198
- {
199
- type: 'down',
200
- },
201
- {
202
- type: 'up',
203
- },
204
- ],
205
- });
206
- expect(clickSpy.callCount).to.equal(2);
141
+ expect(clickSpy.callCount).to.equal(3);
142
+ });
143
+ it("links in [href] do not pass their click", async () => {
144
+ const clickSpy = spy();
145
+ const el = await fixture(href({}));
146
+ el.setAttribute("style", [
147
+ "width: 200px;",
148
+ "display: inline-flex;",
149
+ "--spectrum-card-coverphoto-height: 136px;",
150
+ "--spectrum-actionbutton-height: 32px;",
151
+ "--spectrum-icon-tshirt-size-height: 18px;",
152
+ "--spectrum-icon-tshirt-size-width: 18px;"
153
+ ].join(""));
154
+ await elementUpdated(el);
155
+ el.addEventListener("click", (event) => {
156
+ event.preventDefault();
157
+ const path = event.composedPath();
158
+ const hasLikeAnchor = path.some((el2) => el2.id === "like-anchor");
159
+ if (!hasLikeAnchor)
160
+ return;
161
+ clickSpy();
207
162
  });
208
- it('converts `Space` to `click` event', async () => {
209
- const clickSpy = spy();
210
- const handleClick = () => clickSpy();
211
- const el = await fixture(Default(Default.args));
212
- el.addEventListener('click', handleClick);
213
- await elementUpdated(el);
214
- expect(el.focused, 'default focused').to.be.false;
215
- el.dispatchEvent(new Event('focusin'));
216
- await elementUpdated(el);
217
- expect(el.focused, 'first time focused').to.be.true;
218
- el.dispatchEvent(spaceEvent());
219
- await elementUpdated(el);
220
- expect(el.focused, 'still focused').to.be.true;
221
- expect(clickSpy.called).to.be.true;
222
- expect(clickSpy.calledOnce).to.be.true;
163
+ el.click();
164
+ expect(clickSpy.callCount).to.equal(1);
165
+ const footer = el.querySelector('[slot="footer"]');
166
+ let boundingRect = footer.getBoundingClientRect();
167
+ await sendMouse({
168
+ steps: [
169
+ {
170
+ type: "move",
171
+ position: [boundingRect.x, boundingRect.y]
172
+ },
173
+ {
174
+ type: "down"
175
+ },
176
+ {
177
+ type: "up"
178
+ }
179
+ ]
223
180
  });
224
- it('can be `[toggles]`', async () => {
225
- const el = await fixture(Default(Default.args));
226
- el.toggles = true;
227
- await elementUpdated(el);
228
- const checkbox = el.shadowRoot.querySelector('sp-checkbox');
229
- expect(el.focused, 'default focused').to.be.false;
230
- expect(el.selected, 'default selected').to.be.false;
231
- el.dispatchEvent(new Event('focusin'));
232
- await elementUpdated(el);
233
- expect(el.focused, 'first time focused').to.be.true;
234
- expect(el.selected, 'still not selected').to.be.false;
235
- el.dispatchEvent(spaceEvent());
236
- await elementUpdated(el);
237
- expect(el.focused, 'still focused').to.be.true;
238
- expect(el.selected, 'first selected').to.be.true;
239
- el.addEventListener('change', (event) => event.preventDefault());
240
- el.dispatchEvent(spaceEvent());
241
- await elementUpdated(el);
242
- expect(el.focused, 'still focused after default prevented').to.be.true;
243
- expect(el.selected, 'first selected after default prevented').to.be
244
- .true;
245
- checkbox.dispatchEvent(new Event('focusin', {
246
- composed: true,
247
- bubbles: true,
248
- }));
249
- checkbox.focus();
250
- await elementUpdated(el);
251
- expect(el.focused, 'still focused, again').to.be.true;
252
- expect(el.selected, 'still selected').to.be.true;
253
- el.dispatchEvent(new Event('focusin'));
254
- await elementUpdated(el);
255
- expect(el.focused, 'focused, again').to.be.true;
256
- expect(el.selected, 'still selected, again').to.be.true;
257
- el.dispatchEvent(new Event('focusout'));
258
- await elementUpdated(el);
259
- expect(el.focused, 'still not focused, again').to.be.false;
260
- expect(el.selected, 'still selected, again 2').to.be.true;
261
- el.dispatchEvent(new Event('focusout'));
262
- checkbox.click();
263
- await elementUpdated(el);
264
- expect(el.focused, 'still not focused, again 2').to.be.false;
265
- // change event is prevented
266
- expect(el.selected, 'still selected, again 3').to.be.true;
181
+ expect(clickSpy.callCount).to.equal(2);
182
+ const link = el.querySelector('sp-link[href="https://google.com"]');
183
+ link.setAttribute("style", "display: block");
184
+ boundingRect = link.getBoundingClientRect();
185
+ await sendMouse({
186
+ steps: [
187
+ {
188
+ type: "move",
189
+ position: [boundingRect.x + 1, boundingRect.y + 1]
190
+ },
191
+ {
192
+ type: "down"
193
+ },
194
+ {
195
+ type: "up"
196
+ }
197
+ ]
267
198
  });
268
- it('announces when `[toggles]`', async () => {
269
- const changeSpy = spy();
270
- const el = await fixture(Default(Default.args));
271
- el.toggles = true;
272
- el.addEventListener('change', changeSpy);
273
- await elementUpdated(el);
274
- const checkbox = el.shadowRoot.querySelector('sp-checkbox');
275
- expect(el.selected, 'default to not selected').to.be.false;
276
- checkbox.click();
277
- await elementUpdated(el);
278
- expect(el.selected, 'selected').to.be.true;
279
- expect(changeSpy.callCount).to.equal(1);
280
- checkbox.click();
281
- await elementUpdated(el);
282
- expect(el.selected, 'no longer selected').to.be.false;
283
- expect(changeSpy.callCount).to.equal(2);
284
- });
285
- it('displays the `heading` attribute as `.title`', async () => {
286
- const testHeading = 'This is a test heading';
287
- const el = await fixture(html `
199
+ expect(clickSpy.callCount).to.equal(2);
200
+ });
201
+ it("converts `Space` to `click` event", async () => {
202
+ const clickSpy = spy();
203
+ const handleClick = () => clickSpy();
204
+ const el = await fixture(Default(Default.args));
205
+ el.addEventListener("click", handleClick);
206
+ await elementUpdated(el);
207
+ expect(el.focused, "default focused").to.be.false;
208
+ el.dispatchEvent(new Event("focusin"));
209
+ await elementUpdated(el);
210
+ expect(el.focused, "first time focused").to.be.true;
211
+ el.dispatchEvent(spaceEvent());
212
+ await elementUpdated(el);
213
+ expect(el.focused, "still focused").to.be.true;
214
+ expect(clickSpy.called).to.be.true;
215
+ expect(clickSpy.calledOnce).to.be.true;
216
+ });
217
+ it("can be `[toggles]`", async () => {
218
+ const el = await fixture(Default(Default.args));
219
+ el.toggles = true;
220
+ await elementUpdated(el);
221
+ const checkbox = el.shadowRoot.querySelector("sp-checkbox");
222
+ expect(el.focused, "default focused").to.be.false;
223
+ expect(el.selected, "default selected").to.be.false;
224
+ el.dispatchEvent(new Event("focusin"));
225
+ await elementUpdated(el);
226
+ expect(el.focused, "first time focused").to.be.true;
227
+ expect(el.selected, "still not selected").to.be.false;
228
+ el.dispatchEvent(spaceEvent());
229
+ await elementUpdated(el);
230
+ expect(el.focused, "still focused").to.be.true;
231
+ expect(el.selected, "first selected").to.be.true;
232
+ el.addEventListener("change", (event) => event.preventDefault());
233
+ el.dispatchEvent(spaceEvent());
234
+ await elementUpdated(el);
235
+ expect(el.focused, "still focused after default prevented").to.be.true;
236
+ expect(el.selected, "first selected after default prevented").to.be.true;
237
+ checkbox.dispatchEvent(new Event("focusin", {
238
+ composed: true,
239
+ bubbles: true
240
+ }));
241
+ checkbox.focus();
242
+ await elementUpdated(el);
243
+ expect(el.focused, "still focused, again").to.be.true;
244
+ expect(el.selected, "still selected").to.be.true;
245
+ el.dispatchEvent(new Event("focusin"));
246
+ await elementUpdated(el);
247
+ expect(el.focused, "focused, again").to.be.true;
248
+ expect(el.selected, "still selected, again").to.be.true;
249
+ el.dispatchEvent(new Event("focusout"));
250
+ await elementUpdated(el);
251
+ expect(el.focused, "still not focused, again").to.be.false;
252
+ expect(el.selected, "still selected, again 2").to.be.true;
253
+ el.dispatchEvent(new Event("focusout"));
254
+ checkbox.click();
255
+ await elementUpdated(el);
256
+ expect(el.focused, "still not focused, again 2").to.be.false;
257
+ expect(el.selected, "still selected, again 3").to.be.true;
258
+ });
259
+ it("announces when `[toggles]`", async () => {
260
+ const changeSpy = spy();
261
+ const el = await fixture(Default(Default.args));
262
+ el.toggles = true;
263
+ el.addEventListener("change", changeSpy);
264
+ await elementUpdated(el);
265
+ const checkbox = el.shadowRoot.querySelector("sp-checkbox");
266
+ expect(el.selected, "default to not selected").to.be.false;
267
+ checkbox.click();
268
+ await elementUpdated(el);
269
+ expect(el.selected, "selected").to.be.true;
270
+ expect(changeSpy.callCount).to.equal(1);
271
+ checkbox.click();
272
+ await elementUpdated(el);
273
+ expect(el.selected, "no longer selected").to.be.false;
274
+ expect(changeSpy.callCount).to.equal(2);
275
+ });
276
+ it("displays the `heading` attribute as `.title`", async () => {
277
+ const testHeading = "This is a test heading";
278
+ const el = await fixture(html`
288
279
  <sp-card heading=${testHeading} subheading="JPG">
289
280
  <img
290
281
  slot="preview"
@@ -294,15 +285,15 @@ describe('card', () => {
294
285
  <div slot="footer">Footer</div>
295
286
  </sp-card>
296
287
  `);
297
- await elementUpdated(el);
298
- const root = el.shadowRoot ? el.shadowRoot : el;
299
- const headingEl = root.querySelector('.title');
300
- expect(headingEl, 'did not find title element').to.not.be.null;
301
- expect(headingEl.textContent).to.contain(testHeading, 'the heading renders in the element');
302
- });
303
- it('displays the slotted content as `.title`', async () => {
304
- const testHeading = 'This is a test heading';
305
- const el = await fixture(html `
288
+ await elementUpdated(el);
289
+ const root = el.shadowRoot ? el.shadowRoot : el;
290
+ const headingEl = root.querySelector(".title");
291
+ expect(headingEl, "did not find title element").to.not.be.null;
292
+ expect(headingEl.textContent).to.contain(testHeading, "the heading renders in the element");
293
+ });
294
+ it("displays the slotted content as `.title`", async () => {
295
+ const testHeading = "This is a test heading";
296
+ const el = await fixture(html`
306
297
  <sp-card subheading="JPG">
307
298
  <h1 slot="heading">${testHeading}</h1>
308
299
  <img
@@ -313,14 +304,14 @@ describe('card', () => {
313
304
  <div slot="footer">Footer</div>
314
305
  </sp-card>
315
306
  `);
316
- await elementUpdated(el);
317
- const root = el.shadowRoot ? el.shadowRoot : el;
318
- const headingSlot = root.querySelector('.title [name="heading"]');
319
- expect(headingSlot, 'did not find slot element').to.not.be.null;
320
- const nodes = headingSlot.assignedNodes();
321
- const h1Element = nodes.find((node) => node.tagName === 'H1');
322
- expect(h1Element, 'did not find H1 element').to.not.be.null;
323
- expect(h1Element.textContent).to.contain(testHeading, 'the slotted content renders in the element');
324
- });
307
+ await elementUpdated(el);
308
+ const root = el.shadowRoot ? el.shadowRoot : el;
309
+ const headingSlot = root.querySelector('.title [name="heading"]');
310
+ expect(headingSlot, "did not find slot element").to.not.be.null;
311
+ const nodes = headingSlot.assignedNodes();
312
+ const h1Element = nodes.find((node) => node.tagName === "H1");
313
+ expect(h1Element, "did not find H1 element").to.not.be.null;
314
+ expect(h1Element.textContent).to.contain(testHeading, "the slotted content renders in the element");
315
+ });
325
316
  });
326
- //# sourceMappingURL=card.test.js.map
317
+ //# sourceMappingURL=card.test.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"card.test.js","sourceRoot":"","sources":["card.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport '../sp-card.js';\nimport { Card } from '../';\nimport '@spectrum-web-components/action-menu/sp-action-menu.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/menu/sp-menu-divider.js';\nimport { elementUpdated, expect, fixture, html } from '@open-wc/testing';\n\nimport {\n Default,\n href,\n smallHorizontal,\n StoryArgs,\n} from '../stories/card.stories.js';\nimport { Checkbox } from '@spectrum-web-components/checkbox/src/Checkbox';\nimport { spy } from 'sinon';\nimport { spaceEvent } from '../../../test/testing-helpers.js';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('card', () => {\n it('loads', async () => {\n const el = await fixture<Card>(\n html`\n <sp-card heading=\"Card Heading\" subheading=\"JPG\">\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [quiet]', async () => {\n const el = await fixture<Card>(\n html`\n <sp-card\n variant=\"quiet\"\n heading=\"Card Heading\"\n subheading=\"JPG\"\n >\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"description\">10/15/18</div>\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n\n it('loads - [quiet][small]', async () => {\n const el = await fixture<Card>(\n html`\n <sp-card\n size=\"s\"\n heading=\"Card Heading\"\n subheading=\"JPG\"\n variant=\"quiet\"\n style=\"width: 115px;\"\n >\n <img\n src=\"https://picsum.photos/300/400\"\n alt=\"Demo Graphic\"\n slot=\"preview\"\n />\n <div slot=\"footer\">Footer</div>\n <sp-action-menu\n slot=\"actions\"\n placement=\"bottom-end\"\n label=\"More Actions\"\n >\n <sp-menu>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select Inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and Mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save Selection</sp-menu-item>\n <sp-menu-item disabled>Make Work Path</sp-menu-item>\n </sp-menu>\n </sp-action-menu>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [gallery]', async () => {\n const el = await fixture<Card>(\n html`\n <sp-card\n variant=\"gallery\"\n heading=\"Card Heading\"\n subheading=\"JPG\"\n >\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"description\">10/15/18</div>\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [horizontal]', async () => {\n const el = await fixture<Card>(\n smallHorizontal(smallHorizontal.args as StoryArgs)\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('[href] is clickable', async () => {\n const clickSpy = spy();\n const el = await fixture<Card>(href({}));\n\n await elementUpdated(el);\n\n el.addEventListener('click', (event: Event) => {\n const composedTarget = event.composedPath()[0] as HTMLElement;\n if (composedTarget.id !== 'like-anchor') return;\n clickSpy();\n });\n\n el.click();\n\n expect(clickSpy.callCount).to.equal(1);\n\n (el.shadowRoot.querySelector('#like-anchor') as HTMLElement).click();\n\n expect(clickSpy.callCount).to.equal(2);\n\n const img = el.querySelector('img') as HTMLImageElement;\n const boundingRect = img.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n\n expect(clickSpy.callCount).to.equal(3);\n });\n it('links in [href] do not pass their click', async () => {\n const clickSpy = spy();\n const el = await fixture<Card>(href({}));\n el.setAttribute(\n 'style',\n [\n 'width: 200px;',\n 'display: inline-flex;',\n '--spectrum-card-coverphoto-height: 136px;',\n '--spectrum-actionbutton-height: 32px;',\n '--spectrum-icon-tshirt-size-height: 18px;',\n '--spectrum-icon-tshirt-size-width: 18px;',\n ].join('')\n );\n\n await elementUpdated(el);\n el.addEventListener('click', (event: Event) => {\n event.preventDefault();\n const path = event.composedPath();\n const hasLikeAnchor = path.some(\n (el) => (el as HTMLElement).id === 'like-anchor'\n );\n if (!hasLikeAnchor) return;\n clickSpy();\n });\n\n el.click();\n\n expect(clickSpy.callCount).to.equal(1);\n\n const footer = el.querySelector('[slot=\"footer\"]') as HTMLElement;\n let boundingRect = footer.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [boundingRect.x, boundingRect.y],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n\n expect(clickSpy.callCount).to.equal(2);\n\n const link = el.querySelector(\n 'sp-link[href=\"https://google.com\"]'\n ) as HTMLElement;\n link.setAttribute('style', 'display: block');\n boundingRect = link.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [boundingRect.x + 1, boundingRect.y + 1],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n\n expect(clickSpy.callCount).to.equal(2);\n });\n it('converts `Space` to `click` event', async () => {\n const clickSpy = spy();\n const handleClick = (): void => clickSpy();\n const el = await fixture<Card>(Default(Default.args));\n el.addEventListener('click', handleClick);\n\n await elementUpdated(el);\n expect(el.focused, 'default focused').to.be.false;\n\n el.dispatchEvent(new Event('focusin'));\n await elementUpdated(el);\n expect(el.focused, 'first time focused').to.be.true;\n\n el.dispatchEvent(spaceEvent());\n await elementUpdated(el);\n expect(el.focused, 'still focused').to.be.true;\n expect(clickSpy.called).to.be.true;\n expect(clickSpy.calledOnce).to.be.true;\n });\n it('can be `[toggles]`', async () => {\n const el = await fixture<Card>(Default(Default.args));\n el.toggles = true;\n\n await elementUpdated(el);\n\n const checkbox = el.shadowRoot.querySelector('sp-checkbox') as Checkbox;\n expect(el.focused, 'default focused').to.be.false;\n expect(el.selected, 'default selected').to.be.false;\n\n el.dispatchEvent(new Event('focusin'));\n\n await elementUpdated(el);\n expect(el.focused, 'first time focused').to.be.true;\n expect(el.selected, 'still not selected').to.be.false;\n\n el.dispatchEvent(spaceEvent());\n\n await elementUpdated(el);\n expect(el.focused, 'still focused').to.be.true;\n expect(el.selected, 'first selected').to.be.true;\n\n el.addEventListener('change', (event: Event) => event.preventDefault());\n el.dispatchEvent(spaceEvent());\n\n await elementUpdated(el);\n expect(el.focused, 'still focused after default prevented').to.be.true;\n expect(el.selected, 'first selected after default prevented').to.be\n .true;\n\n checkbox.dispatchEvent(\n new Event('focusin', {\n composed: true,\n bubbles: true,\n })\n );\n checkbox.focus();\n\n await elementUpdated(el);\n expect(el.focused, 'still focused, again').to.be.true;\n expect(el.selected, 'still selected').to.be.true;\n\n el.dispatchEvent(new Event('focusin'));\n\n await elementUpdated(el);\n expect(el.focused, 'focused, again').to.be.true;\n expect(el.selected, 'still selected, again').to.be.true;\n\n el.dispatchEvent(new Event('focusout'));\n\n await elementUpdated(el);\n expect(el.focused, 'still not focused, again').to.be.false;\n expect(el.selected, 'still selected, again 2').to.be.true;\n\n el.dispatchEvent(new Event('focusout'));\n\n checkbox.click();\n\n await elementUpdated(el);\n expect(el.focused, 'still not focused, again 2').to.be.false;\n // change event is prevented\n expect(el.selected, 'still selected, again 3').to.be.true;\n });\n\n it('announces when `[toggles]`', async () => {\n const changeSpy = spy();\n const el = await fixture<Card>(Default(Default.args));\n el.toggles = true;\n el.addEventListener('change', changeSpy);\n\n await elementUpdated(el);\n\n const checkbox = el.shadowRoot.querySelector('sp-checkbox') as Checkbox;\n expect(el.selected, 'default to not selected').to.be.false;\n checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected, 'selected').to.be.true;\n expect(changeSpy.callCount).to.equal(1);\n checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected, 'no longer selected').to.be.false;\n expect(changeSpy.callCount).to.equal(2);\n });\n it('displays the `heading` attribute as `.title`', async () => {\n const testHeading = 'This is a test heading';\n const el = await fixture<Card>(\n html`\n <sp-card heading=${testHeading} subheading=\"JPG\">\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n const root = el.shadowRoot ? el.shadowRoot : el;\n const headingEl = root.querySelector('.title');\n\n expect(headingEl, 'did not find title element').to.not.be.null;\n expect((headingEl as HTMLDivElement).textContent).to.contain(\n testHeading,\n 'the heading renders in the element'\n );\n });\n it('displays the slotted content as `.title`', async () => {\n const testHeading = 'This is a test heading';\n const el = await fixture<Card>(\n html`\n <sp-card subheading=\"JPG\">\n <h1 slot=\"heading\">${testHeading}</h1>\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n const root = el.shadowRoot ? el.shadowRoot : el;\n const headingSlot = root.querySelector(\n '.title [name=\"heading\"]'\n ) as HTMLSlotElement;\n\n expect(headingSlot, 'did not find slot element').to.not.be.null;\n const nodes = headingSlot.assignedNodes();\n const h1Element = nodes.find(\n (node) => (node as HTMLElement).tagName === 'H1'\n );\n expect(h1Element, 'did not find H1 element').to.not.be.null;\n expect((h1Element as HTMLHeadingElement).textContent).to.contain(\n testHeading,\n 'the slotted content renders in the element'\n );\n });\n});\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["card.test.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport '@spectrum-web-components/card/sp-card.js';\nimport { Card } from '@spectrum-web-components/card';\nimport '@spectrum-web-components/action-menu/sp-action-menu.js';\nimport '@spectrum-web-components/menu/sp-menu.js';\nimport '@spectrum-web-components/menu/sp-menu-item.js';\nimport '@spectrum-web-components/menu/sp-menu-divider.js';\nimport { elementUpdated, expect, fixture, html } from '@open-wc/testing';\n\nimport {\n Default,\n href,\n smallHorizontal,\n StoryArgs,\n} from '../stories/card.stories.js';\nimport { Checkbox } from '@spectrum-web-components/checkbox/src/Checkbox';\nimport { spy } from 'sinon';\nimport { spaceEvent } from '../../../test/testing-helpers.js';\nimport { sendMouse } from '../../../test/plugins/browser.js';\n\ndescribe('card', () => {\n it('loads', async () => {\n const el = await fixture<Card>(\n html`\n <sp-card heading=\"Card Heading\" subheading=\"JPG\">\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [quiet]', async () => {\n const el = await fixture<Card>(\n html`\n <sp-card\n variant=\"quiet\"\n heading=\"Card Heading\"\n subheading=\"JPG\"\n >\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"description\">10/15/18</div>\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n\n it('loads - [quiet][small]', async () => {\n const el = await fixture<Card>(\n html`\n <sp-card\n size=\"s\"\n heading=\"Card Heading\"\n subheading=\"JPG\"\n variant=\"quiet\"\n style=\"width: 115px;\"\n >\n <img\n src=\"https://picsum.photos/300/400\"\n alt=\"Demo Graphic\"\n slot=\"preview\"\n />\n <div slot=\"footer\">Footer</div>\n <sp-action-menu\n slot=\"actions\"\n placement=\"bottom-end\"\n label=\"More Actions\"\n >\n <sp-menu>\n <sp-menu-item>Deselect</sp-menu-item>\n <sp-menu-item>Select Inverse</sp-menu-item>\n <sp-menu-item>Feather...</sp-menu-item>\n <sp-menu-item>Select and Mask...</sp-menu-item>\n <sp-menu-divider></sp-menu-divider>\n <sp-menu-item>Save Selection</sp-menu-item>\n <sp-menu-item disabled>Make Work Path</sp-menu-item>\n </sp-menu>\n </sp-action-menu>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [gallery]', async () => {\n const el = await fixture<Card>(\n html`\n <sp-card\n variant=\"gallery\"\n heading=\"Card Heading\"\n subheading=\"JPG\"\n >\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"description\">10/15/18</div>\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('loads - [horizontal]', async () => {\n const el = await fixture<Card>(\n smallHorizontal(smallHorizontal.args as StoryArgs)\n );\n\n await elementUpdated(el);\n\n await expect(el).to.be.accessible();\n });\n it('[href] is clickable', async () => {\n const clickSpy = spy();\n const el = await fixture<Card>(href({}));\n\n await elementUpdated(el);\n\n el.addEventListener('click', (event: Event) => {\n const composedTarget = event.composedPath()[0] as HTMLElement;\n if (composedTarget.id !== 'like-anchor') return;\n clickSpy();\n });\n\n el.click();\n\n expect(clickSpy.callCount).to.equal(1);\n\n (el.shadowRoot.querySelector('#like-anchor') as HTMLElement).click();\n\n expect(clickSpy.callCount).to.equal(2);\n\n const img = el.querySelector('img') as HTMLImageElement;\n const boundingRect = img.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2,\n ],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n\n expect(clickSpy.callCount).to.equal(3);\n });\n it('links in [href] do not pass their click', async () => {\n const clickSpy = spy();\n const el = await fixture<Card>(href({}));\n el.setAttribute(\n 'style',\n [\n 'width: 200px;',\n 'display: inline-flex;',\n '--spectrum-card-coverphoto-height: 136px;',\n '--spectrum-actionbutton-height: 32px;',\n '--spectrum-icon-tshirt-size-height: 18px;',\n '--spectrum-icon-tshirt-size-width: 18px;',\n ].join('')\n );\n\n await elementUpdated(el);\n el.addEventListener('click', (event: Event) => {\n event.preventDefault();\n const path = event.composedPath();\n const hasLikeAnchor = path.some(\n (el) => (el as HTMLElement).id === 'like-anchor'\n );\n if (!hasLikeAnchor) return;\n clickSpy();\n });\n\n el.click();\n\n expect(clickSpy.callCount).to.equal(1);\n\n const footer = el.querySelector('[slot=\"footer\"]') as HTMLElement;\n let boundingRect = footer.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [boundingRect.x, boundingRect.y],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n\n expect(clickSpy.callCount).to.equal(2);\n\n const link = el.querySelector(\n 'sp-link[href=\"https://google.com\"]'\n ) as HTMLElement;\n link.setAttribute('style', 'display: block');\n boundingRect = link.getBoundingClientRect();\n await sendMouse({\n steps: [\n {\n type: 'move',\n position: [boundingRect.x + 1, boundingRect.y + 1],\n },\n {\n type: 'down',\n },\n {\n type: 'up',\n },\n ],\n });\n\n expect(clickSpy.callCount).to.equal(2);\n });\n it('converts `Space` to `click` event', async () => {\n const clickSpy = spy();\n const handleClick = (): void => clickSpy();\n const el = await fixture<Card>(Default(Default.args));\n el.addEventListener('click', handleClick);\n\n await elementUpdated(el);\n expect(el.focused, 'default focused').to.be.false;\n\n el.dispatchEvent(new Event('focusin'));\n await elementUpdated(el);\n expect(el.focused, 'first time focused').to.be.true;\n\n el.dispatchEvent(spaceEvent());\n await elementUpdated(el);\n expect(el.focused, 'still focused').to.be.true;\n expect(clickSpy.called).to.be.true;\n expect(clickSpy.calledOnce).to.be.true;\n });\n it('can be `[toggles]`', async () => {\n const el = await fixture<Card>(Default(Default.args));\n el.toggles = true;\n\n await elementUpdated(el);\n\n const checkbox = el.shadowRoot.querySelector('sp-checkbox') as Checkbox;\n expect(el.focused, 'default focused').to.be.false;\n expect(el.selected, 'default selected').to.be.false;\n\n el.dispatchEvent(new Event('focusin'));\n\n await elementUpdated(el);\n expect(el.focused, 'first time focused').to.be.true;\n expect(el.selected, 'still not selected').to.be.false;\n\n el.dispatchEvent(spaceEvent());\n\n await elementUpdated(el);\n expect(el.focused, 'still focused').to.be.true;\n expect(el.selected, 'first selected').to.be.true;\n\n el.addEventListener('change', (event: Event) => event.preventDefault());\n el.dispatchEvent(spaceEvent());\n\n await elementUpdated(el);\n expect(el.focused, 'still focused after default prevented').to.be.true;\n expect(el.selected, 'first selected after default prevented').to.be\n .true;\n\n checkbox.dispatchEvent(\n new Event('focusin', {\n composed: true,\n bubbles: true,\n })\n );\n checkbox.focus();\n\n await elementUpdated(el);\n expect(el.focused, 'still focused, again').to.be.true;\n expect(el.selected, 'still selected').to.be.true;\n\n el.dispatchEvent(new Event('focusin'));\n\n await elementUpdated(el);\n expect(el.focused, 'focused, again').to.be.true;\n expect(el.selected, 'still selected, again').to.be.true;\n\n el.dispatchEvent(new Event('focusout'));\n\n await elementUpdated(el);\n expect(el.focused, 'still not focused, again').to.be.false;\n expect(el.selected, 'still selected, again 2').to.be.true;\n\n el.dispatchEvent(new Event('focusout'));\n\n checkbox.click();\n\n await elementUpdated(el);\n expect(el.focused, 'still not focused, again 2').to.be.false;\n // change event is prevented\n expect(el.selected, 'still selected, again 3').to.be.true;\n });\n\n it('announces when `[toggles]`', async () => {\n const changeSpy = spy();\n const el = await fixture<Card>(Default(Default.args));\n el.toggles = true;\n el.addEventListener('change', changeSpy);\n\n await elementUpdated(el);\n\n const checkbox = el.shadowRoot.querySelector('sp-checkbox') as Checkbox;\n expect(el.selected, 'default to not selected').to.be.false;\n checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected, 'selected').to.be.true;\n expect(changeSpy.callCount).to.equal(1);\n checkbox.click();\n await elementUpdated(el);\n\n expect(el.selected, 'no longer selected').to.be.false;\n expect(changeSpy.callCount).to.equal(2);\n });\n it('displays the `heading` attribute as `.title`', async () => {\n const testHeading = 'This is a test heading';\n const el = await fixture<Card>(\n html`\n <sp-card heading=${testHeading} subheading=\"JPG\">\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n const root = el.shadowRoot ? el.shadowRoot : el;\n const headingEl = root.querySelector('.title');\n\n expect(headingEl, 'did not find title element').to.not.be.null;\n expect((headingEl as HTMLDivElement).textContent).to.contain(\n testHeading,\n 'the heading renders in the element'\n );\n });\n it('displays the slotted content as `.title`', async () => {\n const testHeading = 'This is a test heading';\n const el = await fixture<Card>(\n html`\n <sp-card subheading=\"JPG\">\n <h1 slot=\"heading\">${testHeading}</h1>\n <img\n slot=\"preview\"\n src=\"https://picsum.photos/532/192\"\n alt=\"Slotted Preview\"\n />\n <div slot=\"footer\">Footer</div>\n </sp-card>\n `\n );\n\n await elementUpdated(el);\n\n const root = el.shadowRoot ? el.shadowRoot : el;\n const headingSlot = root.querySelector(\n '.title [name=\"heading\"]'\n ) as HTMLSlotElement;\n\n expect(headingSlot, 'did not find slot element').to.not.be.null;\n const nodes = headingSlot.assignedNodes();\n const h1Element = nodes.find(\n (node) => (node as HTMLElement).tagName === 'H1'\n );\n expect(h1Element, 'did not find H1 element').to.not.be.null;\n expect((h1Element as HTMLHeadingElement).textContent).to.contain(\n testHeading,\n 'the slotted content renders in the element'\n );\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }