@spectrum-web-components/toast 0.9.1 → 0.10.3-express.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -176,6 +176,16 @@
176
176
  }
177
177
  }
178
178
  },
179
+ {
180
+ "kind": "method",
181
+ "name": "shouldClose",
182
+ "privacy": "private",
183
+ "return": {
184
+ "type": {
185
+ "text": "void"
186
+ }
187
+ }
188
+ },
179
189
  {
180
190
  "kind": "method",
181
191
  "name": "close",
@@ -192,7 +202,8 @@
192
202
  "name": "close",
193
203
  "type": {
194
204
  "text": "CustomEvent"
195
- }
205
+ },
206
+ "description": "Announces that the Toast has been closed by the user or by its timeout."
196
207
  }
197
208
  ],
198
209
  "attributes": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/toast",
3
- "version": "0.9.1",
3
+ "version": "0.10.3-express.0+5d9e2a2ca",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -44,19 +44,19 @@
44
44
  "lit-html"
45
45
  ],
46
46
  "dependencies": {
47
- "@spectrum-web-components/base": "^0.4.6",
48
- "@spectrum-web-components/button": "^0.15.1",
49
- "@spectrum-web-components/icon": "^0.10.1",
50
- "@spectrum-web-components/icons-workflow": "^0.7.1",
47
+ "@spectrum-web-components/base": "^0.5.2-express.41+5d9e2a2ca",
48
+ "@spectrum-web-components/button": "^0.16.3-express.0+5d9e2a2ca",
49
+ "@spectrum-web-components/icon": "^0.11.2-express.41+5d9e2a2ca",
50
+ "@spectrum-web-components/icons-workflow": "^0.8.2-express.41+5d9e2a2ca",
51
51
  "tslib": "^2.0.0"
52
52
  },
53
53
  "devDependencies": {
54
- "@spectrum-css/toast": "^4.0.1"
54
+ "@spectrum-css/toast": "latest"
55
55
  },
56
56
  "types": "./src/index.d.ts",
57
57
  "customElements": "custom-elements.json",
58
58
  "sideEffects": [
59
59
  "./sp-*.js"
60
60
  ],
61
- "gitHead": "9c7ac25264762a9b7bad2ef3f111d5eb613f9d05"
61
+ "gitHead": "5d9e2a2ca93deff51e4b2c7b8354f1127009a4e3"
62
62
  }
package/src/Toast.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { CSSResultArray, TemplateResult, SpectrumElement, PropertyValues } from '@spectrum-web-components/base';
1
+ import { CSSResultArray, PropertyValues, SpectrumElement, TemplateResult } from '@spectrum-web-components/base';
2
2
  import '@spectrum-web-components/button/sp-clear-button.js';
3
3
  import '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';
4
4
  import '@spectrum-web-components/icons-workflow/icons/sp-icon-info.js';
@@ -10,6 +10,8 @@ export declare type ToastVariants = 'negative' | 'positive' | 'info' | 'error' |
10
10
  *
11
11
  * @slot - The toast content
12
12
  * @slot action - button element surfacing an action in the Toast
13
+ *
14
+ * @fires close - Announces that the Toast has been closed by the user or by its timeout.
13
15
  */
14
16
  export declare class Toast extends SpectrumElement {
15
17
  static get styles(): CSSResultArray;
@@ -35,6 +37,7 @@ export declare class Toast extends SpectrumElement {
35
37
  private resumeCountdown;
36
38
  private startCountdown;
37
39
  private stopCountdown;
40
+ private shouldClose;
38
41
  close(): void;
39
42
  protected render(): TemplateResult;
40
43
  protected updated(changes: PropertyValues): void;
package/src/Toast.js CHANGED
@@ -10,7 +10,8 @@ OF ANY KIND, either express or implied. See the License for the specific languag
10
10
  governing permissions and limitations under the License.
11
11
  */
12
12
  import { __decorate } from "tslib";
13
- import { html, SpectrumElement, property, } from '@spectrum-web-components/base';
13
+ import { html, SpectrumElement, } from '@spectrum-web-components/base';
14
+ import { property } from '@spectrum-web-components/base/src/decorators.js';
14
15
  import '@spectrum-web-components/button/sp-clear-button.js';
15
16
  import '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';
16
17
  import '@spectrum-web-components/icons-workflow/icons/sp-icon-info.js';
@@ -28,6 +29,8 @@ export const toastVariants = [
28
29
  *
29
30
  * @slot - The toast content
30
31
  * @slot action - button element surfacing an action in the Toast
32
+ *
33
+ * @fires close - Announces that the Toast has been closed by the user or by its timeout.
31
34
  */
32
35
  export class Toast extends SpectrumElement {
33
36
  constructor() {
@@ -42,7 +45,7 @@ export class Toast extends SpectrumElement {
42
45
  this.countdownStart = performance.now();
43
46
  }
44
47
  if (time - this.countdownStart > this._timeout) {
45
- this.open = false;
48
+ this.shouldClose();
46
49
  this.countdownStart = 0;
47
50
  }
48
51
  else {
@@ -139,6 +142,16 @@ export class Toast extends SpectrumElement {
139
142
  cancelAnimationFrame(this.nextCount);
140
143
  this.countdownStart = 0;
141
144
  }
145
+ shouldClose() {
146
+ const applyDefault = this.dispatchEvent(new CustomEvent('close', {
147
+ composed: true,
148
+ bubbles: true,
149
+ cancelable: true,
150
+ }));
151
+ if (applyDefault) {
152
+ this.close();
153
+ }
154
+ }
142
155
  close() {
143
156
  this.open = false;
144
157
  }
@@ -155,7 +168,7 @@ export class Toast extends SpectrumElement {
155
168
  <sp-clear-button
156
169
  label="Close"
157
170
  variant="overBackground"
158
- @click=${this.close}
171
+ @click=${this.shouldClose}
159
172
  ></sp-clear-button>
160
173
  </div>
161
174
  `;
@@ -172,14 +185,6 @@ export class Toast extends SpectrumElement {
172
185
  if (this.timeout) {
173
186
  this.stopCountdown();
174
187
  }
175
- const applyDefault = this.dispatchEvent(new CustomEvent('close', {
176
- composed: true,
177
- bubbles: true,
178
- cancelable: true,
179
- }));
180
- if (!applyDefault) {
181
- this.open = true;
182
- }
183
188
  }
184
189
  }
185
190
  if (changes.has('timeout')) {
package/src/Toast.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["Toast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;;AAEF,OAAO,EACH,IAAI,EAGJ,eAAe,EACf,QAAQ,GAEX,MAAM,+BAA+B,CAAC;AACvC,OAAO,oDAAoD,CAAC;AAC5D,OAAO,gEAAgE,CAAC;AACxE,OAAO,+DAA+D,CAAC;AACvE,OAAO,2EAA2E,CAAC;AAEnF,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC1C,UAAU;IACV,UAAU;IACV,MAAM;IACN,OAAO;IACP,SAAS;CACZ,CAAC;AAUF;;;;;GAKG;AAEH,MAAM,OAAO,KAAM,SAAQ,eAAe;IAA1C;;QAMW,SAAI,GAAG,KAAK,CAAC;QAoBb,aAAQ,GAAkB,IAAI,CAAC;QA4B9B,aAAQ,GAAkB,EAAE,CAAC;QA8B7B,mBAAc,GAAG,CAAC,CAAC;QACnB,cAAS,GAAG,CAAC,CAAC,CAAC;QAEf,gBAAW,GAAG,CAAC,IAAY,EAAQ,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;aAC3C;YACD,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,GAAI,IAAI,CAAC,QAAmB,EAAE;gBACxD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;aAC3B;iBAAM;gBACH,IAAI,CAAC,SAAS,EAAE,CAAC;aACpB;QACL,CAAC,CAAC;QAEM,cAAS,GAAG,GAAS,EAAE;YAC3B,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAS,EAAE;YAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEM,oBAAe,GAAG,GAAS,EAAE;YACjC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC,CAAC;IAkEN,CAAC;IAjLU,MAAM,KAAK,MAAM;QACpB,OAAO,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAMD,IAAW,OAAO,CAAC,OAAsB;QACrC,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,IAAI,IAAK,OAAkB,GAAG,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,UAAU;YACzB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAiB,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE;YACnC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;SAC3C;QACD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAID;;;;;OAKG;IAEH,IAAW,OAAO,CAAC,OAAsB;QACrC,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;YAC1B,OAAO;SACV;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SAC3B;aAAM;YACH,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAIO,UAAU,CAAC,OAAe;QAC9B,QAAQ,OAAO,EAAE;YACb,KAAK,MAAM;gBACP,OAAO,IAAI,CAAA;;;;;iBAKV,CAAC;YACN,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO,CAAC,CAAC,aAAa;YAC3B,KAAK,SAAS,EAAE,aAAa;gBACzB,OAAO,IAAI,CAAA;;iBAEV,CAAC;YACN,KAAK,UAAU,CAAC;YAChB,KAAK,SAAS,EAAE,aAAa;gBACzB,OAAO,IAAI,CAAA;;;;;iBAKV,CAAC;YACN;gBACI,OAAO,IAAI,CAAA,EAAE,CAAC;SACrB;IACL,CAAC;IAgCO,cAAc;QAClB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IAEO,aAAa;QACjB,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC5B,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IAES,MAAM;QACZ,OAAO,IAAI,CAAA;cACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;;;;;;;6BAWd,IAAI,CAAC,KAAK;;;SAG9B,CAAC;IACN,CAAC;IAES,OAAO,CAAC,OAAuB;QACrC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACrB,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,IAAI,CAAC,cAAc,EAAE,CAAC;iBACzB;aACJ;iBAAM;gBACH,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,IAAI,CAAC,aAAa,EAAE,CAAC;iBACxB;gBACD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CACnC,IAAI,WAAW,CAAC,OAAO,EAAE;oBACrB,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;iBACnB,CAAC,CACL,CAAC;gBACF,IAAI,CAAC,YAAY,EAAE;oBACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBACpB;aACJ;SACJ;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;gBACpC,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;iBAAM;gBACH,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;SACJ;IACL,CAAC;CACJ;AA5KG;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;mCACvB;AAGpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oCAY1B;AAeD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oCAc1B","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 html,\n CSSResultArray,\n TemplateResult,\n SpectrumElement,\n property,\n PropertyValues,\n} from '@spectrum-web-components/base';\nimport '@spectrum-web-components/button/sp-clear-button.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-info.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-checkmark-circle.js';\n\nimport toastStyles from './toast.css.js';\n\nexport const toastVariants: ToastVariants[] = [\n 'negative',\n 'positive',\n 'info',\n 'error',\n 'warning',\n];\n\nexport type ToastVariants =\n | 'negative'\n | 'positive'\n | 'info'\n | 'error'\n | 'warning'\n | '';\n\n/**\n * @element sp-toast\n *\n * @slot - The toast content\n * @slot action - button element surfacing an action in the Toast\n */\n\nexport class Toast extends SpectrumElement {\n public static get styles(): CSSResultArray {\n return [toastStyles];\n }\n\n @property({ type: Boolean, reflect: true })\n public open = false;\n\n @property({ type: Number })\n public set timeout(timeout: number | null) {\n const hasTimeout = typeof timeout !== null && (timeout as number) > 0;\n const newTimeout = hasTimeout\n ? Math.max(6000, timeout as number)\n : null;\n const oldValue = this.timeout;\n if (newTimeout && this.countdownStart) {\n this.countdownStart = performance.now();\n }\n this._timeout = newTimeout;\n this.requestUpdate('timeout', oldValue);\n }\n\n public get timeout(): number | null {\n return this._timeout;\n }\n\n public _timeout: number | null = null;\n\n /**\n * The variant applies specific styling when set to `negative`, `positive`, `info`, `error`, or `warning`.\n * `variant` attribute is removed when not matching one of the above.\n *\n * @param {String} variant\n */\n @property({ type: String })\n public set variant(variant: ToastVariants) {\n if (variant === this.variant) {\n return;\n }\n const oldValue = this.variant;\n if (toastVariants.includes(variant)) {\n this.setAttribute('variant', variant);\n this._variant = variant;\n } else {\n this.removeAttribute('variant');\n this._variant = '';\n }\n this.requestUpdate('variant', oldValue);\n }\n\n public get variant(): ToastVariants {\n return this._variant;\n }\n\n private _variant: ToastVariants = '';\n\n private renderIcon(variant: string): TemplateResult {\n switch (variant) {\n case 'info':\n return html`\n <sp-icon-info\n label=\"Information\"\n class=\"type\"\n ></sp-icon-info>\n `;\n case 'negative':\n case 'error': // deprecated\n case 'warning': // deprecated\n return html`\n <sp-icon-alert label=\"Error\" class=\"type\"></sp-icon-alert>\n `;\n case 'positive':\n case 'success': // deprecated\n return html`\n <sp-icon-checkmark-circle\n label=\"Success\"\n class=\"type\"\n ></sp-icon-checkmark-circle>\n `;\n default:\n return html``;\n }\n }\n\n private countdownStart = 0;\n private nextCount = -1;\n\n private doCountdown = (time: number): void => {\n if (!this.countdownStart) {\n this.countdownStart = performance.now();\n }\n if (time - this.countdownStart > (this._timeout as number)) {\n this.open = false;\n this.countdownStart = 0;\n } else {\n this.countdown();\n }\n };\n\n private countdown = (): void => {\n cancelAnimationFrame(this.nextCount);\n this.nextCount = requestAnimationFrame(this.doCountdown);\n };\n\n private holdCountdown = (): void => {\n this.stopCountdown();\n this.addEventListener('focusout', this.resumeCountdown);\n };\n\n private resumeCountdown = (): void => {\n this.removeEventListener('focusout', this.holdCountdown);\n this.countdown();\n };\n\n private startCountdown(): void {\n this.countdown();\n this.addEventListener('focusin', this.holdCountdown);\n }\n\n private stopCountdown(): void {\n cancelAnimationFrame(this.nextCount);\n this.countdownStart = 0;\n }\n\n public close(): void {\n this.open = false;\n }\n\n protected render(): TemplateResult {\n return html`\n ${this.renderIcon(this.variant)}\n <div class=\"body\" role=\"alert\">\n <div class=\"content\">\n <slot></slot>\n </div>\n <slot name=\"action\"></slot>\n </div>\n <div class=\"buttons\">\n <sp-clear-button\n label=\"Close\"\n variant=\"overBackground\"\n @click=${this.close}\n ></sp-clear-button>\n </div>\n `;\n }\n\n protected updated(changes: PropertyValues): void {\n super.updated(changes);\n if (changes.has('open')) {\n if (this.open) {\n if (this.timeout) {\n this.startCountdown();\n }\n } else {\n if (this.timeout) {\n this.stopCountdown();\n }\n const applyDefault = this.dispatchEvent(\n new CustomEvent('close', {\n composed: true,\n bubbles: true,\n cancelable: true,\n })\n );\n if (!applyDefault) {\n this.open = true;\n }\n }\n }\n if (changes.has('timeout')) {\n if (this.timeout !== null && this.open) {\n this.startCountdown();\n } else {\n this.stopCountdown();\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["Toast.ts"],"names":[],"mappings":"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","sourcesContent":["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport { property } from '@spectrum-web-components/base/src/decorators.js';\nimport '@spectrum-web-components/button/sp-clear-button.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-info.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-checkmark-circle.js';\n\nimport toastStyles from './toast.css.js';\n\nexport const toastVariants: ToastVariants[] = [\n 'negative',\n 'positive',\n 'info',\n 'error',\n 'warning',\n];\n\nexport type ToastVariants =\n | 'negative'\n | 'positive'\n | 'info'\n | 'error'\n | 'warning'\n | '';\n\n/**\n * @element sp-toast\n *\n * @slot - The toast content\n * @slot action - button element surfacing an action in the Toast\n *\n * @fires close - Announces that the Toast has been closed by the user or by its timeout.\n */\n\nexport class Toast extends SpectrumElement {\n public static get styles(): CSSResultArray {\n return [toastStyles];\n }\n\n @property({ type: Boolean, reflect: true })\n public open = false;\n\n @property({ type: Number })\n public set timeout(timeout: number | null) {\n const hasTimeout = typeof timeout !== null && (timeout as number) > 0;\n const newTimeout = hasTimeout\n ? Math.max(6000, timeout as number)\n : null;\n const oldValue = this.timeout;\n if (newTimeout && this.countdownStart) {\n this.countdownStart = performance.now();\n }\n this._timeout = newTimeout;\n this.requestUpdate('timeout', oldValue);\n }\n\n public get timeout(): number | null {\n return this._timeout;\n }\n\n public _timeout: number | null = null;\n\n /**\n * The variant applies specific styling when set to `negative`, `positive`, `info`, `error`, or `warning`.\n * `variant` attribute is removed when not matching one of the above.\n *\n * @param {String} variant\n */\n @property({ type: String })\n public set variant(variant: ToastVariants) {\n if (variant === this.variant) {\n return;\n }\n const oldValue = this.variant;\n if (toastVariants.includes(variant)) {\n this.setAttribute('variant', variant);\n this._variant = variant;\n } else {\n this.removeAttribute('variant');\n this._variant = '';\n }\n this.requestUpdate('variant', oldValue);\n }\n\n public get variant(): ToastVariants {\n return this._variant;\n }\n\n private _variant: ToastVariants = '';\n\n private renderIcon(variant: string): TemplateResult {\n switch (variant) {\n case 'info':\n return html`\n <sp-icon-info\n label=\"Information\"\n class=\"type\"\n ></sp-icon-info>\n `;\n case 'negative':\n case 'error': // deprecated\n case 'warning': // deprecated\n return html`\n <sp-icon-alert label=\"Error\" class=\"type\"></sp-icon-alert>\n `;\n case 'positive':\n case 'success': // deprecated\n return html`\n <sp-icon-checkmark-circle\n label=\"Success\"\n class=\"type\"\n ></sp-icon-checkmark-circle>\n `;\n default:\n return html``;\n }\n }\n\n private countdownStart = 0;\n private nextCount = -1;\n\n private doCountdown = (time: number): void => {\n if (!this.countdownStart) {\n this.countdownStart = performance.now();\n }\n if (time - this.countdownStart > (this._timeout as number)) {\n this.shouldClose();\n this.countdownStart = 0;\n } else {\n this.countdown();\n }\n };\n\n private countdown = (): void => {\n cancelAnimationFrame(this.nextCount);\n this.nextCount = requestAnimationFrame(this.doCountdown);\n };\n\n private holdCountdown = (): void => {\n this.stopCountdown();\n this.addEventListener('focusout', this.resumeCountdown);\n };\n\n private resumeCountdown = (): void => {\n this.removeEventListener('focusout', this.holdCountdown);\n this.countdown();\n };\n\n private startCountdown(): void {\n this.countdown();\n this.addEventListener('focusin', this.holdCountdown);\n }\n\n private stopCountdown(): void {\n cancelAnimationFrame(this.nextCount);\n this.countdownStart = 0;\n }\n\n private shouldClose(): void {\n const applyDefault = this.dispatchEvent(\n new CustomEvent('close', {\n composed: true,\n bubbles: true,\n cancelable: true,\n })\n );\n if (applyDefault) {\n this.close();\n }\n }\n\n public close(): void {\n this.open = false;\n }\n\n protected render(): TemplateResult {\n return html`\n ${this.renderIcon(this.variant)}\n <div class=\"body\" role=\"alert\">\n <div class=\"content\">\n <slot></slot>\n </div>\n <slot name=\"action\"></slot>\n </div>\n <div class=\"buttons\">\n <sp-clear-button\n label=\"Close\"\n variant=\"overBackground\"\n @click=${this.shouldClose}\n ></sp-clear-button>\n </div>\n `;\n }\n\n protected updated(changes: PropertyValues): void {\n super.updated(changes);\n if (changes.has('open')) {\n if (this.open) {\n if (this.timeout) {\n this.startCountdown();\n }\n } else {\n if (this.timeout) {\n this.stopCountdown();\n }\n }\n }\n if (changes.has('timeout')) {\n if (this.timeout !== null && this.open) {\n this.startCountdown();\n } else {\n this.stopCountdown();\n }\n }\n }\n}\n"]}
@@ -12,8 +12,11 @@ governing permissions and limitations under the License.
12
12
  import { html } from '@spectrum-web-components/base';
13
13
  import '../sp-toast.js';
14
14
  import '@spectrum-web-components/button/sp-button.js';
15
- const toast = ({ variant = '', disappearing = false, open = true, content = '', }) => html `
16
- <sp-toast variant=${variant} ?disappearing=${disappearing} ?open=${open}>
15
+ const toast = ({ variant = '', open = true, content = '', }) => html `
16
+ <sp-toast
17
+ variant=${variant}
18
+ ?open=${open}
19
+ >
17
20
  ${content}
18
21
  <sp-button slot="action" variant="overBackground" quiet>Undo</sp-button>
19
22
  </sp-toast>
@@ -49,11 +52,11 @@ export default {
49
52
  },
50
53
  },
51
54
  };
52
- export const Default = ({ variant, disappearing, open, content, }) => {
53
- return toast({ variant, disappearing, open, content });
55
+ export const Default = ({ variant, open, content, }) => {
56
+ return toast({ variant, open, content });
54
57
  };
55
- const variantDemo = ({ variant, disappearing, open, content, }) => {
56
- return toast({ variant, disappearing, open, content });
58
+ const variantDemo = ({ variant, open, content, }) => {
59
+ return toast({ variant, open, content });
57
60
  };
58
61
  export const Positive = (args) => variantDemo(Object.assign(Object.assign({}, args), { variant: 'positive' }));
59
62
  export const Negative = (args) => variantDemo(Object.assign(Object.assign({}, args), { variant: 'negative' }));
@@ -1 +1 @@
1
- {"version":3,"file":"toast.stories.js","sourceRoot":"","sources":["toast.stories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AACF,OAAO,EAAE,IAAI,EAAkB,MAAM,+BAA+B,CAAC;AAErE,OAAO,gBAAgB,CAAC;AACxB,OAAO,8CAA8C,CAAC;AAEtD,MAAM,KAAK,GAAG,CAAC,EACX,OAAO,GAAG,EAAE,EACZ,YAAY,GAAG,KAAK,EACpB,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,EAAE,GACf,EAAkB,EAAE,CAAC,IAAI,CAAA;wBACF,OAAO,kBAAkB,YAAY,UAAU,IAAI;UACjE,OAAO;;;CAGhB,CAAC;AAEF,eAAe;IACX,SAAS,EAAE,UAAU;IACrB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE;QACF,OAAO,EAAE,0BAA0B;QACnC,IAAI,EAAE,IAAI;KACb;IACD,QAAQ,EAAE;QACN,OAAO,EAAE;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzC,KAAK,EAAE;gBACH,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;gBAC3B,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;aAChC;YACD,OAAO,EAAE,MAAM;SAClB;QACD,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC1C,WAAW,EAAE,4BAA4B;YACzC,KAAK,EAAE;gBACH,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;gBAC5B,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;aACnC;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,SAAS;aAClB;SACJ;KACJ;CACJ,CAAC;AASF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACpB,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,OAAO,GACE,EAAkB,EAAE;IAC7B,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,EACjB,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,OAAO,GACE,EAAkB,EAAE;IAC7B,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAkB,EAAE,CACzD,WAAW,iCAAM,IAAI,KAAE,OAAO,EAAE,UAAU,IAAG,CAAC;AAElD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAkB,EAAE,CACzD,WAAW,iCAAM,IAAI,KAAE,OAAO,EAAE,UAAU,IAAG,CAAC;AAElD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAgB,EAAkB,EAAE,CACrD,WAAW,iCAAM,IAAI,KAAE,OAAO,EAAE,MAAM,IAAG,CAAC","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*/\nimport { html, TemplateResult } from '@spectrum-web-components/base';\n\nimport '../sp-toast.js';\nimport '@spectrum-web-components/button/sp-button.js';\n\nconst toast = ({\n variant = '',\n disappearing = false,\n open = true,\n content = '',\n}): TemplateResult => html`\n <sp-toast variant=${variant} ?disappearing=${disappearing} ?open=${open}>\n ${content}\n <sp-button slot=\"action\" variant=\"overBackground\" quiet>Undo</sp-button>\n </sp-toast>\n`;\n\nexport default {\n component: 'sp-toast',\n title: 'Toast',\n args: {\n content: 'This is a toast message.',\n open: true,\n },\n argTypes: {\n content: {\n name: 'content',\n type: { name: 'string', required: false },\n table: {\n type: { summary: 'string' },\n defaultValue: { summary: '' },\n },\n control: 'text',\n },\n open: {\n name: 'open',\n type: { name: 'boolean', required: false },\n description: 'Whether the toast is open.',\n table: {\n type: { summary: 'boolean' },\n defaultValue: { summary: false },\n },\n control: {\n type: 'boolean',\n },\n },\n },\n};\n\ninterface Properties {\n variant: string;\n disappearing: boolean;\n open: boolean;\n content: string;\n}\n\nexport const Default = ({\n variant,\n disappearing,\n open,\n content,\n}: Properties): TemplateResult => {\n return toast({ variant, disappearing, open, content });\n};\n\nconst variantDemo = ({\n variant,\n disappearing,\n open,\n content,\n}: Properties): TemplateResult => {\n return toast({ variant, disappearing, open, content });\n};\n\nexport const Positive = (args: Properties): TemplateResult =>\n variantDemo({ ...args, variant: 'positive' });\n\nexport const Negative = (args: Properties): TemplateResult =>\n variantDemo({ ...args, variant: 'negative' });\n\nexport const Info = (args: Properties): TemplateResult =>\n variantDemo({ ...args, variant: 'info' });\n"]}
1
+ {"version":3,"file":"toast.stories.js","sourceRoot":"","sources":["toast.stories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AACF,OAAO,EAAE,IAAI,EAAkB,MAAM,+BAA+B,CAAC;AAErE,OAAO,gBAAgB,CAAC;AACxB,OAAO,8CAA8C,CAAC;AAEtD,MAAM,KAAK,GAAG,CAAC,EACX,OAAO,GAAG,EAAE,EACZ,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,EAAE,GACf,EAAkB,EAAE,CAAC,IAAI,CAAA;;kBAER,OAMK;gBACP,IAAI;;UAEV,OAAO;;;CAGhB,CAAC;AAEF,eAAe;IACX,SAAS,EAAE,UAAU;IACrB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE;QACF,OAAO,EAAE,0BAA0B;QACnC,IAAI,EAAE,IAAI;KACb;IACD,QAAQ,EAAE;QACN,OAAO,EAAE;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;YACzC,KAAK,EAAE;gBACH,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;gBAC3B,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;aAChC;YACD,OAAO,EAAE,MAAM;SAClB;QACD,IAAI,EAAE;YACF,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC1C,WAAW,EAAE,4BAA4B;YACzC,KAAK,EAAE;gBACH,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;gBAC5B,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;aACnC;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,SAAS;aAClB;SACJ;KACJ;CACJ,CAAC;AASF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACpB,OAAO,EACP,IAAI,EACJ,OAAO,GACE,EAAkB,EAAE;IAC7B,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,EACjB,OAAO,EACP,IAAI,EACJ,OAAO,GACE,EAAkB,EAAE;IAC7B,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAkB,EAAE,CACzD,WAAW,iCAAM,IAAI,KAAE,OAAO,EAAE,UAAU,IAAG,CAAC;AAElD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAkB,EAAE,CACzD,WAAW,iCAAM,IAAI,KAAE,OAAO,EAAE,UAAU,IAAG,CAAC;AAElD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAgB,EAAkB,EAAE,CACrD,WAAW,iCAAM,IAAI,KAAE,OAAO,EAAE,MAAM,IAAG,CAAC","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*/\nimport { html, TemplateResult } from '@spectrum-web-components/base';\n\nimport '../sp-toast.js';\nimport '@spectrum-web-components/button/sp-button.js';\n\nconst toast = ({\n variant = '',\n open = true,\n content = '',\n}): TemplateResult => html`\n <sp-toast\n variant=${variant as\n | ''\n | 'negative'\n | 'positive'\n | 'info'\n | 'error'\n | 'warning'}\n ?open=${open}\n >\n ${content}\n <sp-button slot=\"action\" variant=\"overBackground\" quiet>Undo</sp-button>\n </sp-toast>\n`;\n\nexport default {\n component: 'sp-toast',\n title: 'Toast',\n args: {\n content: 'This is a toast message.',\n open: true,\n },\n argTypes: {\n content: {\n name: 'content',\n type: { name: 'string', required: false },\n table: {\n type: { summary: 'string' },\n defaultValue: { summary: '' },\n },\n control: 'text',\n },\n open: {\n name: 'open',\n type: { name: 'boolean', required: false },\n description: 'Whether the toast is open.',\n table: {\n type: { summary: 'boolean' },\n defaultValue: { summary: false },\n },\n control: {\n type: 'boolean',\n },\n },\n },\n};\n\ninterface Properties {\n variant: '' | 'negative' | 'positive' | 'info' | 'error' | 'warning';\n open: boolean;\n content: string;\n onClose: (event: Event) => void;\n}\n\nexport const Default = ({\n variant,\n open,\n content,\n}: Properties): TemplateResult => {\n return toast({ variant, open, content });\n};\n\nconst variantDemo = ({\n variant,\n open,\n content,\n}: Properties): TemplateResult => {\n return toast({ variant, open, content });\n};\n\nexport const Positive = (args: Properties): TemplateResult =>\n variantDemo({ ...args, variant: 'positive' });\n\nexport const Negative = (args: Properties): TemplateResult =>\n variantDemo({ ...args, variant: 'negative' });\n\nexport const Info = (args: Properties): TemplateResult =>\n variantDemo({ ...args, variant: 'info' });\n"]}