@signalwire/web-components 1.0.0-dev-20260428141127 → 1.0.0-dev-20260428183200
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 +45 -52
- package/dist/_virtual/_commonjsHelpers.js +9 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/_virtual/prism-python.js +28 -0
- package/dist/_virtual/prism-python.js.map +1 -0
- package/dist/_virtual/prism-python2.js +5 -0
- package/dist/_virtual/prism-python2.js.map +1 -0
- package/dist/_virtual/prism-typescript.js +28 -0
- package/dist/_virtual/prism-typescript.js.map +1 -0
- package/dist/_virtual/prism-typescript2.js +5 -0
- package/dist/_virtual/prism-typescript2.js.map +1 -0
- package/dist/_virtual/prism.js +28 -0
- package/dist/_virtual/prism.js.map +1 -0
- package/dist/_virtual/prism2.js +5 -0
- package/dist/_virtual/prism2.js.map +1 -0
- package/dist/assets/sw_background.webp.js +5 -0
- package/dist/assets/sw_background.webp.js.map +1 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.d.ts +4 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.d.ts.map +1 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.js +5 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-control-bar.d.ts +114 -0
- package/dist/components/UI/controls/sw-ui-control-bar.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-control-bar.js +324 -0
- package/dist/components/UI/controls/sw-ui-control-bar.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-dialpad.d.ts +57 -0
- package/dist/components/UI/controls/sw-ui-dialpad.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-dialpad.js +319 -0
- package/dist/components/UI/controls/sw-ui-dialpad.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-dropup.d.ts +42 -0
- package/dist/components/UI/controls/sw-ui-dropup.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-dropup.js +137 -0
- package/dist/components/UI/controls/sw-ui-dropup.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-split-button.d.ts +44 -0
- package/dist/components/UI/controls/sw-ui-split-button.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-split-button.js +177 -0
- package/dist/components/UI/controls/sw-ui-split-button.js.map +1 -0
- package/dist/components/UI/icons/backspace.svg.js +10 -0
- package/dist/components/UI/icons/backspace.svg.js.map +1 -0
- package/dist/components/UI/icons/camera-off.svg.js +8 -0
- package/dist/components/UI/icons/camera-off.svg.js.map +1 -0
- package/dist/components/UI/icons/camera-on.svg.js +8 -0
- package/dist/components/UI/icons/camera-on.svg.js.map +1 -0
- package/dist/components/UI/icons/check-circle.svg.js +6 -0
- package/dist/components/UI/icons/check-circle.svg.js.map +1 -0
- package/dist/components/UI/icons/chevron-up.svg.js +8 -0
- package/dist/components/UI/icons/chevron-up.svg.js.map +1 -0
- package/dist/components/UI/icons/close.svg.js +6 -0
- package/dist/components/UI/icons/close.svg.js.map +1 -0
- package/dist/components/UI/icons/copy.svg.js +6 -0
- package/dist/components/UI/icons/copy.svg.js.map +1 -0
- package/dist/components/UI/icons/download.svg.js +6 -0
- package/dist/components/UI/icons/download.svg.js.map +1 -0
- package/dist/components/UI/icons/fullscreen-exit.svg.js +8 -0
- package/dist/components/UI/icons/fullscreen-exit.svg.js.map +1 -0
- package/dist/components/UI/icons/fullscreen.svg.js +8 -0
- package/dist/components/UI/icons/fullscreen.svg.js.map +1 -0
- package/dist/components/UI/icons/hand-raise.svg.js +6 -0
- package/dist/components/UI/icons/hand-raise.svg.js.map +1 -0
- package/dist/components/UI/icons/icons.d.ts +31 -0
- package/dist/components/UI/icons/icons.d.ts.map +1 -0
- package/dist/components/UI/icons/icons.js +60 -0
- package/dist/components/UI/icons/icons.js.map +1 -0
- package/dist/components/UI/icons/index.d.ts +4 -0
- package/dist/components/UI/icons/index.d.ts.map +1 -0
- package/dist/components/UI/icons/info-circle.svg.js +6 -0
- package/dist/components/UI/icons/info-circle.svg.js.map +1 -0
- package/dist/components/UI/icons/mic-off.svg.js +8 -0
- package/dist/components/UI/icons/mic-off.svg.js.map +1 -0
- package/dist/components/UI/icons/mic-on.svg.js +8 -0
- package/dist/components/UI/icons/mic-on.svg.js.map +1 -0
- package/dist/components/UI/icons/person.svg.js +8 -0
- package/dist/components/UI/icons/person.svg.js.map +1 -0
- package/dist/components/UI/icons/phone-call.svg.js +8 -0
- package/dist/components/UI/icons/phone-call.svg.js.map +1 -0
- package/dist/components/UI/icons/phone-end.svg.js +8 -0
- package/dist/components/UI/icons/phone-end.svg.js.map +1 -0
- package/dist/components/UI/icons/room.svg.js +8 -0
- package/dist/components/UI/icons/room.svg.js.map +1 -0
- package/dist/components/UI/icons/screen-share-off.svg.js +9 -0
- package/dist/components/UI/icons/screen-share-off.svg.js.map +1 -0
- package/dist/components/UI/icons/screen-share.svg.js +9 -0
- package/dist/components/UI/icons/screen-share.svg.js.map +1 -0
- package/dist/components/UI/icons/sendIcon.svg.js +9 -0
- package/dist/components/UI/icons/sendIcon.svg.js.map +1 -0
- package/dist/components/UI/icons/settings.svg.js +8 -0
- package/dist/components/UI/icons/settings.svg.js.map +1 -0
- package/dist/components/UI/icons/speaker-off.svg.js +8 -0
- package/dist/components/UI/icons/speaker-off.svg.js.map +1 -0
- package/dist/components/UI/icons/speaker-on.svg.js +8 -0
- package/dist/components/UI/icons/speaker-on.svg.js.map +1 -0
- package/dist/components/UI/icons/spinner.svg.js +9 -0
- package/dist/components/UI/icons/spinner.svg.js.map +1 -0
- package/dist/components/UI/icons/sw-logo.svg.js +11 -0
- package/dist/components/UI/icons/sw-logo.svg.js.map +1 -0
- package/dist/components/UI/icons/sw-ui-icon.d.ts +28 -0
- package/dist/components/UI/icons/sw-ui-icon.d.ts.map +1 -0
- package/dist/components/UI/icons/sw-ui-icon.js +47 -0
- package/dist/components/UI/icons/sw-ui-icon.js.map +1 -0
- package/dist/components/UI/icons/transcript.svg.js +10 -0
- package/dist/components/UI/icons/transcript.svg.js.map +1 -0
- package/dist/components/UI/index.d.ts +18 -0
- package/dist/components/UI/index.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-background.d.ts +33 -0
- package/dist/components/UI/layout/sw-ui-background.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-background.js +106 -0
- package/dist/components/UI/layout/sw-ui-background.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-call-layout.d.ts +69 -0
- package/dist/components/UI/layout/sw-ui-call-layout.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-call-layout.js +278 -0
- package/dist/components/UI/layout/sw-ui-call-layout.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.d.ts +50 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.js +413 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-modal.d.ts +31 -0
- package/dist/components/UI/layout/sw-ui-modal.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-modal.js +150 -0
- package/dist/components/UI/layout/sw-ui-modal.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.d.ts +15 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.js +78 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.js.map +1 -0
- package/dist/components/UI/sw-ui-alert.d.ts +37 -0
- package/dist/components/UI/sw-ui-alert.d.ts.map +1 -0
- package/dist/components/UI/sw-ui-alert.js +126 -0
- package/dist/components/UI/sw-ui-alert.js.map +1 -0
- package/dist/components/UI/sw-ui-transcript-view.d.ts +56 -0
- package/dist/components/UI/sw-ui-transcript-view.d.ts.map +1 -0
- package/dist/components/UI/sw-ui-transcript-view.js +341 -0
- package/dist/components/UI/sw-ui-transcript-view.js.map +1 -0
- package/dist/components/directory.d.ts +10 -18
- package/dist/components/directory.d.ts.map +1 -1
- package/dist/components/directory.js +129 -198
- package/dist/components/directory.js.map +1 -1
- package/dist/embed/signalwire-web-components-embed.iife.js +2336 -982
- package/dist/embed/signalwire-web-components-embed.iife.js.map +1 -1
- package/dist/embed/signalwire-web-components-embed.umd.cjs +2336 -982
- package/dist/embed/signalwire-web-components-embed.umd.cjs.map +1 -1
- package/dist/embed.d.ts +1 -1
- package/dist/embed.d.ts.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -33
- package/dist/index.js.map +1 -1
- package/dist/node_modules/dompurify/dist/purify.es.js +597 -0
- package/dist/node_modules/dompurify/dist/purify.es.js.map +1 -0
- package/dist/node_modules/marked/lib/marked.esm.js +1475 -0
- package/dist/node_modules/marked/lib/marked.esm.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-bash.js +220 -0
- package/dist/node_modules/prismjs/components/prism-bash.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-css.js +56 -0
- package/dist/node_modules/prismjs/components/prism-css.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-javascript.js +138 -0
- package/dist/node_modules/prismjs/components/prism-javascript.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-json.js +26 -0
- package/dist/node_modules/prismjs/components/prism-json.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-markdown.js +301 -0
- package/dist/node_modules/prismjs/components/prism-markdown.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-python.js +69 -0
- package/dist/node_modules/prismjs/components/prism-python.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-sql.js +34 -0
- package/dist/node_modules/prismjs/components/prism-sql.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-typescript.js +53 -0
- package/dist/node_modules/prismjs/components/prism-typescript.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-yaml.js +67 -0
- package/dist/node_modules/prismjs/components/prism-yaml.js.map +1 -0
- package/dist/node_modules/prismjs/prism.js +1165 -0
- package/dist/node_modules/prismjs/prism.js.map +1 -0
- package/dist/react.d.ts +3 -3
- package/dist/utils/prism.d.ts +4 -0
- package/dist/utils/prism.d.ts.map +1 -0
- package/dist/utils/prism.js +34 -0
- package/dist/utils/prism.js.map +1 -0
- package/dist/utils/transcriptToMarkdown.d.ts +14 -0
- package/dist/utils/transcriptToMarkdown.d.ts.map +1 -0
- package/dist/utils/transcriptToMarkdown.js +59 -0
- package/dist/utils/transcriptToMarkdown.js.map +1 -0
- package/package.json +53 -9
- package/dist/components/dialpad.d.ts +0 -74
- package/dist/components/dialpad.d.ts.map +0 -1
- package/dist/components/dialpad.js +0 -372
- package/dist/components/dialpad.js.map +0 -1
- package/dist/components/example-button.d.ts +0 -21
- package/dist/components/example-button.d.ts.map +0 -1
- package/dist/components/example-button.js +0 -74
- package/dist/components/example-button.js.map +0 -1
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
import { LitElement as u, html as c, css as h } from "lit";
|
|
2
|
-
import { property as d, state as p, customElement as g } from "lit/decorators.js";
|
|
3
|
-
import { consume as b } from "@lit/context";
|
|
4
|
-
import { callContext as w } from "../context/call-context.js";
|
|
5
|
-
var f = Object.defineProperty, v = Object.getOwnPropertyDescriptor, o = (e, t, a, i) => {
|
|
6
|
-
for (var r = i > 1 ? void 0 : i ? v(t, a) : t, l = e.length - 1, n; l >= 0; l--)
|
|
7
|
-
(n = e[l]) && (r = (i ? n(t, a, r) : n(r)) || r);
|
|
8
|
-
return i && r && f(t, a, r), r;
|
|
9
|
-
};
|
|
10
|
-
const m = [
|
|
11
|
-
{ digit: "1", letters: "" },
|
|
12
|
-
{ digit: "2", letters: "ABC" },
|
|
13
|
-
{ digit: "3", letters: "DEF" },
|
|
14
|
-
{ digit: "4", letters: "GHI" },
|
|
15
|
-
{ digit: "5", letters: "JKL" },
|
|
16
|
-
{ digit: "6", letters: "MNO" },
|
|
17
|
-
{ digit: "7", letters: "PQRS" },
|
|
18
|
-
{ digit: "8", letters: "TUV" },
|
|
19
|
-
{ digit: "9", letters: "WXYZ" },
|
|
20
|
-
{ digit: "*", letters: "" },
|
|
21
|
-
{ digit: "0", letters: "+" },
|
|
22
|
-
{ digit: "#", letters: "" }
|
|
23
|
-
];
|
|
24
|
-
let s = class extends u {
|
|
25
|
-
constructor() {
|
|
26
|
-
super(...arguments), this.call = null, this.digits = "", this.pressedKey = null, this.showCallButton = !1, this.placeholder = "Enter number";
|
|
27
|
-
}
|
|
28
|
-
get activeCall() {
|
|
29
|
-
return this.call || this.contextCall || null;
|
|
30
|
-
}
|
|
31
|
-
handleKeyPress(e) {
|
|
32
|
-
var t;
|
|
33
|
-
this.digits += e, this.pressedKey = e, (t = this.activeCall) != null && t.sendDigits && this.activeCall.sendDigits(e).catch((a) => {
|
|
34
|
-
console.error("Failed to send DTMF:", a);
|
|
35
|
-
}), this.dispatchEvent(
|
|
36
|
-
new CustomEvent("sw-digit-press", {
|
|
37
|
-
detail: { digit: e, digits: this.digits },
|
|
38
|
-
bubbles: !0,
|
|
39
|
-
composed: !0
|
|
40
|
-
})
|
|
41
|
-
), setTimeout(() => {
|
|
42
|
-
this.pressedKey = null;
|
|
43
|
-
}, 100);
|
|
44
|
-
}
|
|
45
|
-
handleBackspace() {
|
|
46
|
-
this.digits.length > 0 && (this.digits = this.digits.slice(0, -1), this.dispatchEvent(
|
|
47
|
-
new CustomEvent("sw-backspace", {
|
|
48
|
-
detail: { digits: this.digits },
|
|
49
|
-
bubbles: !0,
|
|
50
|
-
composed: !0
|
|
51
|
-
})
|
|
52
|
-
));
|
|
53
|
-
}
|
|
54
|
-
handleCall() {
|
|
55
|
-
this.digits.length > 0 && this.dispatchEvent(
|
|
56
|
-
new CustomEvent("sw-dial", {
|
|
57
|
-
detail: { digits: this.digits },
|
|
58
|
-
bubbles: !0,
|
|
59
|
-
composed: !0
|
|
60
|
-
})
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
handleInputChange(e) {
|
|
64
|
-
const t = e.target;
|
|
65
|
-
this.digits = t.value.replace(/[^0-9*#]/g, "");
|
|
66
|
-
}
|
|
67
|
-
handleKeyDown(e) {
|
|
68
|
-
const t = e.key;
|
|
69
|
-
/^[0-9*#]$/.test(t) ? this.handleKeyPress(t) : t === "Backspace" ? this.handleBackspace() : t === "Enter" && this.showCallButton && this.handleCall();
|
|
70
|
-
}
|
|
71
|
-
render() {
|
|
72
|
-
return c`
|
|
73
|
-
<div class="container" part="container">
|
|
74
|
-
<div class="display" part="display">
|
|
75
|
-
<input
|
|
76
|
-
type="tel"
|
|
77
|
-
class="display-input"
|
|
78
|
-
.value=${this.digits}
|
|
79
|
-
placeholder=${this.placeholder}
|
|
80
|
-
@input=${this.handleInputChange}
|
|
81
|
-
@keydown=${this.handleKeyDown}
|
|
82
|
-
aria-label="Phone number input"
|
|
83
|
-
/>
|
|
84
|
-
<button
|
|
85
|
-
class="backspace-button"
|
|
86
|
-
@click=${this.handleBackspace}
|
|
87
|
-
?disabled=${this.digits.length === 0}
|
|
88
|
-
aria-label="Delete last digit"
|
|
89
|
-
>
|
|
90
|
-
<svg
|
|
91
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
92
|
-
width="24"
|
|
93
|
-
height="24"
|
|
94
|
-
viewBox="0 0 24 24"
|
|
95
|
-
fill="none"
|
|
96
|
-
stroke="currentColor"
|
|
97
|
-
stroke-width="2"
|
|
98
|
-
stroke-linecap="round"
|
|
99
|
-
stroke-linejoin="round"
|
|
100
|
-
>
|
|
101
|
-
<path d="M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"></path>
|
|
102
|
-
<line x1="18" y1="9" x2="12" y2="15"></line>
|
|
103
|
-
<line x1="12" y1="9" x2="18" y2="15"></line>
|
|
104
|
-
</svg>
|
|
105
|
-
</button>
|
|
106
|
-
</div>
|
|
107
|
-
|
|
108
|
-
<div class="keypad" part="keypad" role="group" aria-label="Telephone keypad">
|
|
109
|
-
${m.map(
|
|
110
|
-
(e) => c`
|
|
111
|
-
<button
|
|
112
|
-
class="key ${this.pressedKey === e.digit ? "pressed" : ""}"
|
|
113
|
-
part="key ${this.pressedKey === e.digit ? "key-pressed" : ""}"
|
|
114
|
-
@click=${() => this.handleKeyPress(e.digit)}
|
|
115
|
-
aria-label="${e.digit}${e.letters ? `, ${e.letters}` : ""}"
|
|
116
|
-
>
|
|
117
|
-
<span class="key-digit">${e.digit}</span>
|
|
118
|
-
<span class="key-letters">${e.letters}</span>
|
|
119
|
-
</button>
|
|
120
|
-
`
|
|
121
|
-
)}
|
|
122
|
-
</div>
|
|
123
|
-
|
|
124
|
-
${this.showCallButton ? c`
|
|
125
|
-
<button
|
|
126
|
-
class="call-button"
|
|
127
|
-
part="call-button"
|
|
128
|
-
@click=${this.handleCall}
|
|
129
|
-
?disabled=${this.digits.length === 0}
|
|
130
|
-
aria-label="Call ${this.digits}"
|
|
131
|
-
>
|
|
132
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
|
|
133
|
-
<path
|
|
134
|
-
d="M6.62 10.79c1.44 2.83 3.76 5.15 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"
|
|
135
|
-
/>
|
|
136
|
-
</svg>
|
|
137
|
-
Call
|
|
138
|
-
</button>
|
|
139
|
-
` : null}
|
|
140
|
-
</div>
|
|
141
|
-
`;
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
s.styles = h`
|
|
145
|
-
:host {
|
|
146
|
-
/* CSS Custom Properties for theming */
|
|
147
|
-
--sw-color-primary: #044cf6;
|
|
148
|
-
--sw-color-primary-hover: #0339c4;
|
|
149
|
-
--sw-color-primary-active: #022b92;
|
|
150
|
-
--sw-color-success: #10b981;
|
|
151
|
-
--sw-color-danger: #ef4444;
|
|
152
|
-
--sw-color-text: #1f2937;
|
|
153
|
-
--sw-color-text-muted: #6b7280;
|
|
154
|
-
--sw-color-border: #e5e7eb;
|
|
155
|
-
--sw-color-background: #ffffff;
|
|
156
|
-
--sw-color-background-hover: #f3f4f6;
|
|
157
|
-
--sw-color-background-active: #e5e7eb;
|
|
158
|
-
--sw-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
159
|
-
--sw-font-size-sm: 12px;
|
|
160
|
-
--sw-font-size-base: 16px;
|
|
161
|
-
--sw-font-size-lg: 24px;
|
|
162
|
-
--sw-font-size-xl: 32px;
|
|
163
|
-
--sw-space-1: 4px;
|
|
164
|
-
--sw-space-2: 8px;
|
|
165
|
-
--sw-space-3: 12px;
|
|
166
|
-
--sw-space-4: 16px;
|
|
167
|
-
--sw-border-radius: 8px;
|
|
168
|
-
--sw-border-radius-full: 9999px;
|
|
169
|
-
|
|
170
|
-
display: block;
|
|
171
|
-
font-family: var(--sw-font-family);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/* Dark mode support */
|
|
175
|
-
:host([data-theme='dark']) {
|
|
176
|
-
--sw-color-text: #f9fafb;
|
|
177
|
-
--sw-color-text-muted: #9ca3af;
|
|
178
|
-
--sw-color-border: #374151;
|
|
179
|
-
--sw-color-background: #1f2937;
|
|
180
|
-
--sw-color-background-hover: #374151;
|
|
181
|
-
--sw-color-background-active: #4b5563;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
@media (prefers-color-scheme: dark) {
|
|
185
|
-
:host(:not([data-theme='light'])) {
|
|
186
|
-
--sw-color-text: #f9fafb;
|
|
187
|
-
--sw-color-text-muted: #9ca3af;
|
|
188
|
-
--sw-color-border: #374151;
|
|
189
|
-
--sw-color-background: #1f2937;
|
|
190
|
-
--sw-color-background-hover: #374151;
|
|
191
|
-
--sw-color-background-active: #4b5563;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
.container {
|
|
196
|
-
display: flex;
|
|
197
|
-
flex-direction: column;
|
|
198
|
-
gap: var(--sw-space-3);
|
|
199
|
-
padding: var(--sw-space-4);
|
|
200
|
-
max-width: 280px;
|
|
201
|
-
background: var(--sw-color-background);
|
|
202
|
-
border-radius: var(--sw-border-radius);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
.display {
|
|
206
|
-
display: flex;
|
|
207
|
-
align-items: center;
|
|
208
|
-
justify-content: space-between;
|
|
209
|
-
padding: var(--sw-space-3) var(--sw-space-4);
|
|
210
|
-
background: var(--sw-color-background-hover);
|
|
211
|
-
border-radius: var(--sw-border-radius);
|
|
212
|
-
min-height: 48px;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
.display-input {
|
|
216
|
-
flex: 1;
|
|
217
|
-
font-size: var(--sw-font-size-xl);
|
|
218
|
-
font-weight: 500;
|
|
219
|
-
font-family: var(--sw-font-family);
|
|
220
|
-
color: var(--sw-color-text);
|
|
221
|
-
background: transparent;
|
|
222
|
-
border: none;
|
|
223
|
-
outline: none;
|
|
224
|
-
letter-spacing: 2px;
|
|
225
|
-
text-align: center;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
.display-input::placeholder {
|
|
229
|
-
color: var(--sw-color-text-muted);
|
|
230
|
-
font-size: var(--sw-font-size-base);
|
|
231
|
-
letter-spacing: normal;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
.backspace-button {
|
|
235
|
-
display: flex;
|
|
236
|
-
align-items: center;
|
|
237
|
-
justify-content: center;
|
|
238
|
-
width: 40px;
|
|
239
|
-
height: 40px;
|
|
240
|
-
background: transparent;
|
|
241
|
-
border: none;
|
|
242
|
-
border-radius: var(--sw-border-radius);
|
|
243
|
-
cursor: pointer;
|
|
244
|
-
color: var(--sw-color-text-muted);
|
|
245
|
-
transition:
|
|
246
|
-
background-color 0.15s ease,
|
|
247
|
-
color 0.15s ease;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
.backspace-button:hover {
|
|
251
|
-
background: var(--sw-color-background-active);
|
|
252
|
-
color: var(--sw-color-text);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
.backspace-button:disabled {
|
|
256
|
-
opacity: 0.3;
|
|
257
|
-
cursor: not-allowed;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
.keypad {
|
|
261
|
-
display: grid;
|
|
262
|
-
grid-template-columns: repeat(3, 1fr);
|
|
263
|
-
gap: var(--sw-space-2);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
.key {
|
|
267
|
-
display: flex;
|
|
268
|
-
flex-direction: column;
|
|
269
|
-
align-items: center;
|
|
270
|
-
justify-content: center;
|
|
271
|
-
width: 72px;
|
|
272
|
-
height: 72px;
|
|
273
|
-
background: var(--sw-color-background);
|
|
274
|
-
border: 1px solid var(--sw-color-border);
|
|
275
|
-
border-radius: var(--sw-border-radius-full);
|
|
276
|
-
cursor: pointer;
|
|
277
|
-
transition:
|
|
278
|
-
background-color 0.1s ease,
|
|
279
|
-
transform 0.1s ease;
|
|
280
|
-
user-select: none;
|
|
281
|
-
-webkit-user-select: none;
|
|
282
|
-
-webkit-tap-highlight-color: transparent;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
.key:hover {
|
|
286
|
-
background: var(--sw-color-background-hover);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
.key:active,
|
|
290
|
-
.key.pressed {
|
|
291
|
-
background: var(--sw-color-background-active);
|
|
292
|
-
transform: scale(0.95);
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
.key-digit {
|
|
296
|
-
font-size: var(--sw-font-size-lg);
|
|
297
|
-
font-weight: 500;
|
|
298
|
-
color: var(--sw-color-text);
|
|
299
|
-
line-height: 1;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
.key-letters {
|
|
303
|
-
font-size: var(--sw-font-size-sm);
|
|
304
|
-
color: var(--sw-color-text-muted);
|
|
305
|
-
text-transform: uppercase;
|
|
306
|
-
letter-spacing: 1px;
|
|
307
|
-
margin-top: 2px;
|
|
308
|
-
min-height: 14px;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
.call-button {
|
|
312
|
-
display: flex;
|
|
313
|
-
align-items: center;
|
|
314
|
-
justify-content: center;
|
|
315
|
-
width: 100%;
|
|
316
|
-
height: 56px;
|
|
317
|
-
background: var(--sw-color-success);
|
|
318
|
-
border: none;
|
|
319
|
-
border-radius: var(--sw-border-radius);
|
|
320
|
-
cursor: pointer;
|
|
321
|
-
color: white;
|
|
322
|
-
font-size: var(--sw-font-size-base);
|
|
323
|
-
font-weight: 600;
|
|
324
|
-
font-family: var(--sw-font-family);
|
|
325
|
-
transition: background-color 0.15s ease;
|
|
326
|
-
gap: var(--sw-space-2);
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
.call-button:hover {
|
|
330
|
-
background: #0ea472;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
.call-button:active {
|
|
334
|
-
background: #0d9668;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
.call-button:disabled {
|
|
338
|
-
opacity: 0.5;
|
|
339
|
-
cursor: not-allowed;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
.call-button svg {
|
|
343
|
-
width: 20px;
|
|
344
|
-
height: 20px;
|
|
345
|
-
}
|
|
346
|
-
`;
|
|
347
|
-
o([
|
|
348
|
-
d({ attribute: !1 })
|
|
349
|
-
], s.prototype, "call", 2);
|
|
350
|
-
o([
|
|
351
|
-
b({ context: w, subscribe: !0 }),
|
|
352
|
-
p()
|
|
353
|
-
], s.prototype, "contextCall", 2);
|
|
354
|
-
o([
|
|
355
|
-
p()
|
|
356
|
-
], s.prototype, "digits", 2);
|
|
357
|
-
o([
|
|
358
|
-
p()
|
|
359
|
-
], s.prototype, "pressedKey", 2);
|
|
360
|
-
o([
|
|
361
|
-
d({ type: Boolean, attribute: "show-call-button" })
|
|
362
|
-
], s.prototype, "showCallButton", 2);
|
|
363
|
-
o([
|
|
364
|
-
d({ type: String })
|
|
365
|
-
], s.prototype, "placeholder", 2);
|
|
366
|
-
s = o([
|
|
367
|
-
g("sw-dialpad")
|
|
368
|
-
], s);
|
|
369
|
-
export {
|
|
370
|
-
s as DialpadComponent
|
|
371
|
-
};
|
|
372
|
-
//# sourceMappingURL=dialpad.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dialpad.js","sources":["../../src/components/dialpad.ts"],"sourcesContent":["/**\n * Dialpad Component\n *\n * A 12-key telephone keypad (0-9, *, #) for entering phone numbers\n * and sending DTMF tones during active calls.\n *\n * @example\n * ```html\n * <sw-dialpad .call=${call}></sw-dialpad>\n * ```\n *\n * @fires sw-digit-press - Fired when a digit button is pressed. Detail: `{ digit: string }`\n * @fires sw-backspace - Fired when the backspace button is pressed.\n * @fires sw-dial - Fired when the call button is pressed. Detail: `{ number: string }`\n *\n * @cssprop [--sw-color-primary=#044cf6] - Primary accent color.\n * @cssprop [--sw-color-primary-hover=#0339c4] - Primary color on hover.\n * @cssprop [--sw-color-success=#10b981] - Success/call button color.\n * @cssprop [--sw-color-danger=#ef4444] - Danger/hangup button color.\n * @cssprop [--sw-color-background=#1a1a1a] - Component background.\n * @cssprop [--sw-color-surface=#2a2a2a] - Button surface color.\n * @cssprop [--sw-color-surface-hover=#3a3a3a] - Button surface on hover.\n * @cssprop [--sw-color-text=#ffffff] - Text color.\n * @cssprop [--sw-color-text-muted=#a0a0a0] - Muted text color.\n * @cssprop [--sw-color-border=#404040] - Border color.\n * @cssprop [--sw-border-radius=8px] - Border radius.\n * @cssprop [--sw-font-size-sm=12px] - Small font size.\n * @cssprop [--sw-font-size-base=14px] - Base font size.\n * @cssprop [--sw-font-size-lg=16px] - Large font size.\n * @cssprop [--sw-font-size-xl=20px] - Extra-large font size for digit display.\n */\n\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { consume } from '@lit/context';\nimport type { Observable } from 'rxjs';\nimport { callContext } from '../context/index.js';\n\n/**\n * Call interface for dialpad component\n */\nexport interface DialpadCall {\n sendDigits?(dtmf: string): Promise<void>;\n status$?: Observable<string>;\n}\n\n/**\n * Key layout for standard telephone keypad\n */\nconst KEYS = [\n { digit: '1', letters: '' },\n { digit: '2', letters: 'ABC' },\n { digit: '3', letters: 'DEF' },\n { digit: '4', letters: 'GHI' },\n { digit: '5', letters: 'JKL' },\n { digit: '6', letters: 'MNO' },\n { digit: '7', letters: 'PQRS' },\n { digit: '8', letters: 'TUV' },\n { digit: '9', letters: 'WXYZ' },\n { digit: '*', letters: '' },\n { digit: '0', letters: '+' },\n { digit: '#', letters: '' }\n];\n\n@customElement('sw-dialpad')\nexport class DialpadComponent extends LitElement {\n static styles = css`\n :host {\n /* CSS Custom Properties for theming */\n --sw-color-primary: #044cf6;\n --sw-color-primary-hover: #0339c4;\n --sw-color-primary-active: #022b92;\n --sw-color-success: #10b981;\n --sw-color-danger: #ef4444;\n --sw-color-text: #1f2937;\n --sw-color-text-muted: #6b7280;\n --sw-color-border: #e5e7eb;\n --sw-color-background: #ffffff;\n --sw-color-background-hover: #f3f4f6;\n --sw-color-background-active: #e5e7eb;\n --sw-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n --sw-font-size-sm: 12px;\n --sw-font-size-base: 16px;\n --sw-font-size-lg: 24px;\n --sw-font-size-xl: 32px;\n --sw-space-1: 4px;\n --sw-space-2: 8px;\n --sw-space-3: 12px;\n --sw-space-4: 16px;\n --sw-border-radius: 8px;\n --sw-border-radius-full: 9999px;\n\n display: block;\n font-family: var(--sw-font-family);\n }\n\n /* Dark mode support */\n :host([data-theme='dark']) {\n --sw-color-text: #f9fafb;\n --sw-color-text-muted: #9ca3af;\n --sw-color-border: #374151;\n --sw-color-background: #1f2937;\n --sw-color-background-hover: #374151;\n --sw-color-background-active: #4b5563;\n }\n\n @media (prefers-color-scheme: dark) {\n :host(:not([data-theme='light'])) {\n --sw-color-text: #f9fafb;\n --sw-color-text-muted: #9ca3af;\n --sw-color-border: #374151;\n --sw-color-background: #1f2937;\n --sw-color-background-hover: #374151;\n --sw-color-background-active: #4b5563;\n }\n }\n\n .container {\n display: flex;\n flex-direction: column;\n gap: var(--sw-space-3);\n padding: var(--sw-space-4);\n max-width: 280px;\n background: var(--sw-color-background);\n border-radius: var(--sw-border-radius);\n }\n\n .display {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--sw-space-3) var(--sw-space-4);\n background: var(--sw-color-background-hover);\n border-radius: var(--sw-border-radius);\n min-height: 48px;\n }\n\n .display-input {\n flex: 1;\n font-size: var(--sw-font-size-xl);\n font-weight: 500;\n font-family: var(--sw-font-family);\n color: var(--sw-color-text);\n background: transparent;\n border: none;\n outline: none;\n letter-spacing: 2px;\n text-align: center;\n }\n\n .display-input::placeholder {\n color: var(--sw-color-text-muted);\n font-size: var(--sw-font-size-base);\n letter-spacing: normal;\n }\n\n .backspace-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: transparent;\n border: none;\n border-radius: var(--sw-border-radius);\n cursor: pointer;\n color: var(--sw-color-text-muted);\n transition:\n background-color 0.15s ease,\n color 0.15s ease;\n }\n\n .backspace-button:hover {\n background: var(--sw-color-background-active);\n color: var(--sw-color-text);\n }\n\n .backspace-button:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n\n .keypad {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: var(--sw-space-2);\n }\n\n .key {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 72px;\n height: 72px;\n background: var(--sw-color-background);\n border: 1px solid var(--sw-color-border);\n border-radius: var(--sw-border-radius-full);\n cursor: pointer;\n transition:\n background-color 0.1s ease,\n transform 0.1s ease;\n user-select: none;\n -webkit-user-select: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n .key:hover {\n background: var(--sw-color-background-hover);\n }\n\n .key:active,\n .key.pressed {\n background: var(--sw-color-background-active);\n transform: scale(0.95);\n }\n\n .key-digit {\n font-size: var(--sw-font-size-lg);\n font-weight: 500;\n color: var(--sw-color-text);\n line-height: 1;\n }\n\n .key-letters {\n font-size: var(--sw-font-size-sm);\n color: var(--sw-color-text-muted);\n text-transform: uppercase;\n letter-spacing: 1px;\n margin-top: 2px;\n min-height: 14px;\n }\n\n .call-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 56px;\n background: var(--sw-color-success);\n border: none;\n border-radius: var(--sw-border-radius);\n cursor: pointer;\n color: white;\n font-size: var(--sw-font-size-base);\n font-weight: 600;\n font-family: var(--sw-font-family);\n transition: background-color 0.15s ease;\n gap: var(--sw-space-2);\n }\n\n .call-button:hover {\n background: #0ea472;\n }\n\n .call-button:active {\n background: #0d9668;\n }\n\n .call-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .call-button svg {\n width: 20px;\n height: 20px;\n }\n `;\n\n /** Call object providing the sendDigits method for DTMF tones. */\n @property({ attribute: false })\n call: DialpadCall | null = null;\n\n /**\n * Call from context (if nested in sw-call-media)\n */\n @consume({ context: callContext, subscribe: true })\n @state()\n private contextCall?: DialpadCall;\n\n /**\n * Current digits entered\n */\n @state()\n private digits: string = '';\n\n /**\n * Currently pressed key (for visual feedback)\n */\n @state()\n private pressedKey: string | null = null;\n\n /** Whether to display the call button below the keypad. */\n @property({ type: Boolean, attribute: 'show-call-button' })\n showCallButton: boolean = false;\n\n /** Placeholder text shown in the digit display input. */\n @property({ type: String })\n placeholder: string = 'Enter number';\n\n private get activeCall(): DialpadCall | null {\n return this.call || this.contextCall || null;\n }\n\n private handleKeyPress(digit: string) {\n this.digits += digit;\n this.pressedKey = digit;\n\n // Send DTMF if call is active\n if (this.activeCall?.sendDigits) {\n this.activeCall.sendDigits(digit).catch((err) => {\n console.error('Failed to send DTMF:', err);\n });\n }\n\n // Dispatch event\n this.dispatchEvent(\n new CustomEvent('sw-digit-press', {\n detail: { digit, digits: this.digits },\n bubbles: true,\n composed: true\n })\n );\n\n // Reset pressed state after animation\n setTimeout(() => {\n this.pressedKey = null;\n }, 100);\n }\n\n private handleBackspace() {\n if (this.digits.length > 0) {\n this.digits = this.digits.slice(0, -1);\n this.dispatchEvent(\n new CustomEvent('sw-backspace', {\n detail: { digits: this.digits },\n bubbles: true,\n composed: true\n })\n );\n }\n }\n\n private handleCall() {\n if (this.digits.length > 0) {\n this.dispatchEvent(\n new CustomEvent('sw-dial', {\n detail: { digits: this.digits },\n bubbles: true,\n composed: true\n })\n );\n }\n }\n\n private handleInputChange(e: Event) {\n const input = e.target as HTMLInputElement;\n // Only allow valid DTMF characters\n this.digits = input.value.replace(/[^0-9*#]/g, '');\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n const key = e.key;\n // Handle keyboard input for digits\n if (/^[0-9*#]$/.test(key)) {\n this.handleKeyPress(key);\n } else if (key === 'Backspace') {\n this.handleBackspace();\n } else if (key === 'Enter' && this.showCallButton) {\n this.handleCall();\n }\n }\n\n render() {\n return html`\n <div class=\"container\" part=\"container\">\n <div class=\"display\" part=\"display\">\n <input\n type=\"tel\"\n class=\"display-input\"\n .value=${this.digits}\n placeholder=${this.placeholder}\n @input=${this.handleInputChange}\n @keydown=${this.handleKeyDown}\n aria-label=\"Phone number input\"\n />\n <button\n class=\"backspace-button\"\n @click=${this.handleBackspace}\n ?disabled=${this.digits.length === 0}\n aria-label=\"Delete last digit\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\"></path>\n <line x1=\"18\" y1=\"9\" x2=\"12\" y2=\"15\"></line>\n <line x1=\"12\" y1=\"9\" x2=\"18\" y2=\"15\"></line>\n </svg>\n </button>\n </div>\n\n <div class=\"keypad\" part=\"keypad\" role=\"group\" aria-label=\"Telephone keypad\">\n ${KEYS.map(\n (key) => html`\n <button\n class=\"key ${this.pressedKey === key.digit ? 'pressed' : ''}\"\n part=\"key ${this.pressedKey === key.digit ? 'key-pressed' : ''}\"\n @click=${() => this.handleKeyPress(key.digit)}\n aria-label=\"${key.digit}${key.letters ? `, ${key.letters}` : ''}\"\n >\n <span class=\"key-digit\">${key.digit}</span>\n <span class=\"key-letters\">${key.letters}</span>\n </button>\n `\n )}\n </div>\n\n ${this.showCallButton\n ? html`\n <button\n class=\"call-button\"\n part=\"call-button\"\n @click=${this.handleCall}\n ?disabled=${this.digits.length === 0}\n aria-label=\"Call ${this.digits}\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M6.62 10.79c1.44 2.83 3.76 5.15 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z\"\n />\n </svg>\n Call\n </button>\n `\n : null}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sw-dialpad': DialpadComponent;\n }\n}\n"],"names":["KEYS","DialpadComponent","LitElement","digit","_a","err","input","key","html","css","__decorateClass","property","consume","callContext","state","customElement"],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
|
-
/**
|
|
3
|
-
* An example button component built with Lit
|
|
4
|
-
*
|
|
5
|
-
* @fires sw-click - Fired when the button is clicked (and not disabled). Detail: `{ originalEvent: MouseEvent }`
|
|
6
|
-
* @slot - Default slot for button content
|
|
7
|
-
* @csspart button - The button element
|
|
8
|
-
*/
|
|
9
|
-
export declare class ExampleButton extends LitElement {
|
|
10
|
-
static styles: import("lit").CSSResult;
|
|
11
|
-
disabled: boolean;
|
|
12
|
-
variant: 'primary' | 'secondary';
|
|
13
|
-
private _handleClick;
|
|
14
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
15
|
-
}
|
|
16
|
-
declare global {
|
|
17
|
-
interface HTMLElementTagNameMap {
|
|
18
|
-
'sw-example-button': ExampleButton;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=example-button.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"example-button.d.ts","sourceRoot":"","sources":["../../src/components/example-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C;;;;;;GAMG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,MAAM,CAAC,MAAM,0BA4BX;IAGF,QAAQ,UAAS;IAGjB,OAAO,EAAE,SAAS,GAAG,WAAW,CAAa;IAE7C,OAAO,CAAC,YAAY;IAgBpB,MAAM;CAOP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,aAAa,CAAC;KACpC;CACF"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { LitElement as d, html as p, css as u } from "lit";
|
|
2
|
-
import { property as c, customElement as b } from "lit/decorators.js";
|
|
3
|
-
var m = Object.defineProperty, h = Object.getOwnPropertyDescriptor, i = (o, e, s, n) => {
|
|
4
|
-
for (var t = n > 1 ? void 0 : n ? h(e, s) : e, l = o.length - 1, a; l >= 0; l--)
|
|
5
|
-
(a = o[l]) && (t = (n ? a(e, s, t) : a(t)) || t);
|
|
6
|
-
return n && t && m(e, s, t), t;
|
|
7
|
-
};
|
|
8
|
-
let r = class extends d {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(...arguments), this.disabled = !1, this.variant = "primary";
|
|
11
|
-
}
|
|
12
|
-
_handleClick(o) {
|
|
13
|
-
if (this.disabled) {
|
|
14
|
-
o.preventDefault(), o.stopPropagation();
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
this.dispatchEvent(
|
|
18
|
-
new CustomEvent("sw-click", {
|
|
19
|
-
detail: { originalEvent: o },
|
|
20
|
-
bubbles: !0,
|
|
21
|
-
composed: !0
|
|
22
|
-
})
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
render() {
|
|
26
|
-
return p`
|
|
27
|
-
<button part="button" ?disabled=${this.disabled} @click=${this._handleClick}>
|
|
28
|
-
<slot></slot>
|
|
29
|
-
</button>
|
|
30
|
-
`;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
r.styles = u`
|
|
34
|
-
:host {
|
|
35
|
-
display: inline-block;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
button {
|
|
39
|
-
padding: 0.5rem 1rem;
|
|
40
|
-
font-size: 1rem;
|
|
41
|
-
border: none;
|
|
42
|
-
border-radius: 4px;
|
|
43
|
-
background-color: #0066cc;
|
|
44
|
-
color: white;
|
|
45
|
-
cursor: pointer;
|
|
46
|
-
transition: background-color 0.2s;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
button:hover {
|
|
50
|
-
background-color: #0052a3;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
button:active {
|
|
54
|
-
background-color: #003d7a;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
button:disabled {
|
|
58
|
-
background-color: #cccccc;
|
|
59
|
-
cursor: not-allowed;
|
|
60
|
-
}
|
|
61
|
-
`;
|
|
62
|
-
i([
|
|
63
|
-
c({ type: Boolean })
|
|
64
|
-
], r.prototype, "disabled", 2);
|
|
65
|
-
i([
|
|
66
|
-
c({ type: String })
|
|
67
|
-
], r.prototype, "variant", 2);
|
|
68
|
-
r = i([
|
|
69
|
-
b("sw-example-button")
|
|
70
|
-
], r);
|
|
71
|
-
export {
|
|
72
|
-
r as ExampleButton
|
|
73
|
-
};
|
|
74
|
-
//# sourceMappingURL=example-button.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"example-button.js","sources":["../../src/components/example-button.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n/**\n * An example button component built with Lit\n *\n * @fires sw-click - Fired when the button is clicked (and not disabled). Detail: `{ originalEvent: MouseEvent }`\n * @slot - Default slot for button content\n * @csspart button - The button element\n */\n@customElement('sw-example-button')\nexport class ExampleButton extends LitElement {\n static styles = css`\n :host {\n display: inline-block;\n }\n\n button {\n padding: 0.5rem 1rem;\n font-size: 1rem;\n border: none;\n border-radius: 4px;\n background-color: #0066cc;\n color: white;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n button:hover {\n background-color: #0052a3;\n }\n\n button:active {\n background-color: #003d7a;\n }\n\n button:disabled {\n background-color: #cccccc;\n cursor: not-allowed;\n }\n `;\n\n @property({ type: Boolean })\n disabled = false;\n\n @property({ type: String })\n variant: 'primary' | 'secondary' = 'primary';\n\n private _handleClick(e: MouseEvent) {\n if (this.disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n this.dispatchEvent(\n new CustomEvent('sw-click', {\n detail: { originalEvent: e },\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html`\n <button part=\"button\" ?disabled=${this.disabled} @click=${this._handleClick}>\n <slot></slot>\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'sw-example-button': ExampleButton;\n }\n}\n"],"names":["ExampleButton","LitElement","e","html","css","__decorateClass","property","customElement"],"mappings":";;;;;;;AAWO,IAAMA,IAAN,cAA4BC,EAAW;AAAA,EAAvC,cAAA;AAAA,UAAA,GAAA,SAAA,GAgCL,KAAA,WAAW,IAGX,KAAA,UAAmC;AAAA,EAAA;AAAA,EAE3B,aAAaC,GAAe;AAClC,QAAI,KAAK,UAAU;AACjB,MAAAA,EAAE,eAAA,GACFA,EAAE,gBAAA;AACF;AAAA,IACF;AAEA,SAAK;AAAA,MACH,IAAI,YAAY,YAAY;AAAA,QAC1B,QAAQ,EAAE,eAAeA,EAAA;AAAA,QACzB,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,SAAS;AACP,WAAOC;AAAA,wCAC6B,KAAK,QAAQ,WAAW,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA,EAI/E;AACF;AA5DaH,EACJ,SAASI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BhBC,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GA/BhBN,EAgCX,WAAA,YAAA,CAAA;AAGAK,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAlCfN,EAmCX,WAAA,WAAA,CAAA;AAnCWA,IAANK,EAAA;AAAA,EADNE,EAAc,mBAAmB;AAAA,GACrBP,CAAA;"}
|