@quoreadmin/ui 1.7.6 → 1.7.8
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/dist/index.css +1 -1
- package/dist/index115.js +24 -18
- package/dist/index140.js +374 -352
- package/dist/index142.js +10 -5
- package/dist/index171.js +14 -14
- package/dist/index172.js +3 -3
- package/dist/index175.js +4 -4
- package/dist/index182.js +10 -10
- package/dist/index184.js +10 -10
- package/dist/index190.js +9 -9
- package/dist/index191.js +1 -1
- package/dist/index192.js +1 -1
- package/dist/index193.js +1 -1
- package/dist/index20.js +26 -19
- package/dist/index201.js +4 -4
- package/dist/index202.js +84 -29
- package/dist/index203.js +400 -109
- package/dist/index204.js +22 -36
- package/dist/index205.js +161 -26
- package/dist/index206.js +225 -33
- package/dist/index207.js +37 -9
- package/dist/index208.js +10 -19
- package/dist/index209.js +33 -10
- package/dist/index210.js +116 -10
- package/dist/index211.js +35 -50
- package/dist/index212.js +26 -43
- package/dist/index213.js +35 -3
- package/dist/index214.js +9 -39
- package/dist/index215.js +19 -21
- package/dist/index216.js +10 -88
- package/dist/index217.js +9 -406
- package/dist/index218.js +51 -22
- package/dist/index219.js +39 -157
- package/dist/index220.js +3 -19
- package/dist/index221.js +38 -19
- package/dist/index222.js +21 -22
- package/dist/index223.js +113 -185
- package/dist/index224.js +25 -57
- package/dist/index225.js +77 -31
- package/dist/index226.js +19 -39
- package/dist/index227.js +19 -126
- package/dist/index228.js +16 -34
- package/dist/index229.js +20 -80
- package/dist/index230.js +10 -10
- package/dist/index231.js +160 -19
- package/dist/index232.js +10 -10
- package/dist/index233.js +15 -13
- package/dist/index234.js +194 -156
- package/dist/index235.js +66 -224
- package/dist/index236.js +34 -37
- package/dist/index237.js +39 -9
- package/dist/index241.js +8 -8
- package/dist/index242.js +2 -2
- package/dist/index248.js +2 -2
- package/dist/index249.js +2 -2
- package/dist/index250.js +8 -8
- package/dist/index259.js +6 -6
- package/dist/index260.js +1 -1
- package/dist/index261.js +1 -1
- package/dist/index274.js +2 -2
- package/dist/index279.js +2 -54
- package/dist/index280.js +1 -1
- package/dist/index281.js +3 -26
- package/dist/index282.js +26 -21
- package/dist/index283.js +53 -21
- package/dist/index284.js +26 -16
- package/dist/index285.js +22 -17
- package/dist/index286.js +21 -22
- package/dist/index287.js +16 -2
- package/dist/index288.js +17 -3
- package/dist/index289.js +23 -27
- package/dist/index290.js +1518 -79
- package/dist/index291.js +386 -22
- package/dist/index292.js +2698 -902
- package/dist/index293.js +85 -21
- package/dist/index294.js +3770 -20
- package/dist/index295.js +59 -19
- package/dist/index296.js +15 -69
- package/dist/index297.js +84 -19
- package/dist/index298.js +201 -18
- package/dist/index299.js +246 -22
- package/dist/index300.js +78 -21
- package/dist/index301.js +22 -63
- package/dist/index302.js +909 -1492
- package/dist/index303.js +22 -386
- package/dist/index304.js +20 -2731
- package/dist/index305.js +19 -85
- package/dist/index306.js +58 -3759
- package/dist/index307.js +19 -60
- package/dist/index308.js +19 -15
- package/dist/index309.js +21 -83
- package/dist/index31.js +34 -27
- package/dist/index310.js +22 -202
- package/dist/index311.js +63 -246
- package/dist/index332.js +1 -1
- package/dist/index337.js +1 -1
- package/dist/index342.js +2 -2
- package/dist/index347.js +1 -1
- package/dist/index348.js +2 -2
- package/dist/index355.js +2 -2
- package/dist/index369.js +100 -16
- package/dist/index370.js +90 -100
- package/dist/index371.js +98 -91
- package/dist/index372.js +16 -97
- package/dist/index43.js +535 -501
- package/dist/index44.js +100 -84
- package/dist/index95.js +23 -15
- package/dist/src/components/data-filter/data-filter.d.ts +10 -0
- package/dist/src/components/data-list/data-list.d.ts +10 -0
- package/dist/src/components/date-picker/date-picker.d.ts +10 -0
- package/dist/src/components/date-picker/date-picker.stories.d.ts +20 -0
- package/dist/src/components/form-group/form-group.stories.d.ts +10 -0
- package/dist/src/components/grid/grid.stories.d.ts +28 -0
- package/dist/src/components/input/input.d.ts +10 -0
- package/dist/src/components/input/input.stories.d.ts +40 -0
- package/dist/src/components/list/list.stories.d.ts +9 -0
- package/dist/src/components/modal/modal.stories.d.ts +9 -0
- package/dist/src/components/room-details-popover/room-details-popover.d.ts +24 -7
- package/dist/src/components/select/select.d.ts +9 -0
- package/dist/src/components/select/select.stories.d.ts +27 -0
- package/dist/src/views/lists.vue.d.ts +20 -0
- package/dist/src/views/tables.vue.d.ts +10 -0
- package/package.json +1 -1
package/dist/index140.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { defineComponent as mt, ref as i, computed as y, watch as B, onMounted as vt, onUnmounted as pt } from "vue";
|
|
2
2
|
import { useI18n as ft } from "vue-i18n";
|
|
3
|
-
import { DateTime as
|
|
3
|
+
import { DateTime as w } from "./index163.js";
|
|
4
4
|
import "./index186.js";
|
|
5
5
|
import ht from "./index2.js";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
6
|
+
import gt from "./index3.js";
|
|
7
|
+
import yt from "./index4.js";
|
|
8
8
|
import _t from "./index21.js";
|
|
9
9
|
import wt from "./index28.js";
|
|
10
10
|
import It from "./index39.js";
|
|
@@ -17,8 +17,8 @@ const Gt = mt({
|
|
|
17
17
|
name: "QRoomDetailsPopover",
|
|
18
18
|
components: {
|
|
19
19
|
QAccordion: ht,
|
|
20
|
-
QActivityItem:
|
|
21
|
-
QAvatar:
|
|
20
|
+
QActivityItem: gt,
|
|
21
|
+
QAvatar: yt,
|
|
22
22
|
QDatePicker: Dt,
|
|
23
23
|
QDivider: _t,
|
|
24
24
|
QIcon: wt,
|
|
@@ -145,24 +145,21 @@ const Gt = mt({
|
|
|
145
145
|
}
|
|
146
146
|
},
|
|
147
147
|
emits: ["create:callback", "create:todo", "refresh:pms", "show:toast", "toggle"],
|
|
148
|
-
setup(
|
|
149
|
-
const { t:
|
|
148
|
+
setup(o, { emit: h }) {
|
|
149
|
+
const { t: u } = ft(), r = i(null), ie = i(!1), ue = i("left"), X = i([
|
|
150
150
|
{
|
|
151
151
|
id: 1,
|
|
152
|
-
label:
|
|
153
|
-
// need to localize
|
|
152
|
+
label: u("HC_DEPARTMENT")
|
|
154
153
|
},
|
|
155
154
|
{
|
|
156
155
|
id: 2,
|
|
157
|
-
label:
|
|
158
|
-
// need to localize
|
|
156
|
+
label: u("HC_PERSON")
|
|
159
157
|
},
|
|
160
158
|
{
|
|
161
159
|
id: 0,
|
|
162
|
-
label:
|
|
163
|
-
// need to localize
|
|
160
|
+
label: u("HC_ANYONE")
|
|
164
161
|
}
|
|
165
|
-
]),
|
|
162
|
+
]), b = i(""), p = i({
|
|
166
163
|
checkInDate: /* @__PURE__ */ new Date(),
|
|
167
164
|
checkOutDate: /* @__PURE__ */ new Date(),
|
|
168
165
|
guestEmail: "",
|
|
@@ -174,15 +171,19 @@ const Gt = mt({
|
|
|
174
171
|
problem: null,
|
|
175
172
|
notes: "",
|
|
176
173
|
tokenId: r.value?.tokenId
|
|
177
|
-
}), G = i(250),
|
|
174
|
+
}), G = i(250), U = i(290), M = i([]), Ie = i([]), Z = i(!0), ee = i(!0), N = i({
|
|
178
175
|
info: !0,
|
|
179
176
|
tickets: !0,
|
|
180
177
|
comments: !0
|
|
181
|
-
}), te = i(!0),
|
|
178
|
+
}), te = i(!0), Ce = i(o.guestDetails), O = i([]), g = i({
|
|
179
|
+
actionItems: !1,
|
|
180
|
+
conversationToggle: !1,
|
|
181
|
+
messages: !1,
|
|
182
182
|
pms: !1,
|
|
183
183
|
roomNotices: !1,
|
|
184
|
+
sendingMessage: !1,
|
|
184
185
|
tickets: !1
|
|
185
|
-
}), C = i([]), ce = i([]), de = i("bottom"), R = i(null), H = i(!1),
|
|
186
|
+
}), C = i([]), ce = i([]), de = i("bottom"), R = i(null), H = i(!1), W = i(!1), j = i(""), me = i(!1), A = i(!1), k = i(null), $ = i(null), Me = 3e4, d = i({
|
|
186
187
|
assignType: null,
|
|
187
188
|
department: null,
|
|
188
189
|
due: /* @__PURE__ */ new Date(),
|
|
@@ -195,34 +196,32 @@ const Gt = mt({
|
|
|
195
196
|
}), Q = i([
|
|
196
197
|
{
|
|
197
198
|
id: 0,
|
|
198
|
-
label:
|
|
199
|
-
// need to localize
|
|
199
|
+
label: u("HC_STAFF_MEMBER")
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
202
|
id: 1,
|
|
203
|
-
label:
|
|
204
|
-
// need to localize
|
|
203
|
+
label: u("HC_HOTEL_GUEST")
|
|
205
204
|
}
|
|
206
|
-
]),
|
|
205
|
+
]), ve = i(!1), E = i(null), I = i({
|
|
207
206
|
endDate: /* @__PURE__ */ new Date(),
|
|
208
207
|
issue: null,
|
|
209
208
|
notes: "",
|
|
210
209
|
startDate: /* @__PURE__ */ new Date()
|
|
211
|
-
}), ae = i([]),
|
|
210
|
+
}), ae = i([]), se = i(!1), S = i([]), L = i([]), Ne = i([
|
|
212
211
|
{
|
|
213
|
-
label:
|
|
212
|
+
label: u("HC_COMPLAINT"),
|
|
214
213
|
id: "complaint"
|
|
215
214
|
},
|
|
216
215
|
{
|
|
217
|
-
label:
|
|
216
|
+
label: u("HC_REQUEST"),
|
|
218
217
|
id: "request"
|
|
219
218
|
},
|
|
220
219
|
{
|
|
221
|
-
label:
|
|
220
|
+
label: u("HC_ROOM_NOTICE"),
|
|
222
221
|
id: "room_notice"
|
|
223
222
|
},
|
|
224
223
|
{
|
|
225
|
-
label:
|
|
224
|
+
label: u("HC_WORK_ORDER"),
|
|
226
225
|
id: "work_order"
|
|
227
226
|
}
|
|
228
227
|
]), J = i(), P = i(null), v = i({
|
|
@@ -234,7 +233,7 @@ const Gt = mt({
|
|
|
234
233
|
notes: "",
|
|
235
234
|
person: null,
|
|
236
235
|
requestedBy: null
|
|
237
|
-
}),
|
|
236
|
+
}), pe = i([]), q = i([]), x = i([]), fe = y(() => {
|
|
238
237
|
switch (r.value.cleaning?.name || r.value.cleaningStatus) {
|
|
239
238
|
case "CLEAN":
|
|
240
239
|
case "INSPECTED":
|
|
@@ -247,46 +246,46 @@ const Gt = mt({
|
|
|
247
246
|
default:
|
|
248
247
|
return "";
|
|
249
248
|
}
|
|
250
|
-
}), Re = y(() =>
|
|
249
|
+
}), Re = y(() => fe.value === "CLEAN" ? "blue-10" : fe.value === "DIRTY" ? "red-10" : "gray-30"), He = y(() => {
|
|
251
250
|
const e = r.value.cleaning?.name || r.value.cleaningStatus;
|
|
252
|
-
return e ?
|
|
251
|
+
return e ? u(`HC_${e}`) : "";
|
|
253
252
|
}), Le = y(() => {
|
|
254
|
-
const e =
|
|
255
|
-
return
|
|
253
|
+
const e = b.value.toLowerCase();
|
|
254
|
+
return o.quickReplies.filter((t) => t.toLowerCase().match(e));
|
|
256
255
|
}), Pe = y(() => {
|
|
257
256
|
if (!C.value.length) return [];
|
|
258
257
|
const e = [];
|
|
259
|
-
let
|
|
260
|
-
return C.value.forEach((
|
|
261
|
-
const
|
|
262
|
-
|
|
258
|
+
let t = null;
|
|
259
|
+
return C.value.forEach((a) => {
|
|
260
|
+
const s = w.fromFormat(
|
|
261
|
+
a.dateUtc,
|
|
263
262
|
"yyyy-MM-dd HH:mm:ss",
|
|
264
263
|
{ zone: "utc" }
|
|
265
|
-
).setZone(
|
|
266
|
-
n !==
|
|
264
|
+
).setZone(o.propertyTimeZone), n = s.toFormat("yyyy-MM-dd-HH");
|
|
265
|
+
n !== t && (e.push({
|
|
267
266
|
type: "separator",
|
|
268
|
-
label:
|
|
267
|
+
label: s.toFormat("ccc, LLL d 'at' h:mma").replace("AM", "am").replace("PM", "pm"),
|
|
269
268
|
hourKey: n
|
|
270
|
-
}),
|
|
269
|
+
}), t = n), e.push({
|
|
271
270
|
type: "message",
|
|
272
|
-
...
|
|
273
|
-
formattedTime:
|
|
271
|
+
...a,
|
|
272
|
+
formattedTime: s.toFormat("h:mma").replace("AM", "am").replace("PM", "pm")
|
|
274
273
|
});
|
|
275
274
|
}), e;
|
|
276
|
-
}),
|
|
277
|
-
(
|
|
278
|
-
) : !1), qe = y(() =>
|
|
279
|
-
(
|
|
275
|
+
}), De = y(() => S.value.length ? !!S.value.find(
|
|
276
|
+
(t) => t.type === "complaint"
|
|
277
|
+
) : !1), qe = y(() => S.value.length ? !!S.value.find(
|
|
278
|
+
(t) => t.type === "callback"
|
|
280
279
|
) : !1), xe = y(() => {
|
|
281
280
|
let e = [];
|
|
282
|
-
return
|
|
281
|
+
return O.value[0] && O.value[0].options === void 0 ? O.value.forEach((t) => {
|
|
283
282
|
e.push({
|
|
284
|
-
id: parseInt(
|
|
285
|
-
label:
|
|
283
|
+
id: parseInt(t.id),
|
|
284
|
+
label: t.display_name
|
|
286
285
|
});
|
|
287
|
-
}) : e =
|
|
288
|
-
}),
|
|
289
|
-
switch (
|
|
286
|
+
}) : e = O.value, e;
|
|
287
|
+
}), Te = y(() => r.value.occupancy?.name === "OCCUPIED" || r.value.occupancyStatus === "OCCUPIED"), Fe = y(() => Te.value && De.value ? "HK_ROOM_STATUS_Occupied_Complaint" : "HK_ROOM_STATUS_Occupied"), Be = y(() => {
|
|
288
|
+
switch (E.value?.id) {
|
|
290
289
|
case "request":
|
|
291
290
|
case "work_order":
|
|
292
291
|
return X.value[0];
|
|
@@ -294,18 +293,18 @@ const Gt = mt({
|
|
|
294
293
|
return null;
|
|
295
294
|
}
|
|
296
295
|
}), Ge = y(() => {
|
|
297
|
-
if (
|
|
298
|
-
switch (
|
|
296
|
+
if (M.value)
|
|
297
|
+
switch (E.value?.id) {
|
|
299
298
|
case "request":
|
|
300
|
-
return
|
|
299
|
+
return M.value.find((e) => parseInt(e.id) === 4);
|
|
301
300
|
case "work_order":
|
|
302
|
-
return
|
|
301
|
+
return M.value.find((e) => parseInt(e.id) === 2);
|
|
303
302
|
default:
|
|
304
303
|
return null;
|
|
305
304
|
}
|
|
306
305
|
return null;
|
|
307
|
-
}),
|
|
308
|
-
switch (
|
|
306
|
+
}), Ue = y(() => {
|
|
307
|
+
switch (E.value?.id) {
|
|
309
308
|
case "request":
|
|
310
309
|
return Q.value[1];
|
|
311
310
|
case "work_order":
|
|
@@ -313,116 +312,118 @@ const Gt = mt({
|
|
|
313
312
|
default:
|
|
314
313
|
return null;
|
|
315
314
|
}
|
|
316
|
-
}),
|
|
315
|
+
}), We = y(() => {
|
|
317
316
|
let e = "";
|
|
318
317
|
if (r.value && r.value.reservations[0]) {
|
|
319
|
-
const
|
|
318
|
+
const t = w.fromISO(
|
|
320
319
|
r.value.reservations[0].arrivalDate
|
|
321
|
-
),
|
|
320
|
+
), a = t.toFormat("MMM"), s = t.day, n = t.year, l = w.fromISO(
|
|
322
321
|
r.value.reservations[0].departureDate
|
|
323
|
-
),
|
|
324
|
-
e +=
|
|
322
|
+
), c = l.toFormat("MMM"), m = l.day, f = l.year;
|
|
323
|
+
e += a + " " + s, n !== f && (e += ", " + n), a === c ? e += "-" + m : e += " - " + c + " " + m, e += ", " + f;
|
|
325
324
|
}
|
|
326
325
|
return e;
|
|
327
326
|
}), je = y(() => {
|
|
328
327
|
let e = ae.value;
|
|
329
328
|
return e = [...new Set(e)], e;
|
|
330
329
|
}), $e = y(() => {
|
|
331
|
-
const e =
|
|
330
|
+
const e = E.value?.id;
|
|
332
331
|
if (!e)
|
|
333
332
|
return !1;
|
|
334
333
|
switch (e) {
|
|
335
334
|
case "room_notice":
|
|
336
|
-
return
|
|
335
|
+
return I.value.issue && I.value.startDate && I.value.endDate;
|
|
337
336
|
case "complaint":
|
|
338
337
|
return p.value.problem && p.value.guestName && p.value.guestMood;
|
|
339
338
|
case "work_order":
|
|
340
339
|
return v.value.item && v.value.issue && v.value.requestedBy && v.value.due && (v.value.assignType && v.value.assignType.id === 0 || v.value.assignType && v.value.assignType.id === 1 && v.value.department || v.value.assignType && v.value.assignType.id === 2 && v.value.person);
|
|
341
|
-
case "request":
|
|
342
|
-
|
|
343
|
-
return a && t;
|
|
344
|
-
}
|
|
340
|
+
case "request":
|
|
341
|
+
return d.value.item && d.value.requestedBy && d.value.due && (d.value.assignType && d.value.assignType.id === 0 || d.value.assignType && d.value.assignType.id === 1 && d.value.department || d.value.assignType && d.value.assignType.id === 2 && d.value.person);
|
|
345
342
|
default:
|
|
346
343
|
return !1;
|
|
347
344
|
}
|
|
348
|
-
}),
|
|
349
|
-
|
|
345
|
+
}), Oe = () => {
|
|
346
|
+
se.value = !1, H.value = !1, ie.value = !1, ve.value = !1, O.value = [], ce.value = [], pe.value = [], q.value = [], x.value = [], E.value = null, I.value.issue = null, I.value.startDate = /* @__PURE__ */ new Date(), I.value.endDate = /* @__PURE__ */ new Date(), I.value.notes = "", p.value.guestName = "", p.value.guestEmail = "", p.value.guestPhone = "", p.value.guestMood = null, p.value.guestLoyalty = "", p.value.problem = null, p.value.checkInDate = /* @__PURE__ */ new Date(), p.value.checkOutDate = /* @__PURE__ */ new Date(), p.value.notes = "", v.value.assignType = null, v.value.department = null, v.value.person = null, v.value.due = /* @__PURE__ */ new Date(), v.value.item = null, v.value.issue = null, v.value.notes = "", d.value.assignType = null, d.value.department = null, d.value.person = null, d.value.due = /* @__PURE__ */ new Date(), d.value.item = null, d.value.notes = "", d.value.when = null, d.value.where = null;
|
|
350
347
|
}, Qe = async () => {
|
|
351
348
|
h("create:callback", r.value), h("toggle", !1);
|
|
352
349
|
}, F = (e) => {
|
|
353
|
-
const
|
|
354
|
-
(Array.isArray(e) ? e : Object.values(e)).forEach((
|
|
355
|
-
const n =
|
|
356
|
-
let
|
|
357
|
-
id:
|
|
350
|
+
const t = [];
|
|
351
|
+
(Array.isArray(e) ? e : Object.values(e)).forEach((s) => {
|
|
352
|
+
const n = s.senderType || s.sender_type, l = s.senderName || "", c = s.senderId || s.sender_id, m = s.profileImg || s.profile_img, f = l ? l.split(" ") : ["", ""], _ = s.user_first_name || s.guest_first_name || f[0] || "", z = s.user_last_name || s.guest_last_name || f.slice(1).join(" ") || "", re = _ && z ? `${_} ${z}` : _ || "Auto-Reply", le = n === "system" || n === "user", D = n === "guest";
|
|
353
|
+
let T = {
|
|
354
|
+
id: s.id,
|
|
358
355
|
isPropertyEmployee: n === "user",
|
|
359
|
-
isSent: !!
|
|
356
|
+
isSent: !!s.sent,
|
|
360
357
|
isSystemMessage: n === "system",
|
|
361
358
|
isStaffMessage: le,
|
|
362
|
-
isGuestMessage:
|
|
363
|
-
comment:
|
|
364
|
-
dateUtc:
|
|
359
|
+
isGuestMessage: D,
|
|
360
|
+
comment: s.content,
|
|
361
|
+
dateUtc: s.sent || s.created,
|
|
365
362
|
user: {
|
|
366
|
-
firstName:
|
|
363
|
+
firstName: _ || "Auto-Reply",
|
|
367
364
|
icon: "",
|
|
368
|
-
id:
|
|
365
|
+
id: c || "system-message",
|
|
369
366
|
initials: "",
|
|
370
367
|
lastName: z || "",
|
|
371
368
|
name: re,
|
|
372
369
|
src: m || ""
|
|
373
370
|
}
|
|
374
371
|
};
|
|
375
|
-
|
|
376
|
-
}), C.value =
|
|
372
|
+
T.user.firstName && T.user.lastName ? T.user.initials = T.user.firstName[0] + T.user.lastName[0] : T.user.firstName && (T.user.initials = T.user.firstName[0]), le && (T.user.icon = "property-fill"), t.push(T);
|
|
373
|
+
}), C.value = t;
|
|
377
374
|
}, Je = (e) => {
|
|
378
375
|
if (!e || e.length === 0) return;
|
|
379
|
-
(Array.isArray(e) ? e : Object.values(e)).forEach((
|
|
380
|
-
if (C.value.some((
|
|
376
|
+
(Array.isArray(e) ? e : Object.values(e)).forEach((a) => {
|
|
377
|
+
if (C.value.some((T) => T.id === a.id))
|
|
381
378
|
return;
|
|
382
|
-
const
|
|
383
|
-
let
|
|
384
|
-
id:
|
|
385
|
-
isPropertyEmployee:
|
|
386
|
-
isSent: !!
|
|
387
|
-
isSystemMessage:
|
|
379
|
+
const s = a.senderType || a.sender_type, n = a.senderName || "", l = a.senderId || a.sender_id, c = a.profileImg || a.profile_img, m = n ? n.split(" ") : ["", ""], f = a.user_first_name || a.guest_first_name || m[0] || "", _ = a.user_last_name || a.guest_last_name || m.slice(1).join(" ") || "", z = f && _ ? `${f} ${_}` : f || "Auto-Reply", re = s === "system" || s === "user", le = s === "guest";
|
|
380
|
+
let D = {
|
|
381
|
+
id: a.id,
|
|
382
|
+
isPropertyEmployee: s === "user",
|
|
383
|
+
isSent: !!a.sent,
|
|
384
|
+
isSystemMessage: s === "system",
|
|
388
385
|
isStaffMessage: re,
|
|
389
386
|
isGuestMessage: le,
|
|
390
|
-
comment:
|
|
391
|
-
dateUtc:
|
|
387
|
+
comment: a.content,
|
|
388
|
+
dateUtc: a.sent || a.created,
|
|
392
389
|
user: {
|
|
393
390
|
firstName: f || "Auto-Reply",
|
|
394
391
|
icon: "",
|
|
395
392
|
id: l || "system-message",
|
|
396
393
|
initials: "",
|
|
397
|
-
lastName:
|
|
394
|
+
lastName: _ || "",
|
|
398
395
|
name: z,
|
|
399
|
-
src:
|
|
396
|
+
src: c || ""
|
|
400
397
|
}
|
|
401
398
|
};
|
|
402
|
-
|
|
399
|
+
D.user.firstName && D.user.lastName ? D.user.initials = D.user.firstName[0] + D.user.lastName[0] : D.user.firstName && (D.user.initials = D.user.firstName[0]), re && (D.user.icon = "property-fill"), C.value.push(D);
|
|
403
400
|
});
|
|
404
|
-
},
|
|
405
|
-
if (
|
|
401
|
+
}, he = async (e = !1) => {
|
|
402
|
+
if (o.showComments && r.value.tokenId) {
|
|
403
|
+
e || (g.value.messages = !0);
|
|
406
404
|
try {
|
|
407
|
-
let
|
|
408
|
-
e &&
|
|
409
|
-
const
|
|
405
|
+
let t = `/api/client/connect/getMessages.php?tokenId=${r.value.tokenId}`;
|
|
406
|
+
e && k.value !== null && (t += `&lastMsgId=${k.value}`);
|
|
407
|
+
const s = await (await fetch(t, {
|
|
410
408
|
method: "GET",
|
|
411
409
|
credentials: "include"
|
|
412
410
|
})).json();
|
|
413
|
-
if (
|
|
414
|
-
throw new Error(
|
|
415
|
-
if (
|
|
416
|
-
|
|
411
|
+
if (s.status === "error")
|
|
412
|
+
throw new Error(s.message || "Failed to get messages");
|
|
413
|
+
if (A.value = !s.closed, s.messages && s.messages.length > 0) {
|
|
414
|
+
k.value = s.messages[s.messages.length - 1].id, e ? Je(s.messages) : F(s.messages);
|
|
417
415
|
const n = setTimeout(V, 100);
|
|
418
416
|
L.value.push(n);
|
|
419
|
-
} else e || F(
|
|
420
|
-
} catch (
|
|
421
|
-
console.error("getChatMessages error:",
|
|
417
|
+
} else e || F(s.messages || []);
|
|
418
|
+
} catch (t) {
|
|
419
|
+
console.error("getChatMessages error:", t);
|
|
420
|
+
} finally {
|
|
421
|
+
e || (g.value.messages = !1);
|
|
422
422
|
}
|
|
423
|
+
}
|
|
423
424
|
}, Ye = (e) => {
|
|
424
|
-
const
|
|
425
|
-
|
|
425
|
+
const t = w.utc(), a = w.fromFormat(e, "yyyy-MM-dd HH:mm:ss", { zone: "utc" }), s = t.diff(
|
|
426
|
+
a,
|
|
426
427
|
[
|
|
427
428
|
"years",
|
|
428
429
|
"months",
|
|
@@ -430,83 +431,83 @@ const Gt = mt({
|
|
|
430
431
|
"hours",
|
|
431
432
|
"minutes"
|
|
432
433
|
]
|
|
433
|
-
), n = Math.floor(
|
|
434
|
+
), n = Math.floor(s.years), l = Math.floor(s.months), c = Math.floor(s.days), m = Math.floor(s.hours), f = Math.floor(s.minutes);
|
|
434
435
|
if (n)
|
|
435
|
-
return n === 1 ?
|
|
436
|
+
return n === 1 ? u("HC_ONE_YEAR_AGO") : u("HC_X_YEARS_AGO", { years: n });
|
|
436
437
|
if (l)
|
|
437
|
-
return l === 1 ?
|
|
438
|
-
if (
|
|
439
|
-
return
|
|
438
|
+
return l === 1 ? u("HC_ONE_MONTH_AGO") : u("HC_X_MONTHS_AGO", { months: l });
|
|
439
|
+
if (c)
|
|
440
|
+
return c === 1 ? u("HC_ONE_DAY_AGO") : u("HC_X_DAYS_AGO", { days: c });
|
|
440
441
|
if (m)
|
|
441
|
-
return m === 1 ?
|
|
442
|
+
return m === 1 ? u("HC_ONE_HOUR_AGO") : u("HC_X_HOURS_AGO", { hours: m });
|
|
442
443
|
if (f)
|
|
443
|
-
return f === 1 ?
|
|
444
|
+
return f === 1 ? u("HC_ONE_MINUTE_AGO") : u("HC_X_MINUTES_AGO", { minutes: f });
|
|
444
445
|
if (f === 0)
|
|
445
|
-
return
|
|
446
|
+
return u("HC_A_MOMENT_AGO");
|
|
446
447
|
}, Ve = async () => {
|
|
447
|
-
|
|
448
|
-
},
|
|
448
|
+
o.showGuestDetails && oe(), ne(), Y(), h("refresh:pms", r.value);
|
|
449
|
+
}, oe = async () => {
|
|
449
450
|
try {
|
|
450
|
-
|
|
451
|
-
const e = new AbortController(),
|
|
452
|
-
L.value.push(
|
|
453
|
-
const
|
|
454
|
-
if (!
|
|
451
|
+
g.value.pms = !0;
|
|
452
|
+
const e = new AbortController(), t = setTimeout(() => e.abort(), 45e3);
|
|
453
|
+
L.value.push(t);
|
|
454
|
+
const a = o.pmsBaseUrl;
|
|
455
|
+
if (!a)
|
|
455
456
|
throw new Error("PMS base URL is required");
|
|
456
|
-
const
|
|
457
|
+
const s = {
|
|
457
458
|
Authorization: "Bearer " + (() => {
|
|
458
|
-
const
|
|
459
|
-
return
|
|
459
|
+
const _ = `; ${document.cookie}`.split("; QV2Auth=");
|
|
460
|
+
return _.length === 2 && _.pop()?.split(";").shift() || "";
|
|
460
461
|
})(),
|
|
461
462
|
"Content-Type": "application/json"
|
|
462
|
-
}, n = r.value?.qv2Rooms?.qRoomId || r.value?.id ||
|
|
463
|
-
`${
|
|
463
|
+
}, n = r.value?.qv2Rooms?.qRoomId || r.value?.id || o.room.id, l = await fetch(
|
|
464
|
+
`${a}/vendors/properties/statuses/${o.propertyId}/rooms`,
|
|
464
465
|
{
|
|
465
466
|
method: "POST",
|
|
466
|
-
headers:
|
|
467
|
+
headers: s,
|
|
467
468
|
signal: e.signal,
|
|
468
469
|
body: JSON.stringify({ roomsIds: [n] })
|
|
469
470
|
}
|
|
470
471
|
);
|
|
471
|
-
clearTimeout(
|
|
472
|
-
const
|
|
472
|
+
clearTimeout(t), l.ok || Ee(l);
|
|
473
|
+
const c = await l.json(), m = c.data?.pmsRooms || c.data?.rooms || c.rooms || [];
|
|
473
474
|
R.value = m, m.length > 0 ? r.value = {
|
|
474
475
|
...m[0],
|
|
475
|
-
tokenId: m[0].tokenId ||
|
|
476
|
-
} : r.value =
|
|
476
|
+
tokenId: m[0].tokenId || o.room.tokenId
|
|
477
|
+
} : r.value = o.room, g.value.pms = !1;
|
|
477
478
|
} catch (e) {
|
|
478
|
-
return
|
|
479
|
+
return g.value.pms = !1, h("show:toast", {
|
|
479
480
|
show: !0,
|
|
480
|
-
message:
|
|
481
|
+
message: u("HC_FAILED_TO_LOAD_PMS_DATA"),
|
|
481
482
|
variant: "error",
|
|
482
483
|
icon: "exclamation-circle"
|
|
483
484
|
}), e;
|
|
484
485
|
}
|
|
485
486
|
}, ne = async () => {
|
|
486
487
|
try {
|
|
487
|
-
|
|
488
|
+
g.value.roomNotices = !0;
|
|
488
489
|
const e = await fetch(
|
|
489
|
-
"/api/client/common/getRoomNotices.php?propertyId=" +
|
|
490
|
+
"/api/client/common/getRoomNotices.php?propertyId=" + o.propertyId + "&roomIds=[" + o.room.id + "]"
|
|
490
491
|
);
|
|
491
492
|
if (!e.ok)
|
|
492
493
|
throw new Error(`HTTP error! status: ${e.status}`);
|
|
493
|
-
const
|
|
494
|
-
ae.value =
|
|
494
|
+
const t = await e.json();
|
|
495
|
+
ae.value = t.notices;
|
|
495
496
|
} catch (e) {
|
|
496
497
|
console.error("Error getting room notices:", e), ae.value = [], h("show:toast", {
|
|
497
498
|
show: !0,
|
|
498
|
-
message:
|
|
499
|
+
message: u("HC_FAILED_TO_LOAD_ROOM_NOTICES"),
|
|
499
500
|
variant: "error",
|
|
500
501
|
icon: "exclamation-circle"
|
|
501
502
|
});
|
|
502
503
|
} finally {
|
|
503
|
-
|
|
504
|
+
g.value.roomNotices = !1;
|
|
504
505
|
}
|
|
505
|
-
},
|
|
506
|
+
}, ge = async () => {
|
|
506
507
|
try {
|
|
507
508
|
const e = new FormData();
|
|
508
|
-
e.append("property_id",
|
|
509
|
-
const [
|
|
509
|
+
e.append("property_id", o.propertyId), e.append("filter", "tasks_new");
|
|
510
|
+
const [t, a] = await Promise.all([
|
|
510
511
|
fetch("/api/client/common/getDepartments.php", {
|
|
511
512
|
method: "POST"
|
|
512
513
|
}),
|
|
@@ -514,47 +515,47 @@ const Gt = mt({
|
|
|
514
515
|
method: "POST",
|
|
515
516
|
body: e
|
|
516
517
|
})
|
|
517
|
-
]),
|
|
518
|
-
if (
|
|
518
|
+
]), s = await t.json(), n = await a.json();
|
|
519
|
+
if (s.departments && (s.departments.forEach((l) => {
|
|
519
520
|
l.label = l.display_name;
|
|
520
|
-
}),
|
|
521
|
+
}), M.value = s.departments), n.users) {
|
|
521
522
|
const l = [];
|
|
522
|
-
let
|
|
523
|
+
let c = {
|
|
523
524
|
group: "",
|
|
524
525
|
options: []
|
|
525
526
|
};
|
|
526
527
|
n.users.forEach((m) => {
|
|
527
|
-
m.translated_department !==
|
|
528
|
-
}),
|
|
528
|
+
m.translated_department !== c.group && (c.group && l.push({ ...c }), c.group = m.translated_department, c.options = []), c.options.push(m);
|
|
529
|
+
}), c.group && l.push({ ...c }), Ie.value = l;
|
|
529
530
|
}
|
|
530
531
|
} catch (e) {
|
|
531
532
|
console.error("Error getting shared data:", e), h("show:toast", {
|
|
532
533
|
show: !0,
|
|
533
|
-
message:
|
|
534
|
+
message: u("HC_FAILED_TO_LOAD_SHARED_DATA"),
|
|
534
535
|
variant: "error",
|
|
535
536
|
icon: "exclamation-circle"
|
|
536
537
|
});
|
|
537
538
|
}
|
|
538
|
-
},
|
|
539
|
+
}, ke = async () => {
|
|
539
540
|
try {
|
|
540
|
-
const
|
|
541
|
+
const t = await (await fetch(
|
|
541
542
|
`/api/client/connect/getStayDetails.php?tokenId=${r.value.tokenId}`,
|
|
542
543
|
{
|
|
543
544
|
method: "GET",
|
|
544
545
|
credentials: "include"
|
|
545
546
|
}
|
|
546
547
|
)).json();
|
|
547
|
-
if (
|
|
548
|
-
throw new Error(
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
).toJSDate()),
|
|
552
|
-
|
|
548
|
+
if (t.status === "error")
|
|
549
|
+
throw new Error(t.message || "Failed to get stay details");
|
|
550
|
+
t.userName && (p.value.guestName = t.userName), t.cellPhone && (p.value.guestPhone = t.cellPhone), t.email && (p.value.guestEmail = t.email), t.checkIn && (p.value.checkInDate = w.fromISO(
|
|
551
|
+
t.checkIn
|
|
552
|
+
).toJSDate()), t.checkOut && (p.value.checkOutDate = w.fromISO(
|
|
553
|
+
t.checkOut
|
|
553
554
|
).toJSDate());
|
|
554
555
|
} catch (e) {
|
|
555
556
|
console.error("getStayDetails error:", e), h("show:toast", {
|
|
556
557
|
show: !0,
|
|
557
|
-
message:
|
|
558
|
+
message: u("HC_FAILED_TO_LOAD_STAY_DETAILS"),
|
|
558
559
|
variant: "error",
|
|
559
560
|
icon: "exclamation-circle"
|
|
560
561
|
});
|
|
@@ -587,54 +588,54 @@ const Gt = mt({
|
|
|
587
588
|
}
|
|
588
589
|
}, Y = async () => {
|
|
589
590
|
try {
|
|
590
|
-
|
|
591
|
+
g.value.tickets = !0;
|
|
591
592
|
const e = await fetch(
|
|
592
|
-
"/api/client/common/getAllToDos.php?propertyId=" +
|
|
593
|
+
"/api/client/common/getAllToDos.php?propertyId=" + o.propertyId + "&roomIds=[" + o.room.id + "]"
|
|
593
594
|
);
|
|
594
595
|
if (!e.ok)
|
|
595
596
|
throw new Error(`HTTP error! status: ${e.status}`);
|
|
596
|
-
const
|
|
597
|
-
|
|
597
|
+
const t = await e.json();
|
|
598
|
+
S.value = t.tickets;
|
|
598
599
|
} catch (e) {
|
|
599
|
-
console.error("Error getting tickets:", e),
|
|
600
|
+
console.error("Error getting tickets:", e), S.value = [], h("show:toast", {
|
|
600
601
|
show: !0,
|
|
601
|
-
message:
|
|
602
|
+
message: u("HC_FAILED_TO_LOAD_TICKETS"),
|
|
602
603
|
variant: "error",
|
|
603
604
|
icon: "exclamation-circle"
|
|
604
605
|
});
|
|
605
606
|
} finally {
|
|
606
|
-
|
|
607
|
+
g.value.tickets = !1;
|
|
607
608
|
}
|
|
608
|
-
},
|
|
609
|
-
const
|
|
610
|
-
let
|
|
609
|
+
}, Ee = async (e) => {
|
|
610
|
+
const t = await e.text();
|
|
611
|
+
let a;
|
|
611
612
|
try {
|
|
612
|
-
|
|
613
|
+
a = JSON.parse(t).response;
|
|
613
614
|
} catch {
|
|
614
|
-
|
|
615
|
+
a = { code: e.status, message: t };
|
|
615
616
|
}
|
|
616
|
-
return
|
|
617
|
+
return a.code === 401 ? (window.location.href = "/logout.php?unauthorized=1", { error: a }) : a;
|
|
617
618
|
}, Xe = (e) => {
|
|
618
|
-
const
|
|
619
|
-
if (
|
|
620
|
-
const
|
|
619
|
+
const t = document.querySelectorAll(".pulse");
|
|
620
|
+
if (t && t.length) {
|
|
621
|
+
const a = r.value?.qv2Rooms?.qRoomId || r.value?.id || o.room?.id, s = document.getElementById("room-" + a), n = s?.classList;
|
|
621
622
|
switch (e) {
|
|
622
623
|
case "room_notice":
|
|
623
|
-
(n?.contains("roombox_unsel") || n?.contains("roombox_unsel_active")) && (
|
|
624
|
+
(n?.contains("roombox_unsel") || n?.contains("roombox_unsel_active")) && (s?.classList.remove(), s?.classList.add("roomnoticeroombox_sel"));
|
|
624
625
|
break;
|
|
625
626
|
case "complaint":
|
|
626
|
-
!n?.contains("smsroombox_sel") && !n?.contains("callbackroombox_sel") && (
|
|
627
|
+
!n?.contains("smsroombox_sel") && !n?.contains("callbackroombox_sel") && (s?.classList.remove(), s?.classList.add("complaintsroombox_sel"));
|
|
627
628
|
break;
|
|
628
629
|
case "request":
|
|
629
|
-
!n?.contains("smsroombox_sel") && !n?.contains("callbackroombox_sel") && !n?.contains("complaintsroombox_sel") && (
|
|
630
|
+
!n?.contains("smsroombox_sel") && !n?.contains("callbackroombox_sel") && !n?.contains("complaintsroombox_sel") && (s?.classList.remove(), s?.classList.add("guestrequestroombox_sel"));
|
|
630
631
|
break;
|
|
631
632
|
case "work_order":
|
|
632
|
-
!n?.contains("smsroombox_sel") && !n?.contains("callbackroombox_sel") && !n?.contains("complaintsroombox_sel") && !n?.contains("guestrequestroombox_sel") && (
|
|
633
|
+
!n?.contains("smsroombox_sel") && !n?.contains("callbackroombox_sel") && !n?.contains("complaintsroombox_sel") && !n?.contains("guestrequestroombox_sel") && (s?.classList.remove(), s?.classList.add("workordersroombox_sel"));
|
|
633
634
|
break;
|
|
634
635
|
}
|
|
635
636
|
const l = setTimeout(() => {
|
|
636
|
-
|
|
637
|
-
|
|
637
|
+
t.forEach((c) => {
|
|
638
|
+
c.classList.remove("pulse");
|
|
638
639
|
});
|
|
639
640
|
}, 4500);
|
|
640
641
|
L.value.push(l);
|
|
@@ -642,114 +643,122 @@ const Gt = mt({
|
|
|
642
643
|
}, Ze = () => {
|
|
643
644
|
window.open("/guest/overview.php", "_blank");
|
|
644
645
|
}, et = (e) => {
|
|
645
|
-
let
|
|
646
|
+
let t = "";
|
|
646
647
|
switch (e.type) {
|
|
647
648
|
case "complaint":
|
|
648
|
-
|
|
649
|
+
t = `/complaints/complaints_view.php?id=${e.id}`;
|
|
649
650
|
break;
|
|
650
651
|
case "request":
|
|
651
|
-
|
|
652
|
+
t = `/tasks/hk_request.php?id=${e.id}`;
|
|
652
653
|
break;
|
|
653
654
|
case "satisfaction-call":
|
|
654
|
-
|
|
655
|
+
t = `/tasks/task_callback.php?id=${e.id}`;
|
|
655
656
|
break;
|
|
656
657
|
case "work-order":
|
|
657
|
-
|
|
658
|
+
t = `/tasks/workorder.php?id=${e.id}`;
|
|
658
659
|
break;
|
|
659
660
|
case "task":
|
|
660
|
-
|
|
661
|
+
t = `/tasks/task.php?id=${e.id}`;
|
|
661
662
|
break;
|
|
662
663
|
default:
|
|
663
664
|
return "#";
|
|
664
665
|
}
|
|
665
|
-
window.open(
|
|
666
|
+
window.open(t, "_blank");
|
|
666
667
|
}, tt = async () => {
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
668
|
+
ve.value = !0;
|
|
669
|
+
const e = r.value?.qv2Rooms?.qRoomId || r.value?.id || o.room?.id, t = r.value?.qv2Rooms?.qRoomName || r.value?.name || o.room?.name, a = {
|
|
670
|
+
type: E.value?.id,
|
|
671
|
+
propertyId: o.propertyId,
|
|
670
672
|
userId: P.value,
|
|
671
673
|
areaId: e,
|
|
672
|
-
areaName:
|
|
674
|
+
areaName: t
|
|
673
675
|
};
|
|
674
|
-
switch (
|
|
676
|
+
switch (E.value?.id) {
|
|
675
677
|
case "complaint":
|
|
676
|
-
|
|
678
|
+
a.tokenId = r.value.tokenId, a.problemId = p.value.problem.id, a.guestName = p.value.guestName, a.guestPhone = p.value.guestPhone, a.guestEmail = p.value.guestEmail, a.guestLoyalty = p.value.guestLoyalty, a.guestMood = p.value.guestMood.id, a.checkInDate = w.fromJSDate(p.value.checkInDate).toFormat(
|
|
677
679
|
"yyyy-MM-dd"
|
|
678
|
-
),
|
|
680
|
+
), a.checkOutDate = w.fromJSDate(p.value.checkOutDate).toFormat(
|
|
679
681
|
"yyyy-MM-dd"
|
|
680
|
-
),
|
|
682
|
+
), a.notes = p.value.notes, a.inHouse = 2, a.source = "dashboard", h("create:todo", a);
|
|
681
683
|
break;
|
|
682
684
|
case "request":
|
|
683
|
-
|
|
685
|
+
a.itemId = d.value.item.id, a.assignType = d.value.assignType.id, a.occupied = d.value.requestedBy.id, a.notes = d.value.notes, a.dueDate = w.fromJSDate(d.value.due).toFormat("yyyy-MM-dd"), d.value.assignType.id === 1 && (a.department = d.value.department.id), d.value.assignType.id === 2 && (a.person = d.value.person.id), o.allowWhenWhere && (a.requestWhen = d.value.when ? d.value.when.id : "", a.requestWhere = d.value.where ? d.value.where.id : ""), h("create:todo", a);
|
|
684
686
|
break;
|
|
685
687
|
case "room_notice":
|
|
686
|
-
|
|
688
|
+
a.issueId = I.value.issue.id, a.startDate = w.fromJSDate(I.value.startDate).toFormat("yyyy-MM-dd"), a.endDate = w.fromJSDate(I.value.endDate).toFormat("yyyy-MM-dd"), a.notes = I.value.notes, a.sendPush = "1", h("create:todo", a);
|
|
687
689
|
break;
|
|
688
690
|
case "work_order":
|
|
689
|
-
|
|
691
|
+
a.itemId = v.value.item.id, a.issueId = v.value.issue.id, a.assignType = v.value.assignType.id, a.occupied = v.value.requestedBy.id, a.notes = v.value.notes, a.dueDate = w.fromJSDate(v.value.due).toFormat("yyyy-MM-dd"), v.value.assignType.id === 1 && (a.department = v.value.department.id), v.value.assignType.id === 2 && (a.person = v.value.person.id), h("create:todo", a);
|
|
690
692
|
break;
|
|
691
693
|
}
|
|
692
694
|
}, at = (e) => {
|
|
693
|
-
|
|
694
|
-
},
|
|
695
|
-
|
|
696
|
-
},
|
|
697
|
-
if (console.log("selected:", e),
|
|
695
|
+
_e(), we(), o.hover && h("toggle", e);
|
|
696
|
+
}, st = (e) => {
|
|
697
|
+
Ae(), b.value = e;
|
|
698
|
+
}, ot = async (e) => {
|
|
699
|
+
if (console.log("selected:", e), E.value = e, O.value = [], I.value.issue = null, p.value.problem = null, v.value.item = null, v.value.issue = null, d.value.item = null, !E.value) {
|
|
700
|
+
g.value.actionItems = !1;
|
|
698
701
|
return;
|
|
699
|
-
|
|
700
|
-
|
|
702
|
+
}
|
|
703
|
+
g.value.actionItems = !0;
|
|
704
|
+
const t = r.value?.qv2Rooms?.qRoomId || r.value?.id || o.room?.id, a = new FormData();
|
|
705
|
+
switch (a.append("property_id", o.propertyId), a.append("area_id", t), e.id) {
|
|
701
706
|
case "complaint":
|
|
702
707
|
try {
|
|
703
|
-
r.value.tokenId && await
|
|
708
|
+
r.value.tokenId && await ke();
|
|
704
709
|
const n = await (await fetch("/api/client/common/getComplaintProblemsByPropertyId.php", {
|
|
705
710
|
method: "POST",
|
|
706
|
-
body:
|
|
711
|
+
body: a
|
|
707
712
|
})).json();
|
|
708
|
-
n.items && (
|
|
713
|
+
n.items && (O.value = n.items);
|
|
709
714
|
const l = await K.post(
|
|
710
715
|
"/api/client/common/getComplaintMoods.php"
|
|
711
716
|
);
|
|
712
|
-
l.data.items.forEach((
|
|
713
|
-
|
|
717
|
+
l.data.items.forEach((c) => {
|
|
718
|
+
c.label = c.display_name;
|
|
714
719
|
}), ce.value = l.data.items;
|
|
715
|
-
} catch (
|
|
716
|
-
console.error("Error loading complaint options:",
|
|
720
|
+
} catch (s) {
|
|
721
|
+
console.error("Error loading complaint options:", s), h("show:toast", {
|
|
717
722
|
show: !0,
|
|
718
|
-
message:
|
|
723
|
+
message: u("HC_FAILED_TO_LOAD_COMPLAINT_OPTIONS"),
|
|
719
724
|
variant: "error",
|
|
720
725
|
icon: "exclamation-circle"
|
|
721
726
|
});
|
|
727
|
+
} finally {
|
|
728
|
+
g.value.actionItems = !1;
|
|
722
729
|
}
|
|
723
730
|
break;
|
|
724
731
|
case "room_notice":
|
|
725
732
|
try {
|
|
726
733
|
const n = await (await fetch("/api/client/common/getRoomNoticeIssuesByPropertyId.php", {
|
|
727
734
|
method: "POST",
|
|
728
|
-
body:
|
|
735
|
+
body: a
|
|
729
736
|
})).json();
|
|
730
|
-
n.items && (
|
|
731
|
-
} catch (
|
|
732
|
-
console.error("Error loading room notice options:",
|
|
737
|
+
n.items && (O.value = n.items);
|
|
738
|
+
} catch (s) {
|
|
739
|
+
console.error("Error loading room notice options:", s), h("show:toast", {
|
|
733
740
|
show: !0,
|
|
734
|
-
message:
|
|
741
|
+
message: u("HC_FAILED_TO_LOAD_ROOM_NOTICE_OPTIONS"),
|
|
735
742
|
variant: "error",
|
|
736
743
|
icon: "exclamation-circle"
|
|
737
744
|
});
|
|
745
|
+
} finally {
|
|
746
|
+
g.value.actionItems = !1;
|
|
738
747
|
}
|
|
739
748
|
break;
|
|
740
749
|
case "request":
|
|
741
750
|
try {
|
|
742
|
-
|
|
751
|
+
d.value.requestedBy = Q.value[1], d.value.assignType = X.value[0];
|
|
743
752
|
const n = await (await fetch("/api/client/common/getHousekeepingItemsByPropertyId.php", {
|
|
744
753
|
method: "POST",
|
|
745
|
-
body:
|
|
754
|
+
body: a
|
|
746
755
|
})).json();
|
|
747
|
-
if (n.items && (
|
|
756
|
+
if (n.items && (O.value = n.items), await ge(), d.value.department = M.value.find(
|
|
748
757
|
(l) => parseInt(l.id) === 4
|
|
749
|
-
),
|
|
758
|
+
), o.allowWhenWhere)
|
|
750
759
|
try {
|
|
751
760
|
const l = new FormData();
|
|
752
|
-
l.append("property_id",
|
|
761
|
+
l.append("property_id", o.propertyId);
|
|
753
762
|
const m = await (await fetch(
|
|
754
763
|
"/api/client/common/getWhenWhereOptions.php",
|
|
755
764
|
{
|
|
@@ -769,18 +778,20 @@ const Gt = mt({
|
|
|
769
778
|
} catch (l) {
|
|
770
779
|
console.error("Error loading When/Where options:", l), q.value = [], x.value = [], h("show:toast", {
|
|
771
780
|
show: !0,
|
|
772
|
-
message:
|
|
781
|
+
message: u("HC_FAILED_TO_LOAD_WHEN_WHERE_OPTIONS"),
|
|
773
782
|
variant: "error",
|
|
774
783
|
icon: "exclamation-circle"
|
|
775
784
|
});
|
|
776
785
|
}
|
|
777
|
-
} catch (
|
|
778
|
-
console.error("Error loading request options:",
|
|
786
|
+
} catch (s) {
|
|
787
|
+
console.error("Error loading request options:", s), h("show:toast", {
|
|
779
788
|
show: !0,
|
|
780
|
-
message:
|
|
789
|
+
message: u("HC_FAILED_TO_LOAD_REQUEST_OPTIONS"),
|
|
781
790
|
variant: "error",
|
|
782
791
|
icon: "exclamation-circle"
|
|
783
792
|
});
|
|
793
|
+
} finally {
|
|
794
|
+
g.value.actionItems = !1;
|
|
784
795
|
}
|
|
785
796
|
break;
|
|
786
797
|
case "work_order":
|
|
@@ -788,44 +799,47 @@ const Gt = mt({
|
|
|
788
799
|
v.value.requestedBy = Q.value[0], v.value.assignType = X.value[0];
|
|
789
800
|
const n = await (await fetch("/api/client/common/getItemsByRoomId.php", {
|
|
790
801
|
method: "POST",
|
|
791
|
-
body:
|
|
802
|
+
body: a
|
|
792
803
|
})).json(), l = [];
|
|
793
|
-
let
|
|
804
|
+
let c = {
|
|
794
805
|
group: "",
|
|
795
806
|
options: []
|
|
796
807
|
};
|
|
797
808
|
n.items && (n.items.forEach((m) => {
|
|
798
|
-
m.section_name !==
|
|
799
|
-
}),
|
|
809
|
+
m.section_name !== c.group && (c.group && l.push({ ...c }), c.group = m.section_name, c.options = []), m.label && c.options.push(m);
|
|
810
|
+
}), c.group && l.push({ ...c })), O.value = l, await Promise.all([
|
|
800
811
|
K.post(
|
|
801
812
|
"/api/client/common/getWorkOrderIssues.php"
|
|
802
813
|
),
|
|
803
|
-
|
|
814
|
+
ge()
|
|
804
815
|
]).then((m) => {
|
|
805
816
|
const f = m[0];
|
|
806
|
-
f.data.issues.forEach((
|
|
807
|
-
|
|
808
|
-
}),
|
|
809
|
-
}), v.value.department =
|
|
817
|
+
f.data.issues.forEach((_) => {
|
|
818
|
+
_.label = _.display_name;
|
|
819
|
+
}), pe.value = f.data.issues;
|
|
820
|
+
}), v.value.department = M.value.find(
|
|
810
821
|
(m) => parseInt(m.id) === 2
|
|
811
822
|
);
|
|
812
|
-
} catch (
|
|
813
|
-
console.error("Error loading work order options:",
|
|
823
|
+
} catch (s) {
|
|
824
|
+
console.error("Error loading work order options:", s), h("show:toast", {
|
|
814
825
|
show: !0,
|
|
815
|
-
message:
|
|
826
|
+
message: u("HC_FAILED_TO_LOAD_WORK_ORDER_OPTIONS"),
|
|
816
827
|
variant: "error",
|
|
817
828
|
icon: "exclamation-circle"
|
|
818
829
|
});
|
|
830
|
+
} finally {
|
|
831
|
+
g.value.actionItems = !1;
|
|
819
832
|
}
|
|
820
833
|
break;
|
|
821
834
|
default:
|
|
835
|
+
g.value.actionItems = !1;
|
|
822
836
|
return;
|
|
823
837
|
}
|
|
824
838
|
}, nt = () => {
|
|
825
|
-
|
|
826
|
-
},
|
|
827
|
-
const e = document.getElementById("comment-field"),
|
|
828
|
-
e.style.height =
|
|
839
|
+
se.value = !se.value, ie.value = !1;
|
|
840
|
+
}, Se = () => {
|
|
841
|
+
const e = document.getElementById("comment-field"), t = document.getElementById("hidden-text");
|
|
842
|
+
e.style.height = t?.offsetHeight + "px";
|
|
829
843
|
}, V = () => {
|
|
830
844
|
const e = document.getElementById("comments-container");
|
|
831
845
|
e?.scroll({
|
|
@@ -833,90 +847,98 @@ const Gt = mt({
|
|
|
833
847
|
behavior: "smooth"
|
|
834
848
|
});
|
|
835
849
|
}, rt = async (e) => {
|
|
836
|
-
if (e && e.type === "keydown" && e.preventDefault(), r.value.tokenId &&
|
|
850
|
+
if (e && e.type === "keydown" && e.preventDefault(), r.value.tokenId && b.value && !H.value) {
|
|
851
|
+
g.value.sendingMessage = !0;
|
|
837
852
|
try {
|
|
838
|
-
const
|
|
839
|
-
|
|
840
|
-
const
|
|
853
|
+
const t = new FormData();
|
|
854
|
+
t.append("tokenId", r.value.tokenId), t.append("content", b.value), t.append("senderId", P.value || "");
|
|
855
|
+
const a = await K.post(
|
|
841
856
|
"/api/client/connect/sendMessage.php",
|
|
842
|
-
|
|
857
|
+
t
|
|
843
858
|
);
|
|
844
|
-
if (
|
|
859
|
+
if (a.data.status === "error") {
|
|
845
860
|
h("show:toast", {
|
|
846
861
|
show: !0,
|
|
847
|
-
message:
|
|
862
|
+
message: u("HC_FAILED_TO_SEND_MESSAGE"),
|
|
848
863
|
variant: "error",
|
|
849
864
|
icon: "exclamation-circle"
|
|
850
865
|
});
|
|
851
866
|
return;
|
|
852
867
|
}
|
|
853
|
-
|
|
854
|
-
} catch (
|
|
855
|
-
console.error("sendChatMessage error:",
|
|
868
|
+
b.value = "", A.value = !a.data.closed, a.data.messages && (F(a.data.messages), a.data.messages.length > 0 && (k.value = a.data.messages[a.data.messages.length - 1].id)), V();
|
|
869
|
+
} catch (t) {
|
|
870
|
+
console.error("sendChatMessage error:", t), h("show:toast", {
|
|
856
871
|
show: !0,
|
|
857
|
-
message:
|
|
872
|
+
message: u("HC_FAILED_TO_SEND_MESSAGE"),
|
|
858
873
|
variant: "error",
|
|
859
874
|
icon: "exclamation-circle"
|
|
860
875
|
});
|
|
876
|
+
} finally {
|
|
877
|
+
g.value.sendingMessage = !1;
|
|
861
878
|
}
|
|
879
|
+
}
|
|
862
880
|
}, lt = async () => {
|
|
863
|
-
if (!(!r.value.tokenId || !P.value))
|
|
881
|
+
if (!(!r.value.tokenId || !P.value)) {
|
|
882
|
+
g.value.conversationToggle = !0;
|
|
864
883
|
try {
|
|
865
|
-
const e =
|
|
866
|
-
|
|
867
|
-
const
|
|
868
|
-
if (
|
|
884
|
+
const e = A.value ? "/api/client/connect/closeConversation.php" : "/api/client/connect/openConversation.php", t = new FormData();
|
|
885
|
+
t.append("tokenId", r.value.tokenId), t.append("userId", P.value), A.value && k.value !== null && t.append("lastMsgId", k.value.toString());
|
|
886
|
+
const a = await K.post(e, t);
|
|
887
|
+
if (a.data.status === "error") {
|
|
869
888
|
h("show:toast", {
|
|
870
889
|
show: !0,
|
|
871
|
-
message:
|
|
890
|
+
message: u("HC_FAILED_TO_UPDATE_CONVERSATION"),
|
|
872
891
|
variant: "error",
|
|
873
892
|
icon: "exclamation-circle"
|
|
874
893
|
});
|
|
875
894
|
return;
|
|
876
895
|
}
|
|
877
|
-
|
|
896
|
+
A.value = !a.data.closed, a.data.messages && (F(a.data.messages), a.data.messages.length > 0 && (k.value = a.data.messages[a.data.messages.length - 1].id)), h("show:toast", {
|
|
878
897
|
show: !0,
|
|
879
|
-
message:
|
|
898
|
+
message: A.value ? u("HC_CONVERSATION_REOPENED") : u("HC_CONVERSATION_CLOSED"),
|
|
880
899
|
variant: "success",
|
|
881
900
|
icon: "check-circle"
|
|
882
901
|
});
|
|
883
902
|
} catch (e) {
|
|
884
903
|
console.error("toggleMarkOpenClose error:", e), h("show:toast", {
|
|
885
904
|
show: !0,
|
|
886
|
-
message:
|
|
905
|
+
message: u("HC_FAILED_TO_UPDATE_CONVERSATION"),
|
|
887
906
|
variant: "error",
|
|
888
907
|
icon: "exclamation-circle"
|
|
889
908
|
});
|
|
909
|
+
} finally {
|
|
910
|
+
g.value.conversationToggle = !1;
|
|
890
911
|
}
|
|
912
|
+
}
|
|
891
913
|
}, it = async () => {
|
|
892
|
-
if (
|
|
914
|
+
if (o.isTestEnvironment && !(!r.value?.tokenId || !j.value.trim())) {
|
|
893
915
|
me.value = !0;
|
|
894
916
|
try {
|
|
895
917
|
const e = new FormData();
|
|
896
918
|
e.append("tokenId", r.value.tokenId), e.append("content", j.value.trim());
|
|
897
|
-
const
|
|
919
|
+
const t = await K.post(
|
|
898
920
|
"/api/client/connect/simulateInbound.php",
|
|
899
921
|
e
|
|
900
922
|
);
|
|
901
|
-
if (
|
|
923
|
+
if (t.data.status === "error") {
|
|
902
924
|
h("show:toast", {
|
|
903
925
|
show: !0,
|
|
904
|
-
message:
|
|
926
|
+
message: u("HC_FAILED_TO_SIMULATE_MESSAGE"),
|
|
905
927
|
variant: "error",
|
|
906
928
|
icon: "exclamation-circle"
|
|
907
929
|
});
|
|
908
930
|
return;
|
|
909
931
|
}
|
|
910
|
-
|
|
932
|
+
t.data.messages && (F(t.data.messages), A.value = !t.data.closed, t.data.messages.length > 0 && (k.value = t.data.messages[t.data.messages.length - 1].id)), j.value = "", W.value = !1, V(), h("show:toast", {
|
|
911
933
|
show: !0,
|
|
912
|
-
message:
|
|
934
|
+
message: u("HC_SIMULATED_GUEST_REPLY"),
|
|
913
935
|
variant: "success",
|
|
914
936
|
icon: "check-circle"
|
|
915
937
|
});
|
|
916
938
|
} catch (e) {
|
|
917
939
|
console.error("simulateGuestReply error:", e), h("show:toast", {
|
|
918
940
|
show: !0,
|
|
919
|
-
message:
|
|
941
|
+
message: u("HC_FAILED_TO_SIMULATE_MESSAGE"),
|
|
920
942
|
variant: "error",
|
|
921
943
|
icon: "exclamation-circle"
|
|
922
944
|
});
|
|
@@ -925,174 +947,174 @@ const Gt = mt({
|
|
|
925
947
|
}
|
|
926
948
|
}
|
|
927
949
|
}, ut = () => {
|
|
928
|
-
|
|
950
|
+
W.value = !W.value, W.value || (j.value = "");
|
|
929
951
|
}, ct = () => {
|
|
930
952
|
$.value || ($.value = setInterval(() => {
|
|
931
|
-
document.visibilityState === "visible" &&
|
|
932
|
-
},
|
|
953
|
+
document.visibilityState === "visible" && he(!0);
|
|
954
|
+
}, Me));
|
|
933
955
|
}, ye = () => {
|
|
934
956
|
$.value && (clearInterval($.value), $.value = null);
|
|
935
|
-
},
|
|
936
|
-
if (
|
|
937
|
-
const e = J.value?.getBoundingClientRect().left,
|
|
938
|
-
ue.value =
|
|
957
|
+
}, _e = () => {
|
|
958
|
+
if (o.align === "left" || o.align === "right") {
|
|
959
|
+
const e = J.value?.getBoundingClientRect().left, t = window.innerWidth;
|
|
960
|
+
ue.value = t - e < U.value ? "right" : "left";
|
|
939
961
|
} else {
|
|
940
|
-
const e = J.value?.getBoundingClientRect().top,
|
|
941
|
-
ue.value =
|
|
962
|
+
const e = J.value?.getBoundingClientRect().top, t = window.innerHeight;
|
|
963
|
+
ue.value = t - e < G.value ? "bottom" : "top";
|
|
942
964
|
}
|
|
943
|
-
},
|
|
944
|
-
if (
|
|
945
|
-
const e = J.value?.getBoundingClientRect().top,
|
|
946
|
-
de.value =
|
|
965
|
+
}, we = () => {
|
|
966
|
+
if (o.position === "top" || o.position === "bottom") {
|
|
967
|
+
const e = J.value?.getBoundingClientRect().top, t = window.innerHeight;
|
|
968
|
+
de.value = t - e < G.value ? "top" : "bottom";
|
|
947
969
|
} else {
|
|
948
|
-
const e = J.value?.getBoundingClientRect().left,
|
|
949
|
-
de.value =
|
|
970
|
+
const e = J.value?.getBoundingClientRect().left, t = window.innerWidth;
|
|
971
|
+
de.value = t - e < U.value ? "left" : "right";
|
|
950
972
|
}
|
|
951
|
-
},
|
|
952
|
-
H.value = !H.value, H.value ? (
|
|
953
|
-
}, dt = async (e,
|
|
954
|
-
const
|
|
955
|
-
if (
|
|
973
|
+
}, Ae = () => {
|
|
974
|
+
H.value = !H.value, H.value ? (b.value = "", N.value.info = ee.value, N.value.tickets = te.value, N.value.comments = Z.value, ee.value = !1, te.value = !1, document.getElementById("comment-field")?.focus()) : (ee.value = N.value.info, te.value = N.value.tickets, Z.value = N.value.comments);
|
|
975
|
+
}, dt = async (e, t) => {
|
|
976
|
+
const a = r.value?.qv2Rooms?.qRoomId || r.value?.id || o.room?.id, s = new FormData();
|
|
977
|
+
if (s.append("property_id", o.propertyId), s.append("room_ids", JSON.stringify([a])), await Y(), S.value) {
|
|
956
978
|
const n = [];
|
|
957
|
-
|
|
958
|
-
l.id === e && l.type ===
|
|
979
|
+
S.value.forEach((l) => {
|
|
980
|
+
l.id === e && l.type === t ? n.unshift({
|
|
959
981
|
...l,
|
|
960
982
|
isNew: !0
|
|
961
983
|
}) : n.push({
|
|
962
984
|
...l,
|
|
963
985
|
isNew: !1
|
|
964
986
|
});
|
|
965
|
-
}), n.sort((l,
|
|
987
|
+
}), n.sort((l, c) => l.id === e ? -1 : c.id === e ? 1 : 0), S.value = [...n];
|
|
966
988
|
}
|
|
967
989
|
};
|
|
968
|
-
B(() =>
|
|
969
|
-
if (
|
|
990
|
+
B(() => o.open, () => {
|
|
991
|
+
if (o.open && o.showComments && C.value.length) {
|
|
970
992
|
const e = setTimeout(V, 500);
|
|
971
993
|
L.value.push(e);
|
|
972
994
|
}
|
|
973
|
-
|
|
995
|
+
o.open || (Oe(), ye(), k.value = null, C.value = [], A.value = !1);
|
|
974
996
|
}), B(
|
|
975
|
-
() => [
|
|
976
|
-
([e,
|
|
977
|
-
e &&
|
|
997
|
+
() => [o.open, o.showComments, Z.value, r.value?.tokenId],
|
|
998
|
+
([e, t, a, s]) => {
|
|
999
|
+
e && t && a && s ? ct() : ye();
|
|
978
1000
|
}
|
|
979
|
-
), B(
|
|
980
|
-
const e = setTimeout(
|
|
1001
|
+
), B(b, () => {
|
|
1002
|
+
const e = setTimeout(Se, 100);
|
|
981
1003
|
L.value.push(e);
|
|
982
|
-
}), B(() =>
|
|
983
|
-
|
|
1004
|
+
}), B(() => o.allowWhenWhere, (e, t) => {
|
|
1005
|
+
t === !0 && e === !1 && (d.value.when = null, d.value.where = null, q.value = [], x.value = []);
|
|
984
1006
|
});
|
|
985
|
-
const
|
|
986
|
-
return B(() =>
|
|
987
|
-
e && !
|
|
1007
|
+
const be = () => !!(o.room.reservations || o.room.cleaning || o.room.occupancy);
|
|
1008
|
+
return B(() => o.open, async (e, t) => {
|
|
1009
|
+
e && !t && (be() ? (r.value = o.room, R.value = [o.room]) : o.showGuestDetails && !R.value ? await oe() : r.value || (r.value = o.room), Y(), ne(), o.showComments && he());
|
|
988
1010
|
}), B(
|
|
989
|
-
() =>
|
|
990
|
-
(e,
|
|
991
|
-
e !==
|
|
1011
|
+
() => o.room.id,
|
|
1012
|
+
(e, t) => {
|
|
1013
|
+
e !== t && (r.value = o.room, R.value = null, o.open && (be() ? R.value = [o.room] : o.showGuestDetails && oe(), Y(), ne()));
|
|
992
1014
|
}
|
|
993
1015
|
), vt(async () => {
|
|
994
1016
|
const e = JSON.parse(
|
|
995
1017
|
window.localStorage.getItem("authenticated")
|
|
996
1018
|
);
|
|
997
|
-
P.value = e?.user?.id || window.userId || "", r.value =
|
|
1019
|
+
P.value = e?.user?.id || window.userId || "", r.value = o.room, o.size === "sm" && (G.value = 140, U.value = 160), o.size === "lg" && (G.value = 250, U.value = 440), _e(), we();
|
|
998
1020
|
}), pt(() => {
|
|
999
1021
|
L.value.forEach((e) => {
|
|
1000
1022
|
clearTimeout(e);
|
|
1001
1023
|
}), ye();
|
|
1002
1024
|
}), {
|
|
1003
|
-
DateTime:
|
|
1025
|
+
DateTime: w,
|
|
1004
1026
|
// Refs
|
|
1005
1027
|
actionMenuOpen: ie,
|
|
1006
1028
|
alignment: ue,
|
|
1007
1029
|
assignTypes: X,
|
|
1008
|
-
comment:
|
|
1030
|
+
comment: b,
|
|
1009
1031
|
complaint: p,
|
|
1010
1032
|
componentHeight: G,
|
|
1011
|
-
componentWidth:
|
|
1012
|
-
departments:
|
|
1013
|
-
departmentUsers:
|
|
1033
|
+
componentWidth: U,
|
|
1034
|
+
departments: M,
|
|
1035
|
+
departmentUsers: Ie,
|
|
1014
1036
|
expandComments: Z,
|
|
1015
1037
|
expandGuestInfo: ee,
|
|
1016
|
-
expandedStates:
|
|
1038
|
+
expandedStates: N,
|
|
1017
1039
|
expandTickets: te,
|
|
1018
|
-
guestDetailsData:
|
|
1019
|
-
itemOptions:
|
|
1020
|
-
loading:
|
|
1040
|
+
guestDetailsData: Ce,
|
|
1041
|
+
itemOptions: O,
|
|
1042
|
+
loading: g,
|
|
1021
1043
|
messages: C,
|
|
1022
1044
|
moodOptions: ce,
|
|
1023
1045
|
pmsData: R,
|
|
1024
1046
|
positioning: de,
|
|
1025
1047
|
quickReplyOpen: H,
|
|
1026
|
-
request:
|
|
1048
|
+
request: d,
|
|
1027
1049
|
requestedByOptions: Q,
|
|
1028
|
-
requestLoading:
|
|
1029
|
-
requestType:
|
|
1050
|
+
requestLoading: ve,
|
|
1051
|
+
requestType: E,
|
|
1030
1052
|
roomDetailsData: r,
|
|
1031
|
-
roomNotice:
|
|
1053
|
+
roomNotice: I,
|
|
1032
1054
|
roomNotices: ae,
|
|
1033
|
-
showCreateRequest:
|
|
1034
|
-
ticketsList:
|
|
1035
|
-
todoOptions:
|
|
1055
|
+
showCreateRequest: se,
|
|
1056
|
+
ticketsList: S,
|
|
1057
|
+
todoOptions: Ne,
|
|
1036
1058
|
trigger: J,
|
|
1037
1059
|
userId: P,
|
|
1038
1060
|
workOrder: v,
|
|
1039
|
-
workOrderIssues:
|
|
1061
|
+
workOrderIssues: pe,
|
|
1040
1062
|
whenOptions: q,
|
|
1041
1063
|
whereOptions: x,
|
|
1042
1064
|
// Guest Connect state
|
|
1043
|
-
isConversationOpen:
|
|
1044
|
-
lastMessageId:
|
|
1065
|
+
isConversationOpen: A,
|
|
1066
|
+
lastMessageId: k,
|
|
1045
1067
|
// Simulate Guest Reply state (test environments only)
|
|
1046
|
-
simulateOpen:
|
|
1068
|
+
simulateOpen: W,
|
|
1047
1069
|
simulateContent: j,
|
|
1048
1070
|
simulateLoading: me,
|
|
1049
1071
|
// Computed
|
|
1050
|
-
cleanliness:
|
|
1072
|
+
cleanliness: fe,
|
|
1051
1073
|
cleanlinessColor: Re,
|
|
1052
1074
|
cleanlinessTooltipContent: He,
|
|
1053
1075
|
filteredReplies: Le,
|
|
1054
1076
|
groupedMessages: Pe,
|
|
1055
1077
|
hasGuestCallback: qe,
|
|
1056
|
-
hasComplaint:
|
|
1078
|
+
hasComplaint: De,
|
|
1057
1079
|
itemOptionsList: xe,
|
|
1058
|
-
occupied:
|
|
1080
|
+
occupied: Te,
|
|
1059
1081
|
occupancyTooltipContent: Fe,
|
|
1060
1082
|
selectedAssignType: Be,
|
|
1061
1083
|
selectedDepartment: Ge,
|
|
1062
|
-
selectedRequestedBy:
|
|
1063
|
-
stayDetails:
|
|
1084
|
+
selectedRequestedBy: Ue,
|
|
1085
|
+
stayDetails: We,
|
|
1064
1086
|
tagsList: je,
|
|
1065
1087
|
validateToDo: $e,
|
|
1066
1088
|
// Methods
|
|
1067
|
-
closeRequest:
|
|
1089
|
+
closeRequest: Oe,
|
|
1068
1090
|
createCallback: Qe,
|
|
1069
1091
|
createMessageList: F,
|
|
1070
|
-
getChatMessages:
|
|
1092
|
+
getChatMessages: he,
|
|
1071
1093
|
getHowLongAgo: Ye,
|
|
1072
|
-
getPMSData:
|
|
1094
|
+
getPMSData: oe,
|
|
1073
1095
|
getRoomNotices: ne,
|
|
1074
|
-
getSharedData:
|
|
1075
|
-
getStayDetails:
|
|
1096
|
+
getSharedData: ge,
|
|
1097
|
+
getStayDetails: ke,
|
|
1076
1098
|
getTicketColor: ze,
|
|
1077
1099
|
getTicketIcon: Ke,
|
|
1078
1100
|
getTickets: Y,
|
|
1079
|
-
handleFailedResponse:
|
|
1101
|
+
handleFailedResponse: Ee,
|
|
1080
1102
|
handlePulse: Xe,
|
|
1081
1103
|
onClickEditConnectGuest: Ze,
|
|
1082
1104
|
onClickTicket: et,
|
|
1083
1105
|
onCreateRequestSubmit: tt,
|
|
1084
1106
|
onHoverToggle: at,
|
|
1085
|
-
onSelectQuickReply:
|
|
1086
|
-
onSelectToDo:
|
|
1107
|
+
onSelectQuickReply: st,
|
|
1108
|
+
onSelectToDo: ot,
|
|
1087
1109
|
openRequest: nt,
|
|
1088
1110
|
refreshPMSData: Ve,
|
|
1089
|
-
resizeTextarea:
|
|
1111
|
+
resizeTextarea: Se,
|
|
1090
1112
|
scrollToConnectBottom: V,
|
|
1091
1113
|
sendChatMessage: rt,
|
|
1092
|
-
setAlignment:
|
|
1093
|
-
setPositioning:
|
|
1114
|
+
setAlignment: _e,
|
|
1115
|
+
setPositioning: we,
|
|
1094
1116
|
toggleMarkOpenClose: lt,
|
|
1095
|
-
toggleQuickReply:
|
|
1117
|
+
toggleQuickReply: Ae,
|
|
1096
1118
|
updateTickets: dt,
|
|
1097
1119
|
// Simulate Guest Reply methods (test environments only)
|
|
1098
1120
|
simulateGuestReply: it,
|