@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
|
@@ -1,31 +1,37 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
THE DASHBOARD PANEL.
|
|
3
|
+
|
|
4
|
+
The `isPropertyMode` branch of DashboardMain already draws its panels the
|
|
5
|
+
design's way, inline: a `.dashboard-card` surface carrying `.figma-panel`
|
|
6
|
+
padding, a header whose `h2` is the card title and whose action is a bare
|
|
7
|
+
text affordance, then the body. This component is what the OTHER two
|
|
8
|
+
branches use, and it was still a `v-card` with Vuetify typography - which is
|
|
9
|
+
why the same dashboard looked new for property-management and old for the
|
|
10
|
+
five service verticals.
|
|
11
|
+
|
|
12
|
+
So it now draws that same construction, with the property branch's literal
|
|
13
|
+
values, on `AppCard`. Copied here rather than reached for across components:
|
|
14
|
+
the `.figma-*` rules are global to DashboardMain, and depending on a
|
|
15
|
+
sibling's stylesheet is how a panel silently loses its padding later.
|
|
16
|
+
-->
|
|
1
17
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class="d-flex flex-column w-100"
|
|
7
|
-
style="min-height: 200px"
|
|
8
|
-
>
|
|
9
|
-
<div class="d-flex align-center justify-space-between pa-5 pb-3">
|
|
10
|
-
<h2 class="text-body-1 font-weight-black text-blue-grey-darken-4 mb-0">
|
|
11
|
-
{{ title }}
|
|
12
|
-
</h2>
|
|
13
|
-
<v-btn
|
|
18
|
+
<AppCard class="dashboard-panel">
|
|
19
|
+
<div class="dashboard-panel__header">
|
|
20
|
+
<h2>{{ title }}</h2>
|
|
21
|
+
<button
|
|
14
22
|
v-if="actionLabel"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
size="small"
|
|
18
|
-
class="text-none font-weight-bold"
|
|
23
|
+
class="dashboard-panel__action"
|
|
24
|
+
type="button"
|
|
19
25
|
@click="$emit('action')"
|
|
20
26
|
>
|
|
21
27
|
{{ actionLabel }}
|
|
22
|
-
</
|
|
28
|
+
</button>
|
|
23
29
|
</div>
|
|
24
30
|
|
|
25
|
-
<div class="
|
|
31
|
+
<div class="dashboard-panel__body">
|
|
26
32
|
<slot />
|
|
27
33
|
</div>
|
|
28
|
-
</
|
|
34
|
+
</AppCard>
|
|
29
35
|
</template>
|
|
30
36
|
|
|
31
37
|
<script setup lang="ts">
|
|
@@ -36,9 +42,66 @@ defineProps({
|
|
|
36
42
|
},
|
|
37
43
|
actionLabel: {
|
|
38
44
|
type: String,
|
|
39
|
-
default:
|
|
45
|
+
default: "",
|
|
40
46
|
},
|
|
41
47
|
});
|
|
42
48
|
|
|
43
|
-
defineEmits([
|
|
49
|
+
defineEmits(["action"]);
|
|
44
50
|
</script>
|
|
51
|
+
|
|
52
|
+
<style scoped>
|
|
53
|
+
/* `.dashboard-card` + `.dashboard-panel` + `.figma-panel`, resolved: the
|
|
54
|
+
figma layer wins the shadow and the padding, so the panel is a flat 14px
|
|
55
|
+
card at 26px/28px/24px and 276px tall. */
|
|
56
|
+
.dashboard-panel {
|
|
57
|
+
box-shadow: none;
|
|
58
|
+
display: flex;
|
|
59
|
+
flex-direction: column;
|
|
60
|
+
font-family: var(--font-sans);
|
|
61
|
+
height: 100%;
|
|
62
|
+
min-height: 276px;
|
|
63
|
+
padding: 26px 28px 24px;
|
|
64
|
+
width: 100%;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.dashboard-panel__header {
|
|
68
|
+
align-items: center;
|
|
69
|
+
display: flex;
|
|
70
|
+
gap: 16px;
|
|
71
|
+
justify-content: space-between;
|
|
72
|
+
min-height: 18px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* The panel heading is the design's card title: 15.5px/800, sentence case. */
|
|
76
|
+
.dashboard-panel__header h2 {
|
|
77
|
+
color: var(--text);
|
|
78
|
+
font-family: var(--font-sans);
|
|
79
|
+
font-size: var(--fs-card-title);
|
|
80
|
+
font-weight: var(--fw-card-title);
|
|
81
|
+
letter-spacing: 0;
|
|
82
|
+
line-height: 1.2;
|
|
83
|
+
margin: 0;
|
|
84
|
+
text-transform: none;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Not an AppButton: the design's panel action is a text affordance, 12px/800
|
|
88
|
+
with no box - the same one the property branch already ships. */
|
|
89
|
+
.dashboard-panel__action {
|
|
90
|
+
appearance: none;
|
|
91
|
+
background: transparent;
|
|
92
|
+
border: 0;
|
|
93
|
+
color: rgb(var(--v-theme-primary));
|
|
94
|
+
cursor: pointer;
|
|
95
|
+
font-size: 12px;
|
|
96
|
+
font-weight: 800;
|
|
97
|
+
line-height: 1;
|
|
98
|
+
padding: 0;
|
|
99
|
+
white-space: nowrap;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.dashboard-panel__body {
|
|
103
|
+
flex: 1;
|
|
104
|
+
margin-top: 20px;
|
|
105
|
+
min-width: 0;
|
|
106
|
+
}
|
|
107
|
+
</style>
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row no-gutters class="pa-3">
|
|
3
3
|
<v-col cols="12">
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
<AppCard class="delivery-company__card">
|
|
5
|
+
<!--
|
|
6
|
+
The one toolbar the design puts on top of the card. It was a
|
|
7
|
+
hardcoded grey-lighten-4 bar, which stays light in dark mode
|
|
8
|
+
and painted as a white slab there.
|
|
9
|
+
-->
|
|
10
|
+
<CardToolbar>
|
|
11
|
+
<template #left>
|
|
12
|
+
<span v-if="!hideTitle" class="screen-card-title">
|
|
13
|
+
Delivery Companies
|
|
14
|
+
</span>
|
|
15
|
+
</template>
|
|
10
16
|
|
|
11
|
-
<template #
|
|
12
|
-
<
|
|
13
|
-
@click="handleAdd">
|
|
17
|
+
<template #right>
|
|
18
|
+
<AppButton v-if="!props.readOnly" @click="handleAdd">
|
|
14
19
|
Add
|
|
15
|
-
</
|
|
20
|
+
</AppButton>
|
|
16
21
|
</template>
|
|
17
|
-
</
|
|
22
|
+
</CardToolbar>
|
|
18
23
|
|
|
19
|
-
<
|
|
24
|
+
<div class="pa-0" style="min-height: 100px;">
|
|
20
25
|
<template v-if="companies.length > 0">
|
|
21
26
|
<draggable :list="companies" item-key="index" class="drag-area"
|
|
22
27
|
:disabled="editingIndex !== null">
|
|
@@ -60,11 +65,11 @@
|
|
|
60
65
|
</draggable>
|
|
61
66
|
</template>
|
|
62
67
|
|
|
63
|
-
<div v-else class="text-center py-5">
|
|
68
|
+
<div v-else class="screen-empty text-center py-5">
|
|
64
69
|
No delivery companies added yet.
|
|
65
70
|
</div>
|
|
66
|
-
</
|
|
67
|
-
</
|
|
71
|
+
</div>
|
|
72
|
+
</AppCard>
|
|
68
73
|
</v-col>
|
|
69
74
|
|
|
70
75
|
<v-dialog v-model="dialog.add" persistent width="450">
|
|
@@ -82,12 +87,13 @@
|
|
|
82
87
|
</v-card-text>
|
|
83
88
|
|
|
84
89
|
<v-toolbar>
|
|
85
|
-
<v-row no-gutters justify="end" align="center" class="px-5">
|
|
86
|
-
<
|
|
87
|
-
|
|
88
|
-
|
|
90
|
+
<v-row no-gutters justify="end" align="center" class="px-5 ga-2">
|
|
91
|
+
<AppButton variant="ghost" @click="dialog.add = false">
|
|
92
|
+
Cancel
|
|
93
|
+
</AppButton>
|
|
94
|
+
<AppButton @click="saveEdit(companies.length)">
|
|
89
95
|
Add
|
|
90
|
-
</
|
|
96
|
+
</AppButton>
|
|
91
97
|
</v-row>
|
|
92
98
|
</v-toolbar>
|
|
93
99
|
</v-card>
|
|
@@ -237,4 +243,12 @@ watch(initialCompanies, (val) => {
|
|
|
237
243
|
.drag-handle {
|
|
238
244
|
cursor: grab;
|
|
239
245
|
}
|
|
246
|
+
|
|
247
|
+
/* The size cap the v-card carried as max-width/max-height attributes, kept
|
|
248
|
+
verbatim so the panel does not grow to the full page width. */
|
|
249
|
+
.delivery-company__card {
|
|
250
|
+
max-width: 700px;
|
|
251
|
+
max-height: 500px;
|
|
252
|
+
overflow-y: auto;
|
|
253
|
+
}
|
|
240
254
|
</style>
|
|
@@ -1,30 +1,29 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-card width="100%" :disabled="loading" :loading="loading">
|
|
3
|
-
<v-card-text
|
|
4
|
-
<span> {{ promptTitle }}</span>
|
|
2
|
+
<v-card class="screen-modal" width="100%" :disabled="loading" :loading="loading">
|
|
3
|
+
<v-card-text class="screen-modal__body pa-5 my-5 px-7 text-center">
|
|
4
|
+
<span class="screen-card-title"> {{ promptTitle }}</span>
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
<!-- `text-error` is Vuetify's own class over `--v-theme-error`,
|
|
7
|
+
which is the design's `--err` in both themes - already a token,
|
|
8
|
+
so it stays. -->
|
|
9
|
+
<div v-if="message" class="text-error mt-2">
|
|
7
10
|
{{ message }} Do you want to delete anyway?
|
|
8
11
|
</div>
|
|
9
12
|
</v-card-text>
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
<!-- The design's footer: two equal-width buttons, ghost then primary,
|
|
15
|
+
on a bordered strip. The handoff draws no destructive variant, so
|
|
16
|
+
the confirming action takes the primary shape like every other
|
|
17
|
+
modal's Submit. -->
|
|
18
|
+
<div class="screen-modal__footer">
|
|
19
|
+
<v-btn class="screen-btn-ghost" variant="outlined" @click="emit('close')">
|
|
20
|
+
Cancel
|
|
21
|
+
</v-btn>
|
|
19
22
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
</v-btn>
|
|
25
|
-
</v-col>
|
|
26
|
-
</v-row>
|
|
27
|
-
</v-toolbar>
|
|
23
|
+
<v-btn class="screen-btn-primary" variant="flat" @click="emit('delete')">
|
|
24
|
+
Delete
|
|
25
|
+
</v-btn>
|
|
26
|
+
</div>
|
|
28
27
|
</v-card>
|
|
29
28
|
</template>
|
|
30
29
|
|
|
@@ -48,4 +47,4 @@ const emit = defineEmits(["close", "delete"])
|
|
|
48
47
|
|
|
49
48
|
</script>
|
|
50
49
|
|
|
51
|
-
<style scoped></style>
|
|
50
|
+
<style scoped></style>
|
|
@@ -1,32 +1,25 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-card width="100%" :disabled="loading" :loading="loading">
|
|
3
|
-
<v-card-text
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
</span>
|
|
10
|
-
</v-col>
|
|
11
|
-
</v-row>
|
|
2
|
+
<v-card class="screen-modal" width="100%" :disabled="loading" :loading="loading">
|
|
3
|
+
<v-card-text class="screen-modal__body pa-5 my-5 px-7 text-center">
|
|
4
|
+
<span class="screen-card-title d-block">{{ promptTitle }}</span>
|
|
5
|
+
|
|
6
|
+
<span class="d-block mt-5">
|
|
7
|
+
By proceeding, your previous user inputs will be replaced.
|
|
8
|
+
</span>
|
|
12
9
|
</v-card-text>
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
<!-- The design's footer: two equal-width buttons, ghost then primary,
|
|
12
|
+
on a bordered strip. Replaces the `v-toolbar` of two square 48px
|
|
13
|
+
tiles, whose Proceed was a hardcoded `color="black"` fill. -->
|
|
14
|
+
<div class="screen-modal__footer">
|
|
15
|
+
<v-btn class="screen-btn-ghost" variant="outlined" @click="emit('close')">
|
|
16
|
+
Cancel
|
|
17
|
+
</v-btn>
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
</v-btn>
|
|
27
|
-
</v-col>
|
|
28
|
-
</v-row>
|
|
29
|
-
</v-toolbar>
|
|
19
|
+
<v-btn class="screen-btn-primary" variant="flat" @click="emit('proceed')">
|
|
20
|
+
Proceed
|
|
21
|
+
</v-btn>
|
|
22
|
+
</div>
|
|
30
23
|
</v-card>
|
|
31
24
|
</template>
|
|
32
25
|
|
|
@@ -46,4 +39,4 @@ const emit = defineEmits(["close", "proceed"])
|
|
|
46
39
|
|
|
47
40
|
</script>
|
|
48
41
|
|
|
49
|
-
<style scoped></style>
|
|
42
|
+
<style scoped></style>
|
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-card width="100%" :disabled="loading" :loading="loading">
|
|
3
|
-
<v-card-text
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<span >
|
|
10
|
-
{{ message }}
|
|
11
|
-
</span>
|
|
12
|
-
</v-col>
|
|
13
|
-
</v-row>
|
|
2
|
+
<v-card class="screen-modal" width="100%" :disabled="loading" :loading="loading">
|
|
3
|
+
<v-card-text class="screen-modal__body pa-5 my-5 px-7 text-center">
|
|
4
|
+
<span class="screen-card-title d-block">{{ promptTitle }}</span>
|
|
5
|
+
|
|
6
|
+
<span v-if="message" class="d-block mt-5">
|
|
7
|
+
{{ message }}
|
|
8
|
+
</span>
|
|
14
9
|
</v-card-text>
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
<!-- The design's footer: two equal-width buttons, ghost then primary,
|
|
12
|
+
on a bordered strip. -->
|
|
13
|
+
<div class="screen-modal__footer">
|
|
14
|
+
<v-btn class="screen-btn-ghost" variant="outlined" @click="emit('close')">
|
|
15
|
+
Cancel
|
|
16
|
+
</v-btn>
|
|
17
|
+
|
|
18
|
+
<!-- The old default was a hardcoded `color="black"` fill, which is
|
|
19
|
+
the same black on the dark theme as on the light one. With no
|
|
20
|
+
colour asked for, the confirming action now takes the design's
|
|
21
|
+
primary shape like every other modal's Submit.
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
A caller that DOES name a colour keeps it: `NumberSettingField`
|
|
24
|
+
passes `red` to mark a destructive confirm, and the handoff
|
|
25
|
+
draws no destructive button, so overriding it here would be
|
|
26
|
+
inventing a control the design never named. Left as it renders
|
|
27
|
+
today and raised for a design decision. -->
|
|
28
|
+
<v-btn :class="confirmButtonColor ? 'text-none' : 'screen-btn-primary'"
|
|
29
|
+
variant="flat" :color="confirmButtonColor || undefined" @click="emit('proceed')">
|
|
30
|
+
{{ confirmLabel }}
|
|
31
|
+
</v-btn>
|
|
32
|
+
</div>
|
|
32
33
|
</v-card>
|
|
33
34
|
</template>
|
|
34
35
|
|
|
@@ -52,7 +53,7 @@ const props = defineProps({
|
|
|
52
53
|
},
|
|
53
54
|
confirmButtonColor: {
|
|
54
55
|
type: String,
|
|
55
|
-
default: "
|
|
56
|
+
default: ""
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
})
|
|
@@ -61,4 +62,4 @@ const emit = defineEmits(["close", "proceed"])
|
|
|
61
62
|
|
|
62
63
|
</script>
|
|
63
64
|
|
|
64
|
-
<style scoped></style>
|
|
65
|
+
<style scoped></style>
|
|
@@ -1,71 +1,67 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}}</span>
|
|
12
|
-
</v-row>
|
|
13
|
-
</template>
|
|
14
|
-
</v-toolbar>
|
|
2
|
+
<!-- The shared detail sheet several list screens open a row into. Its title
|
|
3
|
+
row and its footer were both `v-toolbar`s - fixed grey slabs that stay
|
|
4
|
+
grey on the dark theme - and the footer's action was a hardcoded
|
|
5
|
+
`color="black"` fill. -->
|
|
6
|
+
<v-card class="screen-modal" width="100%">
|
|
7
|
+
<template v-if="$slots.header">
|
|
8
|
+
<slot name="header" :title="title" :onClose="onClose" />
|
|
9
|
+
</template>
|
|
10
|
+
<v-card-title v-else class="text-capitalize">{{ title }}</v-card-title>
|
|
15
11
|
|
|
16
|
-
<v-card-text
|
|
12
|
+
<v-card-text class="screen-modal__body pb-0" :class="contentNoPadding ? 'pa-0' : ''">
|
|
17
13
|
<slot name="content" />
|
|
18
14
|
</v-card-text>
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
<!-- The design's footer strip: equal-width buttons, ghost then primary. -->
|
|
17
|
+
<div class="screen-modal__footer">
|
|
18
|
+
<v-btn
|
|
19
|
+
variant="outlined"
|
|
20
|
+
class="screen-btn-ghost"
|
|
21
|
+
@click="emit('close')"
|
|
22
|
+
>
|
|
23
|
+
Close
|
|
24
|
+
</v-btn>
|
|
25
|
+
|
|
26
|
+
<v-menu v-if="canUpdate || canDelete" contained>
|
|
27
|
+
<template #activator="{ props }">
|
|
23
28
|
<v-btn
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
@click="emit('close')"
|
|
29
|
-
height="48"
|
|
29
|
+
variant="flat"
|
|
30
|
+
class="screen-btn-primary"
|
|
31
|
+
:disabled="disabled"
|
|
32
|
+
v-bind="props"
|
|
30
33
|
>
|
|
31
|
-
|
|
34
|
+
More actions
|
|
32
35
|
</v-btn>
|
|
33
|
-
</
|
|
34
|
-
|
|
35
|
-
<v-col v-if="canUpdate || canDelete" cols="6" class="pa-0" >
|
|
36
|
-
<v-menu contained>
|
|
37
|
-
<template #activator="{ props }">
|
|
38
|
-
<v-btn
|
|
39
|
-
block
|
|
40
|
-
variant="flat"
|
|
41
|
-
color="black"
|
|
42
|
-
class="text-none"
|
|
43
|
-
height="48"
|
|
44
|
-
:disabled="disabled"
|
|
45
|
-
v-bind="props"
|
|
46
|
-
tile
|
|
47
|
-
>
|
|
48
|
-
More actions
|
|
49
|
-
</v-btn>
|
|
50
|
-
</template>
|
|
36
|
+
</template>
|
|
51
37
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
38
|
+
<!-- The dropdown itself is left as Vuetify draws it: the handoff
|
|
39
|
+
specifies the PROFILE dropdown (240px, 14px radius) and mentions a
|
|
40
|
+
per-row kebab menu without giving it a shape, and this menu opens
|
|
41
|
+
on a click the harness cannot drive, so it could not be
|
|
42
|
+
render-verified either. Only the row type and the destructive ink
|
|
43
|
+
change. -->
|
|
44
|
+
<v-list class="pa-0 update-more__list">
|
|
45
|
+
<v-list-item v-if="canUpdate" @click="emit('edit')">
|
|
46
|
+
<v-list-item-title>
|
|
47
|
+
{{ editButtonLabel }}
|
|
48
|
+
</v-list-item-title>
|
|
49
|
+
</v-list-item>
|
|
58
50
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
51
|
+
<!-- `text-red` was Vuetify's fixed #f44336, the same red on both
|
|
52
|
+
themes. `text-error` is Vuetify's own class over
|
|
53
|
+
`--v-theme-error`, which IS the design's `--err`. The handoff's
|
|
54
|
+
one documented destructive treatment is the profile menu's
|
|
55
|
+
Logout row: "red Logout row (err color, err-bg hover)" - ink,
|
|
56
|
+
not a filled button - so this row follows it exactly. -->
|
|
57
|
+
<v-list-item v-if="canDelete" @click="emit('delete')" class="text-error">
|
|
58
|
+
<v-list-item-title>
|
|
59
|
+
{{ deleteButtonLabel }}
|
|
60
|
+
</v-list-item-title>
|
|
61
|
+
</v-list-item>
|
|
62
|
+
</v-list>
|
|
63
|
+
</v-menu>
|
|
64
|
+
</div>
|
|
69
65
|
</v-card>
|
|
70
66
|
</template>
|
|
71
67
|
|
|
@@ -105,4 +101,11 @@ const emit = defineEmits(["close", "edit", "delete"]);
|
|
|
105
101
|
const { canUpdate, editButtonLabel, deleteButtonLabel, title, disabled } = prop;
|
|
106
102
|
</script>
|
|
107
103
|
|
|
108
|
-
<style scoped
|
|
104
|
+
<style scoped>
|
|
105
|
+
/* `text-subtitle-2` was Vuetify's 0.875rem/500; the handoff names no type for
|
|
106
|
+
a menu row, so it takes the established cell type. */
|
|
107
|
+
.update-more__list :deep(.v-list-item-title) {
|
|
108
|
+
font-size: var(--fs-cell);
|
|
109
|
+
font-weight: var(--fw-cell);
|
|
110
|
+
}
|
|
111
|
+
</style>
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<v-card width="100%">
|
|
3
|
-
<v-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
{{ prop.mode }} Document
|
|
7
|
-
</span>
|
|
8
|
-
</v-row>
|
|
9
|
-
</v-toolbar>
|
|
10
|
-
<v-card-text style="max-height: 100vh; overflow-y: auto" class="pa-0">
|
|
2
|
+
<v-card width="100%" class="screen-modal">
|
|
3
|
+
<v-card-title class="text-capitalize">{{ prop.mode }} Document</v-card-title>
|
|
4
|
+
|
|
5
|
+
<v-card-text class="screen-modal__body pa-0">
|
|
11
6
|
<v-form v-model="validForm" :disabled="disable">
|
|
12
7
|
<v-col cols="12" class="px-6">
|
|
13
8
|
<InputLabel class="text-capitalize" title="Document Attachment" />
|
|
@@ -24,6 +19,7 @@
|
|
|
24
19
|
<InputLabel class="text-capitalize" title="Document Name" />
|
|
25
20
|
<v-text-field
|
|
26
21
|
v-model.trim="document.name"
|
|
22
|
+
class="filter-field"
|
|
27
23
|
density="comfortable"
|
|
28
24
|
></v-text-field>
|
|
29
25
|
</v-col>
|
|
@@ -42,15 +38,15 @@
|
|
|
42
38
|
</v-form>
|
|
43
39
|
</v-card-text>
|
|
44
40
|
|
|
45
|
-
|
|
41
|
+
<!-- Was a `v-toolbar`: a grey slab with square (`tile`) buttons and a
|
|
42
|
+
hardcoded `color="black"` primary. The gate on Submit is unchanged. -->
|
|
43
|
+
<v-card-actions class="screen-modal__footer">
|
|
46
44
|
<v-row no-gutters>
|
|
47
|
-
<v-col cols="6">
|
|
45
|
+
<v-col cols="6" class="pr-2">
|
|
48
46
|
<v-btn
|
|
49
|
-
tile
|
|
50
47
|
block
|
|
51
|
-
variant="
|
|
52
|
-
class="text-none"
|
|
53
|
-
size="48"
|
|
48
|
+
variant="outlined"
|
|
49
|
+
class="text-none screen-btn-ghost"
|
|
54
50
|
@click="cancel"
|
|
55
51
|
:disabled="disable"
|
|
56
52
|
>
|
|
@@ -58,14 +54,11 @@
|
|
|
58
54
|
</v-btn>
|
|
59
55
|
</v-col>
|
|
60
56
|
|
|
61
|
-
<v-col cols="6">
|
|
57
|
+
<v-col cols="6" class="pl-2">
|
|
62
58
|
<v-btn
|
|
63
|
-
tile
|
|
64
59
|
block
|
|
65
60
|
variant="flat"
|
|
66
|
-
|
|
67
|
-
class="text-none"
|
|
68
|
-
size="48"
|
|
61
|
+
class="text-none screen-btn-primary"
|
|
69
62
|
:disabled="
|
|
70
63
|
!validForm ||
|
|
71
64
|
disable ||
|
|
@@ -79,7 +72,7 @@
|
|
|
79
72
|
</v-btn>
|
|
80
73
|
</v-col>
|
|
81
74
|
</v-row>
|
|
82
|
-
</v-
|
|
75
|
+
</v-card-actions>
|
|
83
76
|
</v-card>
|
|
84
77
|
</template>
|
|
85
78
|
<script setup lang="ts">
|