@universal-material/web 3.3.3 → 3.3.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@universal-material/web",
3
- "version": "3.3.3",
3
+ "version": "3.3.4",
4
4
  "description": "Material web components",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -1,3 +1,4 @@
1
+ import { PropertyValues } from '@lit/reactive-element';
1
2
  import { HTMLTemplateResult, LitElement } from 'lit';
2
3
  import '../button/button.js';
3
4
  import '../button/icon-button.js';
@@ -22,17 +23,18 @@ export declare class UmSnackbar extends LitElement {
22
23
  _canDismiss: boolean;
23
24
  duration: SnackbarDuration | number;
24
25
  private readonly container;
26
+ firstUpdated(changedProperties: PropertyValues): void;
25
27
  render(): HTMLTemplateResult;
26
28
  private renderButton;
27
29
  private renderCloseButton;
28
30
  actionClick(e: Event): void;
29
31
  dismiss(): void;
30
- private static _displayingSnackbar;
31
32
  private static _queue;
33
+ private static _lastEnqueued;
32
34
  private static _consuming;
33
35
  static show(message: string): UmSnackbar;
34
36
  static show(config: SnackbarConfig): UmSnackbar;
35
- private static consumeQueue;
37
+ private static _consumeQueue;
36
38
  private static _showNext;
37
39
  private static createSnackbar;
38
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snackbar.d.ts","sourceRoot":"","sources":["../../src/snackbar/snackbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;AAOpE,OAAO,qBAAqB,CAAC;AAC7B,OAAO,0BAA0B,CAAC;AAElC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,oBAAY,gBAAgB;IAC1B,KAAK,OAAO;IACZ,IAAI,OAAO;IACX,QAAQ,KAAK;CACd;AAED,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAAwB;IAC9C,MAAM,CAAC,cAAc,SAAQ;IAEA,OAAO,SAAM;IACb,MAAM,SAAM;IAEzC,SAAS,UAAS;IACT,UAAU,UAAS;IACnB,WAAW,UAAS;IAE7B,QAAQ,EAAG,gBAAgB,GAAG,MAAM,CAAC;IACV,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IAE3D,MAAM,IAAI,kBAAkB;IAcrC,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;IAqBzB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAc3B,OAAO,IAAI,IAAI;IAqBf,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAA2B;IAC7D,OAAO,CAAC,MAAM,CAAC,MAAM,CAAoB;IACzC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAU;IAEnC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IACxC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU;IAsB/C,OAAO,CAAC,MAAM,CAAC,YAAY;IAO3B,OAAO,CAAC,MAAM,CAAC,SAAS;IAyBxB,OAAO,CAAC,MAAM,CAAC,cAAc;CAS9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,UAAU,CAAC;KAC1B;CACF"}
1
+ {"version":3,"file":"snackbar.d.ts","sourceRoot":"","sources":["../../src/snackbar/snackbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;AAOpE,OAAO,qBAAqB,CAAC;AAC7B,OAAO,0BAA0B,CAAC;AAElC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,oBAAY,gBAAgB;IAC1B,KAAK,OAAO;IACZ,IAAI,OAAO;IACX,QAAQ,KAAK;CACd;AAED,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAAwB;IAC9C,MAAM,CAAC,cAAc,SAAQ;IAEA,OAAO,SAAM;IACb,MAAM,SAAM;IAEzC,SAAS,UAAS;IACT,UAAU,UAAS;IACnB,WAAW,UAAS;IAE7B,QAAQ,EAAG,gBAAgB,GAAG,MAAM,CAAC;IACV,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IAE3D,YAAY,CAAC,iBAAiB,EAAE,cAAc;IAgB9C,MAAM,IAAI,kBAAkB;IAyBrC,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;IAqBzB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAc3B,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,MAAM,CAAC,MAAM,CAAoB;IACzC,OAAO,CAAC,MAAM,CAAC,aAAa,CAA2B;IACvD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAU;IAEnC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IACxC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU;IAuB/C,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,OAAO,CAAC,MAAM,CAAC,SAAS;IAmBxB,OAAO,CAAC,MAAM,CAAC,cAAc;CAS9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,UAAU,CAAC;KAC1B;CACF"}
@@ -25,8 +25,29 @@ let UmSnackbar = class UmSnackbar extends LitElement {
25
25
  static { UmSnackbar_1 = this; }
26
26
  static { this.styles = [baseStyles, styles]; }
27
27
  static { this.minDisplayTime = 1500; }
28
+ firstUpdated(changedProperties) {
29
+ super.firstUpdated(changedProperties);
30
+ const onAnimationEnd = () => {
31
+ this.container.removeEventListener('animationend', onAnimationEnd);
32
+ if (UmSnackbar_1.minDisplayTime > 0) {
33
+ setTimeout(() => this._canDismiss = true, UmSnackbar_1.minDisplayTime);
34
+ }
35
+ else {
36
+ this._canDismiss = true;
37
+ }
38
+ };
39
+ this.container.addEventListener('animationend', onAnimationEnd);
40
+ }
28
41
  render() {
29
42
  const classes = { dismiss: this._dismissed && this._canDismiss };
43
+ if (classes.dismiss) {
44
+ const onAnimationEnd = () => {
45
+ this.container.removeEventListener('animationend', onAnimationEnd);
46
+ this.remove();
47
+ UmSnackbar_1._showNext();
48
+ };
49
+ this.container.addEventListener('animationend', onAnimationEnd);
50
+ }
30
51
  return html `
31
52
  <div class="container ${classMap(classes)}" part="container">
32
53
  <u-elevation></u-elevation>
@@ -83,34 +104,26 @@ let UmSnackbar = class UmSnackbar extends LitElement {
83
104
  return;
84
105
  }
85
106
  this._dismissed = true;
86
- const onAnimationEnd = () => {
87
- this.container.removeEventListener('animationend', onAnimationEnd);
88
- this.remove();
89
- if (UmSnackbar_1._displayingSnackbar === this) {
90
- UmSnackbar_1._displayingSnackbar = null;
91
- }
92
- UmSnackbar_1._showNext();
93
- };
94
- this.container.addEventListener('animationend', onAnimationEnd);
95
107
  }
96
- static { this._displayingSnackbar = null; }
97
108
  static { this._queue = []; }
109
+ static { this._lastEnqueued = null; }
98
110
  static show(configOrMessage) {
99
111
  if (typeof configOrMessage === 'string') {
100
112
  configOrMessage = {
101
113
  message: configOrMessage,
102
114
  };
103
115
  }
104
- configOrMessage.duration ??= SnackbarDuration.short;
116
+ configOrMessage.duration ??= SnackbarDuration.long;
105
117
  const snackbar = this.createSnackbar(configOrMessage);
106
118
  UmSnackbar_1._queue.push(snackbar);
107
- UmSnackbar_1._displayingSnackbar?.dismiss();
119
+ UmSnackbar_1._lastEnqueued?.dismiss();
120
+ UmSnackbar_1._lastEnqueued = snackbar;
108
121
  if (!UmSnackbar_1._consuming) {
109
- UmSnackbar_1.consumeQueue();
122
+ UmSnackbar_1._consumeQueue();
110
123
  }
111
124
  return snackbar;
112
125
  }
113
- static consumeQueue() {
126
+ static _consumeQueue() {
114
127
  if (UmSnackbar_1._queue.length) {
115
128
  UmSnackbar_1._consuming = true;
116
129
  UmSnackbar_1._showNext();
@@ -119,18 +132,12 @@ let UmSnackbar = class UmSnackbar extends LitElement {
119
132
  static _showNext() {
120
133
  if (!UmSnackbar_1._queue.length) {
121
134
  UmSnackbar_1._consuming = false;
135
+ UmSnackbar_1._lastEnqueued = null;
122
136
  return;
123
137
  }
124
138
  const snackbar = UmSnackbar_1._queue[0];
125
- UmSnackbar_1._displayingSnackbar = snackbar;
126
139
  UmSnackbar_1._queue = UmSnackbar_1._queue.slice(1);
127
140
  document.body.appendChild(snackbar);
128
- if (UmSnackbar_1.minDisplayTime > 0) {
129
- setTimeout(() => snackbar._canDismiss = true, UmSnackbar_1.minDisplayTime);
130
- }
131
- else {
132
- snackbar._canDismiss = true;
133
- }
134
141
  if (snackbar.duration === -1) {
135
142
  return;
136
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snackbar.js","sourceRoot":"","sources":["../../src/snackbar/snackbar.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, HTMLTemplateResult, LitElement, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { styles as baseStyles } from '../shared/base.styles.js';\nimport { styles } from './snackbar.styles.js';\n\nimport '../button/button.js';\nimport '../button/icon-button.js';\n\nexport interface SnackbarConfig {\n message: string;\n duration?: SnackbarDuration;\n action?: string;\n showClose?: boolean;\n}\n\nexport enum SnackbarDuration {\n short = 2500,\n long = 5000,\n infinite = -1,\n}\n\n@customElement('u-snackbar')\nexport class UmSnackbar extends LitElement {\n static override styles = [baseStyles, styles];\n static minDisplayTime = 1500;\n\n @property({ reflect: true }) message = '';\n @property({ reflect: true }) action = '';\n @property({ type: Boolean, attribute: 'show-close', reflect: true })\n showClose = false;\n @state() _dismissed = false;\n @state() _canDismiss = false;\n\n duration!: SnackbarDuration | number;\n @query('.container', true) private readonly container!: HTMLElement;\n\n override render(): HTMLTemplateResult {\n const classes = { dismiss: this._dismissed && this._canDismiss };\n\n return html`\n <div class=\"container ${classMap(classes)}\" part=\"container\">\n <u-elevation></u-elevation>\n <div class=\"message-container\" part=\"message-container\">\n <div class=\"message\" part=\"message\">${this.message}</div>\n </div>\n ${this.renderButton()} ${this.renderCloseButton()}\n </div>\n `;\n }\n\n private renderButton() {\n return this.action\n ? html`\n <u-button\n variant=\"text\"\n @click=${this.actionClick.bind(this)}\n part=\"action\"\n >${this.action}\n </u-button>\n `\n : nothing;\n }\n\n private renderCloseButton() {\n return this.showClose\n ? html`\n <u-icon-button\n @click=${this.dismiss.bind(this)}\n part=\"close\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"1em\"\n viewBox=\"0 -960 960 960\"\n width=\"1em\"\n fill=\"currentColor\">\n <path\n d=\"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z\" />\n </svg>\n </u-icon-button>\n `\n : nothing;\n }\n\n actionClick(e: Event): void {\n e.stopPropagation();\n\n const actionClickEvent = new CustomEvent('actionClick', { cancelable: true });\n\n this.dispatchEvent(actionClickEvent);\n\n if (actionClickEvent.defaultPrevented) {\n return;\n }\n\n this.dismiss();\n }\n\n dismiss(): void {\n if (this._dismissed) {\n return;\n }\n\n this._dismissed = true;\n\n const onAnimationEnd = () => {\n this.container.removeEventListener('animationend', onAnimationEnd);\n this.remove();\n\n if (UmSnackbar._displayingSnackbar === this) {\n UmSnackbar._displayingSnackbar = null;\n }\n\n UmSnackbar._showNext();\n };\n\n this.container.addEventListener('animationend', onAnimationEnd);\n }\n\n private static _displayingSnackbar: UmSnackbar | null = null;\n private static _queue: UmSnackbar[] = [];\n private static _consuming: boolean;\n\n static show(message: string): UmSnackbar;\n static show(config: SnackbarConfig): UmSnackbar;\n static show(configOrMessage: SnackbarConfig | string): UmSnackbar {\n if (typeof configOrMessage === 'string') {\n configOrMessage = {\n message: configOrMessage,\n };\n }\n\n configOrMessage.duration ??= SnackbarDuration.short;\n\n const snackbar = this.createSnackbar(configOrMessage);\n UmSnackbar._queue.push(snackbar);\n\n UmSnackbar._displayingSnackbar?.dismiss();\n\n if (!UmSnackbar._consuming) {\n UmSnackbar.consumeQueue();\n }\n\n return snackbar;\n }\n\n private static consumeQueue() {\n if (UmSnackbar._queue.length) {\n UmSnackbar._consuming = true;\n UmSnackbar._showNext();\n }\n }\n\n private static _showNext() {\n if (!UmSnackbar._queue.length) {\n UmSnackbar._consuming = false;\n return;\n }\n\n const snackbar = UmSnackbar._queue[0];\n UmSnackbar._displayingSnackbar = snackbar;\n UmSnackbar._queue = UmSnackbar._queue.slice(1);\n\n document.body.appendChild(snackbar);\n\n if (UmSnackbar.minDisplayTime > 0) {\n setTimeout(() => snackbar._canDismiss = true, UmSnackbar.minDisplayTime);\n } else {\n snackbar._canDismiss = true;\n }\n\n if (snackbar.duration === -1) {\n return;\n }\n\n setTimeout(() => snackbar.dismiss(), snackbar.duration);\n }\n\n private static createSnackbar(config: SnackbarConfig): UmSnackbar {\n const snackbar = document.createElement('u-snackbar');\n snackbar.message = config.message;\n snackbar.action = config.action || '';\n snackbar.showClose = config.showClose!;\n snackbar.duration = config.duration!;\n\n return snackbar as unknown as UmSnackbar;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-snackbar': UmSnackbar;\n }\n}\n"]}
1
+ {"version":3,"file":"snackbar.js","sourceRoot":"","sources":["../../src/snackbar/snackbar.ts"],"names":[],"mappings":"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","sourcesContent":["import { PropertyValues } from '@lit/reactive-element';\n\nimport { html, HTMLTemplateResult, LitElement, nothing } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { styles as baseStyles } from '../shared/base.styles.js';\nimport { styles } from './snackbar.styles.js';\n\nimport '../button/button.js';\nimport '../button/icon-button.js';\n\nexport interface SnackbarConfig {\n message: string;\n duration?: SnackbarDuration;\n action?: string;\n showClose?: boolean;\n}\n\nexport enum SnackbarDuration {\n short = 2500,\n long = 5000,\n infinite = -1,\n}\n\n@customElement('u-snackbar')\nexport class UmSnackbar extends LitElement {\n static override styles = [baseStyles, styles];\n static minDisplayTime = 1500;\n\n @property({ reflect: true }) message = '';\n @property({ reflect: true }) action = '';\n @property({ type: Boolean, attribute: 'show-close', reflect: true })\n showClose = false;\n @state() _dismissed = false;\n @state() _canDismiss = false;\n\n duration!: SnackbarDuration | number;\n @query('.container', true) private readonly container!: HTMLElement;\n\n override firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n\n const onAnimationEnd = () => {\n this.container.removeEventListener('animationend', onAnimationEnd);\n\n if (UmSnackbar.minDisplayTime > 0) {\n setTimeout(() => this._canDismiss = true, UmSnackbar.minDisplayTime);\n } else {\n this._canDismiss = true;\n }\n };\n\n this.container.addEventListener('animationend', onAnimationEnd);\n }\n\n override render(): HTMLTemplateResult {\n const classes = { dismiss: this._dismissed && this._canDismiss };\n\n if (classes.dismiss) {\n const onAnimationEnd = () => {\n this.container.removeEventListener('animationend', onAnimationEnd);\n this.remove();\n\n UmSnackbar._showNext();\n };\n\n this.container.addEventListener('animationend', onAnimationEnd);\n }\n\n return html`\n <div class=\"container ${classMap(classes)}\" part=\"container\">\n <u-elevation></u-elevation>\n <div class=\"message-container\" part=\"message-container\">\n <div class=\"message\" part=\"message\">${this.message}</div>\n </div>\n ${this.renderButton()} ${this.renderCloseButton()}\n </div>\n `;\n }\n\n private renderButton() {\n return this.action\n ? html`\n <u-button\n variant=\"text\"\n @click=${this.actionClick.bind(this)}\n part=\"action\"\n >${this.action}\n </u-button>\n `\n : nothing;\n }\n\n private renderCloseButton() {\n return this.showClose\n ? html`\n <u-icon-button\n @click=${this.dismiss.bind(this)}\n part=\"close\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"1em\"\n viewBox=\"0 -960 960 960\"\n width=\"1em\"\n fill=\"currentColor\">\n <path\n d=\"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z\" />\n </svg>\n </u-icon-button>\n `\n : nothing;\n }\n\n actionClick(e: Event): void {\n e.stopPropagation();\n\n const actionClickEvent = new CustomEvent('actionClick', { cancelable: true });\n\n this.dispatchEvent(actionClickEvent);\n\n if (actionClickEvent.defaultPrevented) {\n return;\n }\n\n this.dismiss();\n }\n\n dismiss(): void {\n if (this._dismissed) {\n return;\n }\n\n this._dismissed = true;\n }\n\n private static _queue: UmSnackbar[] = [];\n private static _lastEnqueued: UmSnackbar | null = null;\n private static _consuming: boolean;\n\n static show(message: string): UmSnackbar;\n static show(config: SnackbarConfig): UmSnackbar;\n static show(configOrMessage: SnackbarConfig | string): UmSnackbar {\n if (typeof configOrMessage === 'string') {\n configOrMessage = {\n message: configOrMessage,\n };\n }\n\n configOrMessage.duration ??= SnackbarDuration.long;\n\n const snackbar = this.createSnackbar(configOrMessage);\n UmSnackbar._queue.push(snackbar);\n\n UmSnackbar._lastEnqueued?.dismiss();\n UmSnackbar._lastEnqueued = snackbar;\n\n if (!UmSnackbar._consuming) {\n UmSnackbar._consumeQueue();\n }\n\n return snackbar;\n }\n\n private static _consumeQueue() {\n if (UmSnackbar._queue.length) {\n UmSnackbar._consuming = true;\n UmSnackbar._showNext();\n }\n }\n\n private static _showNext() {\n if (!UmSnackbar._queue.length) {\n UmSnackbar._consuming = false;\n UmSnackbar._lastEnqueued = null;\n return;\n }\n\n const snackbar = UmSnackbar._queue[0];\n UmSnackbar._queue = UmSnackbar._queue.slice(1);\n\n document.body.appendChild(snackbar);\n\n if (snackbar.duration === -1) {\n return;\n }\n\n setTimeout(() => snackbar.dismiss(), snackbar.duration);\n }\n\n private static createSnackbar(config: SnackbarConfig): UmSnackbar {\n const snackbar = document.createElement('u-snackbar');\n snackbar.message = config.message;\n snackbar.action = config.action || '';\n snackbar.showClose = config.showClose!;\n snackbar.duration = config.duration!;\n\n return snackbar as unknown as UmSnackbar;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-snackbar': UmSnackbar;\n }\n}\n"]}