@7365admin1/layer-common 3.2.7 → 3.2.8-staging.201
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/assets/css/primitives.css +1113 -0
- package/assets/css/screens.css +1097 -0
- package/assets/css/shell.css +258 -0
- package/assets/css/tokens.css +236 -0
- package/components/AcceptDialog.vue +17 -18
- package/components/AccessCard/AvailableStats.vue +24 -16
- package/components/AccessCardAddForm.vue +42 -42
- package/components/AccessCardAssignToUnitForm.vue +13 -21
- package/components/AccessCardDeleteDialog.vue +41 -39
- package/components/AccessCardDetailsDialog.vue +125 -79
- package/components/AccessCardPreviewDialog.vue +58 -84
- package/components/AccessCardQrTagging.vue +60 -63
- package/components/AccessCardReplaceForm.vue +27 -23
- package/components/AccessManagement.vue +86 -85
- package/components/AddEqupmentForm.vue +18 -22
- package/components/AddPassKeyToVisitor.vue +95 -73
- package/components/AppButton.vue +62 -0
- package/components/AppCard.vue +20 -0
- package/components/AppDateField.vue +49 -0
- package/components/AppField.vue +76 -0
- package/components/AppKpiTile.vue +65 -0
- package/components/AppSegmented.vue +38 -0
- package/components/AppSelect.vue +247 -0
- package/components/AreaChecklistHistoryLogs.vue +51 -44
- package/components/AreaChecklistHistoryMain.vue +14 -7
- package/components/AreaFormDialog.vue +71 -59
- package/components/AreaMain.vue +73 -107
- package/components/AttachmentsViewer.vue +84 -22
- package/components/AttendanceCheckInOutDialog.vue +85 -88
- package/components/AttendanceDetailsDialog.vue +57 -63
- package/components/AttendanceMain.vue +4 -3
- package/components/AttendanceMapSearchDialog.vue +42 -44
- package/components/AttendanceSettingsDialog.vue +79 -63
- package/components/Avatar/Main.vue +54 -2
- package/components/BillingMain.vue +26 -30
- package/components/BtnUploadFile.vue +53 -11
- package/components/BuildingForm.vue +34 -27
- package/components/BuildingManagement/buildings.vue +39 -39
- package/components/BuildingManagement/units.vue +26 -42
- package/components/BuildingUnitFormAdd.vue +20 -23
- package/components/BuildingUnitFormEdit.vue +8 -4
- package/components/BulletinBoardForm.vue +19 -24
- package/components/BulletinBoardManagement.vue +49 -57
- package/components/BulletinBoardView.vue +9 -6
- package/components/BulletinExpirationChip.vue +13 -4
- package/components/Button/Close.vue +2 -2
- package/components/CameraForm.vue +21 -22
- package/components/CameraMain.vue +50 -49
- package/components/Card/DeleteConfirmation.vue +24 -22
- package/components/Card/MemberInfoSummary.vue +28 -3
- package/components/Card/Toggle.vue +15 -3
- package/components/CardToolbar.vue +37 -0
- package/components/Carousel.vue +56 -36
- package/components/Chat/Bubbles.vue +43 -14
- package/components/Chat/Information.vue +49 -32
- package/components/Chat/ListCard.vue +38 -9
- package/components/Chat/Message.vue +41 -15
- package/components/Chat/Navigation.vue +27 -15
- package/components/Chat/SkeletonLoader.vue +9 -2
- package/components/ChecklistItemRow.vue +25 -1
- package/components/CleaningScheduleMain.vue +44 -49
- package/components/ClientDetailForm.vue +81 -56
- package/components/ClientMain.vue +92 -82
- package/components/ConfirmDialog.vue +14 -8
- package/components/Container/Standard.vue +9 -7
- package/components/CreateSubsciptionPlan.vue +148 -89
- package/components/DashboardEmptyState.vue +48 -3
- package/components/DashboardMain.vue +924 -676
- package/components/DashboardPanel.vue +84 -21
- package/components/DeliveryCompany.vue +34 -20
- package/components/Dialog/DeleteConfirmation.vue +20 -21
- package/components/Dialog/ReplaceAutofillPrompt.vue +19 -26
- package/components/Dialog/ReusablePrompt.vue +30 -29
- package/components/Dialog/UpdateMoreAction.vue +62 -59
- package/components/DocumentForm.vue +14 -21
- package/components/DocumentManagement.vue +162 -108
- package/components/DocumentViewer.vue +29 -12
- package/components/DrawImage.vue +29 -21
- package/components/EntryPass/QrTemplatePreview.vue +27 -16
- package/components/EntryPassInformation.vue +40 -10
- package/components/EntryPassMain.vue +49 -27
- package/components/EquipmentItemMain.vue +84 -97
- package/components/EquipmentManagementMain.vue +81 -103
- package/components/Facility/BookingSetup.vue +43 -52
- package/components/Feedback/Form.vue +26 -12
- package/components/FeedbackMain.vue +35 -49
- package/components/FileInput.vue +75 -58
- package/components/FileInputWithList.vue +59 -12
- package/components/FormDialog.vue +60 -21
- package/components/HidAccessLogDashboard.vue +512 -490
- package/components/HidCameraCaptureDialog.vue +216 -0
- package/components/HidEnabledGate.vue +67 -9
- package/components/HidIntercomManagement.vue +1322 -653
- package/components/HidQrCodeConfiguration.vue +1030 -258
- package/components/HidReaderForm.vue +142 -59
- package/components/HidReaderManagement.vue +211 -323
- package/components/HidServiceSettingsPanel.vue +44 -13
- package/components/HidUserEnrollment.vue +1185 -412
- package/components/HygieneUpdateMoreAction.vue +44 -44
- package/components/IncidentReport/Authorities.vue +30 -18
- package/components/IncidentReport/IncidentInformation.vue +10 -10
- package/components/IncidentReport/IncidentInformationDownload.vue +3 -4
- package/components/IncidentReport/affectedEntities.vue +41 -20
- package/components/Input/Date.vue +3 -0
- package/components/Input/DatePicker.vue +1 -2
- package/components/Input/DateTimePicker.vue +1 -1
- package/components/Input/File.vue +55 -10
- package/components/Input/FileV2.vue +39 -6
- package/components/Input/InputPhoneNumberV2.vue +2 -1
- package/components/Input/ListGroupSelection.vue +56 -8
- package/components/Input/NRICNumber.vue +1 -0
- package/components/Input/NewDate.vue +1 -0
- package/components/Input/Number.vue +1 -0
- package/components/Input/Password.vue +1 -0
- package/components/Input/PhoneNumber.vue +21 -1
- package/components/Input/VehicleNumber.vue +1 -0
- package/components/InputLabel.vue +2 -2
- package/components/InvitationClientForm.vue +21 -19
- package/components/InvitationForm.vue +15 -21
- package/components/InvitationMain.vue +46 -61
- package/components/Layout/Header.vue +263 -36
- package/components/Layout/NavigationDrawer.vue +300 -30
- package/components/ListItem.vue +33 -3
- package/components/LocalPagination.vue +27 -3
- package/components/ManageChecklistMain.vue +136 -86
- package/components/MemberInformation.vue +32 -16
- package/components/MemberMain.vue +113 -93
- package/components/MyAttendanceMain.vue +3 -5
- package/components/NavigationItem.vue +83 -3
- package/components/Nfc/NFCPatrolReportMain.vue +47 -33
- package/components/Nfc/NFCPatrolRouteForm.vue +18 -20
- package/components/Nfc/NFCPatrolRouteMain.vue +116 -103
- package/components/Nfc/NFCPatrolSettings.vue +14 -4
- package/components/Nfc/NFCTagForm.vue +22 -8
- package/components/Nfc/NFCTagMain.vue +41 -43
- package/components/Nfc/PatrolReport/DailyReportTab.vue +8 -1
- package/components/Nfc/PatrolReport/MonthlyReportTab.vue +8 -1
- package/components/Nfc/PatrolReport/MonthlyReportTable.vue +5 -3
- package/components/Nfc/PatrolReport/PatrolActivityTable.vue +26 -6
- package/components/Nfc/PatrolReport/PatrolReportTab.vue +8 -0
- package/components/Nfc/PatrolReport/PatrolRouteSummary.vue +41 -9
- package/components/Nfc/PatrolReport/RemarksDialog.vue +39 -9
- package/components/Nfc/PatrolReport/ReportEmptyState.vue +29 -9
- package/components/Nfc/PatrolReport/ReportFilters.vue +19 -10
- package/components/Nfc/PatrolReport/ReportLocationHeader.vue +32 -6
- package/components/Nfc/PatrolReport/SummaryReportTable.vue +28 -6
- package/components/NotificationSettings.vue +373 -0
- package/components/NumberSettingField.vue +9 -2
- package/components/OnlineFormConfigurationForm.vue +725 -237
- package/components/OnlineFormFill.vue +213 -106
- package/components/OnlineFormRenderPreview.vue +25 -30
- package/components/OnlineFormsConfiguration.vue +113 -109
- package/components/OrgViewDialog.vue +34 -16
- package/components/OvernightParkingAvailability.vue +49 -26
- package/components/OvernightParkingManagement.vue +78 -18
- package/components/PageHeader.vue +43 -0
- package/components/PassInformation.vue +109 -53
- package/components/PasswordConfirmation.vue +44 -26
- package/components/PeopleForm.vue +41 -20
- package/components/PhotoUpload.vue +110 -48
- package/components/PlaceholderComponent.vue +35 -19
- package/components/PlanActionsMenu.vue +12 -2
- package/components/PlanStatusBadge.vue +7 -8
- package/components/PlateNumberDisplay.vue +9 -6
- package/components/QrTemplate/PrintDialog.vue +66 -43
- package/components/RolePermissionFormCreate.vue +104 -79
- package/components/RolePermissionFormPreviewUpdate.vue +111 -109
- package/components/RolePermissionMain.vue +183 -81
- package/components/ScanVisitorQRCode.vue +99 -35
- package/components/ScheduleAreaMain.vue +34 -59
- package/components/ScheduleTaskForm.vue +61 -42
- package/components/ScheduleTaskMain.vue +56 -69
- package/components/SearchVehicleNumberUser.vue +39 -37
- package/components/ServiceProviderFormCreate.vue +29 -20
- package/components/ServiceProviderInvitationPrompt.vue +155 -0
- package/components/ServiceProviderMain.vue +601 -432
- package/components/Signature.vue +40 -34
- package/components/SignaturePad.vue +5 -29
- package/components/SiteSettings.vue +41 -11
- package/components/SiteSettingsWorkOrder.vue +61 -30
- package/components/SlideCardGroup.vue +35 -11
- package/components/Snackbar.vue +36 -3
- package/components/SpecificAttr.vue +18 -8
- package/components/StatusChip.vue +156 -0
- package/components/StockCard.vue +17 -12
- package/components/SubscriptionPlanTable.vue +207 -140
- package/components/SwitchContext.vue +201 -9
- package/components/TableHygiene.vue +36 -46
- package/components/TableList.vue +10 -10
- package/components/TableListSecondary.vue +105 -54
- package/components/TableMain.vue +251 -78
- package/components/TableV3.vue +61 -70
- package/components/TiptapEditor.vue +33 -40
- package/components/TiptapEditorQr.vue +5 -2
- package/components/Tooltip/Info.vue +69 -24
- package/components/UnitMain.vue +40 -60
- package/components/UnitPersonCard.vue +42 -13
- package/components/VehicleAddSelection.vue +48 -32
- package/components/VehicleForm.vue +112 -129
- package/components/VehicleManagement.vue +26 -12
- package/components/VehicleUpdateMoreAction.vue +59 -46
- package/components/VisitorDataFromScannedQRCodeForm.vue +90 -65
- package/components/VisitorForm.vue +774 -210
- package/components/VisitorFormSelection.vue +40 -37
- package/components/VisitorManagement.vue +239 -82
- package/components/VisitorPassKeyQRScanner.vue +65 -18
- package/components/VisitorSearchResultSummary.vue +60 -16
- package/components/VisitorSocketPopUp.vue +22 -14
- package/components/VisitorsReportPreview.vue +44 -29
- package/components/WorkOrder/Create.vue +26 -17
- package/components/WorkOrder/ListView.vue +38 -7
- package/components/WorkOrder/Main.vue +62 -59
- package/composables/useFeedback.ts +3 -3
- package/composables/useHidAmico.ts +269 -0
- package/composables/useHidNavigation.ts +2 -9
- package/composables/useMember.ts +3 -3
- package/composables/useNFCPatrolDailyReport.ts +13 -0
- package/composables/useNFCPatrolMonthlyReport.ts +22 -56
- package/composables/useNFCPatrolReport.ts +13 -0
- package/composables/useNotificationPreference.ts +87 -0
- package/composables/useOnlineFormPages.ts +2 -0
- package/composables/useRole.ts +22 -0
- package/composables/useServiceProvider.ts +3 -3
- package/composables/useServiceProviderInvitation.ts +145 -0
- package/composables/useSipWebPhone.ts +336 -0
- package/composables/useSubscriptionPlan.ts +62 -0
- package/composables/useThemePreference.ts +63 -0
- package/composables/useVisitor.ts +6 -1
- package/composables/useWebUsb.ts +127 -37
- package/composables/useWorkOrder.ts +17 -3
- package/error.vue +30 -6
- package/nuxt.config.ts +36 -0
- package/package.json +25 -4
- package/pages/[org]/[site]/access-mgmt/administrator/index.vue +2 -2
- package/pages/[org]/[site]/access-mgmt/{identity-mapping → hid-cards}/index.vue +2 -2
- package/pages/[org]/[site]/access-mgmt/intercom/index.vue +1 -1
- package/pages/notification-settings.vue +19 -0
- package/pages/payment-method-linked.vue +34 -10
- package/pages/require-customer.vue +48 -10
- package/pages/require-organization-membership.vue +32 -8
- package/pages/unauthorized.vue +29 -4
- package/plugins/secure-member.client.ts +21 -56
- package/plugins/vuetify.ts +69 -2
- package/types/nfc-patrol-report.ts +3 -2
- package/types/site.d.ts +71 -0
- package/types/subscription.ts +18 -11
- package/utils/breadcrumb.test.ts +108 -0
- package/utils/breadcrumb.ts +82 -0
- package/utils/dashboard.test.ts +118 -0
- package/utils/dashboard.ts +53 -0
- package/utils/data.test.ts +95 -0
- package/utils/data.ts +40 -2
- package/utils/hid-discover.test.ts +102 -0
- package/utils/list-page.test.ts +60 -0
- package/utils/list-page.ts +38 -0
- package/utils/materialSymbols.ts +363 -0
- package/utils/nav-sections.test.ts +190 -0
- package/utils/nav-sections.ts +151 -0
- package/utils/nfc-patrol-report.test.ts +130 -0
- package/utils/nfc-patrol-report.ts +101 -0
- package/utils/role.test.ts +69 -0
- package/utils/role.ts +10 -0
- package/utils/route-name.test.ts +85 -0
- package/utils/route-name.ts +24 -0
- package/utils/status.test.ts +110 -0
- package/utils/status.ts +135 -0
- package/utils/table-card.test.ts +84 -0
- package/utils/theme-aa-ledger.ts +148 -0
- package/utils/theme.test.ts +485 -7
- package/utils/theme.ts +295 -110
- package/.changeset/README.md +0 -8
- package/.changeset/config.json +0 -11
- package/.editorconfig +0 -12
- package/.github/workflows/main.yml +0 -17
- package/.github/workflows/publish-staging.yml +0 -47
- package/.github/workflows/publish.yml +0 -39
- package/PUBLISHING.md +0 -269
- package/components/HidIdentityMapping.vue +0 -975
- package/components/ScheduleTaskAreaFormDialog.vue +0 -144
- package/components/ScheduleTaskAreaUpdateMoreAction.vue +0 -109
- package/components/ScheduleTastTicketMain.vue +0 -182
- package/components/TableWithButton.vue +0 -94
- package/test/visitor-socket.test.mjs +0 -36
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<v-row no-gutters align="center" justify="center">
|
|
3
3
|
<v-col cols="12" lg="12">
|
|
4
4
|
<TableMain
|
|
5
|
-
:title="`${siteName}
|
|
5
|
+
:title="`${siteName} Equipment`"
|
|
6
6
|
:items="items"
|
|
7
7
|
:headers="headers"
|
|
8
8
|
:loading="loading"
|
|
@@ -20,10 +20,8 @@
|
|
|
20
20
|
<v-row no-gutters align="center" class="w-100">
|
|
21
21
|
<v-col cols="auto" v-if="canAddEquipment">
|
|
22
22
|
<v-btn
|
|
23
|
-
class="text-none"
|
|
24
|
-
|
|
25
|
-
variant="tonal"
|
|
26
|
-
size="large"
|
|
23
|
+
class="text-none screen-btn-primary"
|
|
24
|
+
variant="flat"
|
|
27
25
|
@click="onCreateUnit()"
|
|
28
26
|
>
|
|
29
27
|
Add Equipment
|
|
@@ -32,7 +30,7 @@
|
|
|
32
30
|
|
|
33
31
|
<v-spacer />
|
|
34
32
|
|
|
35
|
-
<v-col cols="auto">
|
|
33
|
+
<v-col cols="auto" class="filter-field">
|
|
36
34
|
<v-text-field
|
|
37
35
|
v-model="searchInput"
|
|
38
36
|
density="compact"
|
|
@@ -47,11 +45,15 @@
|
|
|
47
45
|
</template>
|
|
48
46
|
|
|
49
47
|
<template #item.attachment="{ value }">
|
|
48
|
+
<!--
|
|
49
|
+
`variant="tonal"` drew Vuetify's own grey slab in the cell, the one
|
|
50
|
+
off-design control left on the row. The design's ghost button.
|
|
51
|
+
-->
|
|
50
52
|
<v-btn
|
|
51
53
|
v-if="value"
|
|
52
54
|
size="small"
|
|
53
|
-
variant="
|
|
54
|
-
class="
|
|
55
|
+
variant="outlined"
|
|
56
|
+
class="screen-btn-ghost"
|
|
55
57
|
@click.stop="viewAttachment(value)"
|
|
56
58
|
>
|
|
57
59
|
View Image
|
|
@@ -60,7 +62,11 @@
|
|
|
60
62
|
</template>
|
|
61
63
|
|
|
62
64
|
<template #item.status="{ value }">
|
|
63
|
-
<
|
|
65
|
+
<StatusChip
|
|
66
|
+
class="text-capitalize"
|
|
67
|
+
:status="value"
|
|
68
|
+
:label="value || 'N/A'"
|
|
69
|
+
/>
|
|
64
70
|
</template>
|
|
65
71
|
|
|
66
72
|
<template #item.block="{ value }">
|
|
@@ -141,67 +147,54 @@
|
|
|
141
147
|
</HygieneUpdateMoreAction>
|
|
142
148
|
</v-dialog>
|
|
143
149
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
<v-card-text>
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
>
|
|
157
|
-
</v-card-text>
|
|
150
|
+
<!--
|
|
151
|
+
All three dialogs were `v-toolbar` title bars over toolbar footers carrying
|
|
152
|
+
two block buttons, the confirm one on `color="black"` - not a token, so it
|
|
153
|
+
painted a light-theme fill on the dark theme, and the toolbar surface sat
|
|
154
|
+
visibly lighter than the card it was on. They are the shared `.screen-modal`
|
|
155
|
+
shape now. Same fields, same labels, same handlers, same busy states.
|
|
156
|
+
-->
|
|
157
|
+
<v-dialog v-model="dialogDeleteEquipment" max-width="520">
|
|
158
|
+
<v-card class="screen-modal">
|
|
159
|
+
<v-card-title class="text-capitalize">
|
|
160
|
+
Delete {{ selectedEquipment?.name || "Unit" }}
|
|
161
|
+
</v-card-title>
|
|
158
162
|
|
|
159
|
-
<v-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
<v-btn
|
|
163
|
-
block
|
|
164
|
-
variant="text"
|
|
165
|
-
class="text-none"
|
|
166
|
-
size="large"
|
|
167
|
-
@click="dialogDeleteEquipment = false"
|
|
168
|
-
height="48"
|
|
169
|
-
>
|
|
170
|
-
Cancel
|
|
171
|
-
</v-btn>
|
|
172
|
-
</v-col>
|
|
163
|
+
<v-card-text class="screen-modal__body">
|
|
164
|
+
Are you sure you want to delete this equipment?
|
|
165
|
+
</v-card-text>
|
|
173
166
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
167
|
+
<div class="screen-modal__footer">
|
|
168
|
+
<v-btn
|
|
169
|
+
class="screen-btn-ghost"
|
|
170
|
+
variant="outlined"
|
|
171
|
+
:disabled="submitting"
|
|
172
|
+
@click="dialogDeleteEquipment = false"
|
|
173
|
+
>
|
|
174
|
+
Cancel
|
|
175
|
+
</v-btn>
|
|
176
|
+
<v-btn
|
|
177
|
+
class="screen-btn-primary"
|
|
178
|
+
variant="flat"
|
|
179
|
+
:loading="submitting"
|
|
180
|
+
@click="_deleteEquipment"
|
|
181
|
+
>
|
|
182
|
+
Delete
|
|
183
|
+
</v-btn>
|
|
184
|
+
</div>
|
|
189
185
|
</v-card>
|
|
190
186
|
</v-dialog>
|
|
191
187
|
|
|
192
|
-
<v-dialog v-model="dialogStockAction" max-width="
|
|
193
|
-
<v-card>
|
|
194
|
-
<v-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
</v-row>
|
|
200
|
-
</v-toolbar>
|
|
201
|
-
<v-card-text class="pa-4">
|
|
188
|
+
<v-dialog v-model="dialogStockAction" max-width="520">
|
|
189
|
+
<v-card class="screen-modal">
|
|
190
|
+
<v-card-title class="text-capitalize">
|
|
191
|
+
{{ stockActionMode === "add" ? "Add Stock" : "Checkout Item" }}
|
|
192
|
+
</v-card-title>
|
|
193
|
+
|
|
194
|
+
<v-card-text class="screen-modal__body">
|
|
202
195
|
<v-form ref="stockActionFormRef" v-model="stockActionValid">
|
|
203
196
|
<v-row no-gutters>
|
|
204
|
-
<v-col cols="12"
|
|
197
|
+
<v-col cols="12">
|
|
205
198
|
<InputLabel
|
|
206
199
|
for="stockActionQty"
|
|
207
200
|
title="Quantity"
|
|
@@ -212,68 +205,53 @@
|
|
|
212
205
|
v-model.number="stockActionQuantity"
|
|
213
206
|
:rules="[requiredRule]"
|
|
214
207
|
density="comfortable"
|
|
215
|
-
variant="outlined"
|
|
216
208
|
type="number"
|
|
217
209
|
min="1"
|
|
218
210
|
placeholder="Enter quantity"
|
|
219
211
|
hide-details="auto"
|
|
212
|
+
class="filter-field"
|
|
220
213
|
/>
|
|
221
214
|
</v-col>
|
|
222
215
|
</v-row>
|
|
223
216
|
</v-form>
|
|
224
217
|
</v-card-text>
|
|
225
218
|
|
|
226
|
-
<
|
|
227
|
-
<v-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
variant="flat"
|
|
245
|
-
color="black"
|
|
246
|
-
class="text-none font-weight-bold rounded-0"
|
|
247
|
-
height="48"
|
|
248
|
-
:loading="submitting"
|
|
249
|
-
@click="stockActionMode === 'add' ? _addStock() : _requestItem()"
|
|
250
|
-
>
|
|
251
|
-
{{ stockActionMode === "add" ? "Add Stock" : "Checkout Item" }}
|
|
252
|
-
</v-btn>
|
|
253
|
-
</v-col>
|
|
254
|
-
</v-row>
|
|
255
|
-
</v-toolbar>
|
|
219
|
+
<div class="screen-modal__footer">
|
|
220
|
+
<v-btn
|
|
221
|
+
class="screen-btn-ghost"
|
|
222
|
+
variant="outlined"
|
|
223
|
+
:disabled="submitting"
|
|
224
|
+
@click="dialogStockAction = false"
|
|
225
|
+
>
|
|
226
|
+
Cancel
|
|
227
|
+
</v-btn>
|
|
228
|
+
<v-btn
|
|
229
|
+
class="screen-btn-primary"
|
|
230
|
+
variant="flat"
|
|
231
|
+
:loading="submitting"
|
|
232
|
+
@click="stockActionMode === 'add' ? _addStock() : _requestItem()"
|
|
233
|
+
>
|
|
234
|
+
{{ stockActionMode === "add" ? "Add Stock" : "Checkout Item" }}
|
|
235
|
+
</v-btn>
|
|
236
|
+
</div>
|
|
256
237
|
</v-card>
|
|
257
238
|
</v-dialog>
|
|
258
239
|
|
|
259
240
|
<v-dialog v-model="showAttachmentDialog" max-width="720" persistent>
|
|
260
|
-
<v-card
|
|
261
|
-
<v-card-title class="d-flex align-center
|
|
262
|
-
|
|
263
|
-
|
|
241
|
+
<v-card class="screen-modal">
|
|
242
|
+
<v-card-title class="d-flex align-center">
|
|
243
|
+
Attachment
|
|
264
244
|
<v-spacer />
|
|
265
|
-
|
|
266
245
|
<v-btn
|
|
267
246
|
icon="mdi-close"
|
|
268
247
|
variant="text"
|
|
269
|
-
|
|
248
|
+
class="screen-modal__close"
|
|
249
|
+
aria-label="Close"
|
|
270
250
|
@click="(showAttachmentDialog = false), (attachmentUrl = '')"
|
|
271
251
|
/>
|
|
272
252
|
</v-card-title>
|
|
273
253
|
|
|
274
|
-
<v-
|
|
275
|
-
|
|
276
|
-
<v-card-text class="pa-6">
|
|
254
|
+
<v-card-text class="screen-modal__body">
|
|
277
255
|
<v-img :src="attachmentUrl" contain />
|
|
278
256
|
</v-card-text>
|
|
279
257
|
</v-card>
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
<p class="flex-grow-1">Booking Fee</p>
|
|
80
80
|
<v-switch
|
|
81
81
|
v-model="facility.isBookingFeeEnabled"
|
|
82
|
-
color="
|
|
82
|
+
color="accent"
|
|
83
83
|
hide-details
|
|
84
84
|
@update:modelValue="onChangeIsBookingFeeEnabled"
|
|
85
85
|
></v-switch>
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
/>
|
|
140
140
|
</v-col>
|
|
141
141
|
<v-col cols="12" class="mt-4">
|
|
142
|
-
<v-card class="mx-auto border-sm pa-2
|
|
142
|
+
<v-card class="mx-auto border-sm pa-2 fee-summary" tile>
|
|
143
143
|
<v-row no-gutters align="center">
|
|
144
144
|
<v-col cols="" class="text-caption"> Total Booking Fee </v-col>
|
|
145
145
|
<v-col cols="" class="text-right text-caption">
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
</v-card>
|
|
170
170
|
</v-col>
|
|
171
171
|
<v-col cols="12" class="mt-4">
|
|
172
|
-
<v-card class="mx-auto border-sm pa-2
|
|
172
|
+
<v-card class="mx-auto border-sm pa-2 fee-summary" tile>
|
|
173
173
|
<v-row no-gutters align="center">
|
|
174
174
|
<v-col class="text-caption"> Peak Total Booking Fee </v-col>
|
|
175
175
|
<v-col class="text-right text-caption">
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
<p class="flex-grow-1">Guest</p>
|
|
211
211
|
<v-switch
|
|
212
212
|
v-model="facility.isGuestEnabled"
|
|
213
|
-
color="
|
|
213
|
+
color="accent"
|
|
214
214
|
hide-details
|
|
215
215
|
:disabled="!facility.isBookingFeeEnabled"
|
|
216
216
|
/>
|
|
@@ -256,7 +256,7 @@
|
|
|
256
256
|
/>
|
|
257
257
|
</v-col>
|
|
258
258
|
<v-col cols="12" class="mt-4">
|
|
259
|
-
<v-card class="mx-auto border-sm pa-2
|
|
259
|
+
<v-card class="mx-auto border-sm pa-2 fee-summary" tile>
|
|
260
260
|
<v-row no-gutters align="center">
|
|
261
261
|
<v-col class="text-caption">
|
|
262
262
|
Total Booking Fee for Guest
|
|
@@ -288,7 +288,7 @@
|
|
|
288
288
|
</v-card>
|
|
289
289
|
</v-col>
|
|
290
290
|
<v-col cols="12" class="mt-4">
|
|
291
|
-
<v-card class="mx-auto border-sm pa-2
|
|
291
|
+
<v-card class="mx-auto border-sm pa-2 fee-summary" tile>
|
|
292
292
|
<v-row no-gutters align="center">
|
|
293
293
|
<v-col class="text-caption">
|
|
294
294
|
Peak Total Booking Fee for Guest
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
<p class="flex-grow-1">Deposit</p>
|
|
333
333
|
<v-switch
|
|
334
334
|
v-model="facility.isDepositEnabled"
|
|
335
|
-
color="
|
|
335
|
+
color="accent"
|
|
336
336
|
hide-details
|
|
337
337
|
@update:modelValue="onChangeIsDepositFeeEnabled"
|
|
338
338
|
></v-switch>
|
|
@@ -366,7 +366,7 @@
|
|
|
366
366
|
<p class="flex-grow-1">Booking Policy</p>
|
|
367
367
|
<v-switch
|
|
368
368
|
v-model="facility.isBookingPolicyEnabled"
|
|
369
|
-
color="
|
|
369
|
+
color="accent"
|
|
370
370
|
hide-details
|
|
371
371
|
/>
|
|
372
372
|
</div>
|
|
@@ -419,16 +419,14 @@
|
|
|
419
419
|
></v-number-input>
|
|
420
420
|
</v-col>
|
|
421
421
|
<v-col cols="12" md="2" class="pa-1">
|
|
422
|
-
<
|
|
422
|
+
<AppButton
|
|
423
423
|
:disabled="!sampleData.description && !sampleData.count"
|
|
424
424
|
type="submit"
|
|
425
|
-
|
|
425
|
+
class="w-100"
|
|
426
426
|
@click="upsertChecklist()"
|
|
427
|
-
block
|
|
428
|
-
size="large"
|
|
429
427
|
>
|
|
430
428
|
{{ !isEditing ? "Add" : "Edit" }}
|
|
431
|
-
</
|
|
429
|
+
</AppButton>
|
|
432
430
|
</v-col>
|
|
433
431
|
</v-row>
|
|
434
432
|
</section>
|
|
@@ -445,7 +443,7 @@
|
|
|
445
443
|
<v-icon
|
|
446
444
|
icon="mdi-drag"
|
|
447
445
|
class="drag-handle cursor-move mr-2"
|
|
448
|
-
color="
|
|
446
|
+
color="muted"
|
|
449
447
|
/>
|
|
450
448
|
</template>
|
|
451
449
|
|
|
@@ -465,7 +463,7 @@
|
|
|
465
463
|
? 'mdi-message'
|
|
466
464
|
: 'mdi-message-outline'
|
|
467
465
|
"
|
|
468
|
-
:color="item.permanentRemarks ? 'primary' : '
|
|
466
|
+
:color="item.permanentRemarks ? 'primary' : 'muted'"
|
|
469
467
|
variant="text"
|
|
470
468
|
density="comfortable"
|
|
471
469
|
@click="remarksDialog(true, item?.permanentRemarks, index)"
|
|
@@ -503,7 +501,7 @@
|
|
|
503
501
|
<v-switch
|
|
504
502
|
v-model="isBookingUnitLimitEnabled"
|
|
505
503
|
class="d-flex align-center"
|
|
506
|
-
color="
|
|
504
|
+
color="accent"
|
|
507
505
|
hide-details
|
|
508
506
|
@update:model-value="onToggleBookingUnitLimit"
|
|
509
507
|
/>
|
|
@@ -541,7 +539,7 @@
|
|
|
541
539
|
<v-switch
|
|
542
540
|
v-model="isMaxNumberGuestLimitEnabled"
|
|
543
541
|
class="d-flex align-center"
|
|
544
|
-
color="
|
|
542
|
+
color="accent"
|
|
545
543
|
hide-details
|
|
546
544
|
@update:model-value="onToggleMaxNumberGuestLimit"
|
|
547
545
|
/>
|
|
@@ -578,7 +576,7 @@
|
|
|
578
576
|
<v-switch
|
|
579
577
|
v-model="isCancelAllowedLimitEnabled"
|
|
580
578
|
class="d-flex align-center"
|
|
581
|
-
color="
|
|
579
|
+
color="accent"
|
|
582
580
|
hide-details
|
|
583
581
|
@update:model-value="onToggleCancelAllowedLimit"
|
|
584
582
|
/>
|
|
@@ -607,17 +605,14 @@
|
|
|
607
605
|
width="300"
|
|
608
606
|
persistent
|
|
609
607
|
>
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
@click="remarksDialog(false)"
|
|
619
|
-
/>
|
|
620
|
-
</v-toolbar>
|
|
608
|
+
<!-- Was a `v-card` with a bare `v-toolbar` heading, which Vuetify paints
|
|
609
|
+
from its own `surface` - a slab visibly lighter than the card on the
|
|
610
|
+
dark theme. The design's modal heading is the card's own title row. -->
|
|
611
|
+
<v-card class="screen-modal">
|
|
612
|
+
<v-card-title class="d-flex align-center">
|
|
613
|
+
<span class="flex-grow-1">Permanent Remarks</span>
|
|
614
|
+
<v-icon icon="mdi-close" size="30" @click="remarksDialog(false)" />
|
|
615
|
+
</v-card-title>
|
|
621
616
|
|
|
622
617
|
<v-row no-gutters class="pa-4">
|
|
623
618
|
<!-- remarks -->
|
|
@@ -635,13 +630,9 @@
|
|
|
635
630
|
<!-- clear/confirm buttons-->
|
|
636
631
|
<v-col cols="12" class="mt-4">
|
|
637
632
|
<v-row no-gutters>
|
|
638
|
-
<
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
color="primary"
|
|
642
|
-
flat
|
|
643
|
-
@click="confirmRemarks()"
|
|
644
|
-
/>
|
|
633
|
+
<AppButton class="w-100" @click="confirmRemarks()">
|
|
634
|
+
Confirm
|
|
635
|
+
</AppButton>
|
|
645
636
|
</v-row>
|
|
646
637
|
</v-col>
|
|
647
638
|
</v-row>
|
|
@@ -650,18 +641,18 @@
|
|
|
650
641
|
|
|
651
642
|
<!-- delete -->
|
|
652
643
|
<v-dialog v-model="isDeleteItem" width="500" persistent class="text-center">
|
|
653
|
-
<v-card class="
|
|
654
|
-
<!-- HEADER
|
|
655
|
-
|
|
656
|
-
|
|
644
|
+
<v-card class="screen-modal">
|
|
645
|
+
<!-- HEADER - the close cross sat in a `v-toolbar`, a second grey slab
|
|
646
|
+
above the card on the dark theme. It is the title row's own end. -->
|
|
647
|
+
<v-card-title class="d-flex justify-end">
|
|
657
648
|
<v-icon
|
|
658
649
|
icon="mdi-close"
|
|
659
650
|
size="x-large"
|
|
660
651
|
@click="isDeleteItem = false"
|
|
661
652
|
/>
|
|
662
|
-
</v-
|
|
653
|
+
</v-card-title>
|
|
663
654
|
|
|
664
|
-
<v-card-text class="d-flex flex-column align-center">
|
|
655
|
+
<v-card-text class="screen-modal__body d-flex flex-column align-center">
|
|
665
656
|
<img
|
|
666
657
|
src="/icons/delete-dialog-icon.svg"
|
|
667
658
|
alt="delete-dialog-icon"
|
|
@@ -671,15 +662,8 @@
|
|
|
671
662
|
/>
|
|
672
663
|
Are you sure you want to delete this?
|
|
673
664
|
</v-card-text>
|
|
674
|
-
<v-col>
|
|
675
|
-
<
|
|
676
|
-
text="yes"
|
|
677
|
-
type="submit"
|
|
678
|
-
color="primary"
|
|
679
|
-
@click="confirmDelete()"
|
|
680
|
-
width="50%"
|
|
681
|
-
elevation="0"
|
|
682
|
-
/>
|
|
665
|
+
<v-col class="d-flex justify-center pb-4">
|
|
666
|
+
<AppButton type="submit" @click="confirmDelete()">Yes</AppButton>
|
|
683
667
|
</v-col>
|
|
684
668
|
</v-card>
|
|
685
669
|
</v-dialog>
|
|
@@ -1080,10 +1064,17 @@ function onToggleCancelAllowedLimit(val: any) {
|
|
|
1080
1064
|
}
|
|
1081
1065
|
|
|
1082
1066
|
.list-feature-toggle {
|
|
1083
|
-
border: 1px solid
|
|
1067
|
+
border: 1px solid var(--border);
|
|
1084
1068
|
height: 50px;
|
|
1085
1069
|
}
|
|
1086
1070
|
|
|
1071
|
+
/* The four fee-summary panels asked Vuetify for `grey-lighten-4` - #f5f5f5 in
|
|
1072
|
+
BOTH themes, so a white slab inside a dark card. `--bg` is the design's
|
|
1073
|
+
recessed surface and follows the theme. */
|
|
1074
|
+
.fee-summary {
|
|
1075
|
+
background: var(--bg);
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1087
1078
|
.drag-area {
|
|
1088
1079
|
cursor: grab;
|
|
1089
1080
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<FormDialog v-model="dialog" @close="closeDialog">
|
|
3
3
|
<template #title>
|
|
4
|
-
<span class="
|
|
4
|
+
<span class="screen-card-title pt-1 text-capitalize">
|
|
5
5
|
{{ isEditMode ? "Edit Feedback" : "Create Feedback" }}
|
|
6
6
|
</span>
|
|
7
7
|
</template>
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
item-value="value"
|
|
23
23
|
item-props
|
|
24
24
|
variant="outlined"
|
|
25
|
-
density="
|
|
26
|
-
class="mb-2"
|
|
25
|
+
density="comfortable"
|
|
26
|
+
class="mb-2 filter-field"
|
|
27
27
|
clearable
|
|
28
28
|
:custom-filter="customFilter"
|
|
29
29
|
:rules="[requiredRule]"
|
|
30
30
|
>
|
|
31
|
-
<template #label> Subject <span class="
|
|
31
|
+
<template #label> Subject <span class="feedback-form__required">*</span> </template>
|
|
32
32
|
</v-autocomplete>
|
|
33
33
|
|
|
34
34
|
<!-- <v-autocomplete
|
|
@@ -44,37 +44,43 @@
|
|
|
44
44
|
clearable
|
|
45
45
|
:rules="[requiredRule]"
|
|
46
46
|
>
|
|
47
|
-
<template #label> Category <span class="
|
|
47
|
+
<template #label> Category <span class="feedback-form__required">*</span> </template>
|
|
48
48
|
</v-autocomplete> -->
|
|
49
49
|
|
|
50
50
|
<v-text-field
|
|
51
51
|
label="Location"
|
|
52
52
|
variant="outlined"
|
|
53
|
-
density="
|
|
53
|
+
density="comfortable"
|
|
54
|
+
class="mb-2 filter-field"
|
|
54
55
|
v-model="localFeedback.location"
|
|
55
56
|
:rules="[requiredRule]"
|
|
56
57
|
>
|
|
57
|
-
<template #label> Location <span class="
|
|
58
|
+
<template #label> Location <span class="feedback-form__required">*</span> </template>
|
|
58
59
|
</v-text-field>
|
|
59
60
|
|
|
60
61
|
<v-textarea
|
|
61
62
|
label="Description"
|
|
62
63
|
variant="outlined"
|
|
63
|
-
density="
|
|
64
|
+
density="comfortable"
|
|
65
|
+
class="filter-field"
|
|
64
66
|
auto-grow
|
|
65
67
|
rows="4"
|
|
66
68
|
v-model="localFeedback.description"
|
|
67
69
|
:rules="[requiredRule]"
|
|
68
70
|
>
|
|
69
|
-
<template #label> Description <span class="
|
|
71
|
+
<template #label> Description <span class="feedback-form__required">*</span> </template>
|
|
70
72
|
</v-textarea>
|
|
71
73
|
|
|
72
74
|
<template #footer>
|
|
75
|
+
<!-- `color="primary-button"` was already the right token (the FILL, not
|
|
76
|
+
the `primary` foreground) and `height="40"` already the right number,
|
|
77
|
+
but both were stated by hand. `.screen-btn-primary` is where the
|
|
78
|
+
layer says that once, and it wins over Vuetify's `--v-btn-height`
|
|
79
|
+
without an `!important`. -->
|
|
73
80
|
<v-btn
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
class="text-capitalize mb-4 screen-btn-primary"
|
|
82
|
+
variant="flat"
|
|
76
83
|
block
|
|
77
|
-
height="40"
|
|
78
84
|
:loading="loading"
|
|
79
85
|
:disabled="loading || !isFormValid"
|
|
80
86
|
@click="submitFeedback"
|
|
@@ -171,3 +177,11 @@ const customFilter = (value: string, query: string, item: any) => {
|
|
|
171
177
|
return title.includes(search) || subtitle.includes(search);
|
|
172
178
|
};
|
|
173
179
|
</script>
|
|
180
|
+
|
|
181
|
+
<style scoped>
|
|
182
|
+
/* Was `text-red`, a fixed Vuetify red that is the same red on both themes.
|
|
183
|
+
`--err` is the theme's error ink and follows it. */
|
|
184
|
+
.feedback-form__required {
|
|
185
|
+
color: var(--err);
|
|
186
|
+
}
|
|
187
|
+
</style>
|