@namphuongtechnologi/np-hub 0.1.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/LICENSE +21 -0
- package/README.md +276 -0
- package/dist/chunk-ZZ63ZHC7.js +612 -0
- package/dist/chunk-ZZ63ZHC7.js.map +1 -0
- package/dist/index.cjs +640 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +89 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/np-hub.min.global.js +802 -0
- package/dist/register.cjs +636 -0
- package/dist/register.cjs.map +1 -0
- package/dist/register.d.cts +3 -0
- package/dist/register.d.ts +3 -0
- package/dist/register.js +7 -0
- package/dist/register.js.map +1 -0
- package/docs/DEVELOPER_GUIDE.md +91 -0
- package/docs/PUBLIC_RELEASE.md +84 -0
- package/docs/USAGE_STATIC_REACT.md +216 -0
- package/package.json +56 -0
|
@@ -0,0 +1,802 @@
|
|
|
1
|
+
"use strict";var SupportWidget=(()=>{var b=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var q=(o,a)=>{for(var e in a)b(o,e,{get:a[e],enumerable:!0})},M=(o,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let i of U(a))!R.call(o,i)&&i!==e&&b(o,i,{get:()=>a[i],enumerable:!(t=F(a,i))||t.enumerable});return o};var j=o=>M(b({},"__esModule",{value:!0}),o);var J={};q(J,{registerSupportWidget:()=>z});var V="https://namphuong-api.azurewebsites.net",P="https://namphuong-api-dev.azurewebsites.net";function v(o){return o.isDev?P:V}function x(o){if(!o.projectId||o.projectId.trim().length===0)throw new Error("projectId is required.")}function w(o){if(!o.name?.trim())throw new Error("user.name is required.");if(!o.email?.trim())throw new Error("user.email is required.");if(!o.phoneNumber?.trim())throw new Error("user.phoneNumber is required.")}function y(o){if(!o.content?.trim())throw new Error("Content is required.")}async function E(o,a){let e=await fetch(o,{method:"POST",body:a});if(!e.ok){let t=await e.text();throw new Error(`Request failed (${e.status}): ${t}`)}return await e.json()}async function k(o,a){let e=`${o.replace(/\/$/,"")}/api/supportcenter/create-request-anonymous`;return E(e,a)}var u={OPEN:"np-hub-open",CLOSE:"np-hub-close",SUBMIT_SUCCESS:"np-hub-submit-success",SUBMIT_ERROR:"np-hub-submit-error"};var I="data:image/png;base64,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";var L=`@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap");
|
|
2
|
+
|
|
3
|
+
:host {
|
|
4
|
+
--np-primary: #003c82;
|
|
5
|
+
--np-primary-dark: #002a5c;
|
|
6
|
+
--np-primary-soft: rgba(0, 60, 130, 0.08);
|
|
7
|
+
--np-border: #e2e8f0;
|
|
8
|
+
--np-text: #0f172a;
|
|
9
|
+
--np-text-muted: #64748b;
|
|
10
|
+
font-family: "Outfit", sans-serif;
|
|
11
|
+
display: block;
|
|
12
|
+
position: fixed;
|
|
13
|
+
right: 20px;
|
|
14
|
+
bottom: 20px;
|
|
15
|
+
z-index: 10000;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.launcher {
|
|
19
|
+
width: var(--np-hub-width, 72px);
|
|
20
|
+
height: var(--np-hub-height, 72px);
|
|
21
|
+
border: none;
|
|
22
|
+
border-radius: 50%;
|
|
23
|
+
cursor: grab;
|
|
24
|
+
box-shadow: 0 8px 28px rgba(0, 60, 130, 0.2);
|
|
25
|
+
background-color: #ffffff;
|
|
26
|
+
background-image: var(--np-hub-icon);
|
|
27
|
+
background-position: center;
|
|
28
|
+
background-repeat: no-repeat;
|
|
29
|
+
background-size: 75%;
|
|
30
|
+
transition:
|
|
31
|
+
transform 0.2s ease,
|
|
32
|
+
box-shadow 0.2s ease;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.launcher:hover {
|
|
36
|
+
transform: scale(1.05);
|
|
37
|
+
box-shadow: 0 12px 32px rgba(0, 60, 130, 0.3);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.launcher:active {
|
|
41
|
+
cursor: grabbing;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.modal {
|
|
45
|
+
position: fixed;
|
|
46
|
+
inset: 0;
|
|
47
|
+
background: rgba(15, 23, 42, 0.55);
|
|
48
|
+
backdrop-filter: blur(6px);
|
|
49
|
+
display: none;
|
|
50
|
+
align-items: center;
|
|
51
|
+
justify-content: center;
|
|
52
|
+
padding: 16px;
|
|
53
|
+
opacity: 0;
|
|
54
|
+
transition: opacity 0.25s ease-out;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.modal.show {
|
|
58
|
+
display: flex;
|
|
59
|
+
opacity: 1;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.dialog {
|
|
63
|
+
width: min(540px, 100%);
|
|
64
|
+
max-height: calc(100vh - 32px);
|
|
65
|
+
overflow-y: auto;
|
|
66
|
+
background: #ffffff;
|
|
67
|
+
border-radius: 20px;
|
|
68
|
+
box-shadow: 0 24px 60px rgba(15, 23, 42, 0.22);
|
|
69
|
+
padding: 28px 32px 32px;
|
|
70
|
+
box-sizing: border-box;
|
|
71
|
+
position: relative;
|
|
72
|
+
transform: translateY(24px) scale(0.98);
|
|
73
|
+
transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.modal.show .dialog {
|
|
77
|
+
transform: translateY(0) scale(1);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.dialog::-webkit-scrollbar {
|
|
81
|
+
width: 8px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.dialog::-webkit-scrollbar-thumb {
|
|
85
|
+
background: #cbd5e1;
|
|
86
|
+
border-radius: 8px;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.header {
|
|
90
|
+
display: flex;
|
|
91
|
+
align-items: center;
|
|
92
|
+
justify-content: center;
|
|
93
|
+
padding-bottom: 18px;
|
|
94
|
+
margin-bottom: 22px;
|
|
95
|
+
border-bottom: 1px solid var(--np-border);
|
|
96
|
+
position: relative;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.title {
|
|
100
|
+
margin: 0;
|
|
101
|
+
font-size: 22px;
|
|
102
|
+
font-weight: 700;
|
|
103
|
+
color: var(--np-primary);
|
|
104
|
+
text-align: center;
|
|
105
|
+
letter-spacing: -0.01em;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.close-btn {
|
|
109
|
+
border: none;
|
|
110
|
+
background: #f1f5f9;
|
|
111
|
+
color: #64748b;
|
|
112
|
+
font-size: 20px;
|
|
113
|
+
line-height: 1;
|
|
114
|
+
cursor: pointer;
|
|
115
|
+
position: absolute;
|
|
116
|
+
right: 0;
|
|
117
|
+
top: 0;
|
|
118
|
+
bottom: 18px;
|
|
119
|
+
margin: auto 0;
|
|
120
|
+
width: 32px;
|
|
121
|
+
height: 32px;
|
|
122
|
+
display: flex;
|
|
123
|
+
align-items: center;
|
|
124
|
+
justify-content: center;
|
|
125
|
+
border-radius: 50%;
|
|
126
|
+
transition:
|
|
127
|
+
background 0.15s ease,
|
|
128
|
+
color 0.15s ease,
|
|
129
|
+
transform 0.15s ease;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.close-btn:hover {
|
|
133
|
+
background: #e2e8f0;
|
|
134
|
+
color: #0f172a;
|
|
135
|
+
transform: rotate(90deg);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.form-grid {
|
|
139
|
+
display: grid;
|
|
140
|
+
grid-template-columns: 1fr 1fr;
|
|
141
|
+
gap: 18px;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.field {
|
|
145
|
+
display: flex;
|
|
146
|
+
flex-direction: column;
|
|
147
|
+
gap: 7px;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.field.full {
|
|
151
|
+
grid-column: 1 / -1;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
label {
|
|
155
|
+
font-size: 13.5px;
|
|
156
|
+
font-weight: 600;
|
|
157
|
+
color: #334155;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.required {
|
|
161
|
+
color: #ef4444;
|
|
162
|
+
margin-right: 3px;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
input,
|
|
166
|
+
textarea {
|
|
167
|
+
width: 100%;
|
|
168
|
+
box-sizing: border-box;
|
|
169
|
+
border: 1px solid #d5dde7;
|
|
170
|
+
border-radius: 10px;
|
|
171
|
+
font-size: 14px;
|
|
172
|
+
padding: 12px 14px;
|
|
173
|
+
color: var(--np-text);
|
|
174
|
+
outline: none;
|
|
175
|
+
font-family: inherit;
|
|
176
|
+
background: #fbfcfe;
|
|
177
|
+
transition:
|
|
178
|
+
border-color 0.15s ease,
|
|
179
|
+
box-shadow 0.15s ease,
|
|
180
|
+
background 0.15s ease;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
textarea {
|
|
184
|
+
min-height: 120px;
|
|
185
|
+
resize: vertical;
|
|
186
|
+
line-height: 1.5;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
input::placeholder,
|
|
190
|
+
textarea::placeholder {
|
|
191
|
+
color: #94a3b8;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
input:hover,
|
|
195
|
+
textarea:hover {
|
|
196
|
+
border-color: #b6c2d1;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
input:focus,
|
|
200
|
+
textarea:focus {
|
|
201
|
+
border-color: var(--np-primary);
|
|
202
|
+
background: #ffffff;
|
|
203
|
+
box-shadow: 0 0 0 4px var(--np-primary-soft);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.input-wrap {
|
|
207
|
+
position: relative;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.input-wrap input,
|
|
211
|
+
.input-wrap textarea {
|
|
212
|
+
padding-right: 40px;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.btn-clear {
|
|
216
|
+
position: absolute;
|
|
217
|
+
right: 10px;
|
|
218
|
+
top: 50%;
|
|
219
|
+
transform: translateY(-50%);
|
|
220
|
+
width: 24px;
|
|
221
|
+
height: 24px;
|
|
222
|
+
border: none;
|
|
223
|
+
border-radius: 50%;
|
|
224
|
+
background: #e2e8f0;
|
|
225
|
+
color: #64748b;
|
|
226
|
+
font-size: 16px;
|
|
227
|
+
line-height: 1;
|
|
228
|
+
cursor: pointer;
|
|
229
|
+
display: flex;
|
|
230
|
+
align-items: center;
|
|
231
|
+
justify-content: center;
|
|
232
|
+
padding: 0;
|
|
233
|
+
opacity: 0;
|
|
234
|
+
pointer-events: none;
|
|
235
|
+
transition:
|
|
236
|
+
opacity 0.15s ease,
|
|
237
|
+
background 0.15s ease,
|
|
238
|
+
color 0.15s ease;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.input-wrap.has-value:hover .btn-clear,
|
|
242
|
+
.input-wrap.has-value:focus-within .btn-clear {
|
|
243
|
+
opacity: 1;
|
|
244
|
+
pointer-events: auto;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.btn-clear:hover {
|
|
248
|
+
background: #cbd5e1;
|
|
249
|
+
color: #0f172a;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.input-wrap--textarea .btn-clear {
|
|
253
|
+
top: 12px;
|
|
254
|
+
transform: none;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/* File upload styling */
|
|
258
|
+
.upload-zone {
|
|
259
|
+
display: flex;
|
|
260
|
+
align-items: center;
|
|
261
|
+
gap: 16px;
|
|
262
|
+
background: #f8fafc;
|
|
263
|
+
border: 1.5px dashed #cbd5e1;
|
|
264
|
+
padding: 16px 20px;
|
|
265
|
+
border-radius: 12px;
|
|
266
|
+
cursor: pointer;
|
|
267
|
+
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
268
|
+
user-select: none;
|
|
269
|
+
outline: none;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.upload-zone:hover {
|
|
273
|
+
background: var(--np-primary-soft);
|
|
274
|
+
border-color: var(--np-primary);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.upload-zone:focus-visible {
|
|
278
|
+
border-color: var(--np-primary);
|
|
279
|
+
box-shadow: 0 0 0 4px var(--np-primary-soft);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.upload-zone.dragover {
|
|
283
|
+
background: rgba(0, 60, 130, 0.08);
|
|
284
|
+
border-color: var(--np-primary);
|
|
285
|
+
transform: scale(1.005);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.upload-icon-wrapper {
|
|
289
|
+
display: flex;
|
|
290
|
+
align-items: center;
|
|
291
|
+
justify-content: center;
|
|
292
|
+
width: 40px;
|
|
293
|
+
height: 40px;
|
|
294
|
+
border-radius: 10px;
|
|
295
|
+
background: #ffffff;
|
|
296
|
+
border: 1px solid #e2e8f0;
|
|
297
|
+
color: #64748b;
|
|
298
|
+
box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04);
|
|
299
|
+
transition: all 0.2s ease;
|
|
300
|
+
flex-shrink: 0;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.upload-zone:hover .upload-icon-wrapper,
|
|
304
|
+
.upload-zone.dragover .upload-icon-wrapper {
|
|
305
|
+
color: var(--np-primary);
|
|
306
|
+
border-color: rgba(0, 60, 130, 0.15);
|
|
307
|
+
box-shadow: 0 4px 8px rgba(0, 60, 130, 0.08);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.upload-text-container {
|
|
311
|
+
display: flex;
|
|
312
|
+
flex-direction: column;
|
|
313
|
+
gap: 3px;
|
|
314
|
+
flex: 1;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.upload-main-text {
|
|
318
|
+
font-size: 13px;
|
|
319
|
+
font-weight: 600;
|
|
320
|
+
color: #334155;
|
|
321
|
+
transition: color 0.2s ease;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.upload-zone:hover .upload-main-text {
|
|
325
|
+
color: var(--np-primary);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
.upload-sub-text {
|
|
329
|
+
font-size: 11px;
|
|
330
|
+
color: #64748b;
|
|
331
|
+
line-height: 1.4;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.file-list {
|
|
335
|
+
margin-top: 14px;
|
|
336
|
+
display: grid;
|
|
337
|
+
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
|
|
338
|
+
gap: 12px;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.file-item {
|
|
342
|
+
position: relative;
|
|
343
|
+
display: flex;
|
|
344
|
+
flex-direction: column;
|
|
345
|
+
background: #ffffff;
|
|
346
|
+
border: 1px solid #e2e8f0;
|
|
347
|
+
border-radius: 12px;
|
|
348
|
+
font-size: 11px;
|
|
349
|
+
color: #475569;
|
|
350
|
+
box-shadow: 0 2px 5px rgba(15, 23, 42, 0.03);
|
|
351
|
+
animation: file-in 0.2s cubic-bezier(0.16, 1, 0.3, 1);
|
|
352
|
+
transition: all 0.2s ease;
|
|
353
|
+
overflow: hidden;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.file-item:hover {
|
|
357
|
+
border-color: #cbd5e1;
|
|
358
|
+
box-shadow: 0 4px 12px rgba(15, 23, 42, 0.08);
|
|
359
|
+
transform: translateY(-2px);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.file-preview-trigger {
|
|
363
|
+
border: none;
|
|
364
|
+
background: none;
|
|
365
|
+
padding: 0;
|
|
366
|
+
margin: 0;
|
|
367
|
+
cursor: pointer;
|
|
368
|
+
display: flex;
|
|
369
|
+
flex-direction: column;
|
|
370
|
+
width: 100%;
|
|
371
|
+
color: inherit;
|
|
372
|
+
font: inherit;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.file-thumb {
|
|
376
|
+
width: 100%;
|
|
377
|
+
aspect-ratio: 1 / 1;
|
|
378
|
+
display: flex;
|
|
379
|
+
align-items: center;
|
|
380
|
+
justify-content: center;
|
|
381
|
+
background: #f8fafc;
|
|
382
|
+
border-bottom: 1px solid #f1f5f9;
|
|
383
|
+
position: relative;
|
|
384
|
+
overflow: hidden;
|
|
385
|
+
transition: background 0.2s ease;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.file-thumb img {
|
|
389
|
+
width: 100%;
|
|
390
|
+
height: 100%;
|
|
391
|
+
object-fit: cover;
|
|
392
|
+
display: block;
|
|
393
|
+
transition: transform 0.25s ease;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
.file-item:hover .file-thumb img {
|
|
397
|
+
transform: scale(1.06);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.file-thumb--icon {
|
|
401
|
+
color: #64748b;
|
|
402
|
+
background: #f1f5f9;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.file-item:hover .file-thumb--icon {
|
|
406
|
+
background: #e2e8f0;
|
|
407
|
+
color: var(--np-primary);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
@keyframes file-in {
|
|
411
|
+
from {
|
|
412
|
+
opacity: 0;
|
|
413
|
+
transform: translateY(6px);
|
|
414
|
+
}
|
|
415
|
+
to {
|
|
416
|
+
opacity: 1;
|
|
417
|
+
transform: translateY(0);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
.file-info-container {
|
|
422
|
+
padding: 8px 6px;
|
|
423
|
+
display: flex;
|
|
424
|
+
align-items: center;
|
|
425
|
+
justify-content: center;
|
|
426
|
+
width: 100%;
|
|
427
|
+
box-sizing: border-box;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.file-item .file-name {
|
|
431
|
+
width: 100%;
|
|
432
|
+
overflow: hidden;
|
|
433
|
+
text-overflow: ellipsis;
|
|
434
|
+
white-space: nowrap;
|
|
435
|
+
line-height: 1.2;
|
|
436
|
+
color: #334155;
|
|
437
|
+
font-size: 11px;
|
|
438
|
+
font-weight: 500;
|
|
439
|
+
text-align: center;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
.file-badge {
|
|
443
|
+
position: absolute;
|
|
444
|
+
top: 6px;
|
|
445
|
+
left: 6px;
|
|
446
|
+
z-index: 2;
|
|
447
|
+
padding: 3px 6px;
|
|
448
|
+
border-radius: 6px;
|
|
449
|
+
font-size: 9px;
|
|
450
|
+
font-weight: 600;
|
|
451
|
+
line-height: 1;
|
|
452
|
+
color: #0369a1;
|
|
453
|
+
background: rgba(224, 242, 254, 0.9);
|
|
454
|
+
border: 1px solid rgba(186, 230, 253, 0.8);
|
|
455
|
+
backdrop-filter: blur(4px);
|
|
456
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.file-item .btn-remove {
|
|
460
|
+
position: absolute;
|
|
461
|
+
top: 6px;
|
|
462
|
+
right: 6px;
|
|
463
|
+
z-index: 2;
|
|
464
|
+
width: 20px;
|
|
465
|
+
height: 20px;
|
|
466
|
+
display: flex;
|
|
467
|
+
align-items: center;
|
|
468
|
+
justify-content: center;
|
|
469
|
+
background: rgba(255, 255, 255, 0.9);
|
|
470
|
+
border: 1px solid #e2e8f0;
|
|
471
|
+
border-radius: 50%;
|
|
472
|
+
color: #64748b;
|
|
473
|
+
cursor: pointer;
|
|
474
|
+
padding: 0;
|
|
475
|
+
box-shadow: 0 2px 4px rgba(15, 23, 42, 0.06);
|
|
476
|
+
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
477
|
+
backdrop-filter: blur(4px);
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.file-item .btn-remove svg {
|
|
481
|
+
width: 8px;
|
|
482
|
+
height: 8px;
|
|
483
|
+
stroke-width: 3px;
|
|
484
|
+
transition: transform 0.2s ease;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
.file-item .btn-remove:hover {
|
|
488
|
+
color: #ffffff;
|
|
489
|
+
background: #ef4444;
|
|
490
|
+
border-color: #ef4444;
|
|
491
|
+
transform: scale(1.1);
|
|
492
|
+
box-shadow: 0 3px 8px rgba(239, 68, 68, 0.25);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
.file-item .btn-remove:hover svg {
|
|
496
|
+
transform: rotate(90deg);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
/* File preview popup */
|
|
500
|
+
.preview-overlay {
|
|
501
|
+
position: fixed;
|
|
502
|
+
inset: 0;
|
|
503
|
+
z-index: 20;
|
|
504
|
+
display: none;
|
|
505
|
+
align-items: center;
|
|
506
|
+
justify-content: center;
|
|
507
|
+
padding: 24px;
|
|
508
|
+
background: rgba(15, 23, 42, 0.72);
|
|
509
|
+
backdrop-filter: blur(4px);
|
|
510
|
+
opacity: 0;
|
|
511
|
+
transition: opacity 0.2s ease-out;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
.preview-overlay.show {
|
|
515
|
+
display: flex;
|
|
516
|
+
opacity: 1;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
.preview-box {
|
|
520
|
+
position: relative;
|
|
521
|
+
max-width: min(720px, 100%);
|
|
522
|
+
max-height: calc(100vh - 96px);
|
|
523
|
+
background: #ffffff;
|
|
524
|
+
border-radius: 16px;
|
|
525
|
+
padding: 16px;
|
|
526
|
+
box-shadow: 0 24px 60px rgba(15, 23, 42, 0.35);
|
|
527
|
+
display: flex;
|
|
528
|
+
flex-direction: column;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.preview-close {
|
|
532
|
+
position: absolute;
|
|
533
|
+
top: -14px;
|
|
534
|
+
right: -14px;
|
|
535
|
+
width: 34px;
|
|
536
|
+
height: 34px;
|
|
537
|
+
border-radius: 50%;
|
|
538
|
+
border: none;
|
|
539
|
+
background: #ffffff;
|
|
540
|
+
color: #334155;
|
|
541
|
+
font-size: 22px;
|
|
542
|
+
line-height: 1;
|
|
543
|
+
cursor: pointer;
|
|
544
|
+
box-shadow: 0 4px 12px rgba(15, 23, 42, 0.25);
|
|
545
|
+
transition:
|
|
546
|
+
color 0.15s ease,
|
|
547
|
+
transform 0.15s ease;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
.preview-close:hover {
|
|
551
|
+
color: #ef4444;
|
|
552
|
+
transform: scale(1.05);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.preview-body {
|
|
556
|
+
overflow: auto;
|
|
557
|
+
display: flex;
|
|
558
|
+
align-items: center;
|
|
559
|
+
justify-content: center;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
.preview-body img {
|
|
563
|
+
max-width: 100%;
|
|
564
|
+
max-height: calc(100vh - 140px);
|
|
565
|
+
object-fit: contain;
|
|
566
|
+
border-radius: 8px;
|
|
567
|
+
display: block;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
.preview-file {
|
|
571
|
+
display: flex;
|
|
572
|
+
flex-direction: column;
|
|
573
|
+
align-items: center;
|
|
574
|
+
gap: 12px;
|
|
575
|
+
padding: 32px 40px;
|
|
576
|
+
text-align: center;
|
|
577
|
+
color: var(--np-text);
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
.preview-file svg {
|
|
581
|
+
color: var(--np-primary);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
.preview-file .preview-file-name {
|
|
585
|
+
font-size: 14px;
|
|
586
|
+
font-weight: 600;
|
|
587
|
+
word-break: break-all;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
.preview-file a {
|
|
591
|
+
color: var(--np-primary);
|
|
592
|
+
font-size: 13px;
|
|
593
|
+
font-weight: 600;
|
|
594
|
+
text-decoration: none;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.preview-file a:hover {
|
|
598
|
+
text-decoration: underline;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
.actions {
|
|
602
|
+
margin-top: 28px;
|
|
603
|
+
display: flex;
|
|
604
|
+
justify-content: flex-end;
|
|
605
|
+
gap: 12px;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
.btn {
|
|
609
|
+
border-radius: 10px;
|
|
610
|
+
padding: 12px 26px;
|
|
611
|
+
font-size: 15px;
|
|
612
|
+
font-weight: 600;
|
|
613
|
+
font-family: inherit;
|
|
614
|
+
cursor: pointer;
|
|
615
|
+
transition: all 0.18s ease;
|
|
616
|
+
min-width: 120px;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
.btn:active {
|
|
620
|
+
transform: translateY(1px);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
.btn-secondary {
|
|
624
|
+
background: #ffffff;
|
|
625
|
+
border: 1px solid #d5dde7;
|
|
626
|
+
color: #334155;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.btn-secondary:hover {
|
|
630
|
+
background: #f1f5f9;
|
|
631
|
+
border-color: #b6c2d1;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
.btn-primary {
|
|
635
|
+
background: linear-gradient(
|
|
636
|
+
135deg,
|
|
637
|
+
var(--np-primary),
|
|
638
|
+
var(--np-primary-dark)
|
|
639
|
+
);
|
|
640
|
+
border: 1px solid var(--np-primary-dark);
|
|
641
|
+
color: #ffffff;
|
|
642
|
+
box-shadow: 0 6px 16px rgba(0, 60, 130, 0.28);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
.btn-primary:hover {
|
|
646
|
+
box-shadow: 0 8px 22px rgba(0, 60, 130, 0.38);
|
|
647
|
+
filter: brightness(1.06);
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
@media (max-width: 480px) {
|
|
651
|
+
.dialog {
|
|
652
|
+
padding: 24px 20px 24px;
|
|
653
|
+
border-radius: 16px;
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
.form-grid {
|
|
657
|
+
grid-template-columns: 1fr;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
.actions {
|
|
661
|
+
justify-content: stretch;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
.actions .btn {
|
|
665
|
+
flex: 1;
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
`;var X=`<button
|
|
669
|
+
id="open-btn"
|
|
670
|
+
class="launcher"
|
|
671
|
+
type="button"
|
|
672
|
+
aria-label="Open support form"
|
|
673
|
+
></button>
|
|
674
|
+
|
|
675
|
+
<div id="modal" class="modal">
|
|
676
|
+
<div
|
|
677
|
+
class="dialog"
|
|
678
|
+
role="dialog"
|
|
679
|
+
aria-modal="true"
|
|
680
|
+
aria-label="Support request form"
|
|
681
|
+
>
|
|
682
|
+
<div class="header">
|
|
683
|
+
<h3 class="title">T\u1EA1o y\xEAu c\u1EA7u</h3>
|
|
684
|
+
<button id="close-btn" class="close-btn" type="button" aria-label="Close">
|
|
685
|
+
\xD7
|
|
686
|
+
</button>
|
|
687
|
+
</div>
|
|
688
|
+
|
|
689
|
+
<div class="form-grid">
|
|
690
|
+
<div class="field">
|
|
691
|
+
<label for="requester"><span class="required">*</span> H\u1ECD v\xE0 t\xEAn</label>
|
|
692
|
+
<div class="input-wrap">
|
|
693
|
+
<input id="requester" type="text" placeholder="H\u1ECD v\xE0 t\xEAn" />
|
|
694
|
+
<button type="button" class="btn-clear" aria-label="X\xF3a">\xD7</button>
|
|
695
|
+
</div>
|
|
696
|
+
</div>
|
|
697
|
+
|
|
698
|
+
<div class="field">
|
|
699
|
+
<label for="phone-number"
|
|
700
|
+
><span class="required">*</span> S\u1ED1 \u0111i\u1EC7n tho\u1EA1i</label
|
|
701
|
+
>
|
|
702
|
+
<div class="input-wrap">
|
|
703
|
+
<input id="phone-number" type="text" placeholder="S\u1ED1 \u0111i\u1EC7n tho\u1EA1i" />
|
|
704
|
+
<button type="button" class="btn-clear" aria-label="X\xF3a">\xD7</button>
|
|
705
|
+
</div>
|
|
706
|
+
</div>
|
|
707
|
+
|
|
708
|
+
<div class="field full">
|
|
709
|
+
<label for="email"><span class="required">*</span> Email</label>
|
|
710
|
+
<div class="input-wrap">
|
|
711
|
+
<input id="email" type="email" placeholder="Email" />
|
|
712
|
+
<button type="button" class="btn-clear" aria-label="X\xF3a">\xD7</button>
|
|
713
|
+
</div>
|
|
714
|
+
</div>
|
|
715
|
+
|
|
716
|
+
<div class="field full">
|
|
717
|
+
<label for="content"><span class="required">*</span> N\u1ED9i dung</label>
|
|
718
|
+
<div class="input-wrap input-wrap--textarea">
|
|
719
|
+
<textarea
|
|
720
|
+
id="content"
|
|
721
|
+
placeholder="Anh/Ch\u1ECB vui l\xF2ng nh\u1EADp th\xF4ng tin c\u1EA7n h\u1ED7 tr\u1EE3"
|
|
722
|
+
></textarea>
|
|
723
|
+
<button type="button" class="btn-clear" aria-label="X\xF3a">\xD7</button>
|
|
724
|
+
</div>
|
|
725
|
+
</div>
|
|
726
|
+
|
|
727
|
+
<div class="field full">
|
|
728
|
+
<label>File \u0111\xEDnh k\xE8m</label>
|
|
729
|
+
<div id="upload-trigger" class="upload-zone" role="button" tabindex="0" aria-label="T\u1EA3i l\xEAn t\u1EC7p">
|
|
730
|
+
<input id="file-input" type="file" multiple style="display: none" />
|
|
731
|
+
<div class="upload-icon-wrapper">
|
|
732
|
+
<svg
|
|
733
|
+
class="upload-icon"
|
|
734
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
735
|
+
width="20"
|
|
736
|
+
height="20"
|
|
737
|
+
viewBox="0 0 24 24"
|
|
738
|
+
fill="none"
|
|
739
|
+
stroke="currentColor"
|
|
740
|
+
stroke-width="2.2"
|
|
741
|
+
stroke-linecap="round"
|
|
742
|
+
stroke-linejoin="round"
|
|
743
|
+
>
|
|
744
|
+
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
|
|
745
|
+
<polyline points="17 8 12 3 7 8"></polyline>
|
|
746
|
+
<line x1="12" y1="3" x2="12" y2="15"></line>
|
|
747
|
+
</svg>
|
|
748
|
+
</div>
|
|
749
|
+
<div class="upload-text-container">
|
|
750
|
+
<span class="upload-main-text">Ch\u1ECDn t\u1EC7p t\u1EA3i l\xEAn ho\u1EB7c k\xE9o th\u1EA3 v\xE0o \u0111\xE2y</span>
|
|
751
|
+
<span class="upload-sub-text">H\u1ED7 tr\u1EE3 d\xE1n \u1EA3nh ho\u1EB7c t\u1EC7p (Ctrl+V / Cmd+V) \u0111\u1EC3 \u0111\xEDnh k\xE8m nhanh</span>
|
|
752
|
+
</div>
|
|
753
|
+
</div>
|
|
754
|
+
<div id="file-list" class="file-list"></div>
|
|
755
|
+
</div>
|
|
756
|
+
</div>
|
|
757
|
+
|
|
758
|
+
<div id="preview-overlay" class="preview-overlay">
|
|
759
|
+
<div
|
|
760
|
+
class="preview-box"
|
|
761
|
+
role="dialog"
|
|
762
|
+
aria-modal="true"
|
|
763
|
+
aria-label="Xem tr\u01B0\u1EDBc t\u1EC7p"
|
|
764
|
+
>
|
|
765
|
+
<button
|
|
766
|
+
id="preview-close"
|
|
767
|
+
class="preview-close"
|
|
768
|
+
type="button"
|
|
769
|
+
aria-label="\u0110\xF3ng"
|
|
770
|
+
>
|
|
771
|
+
\xD7
|
|
772
|
+
</button>
|
|
773
|
+
<div id="preview-body" class="preview-body"></div>
|
|
774
|
+
</div>
|
|
775
|
+
</div>
|
|
776
|
+
|
|
777
|
+
<div class="actions">
|
|
778
|
+
<button id="cancel-btn" class="btn btn-secondary" type="button">
|
|
779
|
+
H\u1EE7y
|
|
780
|
+
</button>
|
|
781
|
+
<button id="submit-btn" class="btn btn-primary" type="button">
|
|
782
|
+
T\u1EA1o y\xEAu c\u1EA7u
|
|
783
|
+
</button>
|
|
784
|
+
</div>
|
|
785
|
+
</div>
|
|
786
|
+
</div>
|
|
787
|
+
`;var m=null;function B(){return m||(m=document.createElement("template"),m.innerHTML=`<style>${L}</style>${X}`),m}async function D(o){try{let a=await fetch(o);if(!a.ok)return null;let e=await a.blob(),t=o.substring(o.lastIndexOf("/")+1)||"attachment";return new File([e],t,{type:e.type})}catch(a){return console.warn("Failed to fetch prefilled attachment",o,a),null}}var f=class extends HTMLElement{constructor(){super();this.config={projectId:""};this.dragOccurred=!1;this.selectedFiles=[];this.prefilledAttachments=[];this.previewUrls=[];this.priority=0;this.coordinators=[];this.emailContacts=[];this.handleResize=()=>{if(this.style.left&&this.style.top){let e=parseFloat(this.style.left),t=parseFloat(this.style.top);this.adjustPosition(e,t)}};this.attachShadow({mode:"open"}).appendChild(B().content.cloneNode(!0)),this.bindActions()}connectedCallback(){this.syncConfigFromAttributes(),this.prefillFromState(),this.applyLauncherStyle(),this.restorePosition(),window.addEventListener("resize",this.handleResize)}disconnectedCallback(){window.removeEventListener("resize",this.handleResize)}attributeChangedCallback(){this.syncConfigFromAttributes(),this.prefillFromState(),this.applyLauncherStyle()}setUser(e){this.user=e,this.prefillFromState()}setFormPrefill(e){this.setInputValue("content",e.content??""),this.prefilledAttachments=e.attachments??[],this.priority=e.priority??0,this.coordinators=e.coordinators??[],this.emailContacts=e.emailContacts??[],this.renderFileList()}open(){this.shadowRoot?.getElementById("modal")?.classList.add("show"),this.dispatchEvent(new CustomEvent(u.OPEN,{bubbles:!0}))}close(){this.shadowRoot?.getElementById("modal")?.classList.remove("show"),this.dispatchEvent(new CustomEvent(u.CLOSE,{bubbles:!0}))}syncConfigFromAttributes(){this.config={projectId:this.getAttribute("project-id")??"",isDev:this.hasAttribute("is-dev")}}bindActions(){let e=this.shadowRoot;if(!e)return;let t=e.getElementById("open-btn");t&&(t.addEventListener("click",()=>{if(this.dragOccurred){this.dragOccurred=!1;return}this.open()}),this.setupDrag(t)),e.getElementById("close-btn")?.addEventListener("click",()=>this.close()),e.getElementById("cancel-btn")?.addEventListener("click",()=>this.close()),e.getElementById("submit-btn")?.addEventListener("click",()=>{this.submit()}),this.setupClearableInputs();let i=e.getElementById("upload-trigger"),r=e.getElementById("file-input");i&&r&&(i.addEventListener("click",()=>{r.click()}),i.addEventListener("keydown",n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),r.click())}),i.addEventListener("dragover",n=>{n.preventDefault(),n.dataTransfer&&(n.dataTransfer.dropEffect="copy"),i.classList.add("dragover")}),i.addEventListener("dragleave",()=>{i.classList.remove("dragover")}),i.addEventListener("drop",n=>{n.preventDefault(),i.classList.remove("dragover"),n.dataTransfer?.files&&n.dataTransfer.files.length>0&&this.addSelectedFiles(Array.from(n.dataTransfer.files))}),r.addEventListener("change",()=>{r.files&&(this.addSelectedFiles(Array.from(r.files)),r.value="")})),this.setupClipboardPaste(),this.setupPreviewControls()}setupPreviewControls(){let e=this.shadowRoot;if(!e)return;let t=e.getElementById("preview-overlay");e.getElementById("preview-close")?.addEventListener("click",()=>this.closePreview()),t?.addEventListener("click",i=>{i.target===t&&this.closePreview()}),e.addEventListener("keydown",i=>{i.key==="Escape"&&this.closePreview()})}setupClipboardPaste(){let e=this.shadowRoot?.querySelector(".dialog");e&&e.addEventListener("paste",t=>{let i=t.clipboardData;if(!i)return;let r=Array.from(i.items).filter(n=>n.kind==="file").map(n=>n.getAsFile()).filter(n=>n!==null);r.length!==0&&(t.preventDefault(),this.addSelectedFiles(r))})}addSelectedFiles(e){e.length!==0&&(this.selectedFiles.push(...e),this.renderFileList())}renderFileList(){let e=this.shadowRoot?.getElementById("file-list");e&&(e.innerHTML="",this.previewUrls.forEach(t=>URL.revokeObjectURL(t)),this.previewUrls=[],this.prefilledAttachments.forEach((t,i)=>{let r=t.substring(t.lastIndexOf("/")+1)||t,n=this.isImageName(r),l=n?t:null;e.appendChild(this.buildFileItem({name:r,title:t,previewUrl:l,type:"prefilled",index:i,isImage:n,openUrl:t,badge:"\u0110\xE3 g\xE1n"}))}),this.selectedFiles.forEach((t,i)=>{let r=null,n=t.type.startsWith("image/");n&&(r=URL.createObjectURL(t),this.previewUrls.push(r)),e.appendChild(this.buildFileItem({name:t.name,title:t.name,previewUrl:r,type:"selected",index:i,isImage:n,openUrl:null,badge:null}))}),e.querySelectorAll(".btn-remove").forEach(t=>{t.addEventListener("click",i=>{let r=i.currentTarget,n=r.getAttribute("data-type"),l=parseInt(r.getAttribute("data-index")||"0",10);n==="prefilled"?this.prefilledAttachments.splice(l,1):this.selectedFiles.splice(l,1),this.renderFileList()})}))}buildFileItem(e){let t=document.createElement("div");t.className="file-item";let i=document.createElement("button");i.type="button",i.className="file-preview-trigger",i.title="Nh\u1EA5n \u0111\u1EC3 xem tr\u01B0\u1EDBc",i.addEventListener("click",()=>{this.openPreview({name:e.title,previewUrl:e.previewUrl,isImage:e.isImage,openUrl:e.openUrl})});let r=document.createElement("div");if(r.className="file-thumb",e.previewUrl){let p=document.createElement("img");p.src=e.previewUrl,p.alt=e.name,p.addEventListener("error",()=>this.fillWithFileIcon(r)),r.appendChild(p)}else this.fillWithFileIcon(r);let n=document.createElement("div");n.className="file-info-container";let l=document.createElement("span");l.className="file-name",l.title=e.title,l.textContent=e.name,n.appendChild(l),i.append(r,n);let s=document.createElement("button");if(s.type="button",s.className="btn-remove",s.setAttribute("aria-label","X\xF3a t\u1EC7p"),s.setAttribute("data-type",e.type),s.setAttribute("data-index",String(e.index)),s.innerHTML=`
|
|
788
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
|
|
789
|
+
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
790
|
+
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
791
|
+
</svg>
|
|
792
|
+
`,t.append(i,s),e.badge){let p=document.createElement("span");p.className="file-badge",p.textContent=e.badge,t.appendChild(p)}return t}fillWithFileIcon(e){e.innerHTML="",e.classList.add("file-thumb--icon"),e.innerHTML=`
|
|
793
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
794
|
+
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
|
|
795
|
+
<polyline points="14 2 14 8 20 8"></polyline>
|
|
796
|
+
</svg>`}openPreview(e){let t=this.shadowRoot?.getElementById("preview-overlay"),i=this.shadowRoot?.getElementById("preview-body");if(!(!t||!i)){if(i.innerHTML="",e.isImage&&e.previewUrl){let r=document.createElement("img");r.src=e.previewUrl,r.alt=e.name,i.appendChild(r)}else{let r=document.createElement("div");r.className="preview-file";let n=e.openUrl?`<a href="${e.openUrl}" target="_blank" rel="noopener noreferrer">M\u1EDF trong tab m\u1EDBi</a>`:"<span>Kh\xF4ng c\xF3 b\u1EA3n xem tr\u01B0\u1EDBc cho t\u1EC7p n\xE0y</span>";r.innerHTML=`
|
|
797
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="56" height="56" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
|
798
|
+
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
|
|
799
|
+
<polyline points="14 2 14 8 20 8"></polyline>
|
|
800
|
+
</svg>
|
|
801
|
+
<span class="preview-file-name"></span>
|
|
802
|
+
${n}`;let l=r.querySelector(".preview-file-name");l&&(l.textContent=e.name),i.appendChild(r)}t.classList.add("show")}}closePreview(){let e=this.shadowRoot?.getElementById("preview-overlay");if(!e)return;e.classList.remove("show");let t=this.shadowRoot?.getElementById("preview-body");t&&(t.innerHTML="")}isImageName(e){return/\.(png|jpe?g|gif|webp|bmp|svg|avif)$/i.test(e)}prefillFromState(){this.setInputValue("requester",this.user?.name??""),this.setInputValue("email",this.user?.email??""),this.setInputValue("phone-number",this.user?.phoneNumber??"")}applyLauncherStyle(){let e=this.shadowRoot?.getElementById("open-btn");if(!e)return;let t=[`--np-hub-icon: url("${I}")`],i=this.normalizeSize(this.getAttribute("width")),r=this.normalizeSize(this.getAttribute("height"));i&&t.push(`--np-hub-width: ${i}`),r&&t.push(`--np-hub-height: ${r}`),e.setAttribute("style",`${t.join("; ")};`)}normalizeSize(e){let t=e?.trim();return t?/^\d+(\.\d+)?$/.test(t)?`${t}px`:t:null}setupClearableInputs(){let e=this.shadowRoot;e&&e.querySelectorAll(".input-wrap").forEach(t=>{let i=t.querySelector("input, textarea"),r=t.querySelector(".btn-clear");if(!i||!r)return;let n=()=>this.updateClearButton(i);i.addEventListener("input",n),r.addEventListener("click",()=>{i.value="",i.focus(),n()}),n()})}updateClearButton(e){let t=e.parentElement;t?.classList.contains("input-wrap")&&t.classList.toggle("has-value",e.value.length>0)}setInputValue(e,t){let i=this.shadowRoot?.getElementById(e);i&&(i.value=t,this.updateClearButton(i))}getInputValue(e){return this.shadowRoot?.getElementById(e)?.value?.trim()??""}async submit(){try{let e={name:this.getInputValue("requester"),email:this.getInputValue("email"),phoneNumber:this.getInputValue("phone-number")};this.user=e,x(this.config),w(e);let t=this.getInputValue("content"),i={content:t,attachments:[],priority:this.priority,coordinators:this.coordinators,emailContacts:this.emailContacts};y(i);let r=new FormData;r.append("Requester",e.name),r.append("PhoneNumber",e.phoneNumber),r.append("Email",e.email),r.append("Content",t),r.append("ProjectId",this.config.projectId),r.append("Priority",String(this.priority));for(let s of this.prefilledAttachments){let p=await D(s);p&&r.append("Attachments",p)}for(let s of this.selectedFiles)r.append("Attachments",s);this.coordinators.forEach(s=>r.append("Coordinators",s)),this.emailContacts.forEach(s=>r.append("EmailContacts",s));let n=v(this.config),l=await k(n,r);this.dispatchEvent(new CustomEvent(u.SUBMIT_SUCCESS,{bubbles:!0,detail:l})),this.close()}catch(e){let t=e instanceof Error?e.message:"Unknown error";this.dispatchEvent(new CustomEvent(u.SUBMIT_ERROR,{bubbles:!0,detail:{message:t}}))}}setupDrag(e){e.addEventListener("pointerdown",t=>{if(t.button!==0)return;this.dragOccurred=!1;let i=this.getBoundingClientRect(),r=t.clientX,n=t.clientY,l=i.left,s=i.top;try{e.setPointerCapture(t.pointerId)}catch{}let p=c=>{let h=c.clientX-r,g=c.clientY-n;if(!this.dragOccurred&&(Math.abs(h)>4||Math.abs(g)>4)&&(this.dragOccurred=!0,e.style.cursor="grabbing"),this.dragOccurred){let T=l+h,S=s+g;this.adjustPosition(T,S)}},d=c=>{try{e.releasePointerCapture(c.pointerId)}catch{}e.removeEventListener("pointermove",p),e.removeEventListener("pointerup",d),e.removeEventListener("pointercancel",d),e.style.cursor="",this.dragOccurred&&localStorage.setItem("np-hub-widget-position",JSON.stringify({left:this.style.left,top:this.style.top}))};e.addEventListener("pointermove",p),e.addEventListener("pointerup",d),e.addEventListener("pointercancel",d)})}adjustPosition(e,t){let i=this.getBoundingClientRect(),r=i.width||72,n=i.height||72,l=0,s=window.innerWidth-r,p=0,d=window.innerHeight-n,c=Math.max(l,Math.min(s,e)),h=Math.max(p,Math.min(d,t));this.style.right="auto",this.style.bottom="auto",this.style.left=`${c}px`,this.style.top=`${h}px`}restorePosition(){let e=localStorage.getItem("np-hub-widget-position");if(e)try{let{left:t,top:i}=JSON.parse(e);if(t&&i){let r=parseFloat(t),n=parseFloat(i);this.adjustPosition(r,n)}}catch{}}};f.observedAttributes=["project-id","is-dev","width","height"];var C="np-hub";function z(){customElements.get(C)||customElements.define(C,f)}z();return j(J);})();
|