@spectrum-web-components/coachmark 0.41.2 → 0.42.1

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/README.md CHANGED
@@ -29,8 +29,6 @@ import { Coachmark } from '@spectrum-web-components/coachmark';
29
29
 
30
30
  ## Default
31
31
 
32
- Coachmark can take a `placement` and an `offset` similar to the [Overlay](https://opensource.adobe.com/spectrum-web-components/components/overlay/).
33
-
34
32
  ```html
35
33
  <sp-coachmark open>
36
34
  <div slot="title">Coachmark with Text Only</div>
@@ -56,7 +54,12 @@ Coach marks can include an `<sp-action-menu>`, which appears at the top right of
56
54
  <div slot="content">
57
55
  This is a Coachmark with nothing but text in it. Kind of lonely in here.
58
56
  </div>
59
- <sp-action-menu placement="bottom-end" quiet slot="actions">
57
+ <sp-action-menu
58
+ label="More Actions"
59
+ placement="bottom-end"
60
+ quiet
61
+ slot="actions"
62
+ >
60
63
  <sp-menu-item>Skip tour</sp-menu-item>
61
64
  <sp-menu-item>Restart tour</sp-menu-item>
62
65
  </sp-action-menu>
@@ -86,7 +89,7 @@ The primary and secondary CTA buttons within the coachmark popover can be config
86
89
  <div slot="content">
87
90
  This is a Coachmark with nothing but text in it. Kind of lonely in here.
88
91
  </div>
89
- <sp-action-menu placement="bottom-end" quiet slot="actions">
92
+ <sp-action-menu label="More Actions" placement="bottom-end" quiet slot="actions">
90
93
  <sp-menu-item>Skip tour</sp-menu-item>
91
94
  <sp-menu-item>Restart tour</sp-menu-item>
92
95
  </sp-action-menu>
@@ -137,7 +140,12 @@ Media Types allowed: `Images & Gifs`
137
140
  >
138
141
  <div slot="title">Coachmark with 16:9 image</div>
139
142
  <div slot="content">This is a Coachmark with some description</div>
140
- <sp-action-menu placement="bottom-end" quiet slot="actions">
143
+ <sp-action-menu
144
+ label="More Actions"
145
+ placement="bottom-end"
146
+ quiet
147
+ slot="actions"
148
+ >
141
149
  <sp-menu-item>Skip tour</sp-menu-item>
142
150
  <sp-menu-item>Restart tour</sp-menu-item>
143
151
  </sp-action-menu>
@@ -159,7 +167,12 @@ A custom media can also be added via `<slot name="cover-photo"></slot>`
159
167
  <div slot="title">Coachmark with 16:9 image</div>
160
168
  <div slot="content">This is a Coachmark with some description</div>
161
169
  <img slot="asset" src="https://picsum.photos/id/237/200/300" alt="" />
162
- <sp-action-menu placement="bottom-end" quiet slot="actions">
170
+ <sp-action-menu
171
+ label="More Actions"
172
+ placement="bottom-end"
173
+ quiet
174
+ slot="actions"
175
+ >
163
176
  <sp-menu-item>Skip tour</sp-menu-item>
164
177
  <sp-menu-item>Restart tour</sp-menu-item>
165
178
  </sp-action-menu>
@@ -182,7 +195,7 @@ The `shortcutKey` is the primary key used to trigger an interaction and are typi
182
195
  secondary-cta="Previous"
183
196
  id="coachmark-keys"
184
197
  >
185
- <sp-action-menu placement="bottom-end" quiet slot="actions">
198
+ <sp-action-menu label="More Actions" placement="bottom-end" quiet slot="actions">
186
199
  <sp-menu-item>Skip tour</sp-menu-item>
187
200
  <sp-menu-item>Restart tour</sp-menu-item>
188
201
  </sp-action-menu>
@@ -140,6 +140,10 @@
140
140
  {
141
141
  "description": "an `sp-action-menu` element outlining actions to take on the represened object",
142
142
  "name": "actions"
143
+ },
144
+ {
145
+ "description": "Override the default pagination delivery with your own internationalized content",
146
+ "name": "step-count"
143
147
  }
144
148
  ],
145
149
  "members": [
@@ -326,24 +330,6 @@
326
330
  }
327
331
  }
328
332
  },
329
- {
330
- "kind": "method",
331
- "name": "stopPropagationOnHref",
332
- "privacy": "private",
333
- "return": {
334
- "type": {
335
- "text": "void"
336
- }
337
- },
338
- "parameters": [
339
- {
340
- "name": "event",
341
- "type": {
342
- "text": "Event"
343
- }
344
- }
345
- ]
346
- },
347
333
  {
348
334
  "kind": "method",
349
335
  "name": "handlePrimaryCTA",
@@ -510,12 +496,6 @@
510
496
  "fieldName": "secondaryCTA"
511
497
  }
512
498
  ],
513
- "mixins": [
514
- {
515
- "name": "LikeAnchor",
516
- "package": "@spectrum-web-components/shared/src/like-anchor.js"
517
- }
518
- ],
519
499
  "superclass": {
520
500
  "name": "Popover",
521
501
  "package": "@spectrum-web-components/popover"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/coachmark",
3
- "version": "0.41.2",
3
+ "version": "0.42.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -70,19 +70,19 @@
70
70
  "lit-html"
71
71
  ],
72
72
  "dependencies": {
73
- "@spectrum-web-components/asset": "^0.41.2",
74
- "@spectrum-web-components/base": "^0.41.2",
75
- "@spectrum-web-components/button": "^0.41.2",
76
- "@spectrum-web-components/button-group": "^0.41.2",
77
- "@spectrum-web-components/icon": "^0.41.2",
78
- "@spectrum-web-components/icons-ui": "^0.41.2",
79
- "@spectrum-web-components/quick-actions": "^0.41.2",
80
- "@spectrum-web-components/reactive-controllers": "^0.41.2",
81
- "@spectrum-web-components/shared": "^0.41.2"
73
+ "@spectrum-web-components/asset": "^0.42.1",
74
+ "@spectrum-web-components/base": "^0.42.1",
75
+ "@spectrum-web-components/button": "^0.42.1",
76
+ "@spectrum-web-components/button-group": "^0.42.1",
77
+ "@spectrum-web-components/icon": "^0.42.1",
78
+ "@spectrum-web-components/icons-ui": "^0.42.1",
79
+ "@spectrum-web-components/quick-actions": "^0.42.1",
80
+ "@spectrum-web-components/reactive-controllers": "^0.42.1",
81
+ "@spectrum-web-components/shared": "^0.42.1"
82
82
  },
83
83
  "devDependencies": {
84
- "@spectrum-css/coachindicator": "^1.1.3",
85
- "@spectrum-css/coachmark": "^6.1.3"
84
+ "@spectrum-css/coachindicator": "^1.1.5",
85
+ "@spectrum-css/coachmark": "^6.1.5"
86
86
  },
87
87
  "types": "./src/index.d.ts",
88
88
  "customElements": "custom-elements.json",
@@ -90,5 +90,5 @@
90
90
  "./sp-*.js",
91
91
  "./**/*.dev.js"
92
92
  ],
93
- "gitHead": "78c3f16b08c9133c9e5ca88d0c9fef5ea7d2ab87"
93
+ "gitHead": "c7ab5516e86d20194e92114afd04affa490b7248"
94
94
  }
@@ -7,10 +7,6 @@ import '@spectrum-web-components/asset/sp-asset.js';
7
7
  import '@spectrum-web-components/button/sp-button.js';
8
8
  import '@spectrum-web-components/button-group/sp-button-group.js';
9
9
  import '@spectrum-web-components/quick-actions/sp-quick-actions.js';
10
- declare const Coachmark_base: typeof Popover & {
11
- new (...args: any[]): import("@spectrum-web-components/shared/src/like-anchor.js").LikeAnchorInterface;
12
- prototype: import("@spectrum-web-components/shared/src/like-anchor.js").LikeAnchorInterface;
13
- };
14
10
  /**
15
11
  * @element sp-coachmark
16
12
  * @fires primary - Announces that the "primary" button has been clicked.
@@ -19,8 +15,9 @@ declare const Coachmark_base: typeof Popover & {
19
15
  * @slot heading - HTML content to be listed as the heading
20
16
  * @slot description - A description of the card
21
17
  * @slot actions - an `sp-action-menu` element outlining actions to take on the represened object
18
+ * @slot step-count - Override the default pagination delivery with your own internationalized content
22
19
  */
23
- export declare class Coachmark extends Coachmark_base {
20
+ export declare class Coachmark extends Popover {
24
21
  static get styles(): CSSResultArray;
25
22
  item?: CoachmarkItem;
26
23
  placement: Placement;
@@ -40,7 +37,6 @@ export declare class Coachmark extends Coachmark_base {
40
37
  private renderJoiner;
41
38
  private renderHeader;
42
39
  private renderContent;
43
- private stopPropagationOnHref;
44
40
  private handlePrimaryCTA;
45
41
  private handleSecondaryCTA;
46
42
  private renderSecondaryButton;
@@ -52,4 +48,3 @@ export declare class Coachmark extends Coachmark_base {
52
48
  protected renderActionMenu: () => TemplateResult;
53
49
  protected render(): TemplateResult;
54
50
  }
55
- export {};
@@ -16,7 +16,6 @@ import {
16
16
  } from "@spectrum-web-components/base";
17
17
  import { property } from "@spectrum-web-components/base/src/decorators.js";
18
18
  import { when } from "@spectrum-web-components/base/src/directives.js";
19
- import { LikeAnchor } from "@spectrum-web-components/shared/src/like-anchor.js";
20
19
  import coachmarkStyles from "./coachmark.css.js";
21
20
  import chevronStyles from "@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js";
22
21
  import "@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js";
@@ -28,7 +27,7 @@ import "@spectrum-web-components/asset/sp-asset.js";
28
27
  import "@spectrum-web-components/button/sp-button.js";
29
28
  import "@spectrum-web-components/button-group/sp-button-group.js";
30
29
  import "@spectrum-web-components/quick-actions/sp-quick-actions.js";
31
- export class Coachmark extends LikeAnchor(Popover) {
30
+ export class Coachmark extends Popover {
32
31
  constructor() {
33
32
  super(...arguments);
34
33
  this.placement = "right";
@@ -91,7 +90,9 @@ export class Coachmark extends LikeAnchor(Popover) {
91
90
  return html`
92
91
  <div class="step" role="status">
93
92
  <span aria-live="polite">
94
- ${this.currentStep} of ${this.totalSteps}
93
+ <slot name="step-count">
94
+ ${this.currentStep} of ${this.totalSteps}
95
+ </slot>
95
96
  </span>
96
97
  </div>
97
98
  `;
@@ -99,7 +100,7 @@ export class Coachmark extends LikeAnchor(Popover) {
99
100
  // render action menu
100
101
  this.renderActionMenu = () => {
101
102
  return html`
102
- <div class="action-menu" @pointerdown=${this.stopPropagationOnHref}>
103
+ <div class="action-menu">
103
104
  <slot name="actions"></slot>
104
105
  </div>
105
106
  `;
@@ -186,11 +187,6 @@ export class Coachmark extends LikeAnchor(Popover) {
186
187
  <div>${(_b = this.content) == null ? void 0 : _b.description}</div>
187
188
  `;
188
189
  }
189
- stopPropagationOnHref(event) {
190
- if (this.href) {
191
- event.stopPropagation();
192
- }
193
- }
194
190
  // event on primary button
195
191
  handlePrimaryCTA() {
196
192
  this.dispatchEvent(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["Coachmark.ts"],
4
- "sourcesContent": ["/*\nCopyright 2023 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\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 {\n CSSResultArray,\n html,\n nothing,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { when } from '@spectrum-web-components/base/src/directives.js';\nimport { LikeAnchor } from '@spectrum-web-components/shared/src/like-anchor.js';\nimport coachmarkStyles from './coachmark.css.js';\nimport chevronStyles from '@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js';\nimport { Popover } from '@spectrum-web-components/popover';\nimport { join } from 'lit/directives/join.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport type { Placement } from '@spectrum-web-components/overlay';\nimport { MediaType } from './CoachmarkItem.dev.js'\nimport type { CoachmarkItem } from './CoachmarkItem.dev.js'\nimport '@spectrum-web-components/asset/sp-asset.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/button-group/sp-button-group.js';\nimport '@spectrum-web-components/quick-actions/sp-quick-actions.js';\n\n/**\n * @element sp-coachmark\n * @fires primary - Announces that the \"primary\" button has been clicked.\n * @fires secondary - Announces that the \"secondary\" button has been clicked.\n * @slot cover-photo - This is the cover photo for Default and Quiet Coachmark\n * @slot heading - HTML content to be listed as the heading\n * @slot description - A description of the card\n * @slot actions - an `sp-action-menu` element outlining actions to take on the represened object\n */\nexport class Coachmark extends LikeAnchor(Popover) {\n public static override get styles(): CSSResultArray {\n return [...super.styles, coachmarkStyles, chevronStyles];\n }\n @property({ type: Object })\n public item?: CoachmarkItem;\n\n @property({ type: String })\n public override placement: Placement = 'right';\n\n @property({ type: Object, attribute: false })\n private content?: {\n title?: string;\n description?: string;\n imageAlt?: string;\n };\n\n @property({ attribute: 'shortcut-key' })\n private shortcutKey?: string;\n\n @property({ type: Array })\n public modifierKeys?: string[] = [];\n\n @property({ attribute: 'src' })\n private source?: string;\n\n @property({ attribute: 'media-type' })\n private mediaType?: MediaType;\n\n @property({ type: Boolean, attribute: 'has-asset', reflect: true })\n public hasAsset = false;\n\n @property()\n public asset?: 'file' | 'folder';\n\n @property({ type: Number, attribute: 'current-step' })\n public currentStep?: number;\n\n @property({ type: Number, attribute: 'total-steps' })\n public totalSteps?: number;\n\n @property({ type: String, attribute: 'primary-cta' })\n primaryCTA?: string;\n\n @property({ type: String, attribute: 'secondary-cta' })\n secondaryCTA?: string;\n\n // render video and images\n private renderMedia(): TemplateResult {\n const isImage = this.mediaType === MediaType.IMAGE;\n if (!isImage) {\n return html`\n <slot name=\"asset\"></slot>\n `;\n }\n return html`\n <sp-asset id=\"cover-photo\">\n <div class=\"image-wrapper\">\n <img\n class=\"image\"\n loading=\"lazy\"\n slot=\"cover-photo\"\n src=\"${ifDefined(this.source)}\"\n alt=\"${ifDefined(this?.content?.imageAlt)}\"\n />\n </div>\n </sp-asset>\n `;\n }\n // method to render modifier\n private renderModifier(\n modifierKey: string,\n type: 'modifier' | 'shortcut' = 'modifier'\n ): TemplateResult {\n return html`\n <span type=\"${type}\" class=\"keyboard-shortcut\">${modifierKey}</span>\n `;\n }\n\n private renderJoiner(): TemplateResult {\n return html`\n <span class=\"plus\">&plus;</span>\n `;\n }\n // render heading title and modifier\n private renderHeader(): TemplateResult {\n const hasModifier = this.modifierKeys && this.modifierKeys?.length > 0;\n const hasShortcut = Boolean(this.shortcutKey);\n const hasTitle = Boolean(this.content?.title);\n if (!hasTitle && !hasModifier && !hasShortcut) {\n return html`\n <div class=\"title\"><slot name=\"title\"></slot></div>\n `;\n }\n return html`\n ${hasTitle\n ? html`\n <div class=\"title\">${this.content?.title}</div>\n `\n : nothing}\n ${hasModifier || hasShortcut\n ? html`\n <kbd class=\"keys spectrum-Body spectrum-Body--sizeS\">\n ${hasModifier\n ? join(\n this.modifierKeys?.map((k) =>\n this.renderModifier(k)\n ),\n this.renderJoiner()\n )\n : nothing}\n ${hasShortcut && hasModifier\n ? this.renderJoiner()\n : nothing}\n ${hasShortcut\n ? this.renderModifier(\n this.shortcutKey!,\n 'shortcut'\n )\n : nothing}\n </kbd>\n `\n : nothing}\n `;\n }\n // render description\n private renderContent(): TemplateResult {\n const hasDescription = Boolean(this.content?.description);\n if (!hasDescription)\n return html`\n <slot name=\"content\"></slot>\n `;\n return html`\n <div>${this.content?.description}</div>\n `;\n }\n\n private stopPropagationOnHref(event: Event): void {\n if (this.href) {\n event.stopPropagation();\n }\n }\n\n // event on primary button\n private handlePrimaryCTA(): void {\n this.dispatchEvent(\n new Event('primary', {\n bubbles: true,\n composed: true,\n })\n );\n }\n // event on secondary button\n private handleSecondaryCTA(): void {\n this.dispatchEvent(\n new Event('secondary', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private renderSecondaryButton = (): TemplateResult => {\n return html`\n <sp-button\n treatment=\"outline\"\n variant=\"secondary\"\n @click=${this.handleSecondaryCTA}\n >\n ${this.secondaryCTA}\n </sp-button>\n `;\n };\n\n private renderPrimaryButton = (): TemplateResult => {\n return html`\n <sp-button\n size=\"s\"\n treatment=\"outline\"\n variant=\"primary\"\n @click=${this.handlePrimaryCTA}\n >\n ${this.primaryCTA}\n </sp-button>\n `;\n };\n\n private renderSecondaryButtonMobile = (): TemplateResult => {\n return html`\n <sp-button\n variant=\"secondary\"\n treatment=\"outline\"\n icon-only\n aria-label=\"previous\"\n @click=${this.handleSecondaryCTA}\n >\n <sp-icon-chevron200\n size=\"s\"\n class=\"spectrum-UIIcon-ChevronLeft75\"\n slot=\"icon\"\n ></sp-icon-chevron200>\n </sp-button>\n `;\n };\n\n private renderPrimaryButtonMobile = (): TemplateResult => {\n return html`\n <sp-button\n size=\"s\"\n treatment=\"outline\"\n variant=\"primary\"\n @click=${this.handlePrimaryCTA}\n >\n ${this.primaryCTA}\n </sp-button>\n `;\n };\n\n protected renderButtons(): TemplateResult {\n return html`\n <sp-button-group class=\"spectrum-ButtonGroup buttongroup\">\n ${when(this.secondaryCTA, this.renderSecondaryButton)}\n ${when(this.primaryCTA, this.renderPrimaryButton)}\n </sp-button-group>\n <sp-button-group\n class=\"spectrum-ButtonGroup buttongroup-mobile\"\n size=\"s\"\n >\n ${when(this.secondaryCTA, this.renderSecondaryButtonMobile)}\n ${when(this.primaryCTA, this.renderPrimaryButtonMobile)}\n </sp-button-group>\n `;\n }\n\n // render steps\n protected renderSteps = (): TemplateResult => {\n return html`\n <div class=\"step\" role=\"status\">\n <span aria-live=\"polite\">\n ${this.currentStep} of ${this.totalSteps}\n </span>\n </div>\n `;\n };\n // render action menu\n protected renderActionMenu = (): TemplateResult => {\n return html`\n <div class=\"action-menu\" @pointerdown=${this.stopPropagationOnHref}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n };\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderMedia()}\n <div class=\"header\">\n <div class=\"flex-container\">${this.renderHeader()}</div>\n <div class=\"static-item\">\n ${when(\n this.secondaryCTA && this.primaryCTA,\n this.renderActionMenu\n )}\n </div>\n </div>\n\n <div class=\"content\">${this.renderContent()}</div>\n <div class=\"footer\">\n ${when(\n this.totalSteps && this.totalSteps > 1,\n this.renderSteps\n )}\n ${this.renderButtons()}\n </div>\n `;\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/*\nCopyright 2023 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\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 {\n CSSResultArray,\n html,\n nothing,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { when } from '@spectrum-web-components/base/src/directives.js';\nimport coachmarkStyles from './coachmark.css.js';\nimport chevronStyles from '@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js';\nimport { Popover } from '@spectrum-web-components/popover';\nimport { join } from 'lit/directives/join.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport type { Placement } from '@spectrum-web-components/overlay';\nimport { MediaType } from './CoachmarkItem.dev.js'\nimport type { CoachmarkItem } from './CoachmarkItem.dev.js'\nimport '@spectrum-web-components/asset/sp-asset.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/button-group/sp-button-group.js';\nimport '@spectrum-web-components/quick-actions/sp-quick-actions.js';\n\n/**\n * @element sp-coachmark\n * @fires primary - Announces that the \"primary\" button has been clicked.\n * @fires secondary - Announces that the \"secondary\" button has been clicked.\n * @slot cover-photo - This is the cover photo for Default and Quiet Coachmark\n * @slot heading - HTML content to be listed as the heading\n * @slot description - A description of the card\n * @slot actions - an `sp-action-menu` element outlining actions to take on the represened object\n * @slot step-count - Override the default pagination delivery with your own internationalized content\n */\nexport class Coachmark extends Popover {\n public static override get styles(): CSSResultArray {\n return [...super.styles, coachmarkStyles, chevronStyles];\n }\n @property({ type: Object })\n public item?: CoachmarkItem;\n\n @property({ type: String })\n public override placement: Placement = 'right';\n\n @property({ type: Object, attribute: false })\n private content?: {\n title?: string;\n description?: string;\n imageAlt?: string;\n };\n\n @property({ attribute: 'shortcut-key' })\n private shortcutKey?: string;\n\n @property({ type: Array })\n public modifierKeys?: string[] = [];\n\n @property({ attribute: 'src' })\n private source?: string;\n\n @property({ attribute: 'media-type' })\n private mediaType?: MediaType;\n\n @property({ type: Boolean, attribute: 'has-asset', reflect: true })\n public hasAsset = false;\n\n @property()\n public asset?: 'file' | 'folder';\n\n @property({ type: Number, attribute: 'current-step' })\n public currentStep?: number;\n\n @property({ type: Number, attribute: 'total-steps' })\n public totalSteps?: number;\n\n @property({ type: String, attribute: 'primary-cta' })\n primaryCTA?: string;\n\n @property({ type: String, attribute: 'secondary-cta' })\n secondaryCTA?: string;\n\n // render video and images\n private renderMedia(): TemplateResult {\n const isImage = this.mediaType === MediaType.IMAGE;\n if (!isImage) {\n return html`\n <slot name=\"asset\"></slot>\n `;\n }\n return html`\n <sp-asset id=\"cover-photo\">\n <div class=\"image-wrapper\">\n <img\n class=\"image\"\n loading=\"lazy\"\n slot=\"cover-photo\"\n src=\"${ifDefined(this.source)}\"\n alt=\"${ifDefined(this?.content?.imageAlt)}\"\n />\n </div>\n </sp-asset>\n `;\n }\n // method to render modifier\n private renderModifier(\n modifierKey: string,\n type: 'modifier' | 'shortcut' = 'modifier'\n ): TemplateResult {\n return html`\n <span type=\"${type}\" class=\"keyboard-shortcut\">${modifierKey}</span>\n `;\n }\n\n private renderJoiner(): TemplateResult {\n return html`\n <span class=\"plus\">&plus;</span>\n `;\n }\n // render heading title and modifier\n private renderHeader(): TemplateResult {\n const hasModifier = this.modifierKeys && this.modifierKeys?.length > 0;\n const hasShortcut = Boolean(this.shortcutKey);\n const hasTitle = Boolean(this.content?.title);\n if (!hasTitle && !hasModifier && !hasShortcut) {\n return html`\n <div class=\"title\"><slot name=\"title\"></slot></div>\n `;\n }\n return html`\n ${hasTitle\n ? html`\n <div class=\"title\">${this.content?.title}</div>\n `\n : nothing}\n ${hasModifier || hasShortcut\n ? html`\n <kbd class=\"keys spectrum-Body spectrum-Body--sizeS\">\n ${hasModifier\n ? join(\n this.modifierKeys?.map((k) =>\n this.renderModifier(k)\n ),\n this.renderJoiner()\n )\n : nothing}\n ${hasShortcut && hasModifier\n ? this.renderJoiner()\n : nothing}\n ${hasShortcut\n ? this.renderModifier(\n this.shortcutKey!,\n 'shortcut'\n )\n : nothing}\n </kbd>\n `\n : nothing}\n `;\n }\n // render description\n private renderContent(): TemplateResult {\n const hasDescription = Boolean(this.content?.description);\n if (!hasDescription)\n return html`\n <slot name=\"content\"></slot>\n `;\n return html`\n <div>${this.content?.description}</div>\n `;\n }\n\n // event on primary button\n private handlePrimaryCTA(): void {\n this.dispatchEvent(\n new Event('primary', {\n bubbles: true,\n composed: true,\n })\n );\n }\n // event on secondary button\n private handleSecondaryCTA(): void {\n this.dispatchEvent(\n new Event('secondary', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private renderSecondaryButton = (): TemplateResult => {\n return html`\n <sp-button\n treatment=\"outline\"\n variant=\"secondary\"\n @click=${this.handleSecondaryCTA}\n >\n ${this.secondaryCTA}\n </sp-button>\n `;\n };\n\n private renderPrimaryButton = (): TemplateResult => {\n return html`\n <sp-button\n size=\"s\"\n treatment=\"outline\"\n variant=\"primary\"\n @click=${this.handlePrimaryCTA}\n >\n ${this.primaryCTA}\n </sp-button>\n `;\n };\n\n private renderSecondaryButtonMobile = (): TemplateResult => {\n return html`\n <sp-button\n variant=\"secondary\"\n treatment=\"outline\"\n icon-only\n aria-label=\"previous\"\n @click=${this.handleSecondaryCTA}\n >\n <sp-icon-chevron200\n size=\"s\"\n class=\"spectrum-UIIcon-ChevronLeft75\"\n slot=\"icon\"\n ></sp-icon-chevron200>\n </sp-button>\n `;\n };\n\n private renderPrimaryButtonMobile = (): TemplateResult => {\n return html`\n <sp-button\n size=\"s\"\n treatment=\"outline\"\n variant=\"primary\"\n @click=${this.handlePrimaryCTA}\n >\n ${this.primaryCTA}\n </sp-button>\n `;\n };\n\n protected renderButtons(): TemplateResult {\n return html`\n <sp-button-group class=\"spectrum-ButtonGroup buttongroup\">\n ${when(this.secondaryCTA, this.renderSecondaryButton)}\n ${when(this.primaryCTA, this.renderPrimaryButton)}\n </sp-button-group>\n <sp-button-group\n class=\"spectrum-ButtonGroup buttongroup-mobile\"\n size=\"s\"\n >\n ${when(this.secondaryCTA, this.renderSecondaryButtonMobile)}\n ${when(this.primaryCTA, this.renderPrimaryButtonMobile)}\n </sp-button-group>\n `;\n }\n\n // render steps\n protected renderSteps = (): TemplateResult => {\n return html`\n <div class=\"step\" role=\"status\">\n <span aria-live=\"polite\">\n <slot name=\"step-count\">\n ${this.currentStep} of ${this.totalSteps}\n </slot>\n </span>\n </div>\n `;\n };\n // render action menu\n protected renderActionMenu = (): TemplateResult => {\n return html`\n <div class=\"action-menu\">\n <slot name=\"actions\"></slot>\n </div>\n `;\n };\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderMedia()}\n <div class=\"header\">\n <div class=\"flex-container\">${this.renderHeader()}</div>\n <div class=\"static-item\">\n ${when(\n this.secondaryCTA && this.primaryCTA,\n this.renderActionMenu\n )}\n </div>\n </div>\n\n <div class=\"content\">${this.renderContent()}</div>\n <div class=\"footer\">\n ${when(\n this.totalSteps && this.totalSteps > 1,\n this.renderSteps\n )}\n ${this.renderButtons()}\n </div>\n `;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/src/Coachmark.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var v=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var i=(d,l,r,e)=>{for(var s=e>1?void 0:e?b(l,r):l,o=d.length-1,a;o>=0;o--)(a=d[o])&&(s=(e?a(l,r,s):a(s))||s);return e&&s&&v(l,r,s),s};import{html as t,nothing as u}from"@spectrum-web-components/base";import{property as n}from"@spectrum-web-components/base/src/decorators.js";import{when as p}from"@spectrum-web-components/base/src/directives.js";import{LikeAnchor as f}from"@spectrum-web-components/shared/src/like-anchor.js";import T from"./coachmark.css.js";import g from"@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js";import"@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js";import{Popover as $}from"@spectrum-web-components/popover";import{join as A}from"lit/directives/join.js";import{ifDefined as h}from"@spectrum-web-components/base/src/directives.js";import{MediaType as S}from"./CoachmarkItem.js";import"@spectrum-web-components/asset/sp-asset.js";import"@spectrum-web-components/button/sp-button.js";import"@spectrum-web-components/button-group/sp-button-group.js";import"@spectrum-web-components/quick-actions/sp-quick-actions.js";export class Coachmark extends f($){constructor(){super(...arguments);this.placement="right";this.modifierKeys=[];this.hasAsset=!1;this.renderSecondaryButton=()=>t`
1
+ "use strict";var v=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var r=(c,l,n,e)=>{for(var i=e>1?void 0:e?b(l,n):l,o=c.length-1,a;o>=0;o--)(a=c[o])&&(i=(e?a(l,n,i):a(i))||i);return e&&i&&v(l,n,i),i};import{html as t,nothing as u}from"@spectrum-web-components/base";import{property as s}from"@spectrum-web-components/base/src/decorators.js";import{when as p}from"@spectrum-web-components/base/src/directives.js";import T from"./coachmark.css.js";import f from"@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js";import"@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js";import{Popover as g}from"@spectrum-web-components/popover";import{join as $}from"lit/directives/join.js";import{ifDefined as y}from"@spectrum-web-components/base/src/directives.js";import{MediaType as A}from"./CoachmarkItem.js";import"@spectrum-web-components/asset/sp-asset.js";import"@spectrum-web-components/button/sp-button.js";import"@spectrum-web-components/button-group/sp-button-group.js";import"@spectrum-web-components/quick-actions/sp-quick-actions.js";export class Coachmark extends g{constructor(){super(...arguments);this.placement="right";this.modifierKeys=[];this.hasAsset=!1;this.renderSecondaryButton=()=>t`
2
2
  <sp-button
3
3
  treatment="outline"
4
4
  variant="secondary"
@@ -41,49 +41,51 @@
41
41
  `;this.renderSteps=()=>t`
42
42
  <div class="step" role="status">
43
43
  <span aria-live="polite">
44
- ${this.currentStep} of ${this.totalSteps}
44
+ <slot name="step-count">
45
+ ${this.currentStep} of ${this.totalSteps}
46
+ </slot>
45
47
  </span>
46
48
  </div>
47
49
  `;this.renderActionMenu=()=>t`
48
- <div class="action-menu" @pointerdown=${this.stopPropagationOnHref}>
50
+ <div class="action-menu">
49
51
  <slot name="actions"></slot>
50
52
  </div>
51
- `}static get styles(){return[...super.styles,T,g]}renderMedia(){var e;return this.mediaType===S.IMAGE?t`
53
+ `}static get styles(){return[...super.styles,T,f]}renderMedia(){var e;return this.mediaType===A.IMAGE?t`
52
54
  <sp-asset id="cover-photo">
53
55
  <div class="image-wrapper">
54
56
  <img
55
57
  class="image"
56
58
  loading="lazy"
57
59
  slot="cover-photo"
58
- src="${h(this.source)}"
59
- alt="${h((e=this==null?void 0:this.content)==null?void 0:e.imageAlt)}"
60
+ src="${y(this.source)}"
61
+ alt="${y((e=this==null?void 0:this.content)==null?void 0:e.imageAlt)}"
60
62
  />
61
63
  </div>
62
64
  </sp-asset>
63
65
  `:t`
64
66
  <slot name="asset"></slot>
65
- `}renderModifier(r,e="modifier"){return t`
66
- <span type="${e}" class="keyboard-shortcut">${r}</span>
67
+ `}renderModifier(n,e="modifier"){return t`
68
+ <span type="${e}" class="keyboard-shortcut">${n}</span>
67
69
  `}renderJoiner(){return t`
68
70
  <span class="plus">&plus;</span>
69
- `}renderHeader(){var o,a,c,m;const r=this.modifierKeys&&((o=this.modifierKeys)==null?void 0:o.length)>0,e=!!this.shortcutKey,s=!!((a=this.content)!=null&&a.title);return!s&&!r&&!e?t`
71
+ `}renderHeader(){var o,a,d,m;const n=this.modifierKeys&&((o=this.modifierKeys)==null?void 0:o.length)>0,e=!!this.shortcutKey,i=!!((a=this.content)!=null&&a.title);return!i&&!n&&!e?t`
70
72
  <div class="title"><slot name="title"></slot></div>
71
73
  `:t`
72
- ${s?t`
73
- <div class="title">${(c=this.content)==null?void 0:c.title}</div>
74
+ ${i?t`
75
+ <div class="title">${(d=this.content)==null?void 0:d.title}</div>
74
76
  `:u}
75
- ${r||e?t`
77
+ ${n||e?t`
76
78
  <kbd class="keys spectrum-Body spectrum-Body--sizeS">
77
- ${r?A((m=this.modifierKeys)==null?void 0:m.map(y=>this.renderModifier(y)),this.renderJoiner()):u}
78
- ${e&&r?this.renderJoiner():u}
79
+ ${n?$((m=this.modifierKeys)==null?void 0:m.map(h=>this.renderModifier(h)),this.renderJoiner()):u}
80
+ ${e&&n?this.renderJoiner():u}
79
81
  ${e?this.renderModifier(this.shortcutKey,"shortcut"):u}
80
82
  </kbd>
81
83
  `:u}
82
- `}renderContent(){var e,s;return!((e=this.content)!=null&&e.description)?t`
84
+ `}renderContent(){var e,i;return!((e=this.content)!=null&&e.description)?t`
83
85
  <slot name="content"></slot>
84
86
  `:t`
85
- <div>${(s=this.content)==null?void 0:s.description}</div>
86
- `}stopPropagationOnHref(r){this.href&&r.stopPropagation()}handlePrimaryCTA(){this.dispatchEvent(new Event("primary",{bubbles:!0,composed:!0}))}handleSecondaryCTA(){this.dispatchEvent(new Event("secondary",{bubbles:!0,composed:!0}))}renderButtons(){return t`
87
+ <div>${(i=this.content)==null?void 0:i.description}</div>
88
+ `}handlePrimaryCTA(){this.dispatchEvent(new Event("primary",{bubbles:!0,composed:!0}))}handleSecondaryCTA(){this.dispatchEvent(new Event("secondary",{bubbles:!0,composed:!0}))}renderButtons(){return t`
87
89
  <sp-button-group class="spectrum-ButtonGroup buttongroup">
88
90
  ${p(this.secondaryCTA,this.renderSecondaryButton)}
89
91
  ${p(this.primaryCTA,this.renderPrimaryButton)}
@@ -109,5 +111,5 @@
109
111
  ${p(this.totalSteps&&this.totalSteps>1,this.renderSteps)}
110
112
  ${this.renderButtons()}
111
113
  </div>
112
- `}}i([n({type:Object})],Coachmark.prototype,"item",2),i([n({type:String})],Coachmark.prototype,"placement",2),i([n({type:Object,attribute:!1})],Coachmark.prototype,"content",2),i([n({attribute:"shortcut-key"})],Coachmark.prototype,"shortcutKey",2),i([n({type:Array})],Coachmark.prototype,"modifierKeys",2),i([n({attribute:"src"})],Coachmark.prototype,"source",2),i([n({attribute:"media-type"})],Coachmark.prototype,"mediaType",2),i([n({type:Boolean,attribute:"has-asset",reflect:!0})],Coachmark.prototype,"hasAsset",2),i([n()],Coachmark.prototype,"asset",2),i([n({type:Number,attribute:"current-step"})],Coachmark.prototype,"currentStep",2),i([n({type:Number,attribute:"total-steps"})],Coachmark.prototype,"totalSteps",2),i([n({type:String,attribute:"primary-cta"})],Coachmark.prototype,"primaryCTA",2),i([n({type:String,attribute:"secondary-cta"})],Coachmark.prototype,"secondaryCTA",2);
114
+ `}}r([s({type:Object})],Coachmark.prototype,"item",2),r([s({type:String})],Coachmark.prototype,"placement",2),r([s({type:Object,attribute:!1})],Coachmark.prototype,"content",2),r([s({attribute:"shortcut-key"})],Coachmark.prototype,"shortcutKey",2),r([s({type:Array})],Coachmark.prototype,"modifierKeys",2),r([s({attribute:"src"})],Coachmark.prototype,"source",2),r([s({attribute:"media-type"})],Coachmark.prototype,"mediaType",2),r([s({type:Boolean,attribute:"has-asset",reflect:!0})],Coachmark.prototype,"hasAsset",2),r([s()],Coachmark.prototype,"asset",2),r([s({type:Number,attribute:"current-step"})],Coachmark.prototype,"currentStep",2),r([s({type:Number,attribute:"total-steps"})],Coachmark.prototype,"totalSteps",2),r([s({type:String,attribute:"primary-cta"})],Coachmark.prototype,"primaryCTA",2),r([s({type:String,attribute:"secondary-cta"})],Coachmark.prototype,"secondaryCTA",2);
113
115
  //# sourceMappingURL=Coachmark.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["Coachmark.ts"],
4
- "sourcesContent": ["/*\nCopyright 2023 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\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 {\n CSSResultArray,\n html,\n nothing,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { when } from '@spectrum-web-components/base/src/directives.js';\nimport { LikeAnchor } from '@spectrum-web-components/shared/src/like-anchor.js';\nimport coachmarkStyles from './coachmark.css.js';\nimport chevronStyles from '@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js';\nimport { Popover } from '@spectrum-web-components/popover';\nimport { join } from 'lit/directives/join.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport type { Placement } from '@spectrum-web-components/overlay';\nimport { MediaType } from './CoachmarkItem.js';\nimport type { CoachmarkItem } from './CoachmarkItem.js';\nimport '@spectrum-web-components/asset/sp-asset.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/button-group/sp-button-group.js';\nimport '@spectrum-web-components/quick-actions/sp-quick-actions.js';\n\n/**\n * @element sp-coachmark\n * @fires primary - Announces that the \"primary\" button has been clicked.\n * @fires secondary - Announces that the \"secondary\" button has been clicked.\n * @slot cover-photo - This is the cover photo for Default and Quiet Coachmark\n * @slot heading - HTML content to be listed as the heading\n * @slot description - A description of the card\n * @slot actions - an `sp-action-menu` element outlining actions to take on the represened object\n */\nexport class Coachmark extends LikeAnchor(Popover) {\n public static override get styles(): CSSResultArray {\n return [...super.styles, coachmarkStyles, chevronStyles];\n }\n @property({ type: Object })\n public item?: CoachmarkItem;\n\n @property({ type: String })\n public override placement: Placement = 'right';\n\n @property({ type: Object, attribute: false })\n private content?: {\n title?: string;\n description?: string;\n imageAlt?: string;\n };\n\n @property({ attribute: 'shortcut-key' })\n private shortcutKey?: string;\n\n @property({ type: Array })\n public modifierKeys?: string[] = [];\n\n @property({ attribute: 'src' })\n private source?: string;\n\n @property({ attribute: 'media-type' })\n private mediaType?: MediaType;\n\n @property({ type: Boolean, attribute: 'has-asset', reflect: true })\n public hasAsset = false;\n\n @property()\n public asset?: 'file' | 'folder';\n\n @property({ type: Number, attribute: 'current-step' })\n public currentStep?: number;\n\n @property({ type: Number, attribute: 'total-steps' })\n public totalSteps?: number;\n\n @property({ type: String, attribute: 'primary-cta' })\n primaryCTA?: string;\n\n @property({ type: String, attribute: 'secondary-cta' })\n secondaryCTA?: string;\n\n // render video and images\n private renderMedia(): TemplateResult {\n const isImage = this.mediaType === MediaType.IMAGE;\n if (!isImage) {\n return html`\n <slot name=\"asset\"></slot>\n `;\n }\n return html`\n <sp-asset id=\"cover-photo\">\n <div class=\"image-wrapper\">\n <img\n class=\"image\"\n loading=\"lazy\"\n slot=\"cover-photo\"\n src=\"${ifDefined(this.source)}\"\n alt=\"${ifDefined(this?.content?.imageAlt)}\"\n />\n </div>\n </sp-asset>\n `;\n }\n // method to render modifier\n private renderModifier(\n modifierKey: string,\n type: 'modifier' | 'shortcut' = 'modifier'\n ): TemplateResult {\n return html`\n <span type=\"${type}\" class=\"keyboard-shortcut\">${modifierKey}</span>\n `;\n }\n\n private renderJoiner(): TemplateResult {\n return html`\n <span class=\"plus\">&plus;</span>\n `;\n }\n // render heading title and modifier\n private renderHeader(): TemplateResult {\n const hasModifier = this.modifierKeys && this.modifierKeys?.length > 0;\n const hasShortcut = Boolean(this.shortcutKey);\n const hasTitle = Boolean(this.content?.title);\n if (!hasTitle && !hasModifier && !hasShortcut) {\n return html`\n <div class=\"title\"><slot name=\"title\"></slot></div>\n `;\n }\n return html`\n ${hasTitle\n ? html`\n <div class=\"title\">${this.content?.title}</div>\n `\n : nothing}\n ${hasModifier || hasShortcut\n ? html`\n <kbd class=\"keys spectrum-Body spectrum-Body--sizeS\">\n ${hasModifier\n ? join(\n this.modifierKeys?.map((k) =>\n this.renderModifier(k)\n ),\n this.renderJoiner()\n )\n : nothing}\n ${hasShortcut && hasModifier\n ? this.renderJoiner()\n : nothing}\n ${hasShortcut\n ? this.renderModifier(\n this.shortcutKey!,\n 'shortcut'\n )\n : nothing}\n </kbd>\n `\n : nothing}\n `;\n }\n // render description\n private renderContent(): TemplateResult {\n const hasDescription = Boolean(this.content?.description);\n if (!hasDescription)\n return html`\n <slot name=\"content\"></slot>\n `;\n return html`\n <div>${this.content?.description}</div>\n `;\n }\n\n private stopPropagationOnHref(event: Event): void {\n if (this.href) {\n event.stopPropagation();\n }\n }\n\n // event on primary button\n private handlePrimaryCTA(): void {\n this.dispatchEvent(\n new Event('primary', {\n bubbles: true,\n composed: true,\n })\n );\n }\n // event on secondary button\n private handleSecondaryCTA(): void {\n this.dispatchEvent(\n new Event('secondary', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private renderSecondaryButton = (): TemplateResult => {\n return html`\n <sp-button\n treatment=\"outline\"\n variant=\"secondary\"\n @click=${this.handleSecondaryCTA}\n >\n ${this.secondaryCTA}\n </sp-button>\n `;\n };\n\n private renderPrimaryButton = (): TemplateResult => {\n return html`\n <sp-button\n size=\"s\"\n treatment=\"outline\"\n variant=\"primary\"\n @click=${this.handlePrimaryCTA}\n >\n ${this.primaryCTA}\n </sp-button>\n `;\n };\n\n private renderSecondaryButtonMobile = (): TemplateResult => {\n return html`\n <sp-button\n variant=\"secondary\"\n treatment=\"outline\"\n icon-only\n aria-label=\"previous\"\n @click=${this.handleSecondaryCTA}\n >\n <sp-icon-chevron200\n size=\"s\"\n class=\"spectrum-UIIcon-ChevronLeft75\"\n slot=\"icon\"\n ></sp-icon-chevron200>\n </sp-button>\n `;\n };\n\n private renderPrimaryButtonMobile = (): TemplateResult => {\n return html`\n <sp-button\n size=\"s\"\n treatment=\"outline\"\n variant=\"primary\"\n @click=${this.handlePrimaryCTA}\n >\n ${this.primaryCTA}\n </sp-button>\n `;\n };\n\n protected renderButtons(): TemplateResult {\n return html`\n <sp-button-group class=\"spectrum-ButtonGroup buttongroup\">\n ${when(this.secondaryCTA, this.renderSecondaryButton)}\n ${when(this.primaryCTA, this.renderPrimaryButton)}\n </sp-button-group>\n <sp-button-group\n class=\"spectrum-ButtonGroup buttongroup-mobile\"\n size=\"s\"\n >\n ${when(this.secondaryCTA, this.renderSecondaryButtonMobile)}\n ${when(this.primaryCTA, this.renderPrimaryButtonMobile)}\n </sp-button-group>\n `;\n }\n\n // render steps\n protected renderSteps = (): TemplateResult => {\n return html`\n <div class=\"step\" role=\"status\">\n <span aria-live=\"polite\">\n ${this.currentStep} of ${this.totalSteps}\n </span>\n </div>\n `;\n };\n // render action menu\n protected renderActionMenu = (): TemplateResult => {\n return html`\n <div class=\"action-menu\" @pointerdown=${this.stopPropagationOnHref}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n };\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderMedia()}\n <div class=\"header\">\n <div class=\"flex-container\">${this.renderHeader()}</div>\n <div class=\"static-item\">\n ${when(\n this.secondaryCTA && this.primaryCTA,\n this.renderActionMenu\n )}\n </div>\n </div>\n\n <div class=\"content\">${this.renderContent()}</div>\n <div class=\"footer\">\n ${when(\n this.totalSteps && this.totalSteps > 1,\n this.renderSteps\n )}\n ${this.renderButtons()}\n </div>\n `;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["html", "nothing", "property", "when", "LikeAnchor", "coachmarkStyles", "chevronStyles", "Popover", "join", "ifDefined", "MediaType", "_a", "modifierKey", "type", "_b", "_c", "_d", "hasModifier", "hasShortcut", "hasTitle", "k", "event", "__decorateClass"]
4
+ "sourcesContent": ["/*\nCopyright 2023 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\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 {\n CSSResultArray,\n html,\n nothing,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport { when } from '@spectrum-web-components/base/src/directives.js';\nimport coachmarkStyles from './coachmark.css.js';\nimport chevronStyles from '@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js';\nimport { Popover } from '@spectrum-web-components/popover';\nimport { join } from 'lit/directives/join.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport type { Placement } from '@spectrum-web-components/overlay';\nimport { MediaType } from './CoachmarkItem.js';\nimport type { CoachmarkItem } from './CoachmarkItem.js';\nimport '@spectrum-web-components/asset/sp-asset.js';\nimport '@spectrum-web-components/button/sp-button.js';\nimport '@spectrum-web-components/button-group/sp-button-group.js';\nimport '@spectrum-web-components/quick-actions/sp-quick-actions.js';\n\n/**\n * @element sp-coachmark\n * @fires primary - Announces that the \"primary\" button has been clicked.\n * @fires secondary - Announces that the \"secondary\" button has been clicked.\n * @slot cover-photo - This is the cover photo for Default and Quiet Coachmark\n * @slot heading - HTML content to be listed as the heading\n * @slot description - A description of the card\n * @slot actions - an `sp-action-menu` element outlining actions to take on the represened object\n * @slot step-count - Override the default pagination delivery with your own internationalized content\n */\nexport class Coachmark extends Popover {\n public static override get styles(): CSSResultArray {\n return [...super.styles, coachmarkStyles, chevronStyles];\n }\n @property({ type: Object })\n public item?: CoachmarkItem;\n\n @property({ type: String })\n public override placement: Placement = 'right';\n\n @property({ type: Object, attribute: false })\n private content?: {\n title?: string;\n description?: string;\n imageAlt?: string;\n };\n\n @property({ attribute: 'shortcut-key' })\n private shortcutKey?: string;\n\n @property({ type: Array })\n public modifierKeys?: string[] = [];\n\n @property({ attribute: 'src' })\n private source?: string;\n\n @property({ attribute: 'media-type' })\n private mediaType?: MediaType;\n\n @property({ type: Boolean, attribute: 'has-asset', reflect: true })\n public hasAsset = false;\n\n @property()\n public asset?: 'file' | 'folder';\n\n @property({ type: Number, attribute: 'current-step' })\n public currentStep?: number;\n\n @property({ type: Number, attribute: 'total-steps' })\n public totalSteps?: number;\n\n @property({ type: String, attribute: 'primary-cta' })\n primaryCTA?: string;\n\n @property({ type: String, attribute: 'secondary-cta' })\n secondaryCTA?: string;\n\n // render video and images\n private renderMedia(): TemplateResult {\n const isImage = this.mediaType === MediaType.IMAGE;\n if (!isImage) {\n return html`\n <slot name=\"asset\"></slot>\n `;\n }\n return html`\n <sp-asset id=\"cover-photo\">\n <div class=\"image-wrapper\">\n <img\n class=\"image\"\n loading=\"lazy\"\n slot=\"cover-photo\"\n src=\"${ifDefined(this.source)}\"\n alt=\"${ifDefined(this?.content?.imageAlt)}\"\n />\n </div>\n </sp-asset>\n `;\n }\n // method to render modifier\n private renderModifier(\n modifierKey: string,\n type: 'modifier' | 'shortcut' = 'modifier'\n ): TemplateResult {\n return html`\n <span type=\"${type}\" class=\"keyboard-shortcut\">${modifierKey}</span>\n `;\n }\n\n private renderJoiner(): TemplateResult {\n return html`\n <span class=\"plus\">&plus;</span>\n `;\n }\n // render heading title and modifier\n private renderHeader(): TemplateResult {\n const hasModifier = this.modifierKeys && this.modifierKeys?.length > 0;\n const hasShortcut = Boolean(this.shortcutKey);\n const hasTitle = Boolean(this.content?.title);\n if (!hasTitle && !hasModifier && !hasShortcut) {\n return html`\n <div class=\"title\"><slot name=\"title\"></slot></div>\n `;\n }\n return html`\n ${hasTitle\n ? html`\n <div class=\"title\">${this.content?.title}</div>\n `\n : nothing}\n ${hasModifier || hasShortcut\n ? html`\n <kbd class=\"keys spectrum-Body spectrum-Body--sizeS\">\n ${hasModifier\n ? join(\n this.modifierKeys?.map((k) =>\n this.renderModifier(k)\n ),\n this.renderJoiner()\n )\n : nothing}\n ${hasShortcut && hasModifier\n ? this.renderJoiner()\n : nothing}\n ${hasShortcut\n ? this.renderModifier(\n this.shortcutKey!,\n 'shortcut'\n )\n : nothing}\n </kbd>\n `\n : nothing}\n `;\n }\n // render description\n private renderContent(): TemplateResult {\n const hasDescription = Boolean(this.content?.description);\n if (!hasDescription)\n return html`\n <slot name=\"content\"></slot>\n `;\n return html`\n <div>${this.content?.description}</div>\n `;\n }\n\n // event on primary button\n private handlePrimaryCTA(): void {\n this.dispatchEvent(\n new Event('primary', {\n bubbles: true,\n composed: true,\n })\n );\n }\n // event on secondary button\n private handleSecondaryCTA(): void {\n this.dispatchEvent(\n new Event('secondary', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private renderSecondaryButton = (): TemplateResult => {\n return html`\n <sp-button\n treatment=\"outline\"\n variant=\"secondary\"\n @click=${this.handleSecondaryCTA}\n >\n ${this.secondaryCTA}\n </sp-button>\n `;\n };\n\n private renderPrimaryButton = (): TemplateResult => {\n return html`\n <sp-button\n size=\"s\"\n treatment=\"outline\"\n variant=\"primary\"\n @click=${this.handlePrimaryCTA}\n >\n ${this.primaryCTA}\n </sp-button>\n `;\n };\n\n private renderSecondaryButtonMobile = (): TemplateResult => {\n return html`\n <sp-button\n variant=\"secondary\"\n treatment=\"outline\"\n icon-only\n aria-label=\"previous\"\n @click=${this.handleSecondaryCTA}\n >\n <sp-icon-chevron200\n size=\"s\"\n class=\"spectrum-UIIcon-ChevronLeft75\"\n slot=\"icon\"\n ></sp-icon-chevron200>\n </sp-button>\n `;\n };\n\n private renderPrimaryButtonMobile = (): TemplateResult => {\n return html`\n <sp-button\n size=\"s\"\n treatment=\"outline\"\n variant=\"primary\"\n @click=${this.handlePrimaryCTA}\n >\n ${this.primaryCTA}\n </sp-button>\n `;\n };\n\n protected renderButtons(): TemplateResult {\n return html`\n <sp-button-group class=\"spectrum-ButtonGroup buttongroup\">\n ${when(this.secondaryCTA, this.renderSecondaryButton)}\n ${when(this.primaryCTA, this.renderPrimaryButton)}\n </sp-button-group>\n <sp-button-group\n class=\"spectrum-ButtonGroup buttongroup-mobile\"\n size=\"s\"\n >\n ${when(this.secondaryCTA, this.renderSecondaryButtonMobile)}\n ${when(this.primaryCTA, this.renderPrimaryButtonMobile)}\n </sp-button-group>\n `;\n }\n\n // render steps\n protected renderSteps = (): TemplateResult => {\n return html`\n <div class=\"step\" role=\"status\">\n <span aria-live=\"polite\">\n <slot name=\"step-count\">\n ${this.currentStep} of ${this.totalSteps}\n </slot>\n </span>\n </div>\n `;\n };\n // render action menu\n protected renderActionMenu = (): TemplateResult => {\n return html`\n <div class=\"action-menu\">\n <slot name=\"actions\"></slot>\n </div>\n `;\n };\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderMedia()}\n <div class=\"header\">\n <div class=\"flex-container\">${this.renderHeader()}</div>\n <div class=\"static-item\">\n ${when(\n this.secondaryCTA && this.primaryCTA,\n this.renderActionMenu\n )}\n </div>\n </div>\n\n <div class=\"content\">${this.renderContent()}</div>\n <div class=\"footer\">\n ${when(\n this.totalSteps && this.totalSteps > 1,\n this.renderSteps\n )}\n ${this.renderButtons()}\n </div>\n `;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["html", "nothing", "property", "when", "coachmarkStyles", "chevronStyles", "Popover", "join", "ifDefined", "MediaType", "_a", "modifierKey", "type", "_b", "_c", "_d", "hasModifier", "hasShortcut", "hasTitle", "k", "__decorateClass"]
7
7
  }
@@ -28,15 +28,17 @@ export const InTour = (props, args = {}) => {
28
28
  const {
29
29
  open = true,
30
30
  heading = "Coachmark in Tour",
31
- content = "This is a Coachmark with nothing but text in it."
31
+ content = "This is a Coachmark with nothing but text in it.",
32
+ currentStep = 2,
33
+ totalSteps = 8
32
34
  } = props;
33
35
  return html`
34
36
  <sp-coachmark
35
37
  ?open=${open}
36
38
  primary-cta="Next"
37
39
  secondary-cta="Previous"
38
- current-step="2"
39
- total-steps="8"
40
+ current-step=${currentStep}
41
+ total-steps=${totalSteps}
40
42
  .content=${{
41
43
  title: heading,
42
44
  description: content
@@ -56,6 +58,7 @@ export const InTour = (props, args = {}) => {
56
58
  (_a = args.onSecondary) == null ? void 0 : _a.call(args, event);
57
59
  }}
58
60
  >
61
+ <div slot="step-count">${currentStep} of ${totalSteps}</div>
59
62
  <sp-action-menu
60
63
  placement="bottom-end"
61
64
  quiet
@@ -80,7 +83,7 @@ export const single = () => {
80
83
  `;
81
84
  };
82
85
  export const TriggerOnClick = (props) => {
83
- const { open = true } = props;
86
+ const { open = true, currentStep = 1, totalSteps = 4 } = props;
84
87
  return html`
85
88
  <sp-coach-indicator id="trigger"></sp-coach-indicator>
86
89
  <sp-overlay
@@ -91,31 +94,31 @@ export const TriggerOnClick = (props) => {
91
94
  >
92
95
  <sp-coachmark
93
96
  ?open=${open}
94
- current-step="2"
95
- total-steps="8"
96
- primary-cta="Next"
97
- secondary-cta="Previous"
97
+ current-step=${currentStep}
98
+ total-steps=${totalSteps}
99
+ primary-cta=""
100
+ secondary-cta="前の"
98
101
  >
99
- <div slot="title">Coachmark on Click</div>
102
+ <div slot="title">クリック時のコーチマーク</div>
100
103
  <div slot="content">
101
- This is a Coachmark with nothing but text in it. Kind of
102
- lonely in here.
104
+ これはテキストだけが入ったコーチマークです。ここはなんだか寂しいですね。
103
105
  </div>
106
+ <div slot="step-count">4 分の 1</div>
104
107
  <sp-action-menu
105
108
  placement="bottom-end"
106
109
  quiet
107
110
  slot="actions"
108
111
  label="More Actions"
109
112
  >
110
- <sp-menu-item>Skip tour</sp-menu-item>
111
- <sp-menu-item>Restart tour</sp-menu-item>
113
+ <sp-menu-item>ツアーをスキップ</sp-menu-item>
114
+ <sp-menu-item>ツアー再開</sp-menu-item>
112
115
  </sp-action-menu>
113
116
  </sp-coachmark>
114
117
  </sp-overlay>
115
118
  `;
116
119
  };
117
120
  export const TriggerOnHover = (props) => {
118
- const { open = true } = props;
121
+ const { open = true, currentStep = 2, totalSteps = 8 } = props;
119
122
  return html`
120
123
  <sp-coach-indicator id="trigger"></sp-coach-indicator>
121
124
  <sp-overlay
@@ -126,8 +129,8 @@ export const TriggerOnHover = (props) => {
126
129
  >
127
130
  <sp-coachmark
128
131
  ?open=${open}
129
- current-step="2"
130
- total-steps="8"
132
+ current-step=${currentStep}
133
+ total-steps=${totalSteps}
131
134
  primary-cta="Next"
132
135
  secondary-cta="Previous"
133
136
  >
@@ -136,6 +139,7 @@ export const TriggerOnHover = (props) => {
136
139
  This is a Coachmark with nothing but text in it. Kind of
137
140
  lonely in here.
138
141
  </div>
142
+ <div slot="step-count">${currentStep} of ${totalSteps}</div>
139
143
  <sp-action-menu
140
144
  placement="bottom-end"
141
145
  quiet
@@ -149,22 +153,24 @@ export const TriggerOnHover = (props) => {
149
153
  </sp-overlay>
150
154
  `;
151
155
  };
152
- export const withImage = () => {
156
+ export const withImage = (props) => {
157
+ const { open = true, currentStep = 2, totalSteps = 8 } = props;
153
158
  return html`
154
159
  <sp-coachmark
155
- open
160
+ ?open=${open}
156
161
  src=${cave}
157
162
  media-type="image"
158
163
  primary-cta="Next"
159
164
  secondary-cta="Previous"
160
- current-step="2"
161
- total-steps="8"
165
+ current-step=${currentStep}
166
+ total-steps=${totalSteps}
162
167
  >
163
168
  <div slot="title">Coachmark with Media</div>
164
169
  <div slot="content">
165
170
  This is a Coachmark with nothing but text in it. Kind of lonely
166
171
  in here.
167
172
  </div>
173
+ <div slot="step-count">${currentStep} of ${totalSteps}</div>
168
174
  <sp-action-menu
169
175
  placement="bottom-end"
170
176
  quiet
@@ -177,22 +183,24 @@ export const withImage = () => {
177
183
  </sp-coachmark>
178
184
  `;
179
185
  };
180
- export const withGif = () => {
186
+ export const withGif = (props) => {
187
+ const { open = true, currentStep = 2, totalSteps = 8 } = props;
181
188
  return html`
182
189
  <sp-coachmark
183
- open
190
+ ?open=${open}
184
191
  src=${gif}
185
192
  media-type="image"
186
193
  primary-cta="Next"
187
194
  secondary-cta="Previous"
188
- current-step="2"
189
- total-steps="8"
195
+ current-step=${currentStep}
196
+ total-steps=${totalSteps}
190
197
  >
191
198
  <div slot="title">Coachmark with GIF</div>
192
199
  <div slot="content">
193
200
  This is a Coachmark with nothing but text in it. Kind of lonely
194
201
  in here.
195
202
  </div>
203
+ <div slot="step-count">${currentStep} of ${totalSteps}</div>
196
204
  <sp-action-menu
197
205
  placement="bottom-end"
198
206
  quiet
@@ -212,7 +220,9 @@ export const withKeys = (props) => {
212
220
  const {
213
221
  modifierKeys = ["\u21E7 Shift", "\u2318"],
214
222
  heading = "Coachmark with Keys",
215
- content = "This is a Coachmark with nothing but text in it."
223
+ content = "This is a Coachmark with nothing but text in it.",
224
+ currentStep = 2,
225
+ totalSteps = 8
216
226
  } = props;
217
227
  return html`
218
228
  <sp-coachmark
@@ -224,9 +234,10 @@ export const withKeys = (props) => {
224
234
  }}
225
235
  primary-cta="Next"
226
236
  secondary-cta="Previous"
227
- current-step="2"
228
- total-steps="8"
237
+ current-step=${currentStep}
238
+ total-steps=${totalSteps}
229
239
  >
240
+ <div slot="step-count">${currentStep} of ${totalSteps}</div>
230
241
  <sp-action-menu
231
242
  placement="bottom-end"
232
243
  quiet
@@ -239,20 +250,22 @@ export const withKeys = (props) => {
239
250
  </sp-coachmark>
240
251
  `;
241
252
  };
242
- export const withShortCut = () => {
253
+ export const withShortCut = (props) => {
254
+ const { currentStep = 2, totalSteps = 8 } = props;
243
255
  return html`
244
256
  <sp-coachmark
245
257
  open
246
258
  primary-cta="Next"
247
259
  secondary-cta="Previous"
248
- current-step="2"
249
- total-steps="8"
260
+ current-step=${currentStep}
261
+ total-steps=${totalSteps}
250
262
  shortcut-key="Z"
251
263
  .content=${{
252
264
  title: "Coachmark Shortcut",
253
265
  description: "This is a Coachmark with nothing but text in it. Kind of lonely in here"
254
266
  }}
255
267
  >
268
+ <div slot="step-count">${currentStep} of ${totalSteps}</div>
256
269
  <sp-action-menu
257
270
  placement="bottom-end"
258
271
  quiet
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["coachmark.stories.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 { html, TemplateResult } from '@spectrum-web-components/base';\nimport type { MediaType } from '../src/CoachmarkItem.js';\nimport '@spectrum-web-components/coachmark/sp-coachmark.js';\nimport '@spectrum-web-components/coachmark/sp-coach-indicator.js';\nimport '@spectrum-web-components/action-menu/sp-action-menu.js';\nimport { cave, gif } from './images.js';\nimport type { Placement } from '@spectrum-web-components/overlay';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\n\nexport default {\n title: 'Coachmark',\n component: 'sp-coachmark',\n argTypes: {\n onPrimary: { action: 'primary' },\n onSecondary: { action: 'secondary' },\n },\n};\n\ntype StoryArgs = {\n onPrimary?: (event: Event) => void;\n onSecondary?: (event: Event) => void;\n};\n\ntype Properties = {\n open?: boolean;\n placement?: Placement;\n id?: string;\n heading: string;\n shortcutKey?: string;\n modifierKeys?: string[];\n content: string;\n src?: string;\n mediaType?: MediaType;\n imageAlt?: string;\n currentStep?: number;\n totalSteps?: number;\n primaryCTA?: string;\n secondaryCTA?: string;\n};\n\nexport const Default = (): TemplateResult => {\n return html`\n <sp-coachmark open>\n <div id=\"heading\" slot=\"title\">Coachmark with Text Only</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of lonely\n in here.\n </div>\n </sp-coachmark>\n `;\n};\n\nexport const InTour = (\n props: Properties,\n args: StoryArgs = {}\n): TemplateResult => {\n const {\n open = true,\n heading = 'Coachmark in Tour',\n content = 'This is a Coachmark with nothing but text in it.',\n } = props;\n return html`\n <sp-coachmark\n ?open=${open}\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=\"2\"\n total-steps=\"8\"\n .content=${{\n title: heading,\n description: content,\n }}\n @primary=${(event: Event & { target: HTMLElement }) => {\n event.target.dispatchEvent(\n new Event('close', { bubbles: true, composed: true })\n );\n args.onPrimary?.(event);\n }}\n @secondary=${(event: Event & { target: HTMLElement }) => {\n event.target.dispatchEvent(\n new Event('close', { bubbles: true, composed: true })\n );\n args.onSecondary?.(event);\n }}\n >\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n\nexport const single = (): TemplateResult => {\n return html`\n <sp-coachmark open primary-cta=\"Ok\">\n <div slot=\"title\">A single coachmark</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of lonely\n in here.\n </div>\n </sp-coachmark>\n `;\n};\n\nexport const TriggerOnClick = (props: Properties): TemplateResult => {\n const { open = true } = props;\n\n return html`\n <sp-coach-indicator id=\"trigger\"></sp-coach-indicator>\n <sp-overlay\n trigger=\"trigger@click\"\n placement=\"right\"\n .receivesFocus=${'false'}\n ?open=${open}\n >\n <sp-coachmark\n ?open=${open}\n current-step=\"2\"\n total-steps=\"8\"\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n >\n <div slot=\"title\">Coachmark on Click</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of\n lonely in here.\n </div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n </sp-overlay>\n `;\n};\n\nexport const TriggerOnHover = (props: Properties): TemplateResult => {\n const { open = true } = props;\n\n return html`\n <sp-coach-indicator id=\"trigger\"></sp-coach-indicator>\n <sp-overlay\n trigger=\"trigger@hover\"\n placement=\"right\"\n .receivesFocus=${'false'}\n ?open=${open}\n >\n <sp-coachmark\n ?open=${open}\n current-step=\"2\"\n total-steps=\"8\"\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n >\n <div slot=\"title\">Coachmark on hover</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of\n lonely in here.\n </div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n </sp-overlay>\n `;\n};\n\nexport const withImage = (): TemplateResult => {\n return html`\n <sp-coachmark\n open\n src=${cave}\n media-type=\"image\"\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=\"2\"\n total-steps=\"8\"\n >\n <div slot=\"title\">Coachmark with Media</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of lonely\n in here.\n </div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n\nexport const withGif = (): TemplateResult => {\n return html`\n <sp-coachmark\n open\n src=${gif}\n media-type=\"image\"\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=\"2\"\n total-steps=\"8\"\n >\n <div slot=\"title\">Coachmark with GIF</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of lonely\n in here.\n </div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n\nwithGif.swc_vrt = {\n skip: true,\n};\n\nexport const withKeys = (props: Properties): TemplateResult => {\n const {\n modifierKeys = ['\u21E7 Shift', '\u2318'],\n heading = 'Coachmark with Keys',\n content = 'This is a Coachmark with nothing but text in it.',\n } = props;\n return html`\n <sp-coachmark\n open\n .modifierKeys=${modifierKeys}\n .content=${{\n title: heading,\n description: content,\n }}\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=\"2\"\n total-steps=\"8\"\n >\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n\nexport const withShortCut = (): TemplateResult => {\n return html`\n <sp-coachmark\n open\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=\"2\"\n total-steps=\"8\"\n shortcut-key=\"Z\"\n .content=${{\n title: 'Coachmark Shortcut',\n description:\n 'This is a Coachmark with nothing but text in it. Kind of lonely in here',\n }}\n >\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n"],
5
- "mappings": "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",
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 { html, TemplateResult } from '@spectrum-web-components/base';\nimport type { MediaType } from '../src/CoachmarkItem.js';\nimport '@spectrum-web-components/coachmark/sp-coachmark.js';\nimport '@spectrum-web-components/coachmark/sp-coach-indicator.js';\nimport '@spectrum-web-components/action-menu/sp-action-menu.js';\nimport { cave, gif } from './images.js';\nimport type { Placement } from '@spectrum-web-components/overlay';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\n\nexport default {\n title: 'Coachmark',\n component: 'sp-coachmark',\n argTypes: {\n onPrimary: { action: 'primary' },\n onSecondary: { action: 'secondary' },\n },\n};\n\ntype StoryArgs = {\n onPrimary?: (event: Event) => void;\n onSecondary?: (event: Event) => void;\n};\n\ntype Properties = {\n open?: boolean;\n placement?: Placement;\n id?: string;\n heading?: string;\n shortcutKey?: string;\n modifierKeys?: string[];\n content?: string;\n src?: string;\n mediaType?: MediaType;\n imageAlt?: string;\n currentStep?: number;\n totalSteps?: number;\n primaryCTA?: string;\n secondaryCTA?: string;\n};\n\nexport const Default = (): TemplateResult => {\n return html`\n <sp-coachmark open>\n <div id=\"heading\" slot=\"title\">Coachmark with Text Only</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of lonely\n in here.\n </div>\n </sp-coachmark>\n `;\n};\n\nexport const InTour = (\n props: Properties,\n args: StoryArgs = {}\n): TemplateResult => {\n const {\n open = true,\n heading = 'Coachmark in Tour',\n content = 'This is a Coachmark with nothing but text in it.',\n currentStep = 2,\n totalSteps = 8,\n } = props;\n return html`\n <sp-coachmark\n ?open=${open}\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=${currentStep}\n total-steps=${totalSteps}\n .content=${{\n title: heading,\n description: content,\n }}\n @primary=${(event: Event & { target: HTMLElement }) => {\n event.target.dispatchEvent(\n new Event('close', { bubbles: true, composed: true })\n );\n args.onPrimary?.(event);\n }}\n @secondary=${(event: Event & { target: HTMLElement }) => {\n event.target.dispatchEvent(\n new Event('close', { bubbles: true, composed: true })\n );\n args.onSecondary?.(event);\n }}\n >\n <div slot=\"step-count\">${currentStep} of ${totalSteps}</div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n\nexport const single = (): TemplateResult => {\n return html`\n <sp-coachmark open primary-cta=\"Ok\">\n <div slot=\"title\">A single coachmark</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of lonely\n in here.\n </div>\n </sp-coachmark>\n `;\n};\n\nexport const TriggerOnClick = (props: Properties): TemplateResult => {\n const { open = true, currentStep = 1, totalSteps = 4 } = props;\n\n return html`\n <sp-coach-indicator id=\"trigger\"></sp-coach-indicator>\n <sp-overlay\n trigger=\"trigger@click\"\n placement=\"right\"\n .receivesFocus=${'false'}\n ?open=${open}\n >\n <sp-coachmark\n ?open=${open}\n current-step=${currentStep}\n total-steps=${totalSteps}\n primary-cta=\"\u6B21\"\n secondary-cta=\"\u524D\u306E\"\n >\n <div slot=\"title\">\u30AF\u30EA\u30C3\u30AF\u6642\u306E\u30B3\u30FC\u30C1\u30DE\u30FC\u30AF</div>\n <div slot=\"content\">\n \u3053\u308C\u306F\u30C6\u30AD\u30B9\u30C8\u3060\u3051\u304C\u5165\u3063\u305F\u30B3\u30FC\u30C1\u30DE\u30FC\u30AF\u3067\u3059\u3002\u3053\u3053\u306F\u306A\u3093\u3060\u304B\u5BC2\u3057\u3044\u3067\u3059\u306D\u3002\n </div>\n <div slot=\"step-count\">4 \u5206\u306E 1</div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>\u30C4\u30A2\u30FC\u3092\u30B9\u30AD\u30C3\u30D7</sp-menu-item>\n <sp-menu-item>\u30C4\u30A2\u30FC\u518D\u958B</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n </sp-overlay>\n `;\n};\n\nexport const TriggerOnHover = (props: Properties): TemplateResult => {\n const { open = true, currentStep = 2, totalSteps = 8 } = props;\n\n return html`\n <sp-coach-indicator id=\"trigger\"></sp-coach-indicator>\n <sp-overlay\n trigger=\"trigger@hover\"\n placement=\"right\"\n .receivesFocus=${'false'}\n ?open=${open}\n >\n <sp-coachmark\n ?open=${open}\n current-step=${currentStep}\n total-steps=${totalSteps}\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n >\n <div slot=\"title\">Coachmark on hover</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of\n lonely in here.\n </div>\n <div slot=\"step-count\">${currentStep} of ${totalSteps}</div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n </sp-overlay>\n `;\n};\n\nexport const withImage = (props: Properties): TemplateResult => {\n const { open = true, currentStep = 2, totalSteps = 8 } = props;\n return html`\n <sp-coachmark\n ?open=${open}\n src=${cave}\n media-type=\"image\"\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=${currentStep}\n total-steps=${totalSteps}\n >\n <div slot=\"title\">Coachmark with Media</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of lonely\n in here.\n </div>\n <div slot=\"step-count\">${currentStep} of ${totalSteps}</div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n\nexport const withGif = (props: Properties): TemplateResult => {\n const { open = true, currentStep = 2, totalSteps = 8 } = props;\n\n return html`\n <sp-coachmark\n ?open=${open}\n src=${gif}\n media-type=\"image\"\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=${currentStep}\n total-steps=${totalSteps}\n >\n <div slot=\"title\">Coachmark with GIF</div>\n <div slot=\"content\">\n This is a Coachmark with nothing but text in it. Kind of lonely\n in here.\n </div>\n <div slot=\"step-count\">${currentStep} of ${totalSteps}</div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n\nwithGif.swc_vrt = {\n skip: true,\n};\n\nexport const withKeys = (props: Properties): TemplateResult => {\n const {\n modifierKeys = ['\u21E7 Shift', '\u2318'],\n heading = 'Coachmark with Keys',\n content = 'This is a Coachmark with nothing but text in it.',\n currentStep = 2,\n totalSteps = 8,\n } = props;\n return html`\n <sp-coachmark\n open\n .modifierKeys=${modifierKeys}\n .content=${{\n title: heading,\n description: content,\n }}\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=${currentStep}\n total-steps=${totalSteps}\n >\n <div slot=\"step-count\">${currentStep} of ${totalSteps}</div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n\nexport const withShortCut = (props: Properties): TemplateResult => {\n const { currentStep = 2, totalSteps = 8 } = props;\n return html`\n <sp-coachmark\n open\n primary-cta=\"Next\"\n secondary-cta=\"Previous\"\n current-step=${currentStep}\n total-steps=${totalSteps}\n shortcut-key=\"Z\"\n .content=${{\n title: 'Coachmark Shortcut',\n description:\n 'This is a Coachmark with nothing but text in it. Kind of lonely in here',\n }}\n >\n <div slot=\"step-count\">${currentStep} of ${totalSteps}</div>\n <sp-action-menu\n placement=\"bottom-end\"\n quiet\n slot=\"actions\"\n label=\"More Actions\"\n >\n <sp-menu-item>Skip tour</sp-menu-item>\n <sp-menu-item>Restart tour</sp-menu-item>\n </sp-action-menu>\n </sp-coachmark>\n `;\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -62,8 +62,7 @@ describe("Coachmark", () => {
62
62
  );
63
63
  });
64
64
  it("if in tour coachmark loads with pagination with previous, next buttons and action menu", async () => {
65
- var _a, _b;
66
- const stepText = "2 of 8";
65
+ var _a, _b, _c;
67
66
  const el = await fixture(
68
67
  InTour(
69
68
  {
@@ -80,21 +79,21 @@ describe("Coachmark", () => {
80
79
  const stepCount = el.shadowRoot.querySelector(
81
80
  'span[aria-live="polite"]'
82
81
  );
83
- expect(stepCount.textContent).to.contain(
84
- stepText,
85
- "the slotted content renders in the element"
82
+ const stepCountSlot = el.querySelector(
83
+ '[slot="step-count"]'
86
84
  );
85
+ expect((_a = stepCountSlot == null ? void 0 : stepCountSlot.textContent) == null ? void 0 : _a.trim()).to.equal("2 of 8");
87
86
  expect(stepCount == null ? void 0 : stepCount.textContent);
88
87
  const nextButton = el.shadowRoot.querySelector(
89
88
  'sp-button[variant="primary"'
90
89
  );
91
90
  expect(nextButton).to.not.be.undefined;
92
- expect((_a = nextButton == null ? void 0 : nextButton.textContent) == null ? void 0 : _a.trim()).to.equal("Next");
91
+ expect((_b = nextButton == null ? void 0 : nextButton.textContent) == null ? void 0 : _b.trim()).to.equal("Next");
93
92
  const prevButton = el.shadowRoot.querySelector(
94
93
  'sp-button[variant="secondary"'
95
94
  );
96
95
  expect(prevButton).to.not.be.undefined;
97
- expect((_b = prevButton == null ? void 0 : prevButton.textContent) == null ? void 0 : _b.trim()).to.equal("Previous");
96
+ expect((_c = prevButton == null ? void 0 : prevButton.textContent) == null ? void 0 : _c.trim()).to.equal("Previous");
98
97
  });
99
98
  it("loads pagination when total step count is greater than 1", async () => {
100
99
  var _a;
@@ -103,16 +102,18 @@ describe("Coachmark", () => {
103
102
  {
104
103
  open: true,
105
104
  heading: "Coachmark In Tour",
106
- content: "This is a Coachmark with nothing but text in it."
105
+ content: "This is a Coachmark with nothing but text in it.",
106
+ currentStep: 2,
107
+ totalSteps: 8
107
108
  },
108
109
  {}
109
110
  )
110
111
  );
111
112
  await elementUpdated(el);
112
- const content = el.shadowRoot.querySelector(
113
- '.step span[aria-live="polite"]'
113
+ const stepCountSlot = el.querySelector(
114
+ '[slot="step-count"]'
114
115
  );
115
- expect((_a = content == null ? void 0 : content.textContent) == null ? void 0 : _a.trim()).to.equal("2 of 8");
116
+ expect((_a = stepCountSlot == null ? void 0 : stepCountSlot.textContent) == null ? void 0 : _a.trim()).to.equal("2 of 8");
116
117
  await expect(el).to.be.accessible();
117
118
  });
118
119
  it('loads primary button with text "Ok" for a single coachmark', async () => {
@@ -145,7 +146,12 @@ describe("Coachmark", () => {
145
146
  });
146
147
  it("renders with shortcut", async () => {
147
148
  var _a;
148
- const el = await fixture(withShortCut());
149
+ const el = await fixture(
150
+ withShortCut({
151
+ currentStep: 1,
152
+ totalSteps: 8
153
+ })
154
+ );
149
155
  await elementUpdated(el);
150
156
  const shortcutKey = el.shadowRoot.querySelector(
151
157
  'span[type="shortcut"]'
@@ -154,7 +160,12 @@ describe("Coachmark", () => {
154
160
  expect((_a = shortcutKey == null ? void 0 : shortcutKey.textContent) == null ? void 0 : _a.trim()).to.include("Z");
155
161
  });
156
162
  it("renders content with image asset", async () => {
157
- const el = await fixture(withImage());
163
+ const el = await fixture(
164
+ withImage({
165
+ currentStep: 1,
166
+ totalSteps: 8
167
+ })
168
+ );
158
169
  await elementUpdated(el);
159
170
  const imageElement = el.shadowRoot.querySelector(
160
171
  'img[src="https://picsum.photos/id/237/200/300"'
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["coachmark.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 {\n elementUpdated,\n expect,\n fixture,\n html,\n nextFrame,\n} from '@open-wc/testing';\n\nimport { Coachmark, CoachmarkItem } from '@spectrum-web-components/coachmark';\nimport { testForLitDevWarnings } from '../../../test/testing-helpers.js';\nimport '@spectrum-web-components/coachmark/sp-coachmark.js';\nimport '@spectrum-web-components/coachmark/sp-coach-indicator.js';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\nimport { spy } from 'sinon';\nimport { Button } from '@spectrum-web-components/button';\nimport {\n Default,\n InTour,\n single,\n withImage,\n withKeys,\n withShortCut,\n} from '../stories/coachmark.stories.js';\n\nconst defaultItem: CoachmarkItem = {\n heading: 'I am the heading for Coachmark',\n content: 'I am the content for this Coachmark',\n};\ndescribe('Coachmark', () => {\n testForLitDevWarnings(\n async () =>\n await fixture<Coachmark>(\n html`\n <sp-coachmark\n id=\"coachmark\"\n .content=${{\n title: defaultItem.heading,\n description: defaultItem.content,\n }}\n ></sp-coachmark>\n `\n )\n );\n it('loads default coachmark accessibly', async () => {\n const el = await fixture<Coachmark>(Default());\n await elementUpdated(el);\n await expect(el).to.be.accessible();\n });\n it('displays the slotted content as `.title`', async () => {\n const testHeading = 'Coachmark with Text Only';\n const el = await fixture<Coachmark>(Default());\n\n await elementUpdated(el);\n\n const root = el.shadowRoot ? el.shadowRoot : el;\n const headingSlot = root.querySelector(\n '[name=\"title\"]'\n ) as HTMLSlotElement;\n\n expect(headingSlot, 'did not find slot element').to.not.be.null;\n const nodes = headingSlot.assignedNodes();\n const divElement = nodes.find(\n (node) => (node as HTMLElement).id === 'heading'\n );\n expect(divElement, 'did not find div element').to.not.be.null;\n expect((divElement as HTMLDivElement).textContent).to.contain(\n testHeading,\n 'the slotted content renders in the element'\n );\n });\n it('if in tour coachmark loads with pagination with previous, next buttons and action menu', async () => {\n const stepText = '2 of 8';\n const el = await fixture<Coachmark>(\n InTour(\n {\n open: true,\n heading: 'Coachmark In Tour',\n content: 'This is a Coachmark with nothing but text in it.',\n },\n {}\n )\n );\n await elementUpdated(el);\n await nextFrame();\n await nextFrame();\n\n const stepCount = el.shadowRoot.querySelector(\n 'span[aria-live=\"polite\"]'\n );\n\n expect((stepCount as HTMLElement).textContent).to.contain(\n stepText,\n 'the slotted content renders in the element'\n );\n\n expect(stepCount?.textContent);\n const nextButton = el.shadowRoot.querySelector(\n 'sp-button[variant=\"primary\"'\n );\n expect(nextButton).to.not.be.undefined;\n expect(nextButton?.textContent?.trim()).to.equal('Next');\n\n const prevButton = el.shadowRoot.querySelector(\n 'sp-button[variant=\"secondary\"'\n );\n expect(prevButton).to.not.be.undefined;\n expect(prevButton?.textContent?.trim()).to.equal('Previous');\n });\n it('loads pagination when total step count is greater than 1', async () => {\n const el = await fixture<Coachmark>(\n InTour(\n {\n open: true,\n heading: 'Coachmark In Tour',\n content: 'This is a Coachmark with nothing but text in it.',\n },\n {}\n )\n );\n await elementUpdated(el);\n const content = el.shadowRoot.querySelector(\n '.step span[aria-live=\"polite\"]'\n );\n\n expect(content?.textContent?.trim()).to.equal('2 of 8');\n\n await expect(el).to.be.accessible();\n });\n it('loads primary button with text \"Ok\" for a single coachmark', async () => {\n const el = await fixture<Coachmark>(single());\n\n await elementUpdated(el);\n const okayButton = el.shadowRoot.querySelector(\n 'sp-button[variant=\"primary\"'\n );\n expect(okayButton).to.not.be.null;\n expect(okayButton?.textContent?.trim()).to.equal('Ok');\n });\n it('renders modifier keys with joiner', async () => {\n const modifierKeys = ['\u21E7 Shift', '\u2318'];\n const el = await fixture<Coachmark>(\n withKeys({\n modifierKeys,\n heading: 'Coachmark with Keys',\n content: 'This is a Coachmark with nothing but text in it.',\n })\n );\n await elementUpdated(el);\n const modifier = el.shadowRoot.querySelector('span[type=\"modifier\"]');\n expect(modifier).to.not.be.undefined;\n expect(modifier?.textContent?.trim()).to.include('\u21E7 Shift');\n const joiner = el.shadowRoot.querySelector('span[class=\"plus\"]');\n expect(joiner).to.not.be.undefined;\n expect(joiner?.textContent?.trim()).to.include('+');\n });\n it('renders with shortcut', async () => {\n const el = await fixture<Coachmark>(withShortCut());\n await elementUpdated(el);\n\n const shortcutKey = el.shadowRoot.querySelector(\n 'span[type=\"shortcut\"]'\n );\n expect(shortcutKey).to.not.be.undefined;\n expect(shortcutKey?.textContent?.trim()).to.include('Z');\n });\n it('renders content with image asset', async () => {\n const el = await fixture<Coachmark>(withImage());\n await elementUpdated(el);\n const imageElement = el.shadowRoot.querySelector(\n 'img[src=\"https://picsum.photos/id/237/200/300\"'\n );\n expect(imageElement).not.to.be.undefined;\n });\n it('in tour dispatches `primary` and `secondary`', async () => {\n const primarySpy = spy();\n const secondarySpy = spy();\n const handlePrimary = (): void => primarySpy();\n const handleSecondary = (): void => secondarySpy();\n const el = await fixture<Coachmark>(\n InTour(\n {\n open: true,\n heading: 'Coachmark in Tour',\n content: 'This is a Coachmark with nothing but text in it.',\n },\n {}\n )\n );\n el.addEventListener('primary', handlePrimary);\n el.addEventListener('secondary', handleSecondary);\n\n await elementUpdated(el);\n expect(primarySpy.called).to.be.false;\n expect(secondarySpy.called).to.be.false;\n\n const primaryButton = el.shadowRoot.querySelector(\n '[variant=\"primary\"]'\n ) as Button;\n const secondaryButton = el.shadowRoot.querySelector(\n '[variant=\"secondary\"]'\n ) as Button;\n primaryButton.click();\n\n await elementUpdated(el);\n expect(primarySpy.called, 'dispatched `primary`').to.be.true;\n expect(secondarySpy.called).to.be.false;\n\n secondaryButton.click();\n\n await elementUpdated(el);\n expect(primarySpy.callCount).to.equal(1);\n expect(secondarySpy.called, 'dispatched `secondary`').to.be.true;\n });\n});\n"],
5
- "mappings": "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",
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 {\n elementUpdated,\n expect,\n fixture,\n html,\n nextFrame,\n} from '@open-wc/testing';\n\nimport { Coachmark, CoachmarkItem } from '@spectrum-web-components/coachmark';\nimport { testForLitDevWarnings } from '../../../test/testing-helpers.js';\nimport '@spectrum-web-components/coachmark/sp-coachmark.js';\nimport '@spectrum-web-components/coachmark/sp-coach-indicator.js';\nimport '@spectrum-web-components/overlay/sp-overlay.js';\nimport { spy } from 'sinon';\nimport { Button } from '@spectrum-web-components/button';\nimport {\n Default,\n InTour,\n single,\n withImage,\n withKeys,\n withShortCut,\n} from '../stories/coachmark.stories.js';\n\nconst defaultItem: CoachmarkItem = {\n heading: 'I am the heading for Coachmark',\n content: 'I am the content for this Coachmark',\n};\ndescribe('Coachmark', () => {\n testForLitDevWarnings(\n async () =>\n await fixture<Coachmark>(\n html`\n <sp-coachmark\n id=\"coachmark\"\n .content=${{\n title: defaultItem.heading,\n description: defaultItem.content,\n }}\n ></sp-coachmark>\n `\n )\n );\n it('loads default coachmark accessibly', async () => {\n const el = await fixture<Coachmark>(Default());\n await elementUpdated(el);\n await expect(el).to.be.accessible();\n });\n it('displays the slotted content as `.title`', async () => {\n const testHeading = 'Coachmark with Text Only';\n const el = await fixture<Coachmark>(Default());\n\n await elementUpdated(el);\n\n const root = el.shadowRoot ? el.shadowRoot : el;\n const headingSlot = root.querySelector(\n '[name=\"title\"]'\n ) as HTMLSlotElement;\n\n expect(headingSlot, 'did not find slot element').to.not.be.null;\n const nodes = headingSlot.assignedNodes();\n const divElement = nodes.find(\n (node) => (node as HTMLElement).id === 'heading'\n );\n expect(divElement, 'did not find div element').to.not.be.null;\n expect((divElement as HTMLDivElement).textContent).to.contain(\n testHeading,\n 'the slotted content renders in the element'\n );\n });\n it('if in tour coachmark loads with pagination with previous, next buttons and action menu', async () => {\n const el = await fixture<Coachmark>(\n InTour(\n {\n open: true,\n heading: 'Coachmark In Tour',\n content: 'This is a Coachmark with nothing but text in it.',\n },\n {}\n )\n );\n await elementUpdated(el);\n await nextFrame();\n await nextFrame();\n\n const stepCount = el.shadowRoot.querySelector(\n 'span[aria-live=\"polite\"]'\n );\n\n const stepCountSlot = el.querySelector(\n '[slot=\"step-count\"]'\n ) as HTMLSlotElement;\n expect(stepCountSlot?.textContent?.trim()).to.equal('2 of 8');\n\n expect(stepCount?.textContent);\n const nextButton = el.shadowRoot.querySelector(\n 'sp-button[variant=\"primary\"'\n );\n expect(nextButton).to.not.be.undefined;\n expect(nextButton?.textContent?.trim()).to.equal('Next');\n\n const prevButton = el.shadowRoot.querySelector(\n 'sp-button[variant=\"secondary\"'\n );\n expect(prevButton).to.not.be.undefined;\n expect(prevButton?.textContent?.trim()).to.equal('Previous');\n });\n it('loads pagination when total step count is greater than 1', async () => {\n const el = await fixture<Coachmark>(\n InTour(\n {\n open: true,\n heading: 'Coachmark In Tour',\n content: 'This is a Coachmark with nothing but text in it.',\n currentStep: 2,\n totalSteps: 8,\n },\n {}\n )\n );\n await elementUpdated(el);\n const stepCountSlot = el.querySelector(\n '[slot=\"step-count\"]'\n ) as HTMLSlotElement;\n expect(stepCountSlot?.textContent?.trim()).to.equal('2 of 8');\n\n await expect(el).to.be.accessible();\n });\n it('loads primary button with text \"Ok\" for a single coachmark', async () => {\n const el = await fixture<Coachmark>(single());\n\n await elementUpdated(el);\n const okayButton = el.shadowRoot.querySelector(\n 'sp-button[variant=\"primary\"'\n );\n expect(okayButton).to.not.be.null;\n expect(okayButton?.textContent?.trim()).to.equal('Ok');\n });\n it('renders modifier keys with joiner', async () => {\n const modifierKeys = ['\u21E7 Shift', '\u2318'];\n const el = await fixture<Coachmark>(\n withKeys({\n modifierKeys,\n heading: 'Coachmark with Keys',\n content: 'This is a Coachmark with nothing but text in it.',\n })\n );\n await elementUpdated(el);\n const modifier = el.shadowRoot.querySelector('span[type=\"modifier\"]');\n expect(modifier).to.not.be.undefined;\n expect(modifier?.textContent?.trim()).to.include('\u21E7 Shift');\n const joiner = el.shadowRoot.querySelector('span[class=\"plus\"]');\n expect(joiner).to.not.be.undefined;\n expect(joiner?.textContent?.trim()).to.include('+');\n });\n it('renders with shortcut', async () => {\n const el = await fixture<Coachmark>(\n withShortCut({\n currentStep: 1,\n totalSteps: 8,\n })\n );\n await elementUpdated(el);\n\n const shortcutKey = el.shadowRoot.querySelector(\n 'span[type=\"shortcut\"]'\n );\n expect(shortcutKey).to.not.be.undefined;\n expect(shortcutKey?.textContent?.trim()).to.include('Z');\n });\n it('renders content with image asset', async () => {\n const el = await fixture<Coachmark>(\n withImage({\n currentStep: 1,\n totalSteps: 8,\n })\n );\n await elementUpdated(el);\n const imageElement = el.shadowRoot.querySelector(\n 'img[src=\"https://picsum.photos/id/237/200/300\"'\n );\n expect(imageElement).not.to.be.undefined;\n });\n it('in tour dispatches `primary` and `secondary`', async () => {\n const primarySpy = spy();\n const secondarySpy = spy();\n const handlePrimary = (): void => primarySpy();\n const handleSecondary = (): void => secondarySpy();\n const el = await fixture<Coachmark>(\n InTour(\n {\n open: true,\n heading: 'Coachmark in Tour',\n content: 'This is a Coachmark with nothing but text in it.',\n },\n {}\n )\n );\n el.addEventListener('primary', handlePrimary);\n el.addEventListener('secondary', handleSecondary);\n\n await elementUpdated(el);\n expect(primarySpy.called).to.be.false;\n expect(secondarySpy.called).to.be.false;\n\n const primaryButton = el.shadowRoot.querySelector(\n '[variant=\"primary\"]'\n ) as Button;\n const secondaryButton = el.shadowRoot.querySelector(\n '[variant=\"secondary\"]'\n ) as Button;\n primaryButton.click();\n\n await elementUpdated(el);\n expect(primarySpy.called, 'dispatched `primary`').to.be.true;\n expect(secondarySpy.called).to.be.false;\n\n secondaryButton.click();\n\n await elementUpdated(el);\n expect(primarySpy.callCount).to.equal(1);\n expect(secondarySpy.called, 'dispatched `secondary`').to.be.true;\n });\n});\n"],
5
+ "mappings": ";AAYA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAGP,SAAS,6BAA6B;AACtC,OAAO;AACP,OAAO;AACP,OAAO;AACP,SAAS,WAAW;AAEpB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,MAAM,cAA6B;AAAA,EAC/B,SAAS;AAAA,EACT,SAAS;AACb;AACA,SAAS,aAAa,MAAM;AACxB;AAAA,IACI,YACI,MAAM;AAAA,MACF;AAAA;AAAA;AAAA,mCAGmB;AAAA,QACP,OAAO,YAAY;AAAA,QACnB,aAAa,YAAY;AAAA,MAC7B,CAAC;AAAA;AAAA;AAAA,IAGb;AAAA,EACR;AACA,KAAG,sCAAsC,YAAY;AACjD,UAAM,KAAK,MAAM,QAAmB,QAAQ,CAAC;AAC7C,UAAM,eAAe,EAAE;AACvB,UAAM,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW;AAAA,EACtC,CAAC;AACD,KAAG,4CAA4C,YAAY;AACvD,UAAM,cAAc;AACpB,UAAM,KAAK,MAAM,QAAmB,QAAQ,CAAC;AAE7C,UAAM,eAAe,EAAE;AAEvB,UAAM,OAAO,GAAG,aAAa,GAAG,aAAa;AAC7C,UAAM,cAAc,KAAK;AAAA,MACrB;AAAA,IACJ;AAEA,WAAO,aAAa,2BAA2B,EAAE,GAAG,IAAI,GAAG;AAC3D,UAAM,QAAQ,YAAY,cAAc;AACxC,UAAM,aAAa,MAAM;AAAA,MACrB,CAAC,SAAU,KAAqB,OAAO;AAAA,IAC3C;AACA,WAAO,YAAY,0BAA0B,EAAE,GAAG,IAAI,GAAG;AACzD,WAAQ,WAA8B,WAAW,EAAE,GAAG;AAAA,MAClD;AAAA,MACA;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,KAAG,0FAA0F,YAAY;AAlF7G;AAmFQ,UAAM,KAAK,MAAM;AAAA,MACb;AAAA,QACI;AAAA,UACI,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACb;AAAA,QACA,CAAC;AAAA,MACL;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AACvB,UAAM,UAAU;AAChB,UAAM,UAAU;AAEhB,UAAM,YAAY,GAAG,WAAW;AAAA,MAC5B;AAAA,IACJ;AAEA,UAAM,gBAAgB,GAAG;AAAA,MACrB;AAAA,IACJ;AACA,YAAO,oDAAe,gBAAf,mBAA4B,MAAM,EAAE,GAAG,MAAM,QAAQ;AAE5D,WAAO,uCAAW,WAAW;AAC7B,UAAM,aAAa,GAAG,WAAW;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,UAAU,EAAE,GAAG,IAAI,GAAG;AAC7B,YAAO,8CAAY,gBAAZ,mBAAyB,MAAM,EAAE,GAAG,MAAM,MAAM;AAEvD,UAAM,aAAa,GAAG,WAAW;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,UAAU,EAAE,GAAG,IAAI,GAAG;AAC7B,YAAO,8CAAY,gBAAZ,mBAAyB,MAAM,EAAE,GAAG,MAAM,UAAU;AAAA,EAC/D,CAAC;AACD,KAAG,4DAA4D,YAAY;AAvH/E;AAwHQ,UAAM,KAAK,MAAM;AAAA,MACb;AAAA,QACI;AAAA,UACI,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,UACT,aAAa;AAAA,UACb,YAAY;AAAA,QAChB;AAAA,QACA,CAAC;AAAA,MACL;AAAA,IACJ;AACA,UAAM,eAAe,EAAE;AACvB,UAAM,gBAAgB,GAAG;AAAA,MACrB;AAAA,IACJ;AACA,YAAO,oDAAe,gBAAf,mBAA4B,MAAM,EAAE,GAAG,MAAM,QAAQ;AAE5D,UAAM,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW;AAAA,EACtC,CAAC;AACD,KAAG,8DAA8D,YAAY;AA5IjF;AA6IQ,UAAM,KAAK,MAAM,QAAmB,OAAO,CAAC;AAE5C,UAAM,eAAe,EAAE;AACvB,UAAM,aAAa,GAAG,WAAW;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO,UAAU,EAAE,GAAG,IAAI,GAAG;AAC7B,YAAO,8CAAY,gBAAZ,mBAAyB,MAAM,EAAE,GAAG,MAAM,IAAI;AAAA,EACzD,CAAC;AACD,KAAG,qCAAqC,YAAY;AAtJxD;AAuJQ,UAAM,eAAe,CAAC,gBAAW,QAAG;AACpC,UAAM,KAAK,MAAM;AAAA,MACb,SAAS;AAAA,QACL;AAAA,QACA,SAAS;AAAA,QACT,SAAS;AAAA,MACb,CAAC;AAAA,IACL;AACA,UAAM,eAAe,EAAE;AACvB,UAAM,WAAW,GAAG,WAAW,cAAc,uBAAuB;AACpE,WAAO,QAAQ,EAAE,GAAG,IAAI,GAAG;AAC3B,YAAO,0CAAU,gBAAV,mBAAuB,MAAM,EAAE,GAAG,QAAQ,cAAS;AAC1D,UAAM,SAAS,GAAG,WAAW,cAAc,oBAAoB;AAC/D,WAAO,MAAM,EAAE,GAAG,IAAI,GAAG;AACzB,YAAO,sCAAQ,gBAAR,mBAAqB,MAAM,EAAE,GAAG,QAAQ,GAAG;AAAA,EACtD,CAAC;AACD,KAAG,yBAAyB,YAAY;AAvK5C;AAwKQ,UAAM,KAAK,MAAM;AAAA,MACb,aAAa;AAAA,QACT,aAAa;AAAA,QACb,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AACA,UAAM,eAAe,EAAE;AAEvB,UAAM,cAAc,GAAG,WAAW;AAAA,MAC9B;AAAA,IACJ;AACA,WAAO,WAAW,EAAE,GAAG,IAAI,GAAG;AAC9B,YAAO,gDAAa,gBAAb,mBAA0B,MAAM,EAAE,GAAG,QAAQ,GAAG;AAAA,EAC3D,CAAC;AACD,KAAG,oCAAoC,YAAY;AAC/C,UAAM,KAAK,MAAM;AAAA,MACb,UAAU;AAAA,QACN,aAAa;AAAA,QACb,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AACA,UAAM,eAAe,EAAE;AACvB,UAAM,eAAe,GAAG,WAAW;AAAA,MAC/B;AAAA,IACJ;AACA,WAAO,YAAY,EAAE,IAAI,GAAG,GAAG;AAAA,EACnC,CAAC;AACD,KAAG,gDAAgD,YAAY;AAC3D,UAAM,aAAa,IAAI;AACvB,UAAM,eAAe,IAAI;AACzB,UAAM,gBAAgB,MAAY,WAAW;AAC7C,UAAM,kBAAkB,MAAY,aAAa;AACjD,UAAM,KAAK,MAAM;AAAA,MACb;AAAA,QACI;AAAA,UACI,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACb;AAAA,QACA,CAAC;AAAA,MACL;AAAA,IACJ;AACA,OAAG,iBAAiB,WAAW,aAAa;AAC5C,OAAG,iBAAiB,aAAa,eAAe;AAEhD,UAAM,eAAe,EAAE;AACvB,WAAO,WAAW,MAAM,EAAE,GAAG,GAAG;AAChC,WAAO,aAAa,MAAM,EAAE,GAAG,GAAG;AAElC,UAAM,gBAAgB,GAAG,WAAW;AAAA,MAChC;AAAA,IACJ;AACA,UAAM,kBAAkB,GAAG,WAAW;AAAA,MAClC;AAAA,IACJ;AACA,kBAAc,MAAM;AAEpB,UAAM,eAAe,EAAE;AACvB,WAAO,WAAW,QAAQ,sBAAsB,EAAE,GAAG,GAAG;AACxD,WAAO,aAAa,MAAM,EAAE,GAAG,GAAG;AAElC,oBAAgB,MAAM;AAEtB,UAAM,eAAe,EAAE;AACvB,WAAO,WAAW,SAAS,EAAE,GAAG,MAAM,CAAC;AACvC,WAAO,aAAa,QAAQ,wBAAwB,EAAE,GAAG,GAAG;AAAA,EAChE,CAAC;AACL,CAAC;",
6
6
  "names": []
7
7
  }