@7365admin1/layer-common 3.2.1 → 3.2.2-staging.100
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/.changeset/camera-wall-gated-endpoint.md +47 -0
- package/.changeset/camera-wall-plain-english.md +60 -0
- package/.changeset/camera-wall-selection-and-guidance.md +65 -0
- package/.changeset/dark-primary-contrast.md +39 -0
- package/.changeset/dashboard-dark-theme-contrast.md +15 -0
- package/.changeset/notification-preferences.md +17 -0
- package/.changeset/pm-sidebar-grouping-and-list-scaffold.md +27 -0
- package/.changeset/service-provider-invitation-actions.md +28 -0
- package/assets/css/primitives.css +680 -0
- package/assets/css/screens.css +541 -0
- package/assets/css/shell.css +258 -0
- package/assets/css/tokens.css +220 -0
- package/components/AccessCardQrTagging.vue +1 -1
- package/components/AccessManagement.vue +53 -72
- package/components/AppButton.vue +52 -0
- package/components/AppCard.vue +20 -0
- package/components/AppDateField.vue +35 -0
- package/components/AppField.vue +46 -0
- package/components/AppKpiTile.vue +65 -0
- package/components/AppSegmented.vue +38 -0
- package/components/AppSelect.vue +203 -0
- package/components/AreaChecklistHistoryMain.vue +6 -2
- package/components/AreaMain.vue +9 -17
- package/components/AttendanceMain.vue +4 -3
- package/components/Avatar/Main.vue +54 -2
- package/components/BillingMain.vue +26 -30
- package/components/BuildingManagement/buildings.vue +27 -38
- package/components/BuildingManagement/units.vue +26 -42
- package/components/BulletinBoardManagement.vue +23 -10
- package/components/CameraWall.vue +1034 -0
- package/components/CameraWallTile.vue +818 -0
- package/components/CardToolbar.vue +37 -0
- package/components/CleaningScheduleMain.vue +29 -46
- package/components/ClientMain.vue +90 -78
- package/components/DashboardEmptyState.vue +11 -1
- package/components/DashboardMain.vue +349 -275
- package/components/DashboardPanel.vue +1 -1
- package/components/DocumentManagement.vue +129 -93
- package/components/EntryPassInformation.vue +4 -4
- package/components/EntryPassMain.vue +49 -27
- package/components/EquipmentItemMain.vue +4 -6
- package/components/EquipmentManagementMain.vue +9 -7
- package/components/FeedbackMain.vue +42 -56
- package/components/FormDialog.vue +60 -21
- package/components/HidAccessLogDashboard.vue +119 -44
- package/components/HidCameraCaptureDialog.vue +199 -0
- package/components/HidIntercomManagement.vue +825 -202
- package/components/HidQrCodeConfiguration.vue +927 -93
- package/components/HidServiceSettingsPanel.vue +20 -1
- package/components/HidUserEnrollment.vue +454 -106
- package/components/InvitationMain.vue +46 -61
- package/components/Layout/Header.vue +289 -37
- package/components/Layout/NavigationDrawer.vue +340 -30
- package/components/ManageChecklistMain.vue +17 -17
- package/components/MemberMain.vue +79 -60
- package/components/MyAttendanceMain.vue +3 -5
- package/components/NavigationItem.vue +9 -0
- package/components/Nfc/NFCPatrolRouteMain.vue +116 -103
- package/components/NotificationSettings.vue +361 -0
- package/components/OnlineFormConfigurationForm.vue +620 -224
- package/components/OnlineFormFill.vue +36 -8
- package/components/OnlineFormsConfiguration.vue +7 -3
- package/components/PageHeader.vue +43 -0
- package/components/PassInformation.vue +104 -45
- package/components/QrTemplate/CreditCardLandscape.vue +19 -12
- package/components/QrTemplate/PrintDialog.vue +209 -196
- package/components/RolePermissionMain.vue +184 -91
- package/components/ScanVisitorQRCode.vue +35 -7
- package/components/ScheduleAreaMain.vue +15 -49
- package/components/ScheduleTaskMain.vue +23 -26
- package/components/ScheduleTastTicketMain.vue +18 -43
- package/components/ServiceProviderInvitationPrompt.vue +150 -0
- package/components/ServiceProviderMain.vue +346 -157
- package/components/SiteSettings.vue +25 -10
- package/components/SpecificAttr.vue +10 -2
- package/components/StatusChip.vue +93 -0
- package/components/SwitchContext.vue +33 -1
- package/components/TableHygiene.vue +29 -46
- package/components/TableList.vue +1 -1
- package/components/TableListSecondary.vue +1 -1
- package/components/TableMain.vue +161 -77
- package/components/TableV3.vue +61 -66
- package/components/UnitMain.vue +9 -17
- package/components/VehicleManagement.vue +20 -9
- package/components/VisitorForm.vue +294 -78
- package/components/VisitorManagement.vue +221 -71
- package/components/VisitorSocketPopUp.vue +56 -2
- package/components/WorkOrder/Main.vue +42 -51
- package/composables/useComment.ts +3 -3
- package/composables/useHidAmico.ts +151 -0
- package/composables/useHidNavigation.ts +0 -7
- package/composables/useLocalAuth.ts +9 -36
- package/composables/useNotificationPreference.ts +87 -0
- package/composables/useOnlineFormPages.ts +2 -0
- package/composables/useOrg.ts +1 -1
- package/composables/useRole.ts +22 -0
- package/composables/useServiceProviderInvitation.ts +145 -0
- package/composables/useSipWebPhone.ts +336 -0
- package/composables/useSiteSettings.ts +50 -0
- package/composables/useThemePreference.ts +63 -0
- package/composables/useVisitor.ts +6 -1
- package/composables/useVisitorSocket.ts +26 -0
- package/composables/useWebUsb.ts +127 -37
- package/nuxt.config.ts +31 -0
- package/package.json +4 -1
- package/pages/[org]/[site]/access-mgmt/intercom/index.vue +1 -1
- package/pages/notification-settings.vue +19 -0
- package/plugins/secure-member.client.ts +21 -56
- package/plugins/vuetify.ts +68 -9
- package/test/visitor-socket.test.mjs +36 -0
- package/types/org.d.ts +2 -0
- package/types/site.d.ts +71 -0
- package/utils/camera-wall.test.ts +571 -0
- package/utils/camera-wall.ts +926 -0
- package/utils/nav-sections.test.ts +190 -0
- package/utils/nav-sections.ts +151 -0
- package/utils/status.test.ts +77 -0
- package/utils/status.ts +90 -0
- package/utils/theme.test.ts +534 -0
- package/utils/theme.ts +294 -0
- package/components/HidIdentityMapping.vue +0 -975
- package/middleware/member.ts +0 -4
- package/pages/[org]/[site]/access-mgmt/identity-mapping/index.vue +0 -23
|
@@ -1,46 +1,35 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row no-gutters>
|
|
3
|
-
|
|
4
|
-
<v-row no-gutters>
|
|
5
|
-
<v-btn class="text-none" rounded="pill" variant="tonal" @click="setBuilding()" size="large"
|
|
6
|
-
v-if="canCreate && canCreateBuilding">
|
|
7
|
-
Add Block
|
|
8
|
-
</v-btn>
|
|
9
|
-
</v-row>
|
|
10
|
-
</v-col>
|
|
3
|
+
<!-- Title row; nav calls this screen "Blocks". The Add pill moves onto it. -->
|
|
11
4
|
<v-col cols="12">
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
dense clearable class="mx-2" style="width: 200px;" />
|
|
20
|
-
</template>
|
|
21
|
-
|
|
22
|
-
<template #append>
|
|
23
|
-
<v-row no-gutters justify="end" align="center">
|
|
24
|
-
<span class="mr-2 text-caption text-fontgray">
|
|
25
|
-
{{ pageRange }}
|
|
26
|
-
</span>
|
|
27
|
-
<local-pagination v-model="page" :length="pages" @update:value="getBuildings()" />
|
|
28
|
-
</v-row>
|
|
29
|
-
</template>
|
|
30
|
-
</v-toolbar>
|
|
31
|
-
|
|
32
|
-
<v-data-table :headers="headers" :items="items" item-value="_id" items-per-page="20" fixed-header
|
|
33
|
-
hide-default-footer @click:row="tableRowClickHandler" style="max-height: calc(100vh - (200px))">
|
|
34
|
-
<template #item.createdAt="{ value }">
|
|
35
|
-
{{ new Date(value).toLocaleDateString() }}
|
|
36
|
-
</template>
|
|
37
|
-
<template #item.levels="{ item }">
|
|
38
|
-
{{ item.levels.length }}
|
|
39
|
-
</template>
|
|
40
|
-
</v-data-table>
|
|
41
|
-
</v-card>
|
|
5
|
+
<PageHeader title="Blocks">
|
|
6
|
+
<template #actions>
|
|
7
|
+
<AppButton v-if="canCreate && canCreateBuilding" icon="mdi-plus" @click="setBuilding()">
|
|
8
|
+
Add Block
|
|
9
|
+
</AppButton>
|
|
10
|
+
</template>
|
|
11
|
+
</PageHeader>
|
|
42
12
|
</v-col>
|
|
43
13
|
|
|
14
|
+
<!--
|
|
15
|
+
Was `v-card` + a `grey-lighten-4` `v-toolbar` + a bare `v-data-table`.
|
|
16
|
+
`TableMain` draws the same card, the same refresh/search/page-range/pager
|
|
17
|
+
row and the same table - with the design's uppercase header row.
|
|
18
|
+
-->
|
|
19
|
+
<TableMain :headers="headers" :items="items" :loading="loading" :page="page" :pages="pages"
|
|
20
|
+
:pageRange="pageRange" show-header @refresh="getBuildings()"
|
|
21
|
+
@update:page="page = $event; getBuildings()" @row-click="(data: any) => tableRowClickHandler(null, data)">
|
|
22
|
+
<template #prepend-additional>
|
|
23
|
+
<AppField v-model="searchInput" search compact placeholder="Search" klass="app-toolbar__search" />
|
|
24
|
+
</template>
|
|
25
|
+
<template #item.createdAt="{ value }">
|
|
26
|
+
{{ new Date(value).toLocaleDateString() }}
|
|
27
|
+
</template>
|
|
28
|
+
<template #item.levels="{ item }">
|
|
29
|
+
{{ item.levels.length }}
|
|
30
|
+
</template>
|
|
31
|
+
</TableMain>
|
|
32
|
+
|
|
44
33
|
<!-- Create Dialog -->
|
|
45
34
|
<v-dialog v-model="createDialog" width="450" persistent>
|
|
46
35
|
<BuildingForm :site="site" mode="add" :blocks="items" @cancel="createDialog = false" @success="successCreate()"
|
|
@@ -1,50 +1,34 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row no-gutters>
|
|
3
|
-
|
|
4
|
-
<v-row no-gutters>
|
|
5
|
-
<v-btn class="text-none" rounded="pill" variant="tonal" @click="setBuilding()" size="large"
|
|
6
|
-
v-if="canCreate && canCreateUnit">
|
|
7
|
-
Add Unit
|
|
8
|
-
</v-btn>
|
|
9
|
-
<v-btn class="text-none ml-2" rounded="pill" variant="tonal" @click="openBulkUploadFilePicker()" size="large"
|
|
10
|
-
:loading="bulkUploadLoading" v-if="canCreate && canCreateUnit">
|
|
11
|
-
<v-icon start>mdi-upload</v-icon>
|
|
12
|
-
Bulk Upload
|
|
13
|
-
</v-btn>
|
|
14
|
-
<input ref="bulkUploadFileInput" type="file" accept=".xlsx,.xls,.csv" class="d-none"
|
|
15
|
-
@change="handleBulkUploadFileChange" />
|
|
16
|
-
</v-row>
|
|
17
|
-
</v-col>
|
|
3
|
+
<!-- Title row; nav calls this screen "Units". Both pills move onto it. -->
|
|
18
4
|
<v-col cols="12">
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
</
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
{{ pageRange }}
|
|
33
|
-
</span>
|
|
34
|
-
<local-pagination v-model="page" :length="pages" @update:value="getBuildingUnit()" />
|
|
35
|
-
</v-row>
|
|
36
|
-
</template>
|
|
37
|
-
</v-toolbar>
|
|
38
|
-
|
|
39
|
-
<v-data-table :headers="props.headers" :items="items" item-value="_id" items-per-page="20" fixed-header
|
|
40
|
-
hide-default-footer @click:row="tableRowClickHandler" style="max-height: calc(100vh - (200px))">
|
|
41
|
-
<template #item.block="{ value, item }">
|
|
42
|
-
{{ value ? `Block ${value}` : "" }}
|
|
43
|
-
</template>
|
|
44
|
-
</v-data-table>
|
|
45
|
-
</v-card>
|
|
5
|
+
<PageHeader title="Units">
|
|
6
|
+
<template #actions>
|
|
7
|
+
<AppButton v-if="canCreate && canCreateUnit" variant="ghost" icon="mdi-upload"
|
|
8
|
+
:disabled="bulkUploadLoading" @click="openBulkUploadFilePicker()">
|
|
9
|
+
Bulk Upload
|
|
10
|
+
</AppButton>
|
|
11
|
+
<AppButton v-if="canCreate && canCreateUnit" icon="mdi-plus" @click="setBuilding()">
|
|
12
|
+
Add Unit
|
|
13
|
+
</AppButton>
|
|
14
|
+
</template>
|
|
15
|
+
</PageHeader>
|
|
16
|
+
<input ref="bulkUploadFileInput" type="file" accept=".xlsx,.xls,.csv" class="d-none"
|
|
17
|
+
@change="handleBulkUploadFileChange" />
|
|
46
18
|
</v-col>
|
|
47
19
|
|
|
20
|
+
<!-- Was `v-card` + a `grey-lighten-4` `v-toolbar` + a bare `v-data-table`. -->
|
|
21
|
+
<TableMain :headers="props.headers" :items="items" :loading="loading" :page="page" :pages="pages"
|
|
22
|
+
:pageRange="pageRange" show-header @refresh="getBuildingUnit()"
|
|
23
|
+
@update:page="page = $event; getBuildingUnit()" @row-click="(data: any) => tableRowClickHandler(null, data)">
|
|
24
|
+
<template #prepend-additional>
|
|
25
|
+
<AppField v-model="searchInput" search compact placeholder="Search" klass="app-toolbar__search" />
|
|
26
|
+
</template>
|
|
27
|
+
<template #item.block="{ value, item }">
|
|
28
|
+
{{ value ? `Block ${value}` : "" }}
|
|
29
|
+
</template>
|
|
30
|
+
</TableMain>
|
|
31
|
+
|
|
48
32
|
<!-- Create Dialog -->
|
|
49
33
|
<v-dialog v-model="createDialog" :width="smAndUp ? '50svw' : '100%'" persistent>
|
|
50
34
|
<BuildingUnitFormAdd :site="site" @cancel="createDialog = false" @success="successCreate()"
|
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row no-gutters>
|
|
3
|
+
<!-- Title left, primary action right - the design's opening row. -->
|
|
4
|
+
<v-col cols="12">
|
|
5
|
+
<PageHeader title="Bulletin Board">
|
|
6
|
+
<template #actions>
|
|
7
|
+
<AppButton v-if="canCreateBulletinBoard" icon="mdi-plus" @click="handleCreateEvent">
|
|
8
|
+
Add Announcement
|
|
9
|
+
</AppButton>
|
|
10
|
+
</template>
|
|
11
|
+
</PageHeader>
|
|
12
|
+
</v-col>
|
|
13
|
+
|
|
3
14
|
<TableMain :headers="headers" :items="paginatePlaceholderItem" v-model:search="searchInput"
|
|
4
15
|
:loading="getAnnouncementPending" :page="page" :pages="pages" :pageRange="pageRange"
|
|
5
|
-
@refresh="getAnnouncementsRefresh" :show-header="APP_CONSTANTS.RESIDENT === props.recipients" @update:page="handleUpdatePage" @row-click="handleRowClick"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
@refresh="getAnnouncementsRefresh" :show-header="APP_CONSTANTS.RESIDENT === props.recipients" @update:page="handleUpdatePage" @row-click="handleRowClick">
|
|
17
|
+
<!--
|
|
18
|
+
The tabs move ONTO the toolbar row (the design draws them there)
|
|
19
|
+
instead of a stacked strip above the table. Same options, same
|
|
20
|
+
order, same `toRoute` - which already sets the status itself.
|
|
21
|
+
-->
|
|
22
|
+
<template #tabs>
|
|
23
|
+
<button v-for="tab in tabOptions" :key="tab.status" type="button" role="tab" class="app-tab"
|
|
24
|
+
:class="{ 'app-tab--active': status === tab.status }" :aria-selected="status === tab.status"
|
|
25
|
+
@click="status = tab.status as any; toRoute(tab.status)">
|
|
26
|
+
{{ tab.name }}
|
|
27
|
+
</button>
|
|
15
28
|
</template>
|
|
16
29
|
|
|
17
30
|
<template v-slot:item.createdAt="{ item }">
|