@wssto2/vue-core 0.2.0 → 0.4.0
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/README.md +36 -0
- package/dist/AccessGate.vue_vue_type_script_setup_true_lang-DcbZBINh.js +22 -0
- package/dist/AccountMenuItem.vue_vue_type_script_setup_true_lang-CPeNxh5K.js +76 -0
- package/dist/ActionRow.vue_vue_type_script_setup_true_lang-LlfIPWsJ.js +45 -0
- package/dist/Activity-2gGxQn7v.js +156 -0
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-CeKK8_g5.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-BoinCY93.js} +48 -47
- package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-e4hzkzg3.js → AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js} +1 -1
- package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-CWLB3xsR.js → AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js} +4 -4
- package/dist/{Banner.vue_vue_type_script_setup_true_lang-n_wGPIIu.js → Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js} +1 -1
- package/dist/{BottomDock.vue_vue_type_script_setup_true_lang-DhlMnPC2.js → BottomDock.vue_vue_type_script_setup_true_lang-CjN7xYEr.js} +1 -1
- package/dist/{Button.vue_vue_type_script_setup_true_lang-B1eZgLae.js → Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js} +1 -1
- package/dist/Changes-Bm8xvagD.js +129 -0
- package/dist/CollectionPage.vue_vue_type_script_setup_true_lang-DCBVw2Qd.js +1485 -0
- package/dist/DataTable.vue_vue_type_script_setup_true_lang-UH6f9puS.js +52 -0
- package/dist/DateField.vue_vue_type_script_setup_true_lang-GVasv8ao.js +255 -0
- package/dist/DeadLetters-CMRtXn_N.js +104 -0
- package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-DyhYHRyz.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-D1arePCZ.js} +1 -1
- package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-BeGpHMUP.js → EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js} +1 -1
- package/dist/FormErrors.vue_vue_type_script_setup_true_lang-BQb7wLT0.js +276 -0
- package/dist/FormGroup.vue_vue_type_script_setup_true_lang-DG2zdG_a.js +136 -0
- package/dist/FormView.vue_vue_type_script_setup_true_lang-cr0xNDXP.js +38 -0
- package/dist/General-CTqd0SLK.js +145 -0
- package/dist/HeaderAction.vue_vue_type_script_setup_true_lang-Cgji-Jrr.js +45 -0
- package/dist/{Icon.vue_vue_type_script_lang-DtC4_mkz.js → Icon.vue_vue_type_script_lang-D7oC-d-S.js} +54 -37
- package/dist/{IconTile.vue_vue_type_script_setup_true_lang-Csfv6Sel.js → IconTile.vue_vue_type_script_setup_true_lang-BpIjgu5E.js} +1 -1
- package/dist/KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js +35 -0
- package/dist/{LeaveGuardRoot.vue_vue_type_script_setup_true_lang-CvwoT1JF.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-Cv7KlA5y.js} +2 -2
- package/dist/{Menu.vue_vue_type_script_setup_true_lang-CrMj6KPD.js → Menu.vue_vue_type_script_setup_true_lang-DTbAcDzL.js} +66 -58
- package/dist/{Modal.vue_vue_type_script_setup_true_lang-BQZM49gC.js → Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js} +4 -4
- package/dist/NewRolePage-DTOWIxxC.js +42 -0
- package/dist/NoAccess.vue_vue_type_script_setup_true_lang-DWxq-MTM.js +31 -0
- package/dist/NumberField.vue_vue_type_script_setup_true_lang-C7N5nq0P.js +113 -0
- package/dist/OtpInput.vue_vue_type_script_setup_true_lang-gp4FfWAH.js +95 -0
- package/dist/PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js +47 -0
- package/dist/{Panel.vue_vue_type_script_setup_true_lang-BQmv3cLb.js → Panel.vue_vue_type_script_setup_true_lang-BA0u_DtS.js} +1 -1
- package/dist/PanelActions.vue_vue_type_script_setup_true_lang-E9VdIGkf.js +46 -0
- package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-ElDizaW2.js → PhotoViewer.vue_vue_type_script_setup_true_lang-QPCW3Xi6.js} +1 -1
- package/dist/Popover.vue_vue_type_script_setup_true_lang-Dx-tDhNE.js +125 -0
- package/dist/ProfilePage-BlpiWH_W.js +654 -0
- package/dist/{ProgressTrack.vue_vue_type_script_setup_true_lang-1DDaNs2W.js → ProgressTrack.vue_vue_type_script_setup_true_lang-B6Prw9hi.js} +2 -2
- package/dist/RecordHeader.vue_vue_type_script_setup_true_lang-C_ymvhHU.js +64 -0
- package/dist/ResourcePage.vue_vue_type_script_setup_true_lang-CwI_sROp.js +173 -0
- package/dist/RoleEditor.vue_vue_type_script_setup_true_lang-CmwvSytD.js +300 -0
- package/dist/RolePage-DZk7BZOc.js +315 -0
- package/dist/RolesPage-DzGGCMnm.js +115 -0
- package/dist/SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js +23 -0
- package/dist/SectionList.vue_vue_type_script_setup_true_lang-BFYls8fR.js +148 -0
- package/dist/SectionNavigator.vue_vue_type_script_setup_true_lang-DSMXEaCs.js +314 -0
- package/dist/SegmentedField.vue_vue_type_script_setup_true_lang-BMqWlpsL.js +58 -0
- package/dist/SelectField.vue_vue_type_script_setup_true_lang-7O1BAx04.js +423 -0
- package/dist/SessionList.vue_vue_type_script_setup_true_lang-D5KRitar.js +111 -0
- package/dist/Sessions-CWqjjTr1.js +96 -0
- package/dist/SettingsPage-C4s0IdkW.js +255 -0
- package/dist/Sheet.vue_vue_type_script_setup_true_lang-DgOFV4fa.js +145 -0
- package/dist/SignIn-zzKY__df.js +140 -0
- package/dist/SignInPage-Rqnus_s-.js +60 -0
- package/dist/SignInTable.vue_vue_type_script_setup_true_lang-CEbAvZ_C.js +79 -0
- package/dist/SignIns-Cnf9BVR0.js +66 -0
- package/dist/SwipeActions.vue_vue_type_script_setup_true_lang-BJIA2JfI.js +93 -0
- package/dist/SwitchField.vue_vue_type_script_setup_true_lang-CM8yp9JQ.js +64 -0
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js +155 -0
- package/dist/TextField.vue_vue_type_script_setup_true_lang-B9dwVASU.js +269 -0
- package/dist/TextareaField.vue_vue_type_script_setup_true_lang-CqAWfABZ.js +68 -0
- package/dist/TimeField.vue_vue_type_script_setup_true_lang-DWfAUlnz.js +164 -0
- package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-CSY_mMm1.js → Timestamp.vue_vue_type_script_setup_true_lang-FVRUr-9y.js} +1 -1
- package/dist/UserRecord-DqigxVxH.js +267 -0
- package/dist/UsersList-DNlZsI9J.js +155 -0
- package/dist/ViewTabs.vue_vue_type_script_setup_true_lang-BJIoZAlH.js +28 -0
- package/dist/access/AddRoleDialog.vue.d.ts +19 -0
- package/dist/access/BindingRow.vue.d.ts +19 -0
- package/dist/access/EffectiveAccess.vue.d.ts +12 -0
- package/dist/access/NewRolePage.vue.d.ts +2 -0
- package/dist/access/PermissionTree.vue.d.ts +13 -0
- package/dist/access/PersonAccess.vue.d.ts +21 -0
- package/dist/access/ReplaceRoleDialog.vue.d.ts +17 -0
- package/dist/access/RoleCompareDialog.vue.d.ts +14 -0
- package/dist/access/RoleEditor.vue.d.ts +28 -0
- package/dist/access/RolePage.vue.d.ts +2 -0
- package/dist/access/RolesPage.vue.d.ts +2 -0
- package/dist/access/api.d.ts +26 -0
- package/dist/access/catalogue.d.ts +64 -0
- package/dist/access/context.d.ts +20 -0
- package/dist/access/effective.d.ts +42 -0
- package/dist/access/feature.d.ts +27 -0
- package/dist/access/index.d.ts +13 -0
- package/dist/access/index.js +15 -0
- package/dist/access/labels.d.ts +35 -0
- package/dist/access/refusals.d.ts +6 -0
- package/dist/access/routes.d.ts +45 -0
- package/dist/access/scopes.d.ts +20 -0
- package/dist/app/contributions.d.ts +1 -1
- package/dist/app/feature.d.ts +8 -0
- package/dist/app/index.js +259 -296
- package/dist/bottomDock-BZEiOPYZ.js +12 -0
- package/dist/button/Button.vue.d.ts +3 -3
- package/dist/button/index.js +1 -1
- package/dist/chrome-BS3xJcad.js +93 -0
- package/dist/client/client.d.ts +13 -0
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.js +11 -138
- package/dist/client/route.d.ts +59 -0
- package/dist/client-k9euDWF4.js +147 -0
- package/dist/closeOverlays-CjVsIrpL.js +8 -0
- package/dist/collection/definition.d.ts +3 -0
- package/dist/collection/http.d.ts +4 -2
- package/dist/collection/index.js +74 -2428
- package/dist/collection/useCollection.d.ts +2 -0
- package/dist/content/index.js +37 -66
- package/dist/contributions-DsfmDoRD.js +26 -0
- package/dist/control-7EP4tjYy.js +313 -0
- package/dist/controls/DateButton.vue.d.ts +1 -1
- package/dist/controls/PopupButton.vue.d.ts +1 -1
- package/dist/controls/index.js +11 -10
- package/dist/defineRoutes-BGAdiIrt.js +19 -0
- package/dist/{describeError-l5T9b8Uv.js → describeError-Ctga6GcS.js} +1 -1
- package/dist/environment-Dva-SG8D.js +6 -0
- package/dist/{error-Bb_dr_Ay.js → error-CD7x0Jrz.js} +2 -2
- package/dist/feature-DdUAfyi4.js +25 -0
- package/dist/fieldMessages-C3Rpbktw.js +25 -0
- package/dist/form/CheckboxField.vue.d.ts +1 -1
- package/dist/form/CommandDialog.vue.d.ts +1 -1
- package/dist/form/DateField.vue.d.ts +1 -1
- package/dist/form/DateTimeField.vue.d.ts +1 -1
- package/dist/form/EditorPage.vue.d.ts +1 -1
- package/dist/form/Field.vue.d.ts +1 -1
- package/dist/form/FileField.vue.d.ts +1 -1
- package/dist/form/FormGroup.vue.d.ts +1 -1
- package/dist/form/FormGroupButton.vue.d.ts +1 -1
- package/dist/form/FormRow.vue.d.ts +1 -1
- package/dist/form/I18nField.vue.d.ts +3 -3
- package/dist/form/MoneyField.vue.d.ts +1 -1
- package/dist/form/MonthYearField.vue.d.ts +1 -1
- package/dist/form/NumberCell.vue.d.ts +1 -1
- package/dist/form/NumberField.vue.d.ts +2 -2
- package/dist/form/OtpInput.vue.d.ts +2 -2
- package/dist/form/PhotoField.vue.d.ts +1 -1
- package/dist/form/SwitchField.vue.d.ts +1 -1
- package/dist/form/TextField.vue.d.ts +3 -3
- package/dist/form/TextareaField.vue.d.ts +3 -3
- package/dist/form/TimeField.vue.d.ts +1 -1
- package/dist/form/date/DatePickerSheet.vue.d.ts +1 -1
- package/dist/form/date/MonthYearPanel.vue.d.ts +1 -1
- package/dist/form/index.js +1159 -3474
- package/dist/guards-Dve61KjR.js +51 -0
- package/dist/http-CNcDHSOj.js +194 -0
- package/dist/i18n/index.d.ts +281 -0
- package/dist/i18n/index.js +52 -52
- package/dist/icon/core.d.ts +17 -0
- package/dist/icon/index.js +1 -1
- package/dist/identity/ImpersonationBanner.vue.d.ts +2 -0
- package/dist/identity/LocaleSync.vue.d.ts +2 -0
- package/dist/identity/SessionExpiry.vue.d.ts +2 -0
- package/dist/identity/SignInAsButton.vue.d.ts +15 -0
- package/dist/identity/SignInPage.vue.d.ts +2 -0
- package/dist/identity/context.d.ts +7 -0
- package/dist/identity/feature.d.ts +16 -0
- package/dist/identity/fieldMessages.d.ts +15 -0
- package/dist/identity/index.d.ts +16 -0
- package/dist/identity/index.js +18 -0
- package/dist/identity/profile/DetailsPanel.vue.d.ts +11 -0
- package/dist/identity/profile/EmailChangeDialog.vue.d.ts +14 -0
- package/dist/identity/profile/EmailPanel.vue.d.ts +11 -0
- package/dist/identity/profile/PanelActions.vue.d.ts +17 -0
- package/dist/identity/profile/PasswordPanel.vue.d.ts +2 -0
- package/dist/identity/profile/ProfileMenuItem.vue.d.ts +2 -0
- package/dist/identity/profile/ProfilePage.vue.d.ts +2 -0
- package/dist/identity/profile/SessionsPanel.vue.d.ts +2 -0
- package/dist/identity/profile/SignInsPanel.vue.d.ts +2 -0
- package/dist/identity/profile/VerifyCode.vue.d.ts +49 -0
- package/dist/identity/profile/routes.d.ts +13 -0
- package/dist/identity/session.d.ts +30 -0
- package/dist/identity/shared/ActionRow.vue.d.ts +20 -0
- package/dist/identity/shared/ChangeFeed.vue.d.ts +11 -0
- package/dist/identity/shared/PageBar.vue.d.ts +12 -0
- package/dist/identity/shared/SectionIntro.vue.d.ts +16 -0
- package/dist/identity/shared/SessionList.vue.d.ts +19 -0
- package/dist/identity/shared/SignInTable.vue.d.ts +11 -0
- package/dist/identity/shared/ViewTabs.vue.d.ts +23 -0
- package/dist/identity/shared/signInEvents.d.ts +9 -0
- package/dist/identity/signIn.d.ts +27 -0
- package/dist/identity/useSignInForm.d.ts +20 -0
- package/dist/identity/user.d.ts +6 -0
- package/dist/identity/users/DeactivateDialog.vue.d.ts +18 -0
- package/dist/identity/users/NewUserDialog.vue.d.ts +9 -0
- package/dist/identity/users/SetPasswordDialog.vue.d.ts +16 -0
- package/dist/identity/users/UserRecord.vue.d.ts +2 -0
- package/dist/identity/users/UsersList.vue.d.ts +2 -0
- package/dist/identity/users/access.d.ts +4 -0
- package/dist/identity/users/context.d.ts +9 -0
- package/dist/identity/users/feature.d.ts +34 -0
- package/dist/identity/users/languages.d.ts +4 -0
- package/dist/identity/users/list.d.ts +8 -0
- package/dist/identity/users/person.d.ts +26 -0
- package/dist/identity/users/personSections.d.ts +22 -0
- package/dist/identity/users/routes.d.ts +22 -0
- package/dist/identity/users/sections/Activity.vue.d.ts +2 -0
- package/dist/identity/users/sections/Changes.vue.d.ts +2 -0
- package/dist/identity/users/sections/General.vue.d.ts +2 -0
- package/dist/identity/users/sections/Sessions.vue.d.ts +2 -0
- package/dist/identity/users/sections/SignIn.vue.d.ts +2 -0
- package/dist/identity/users/sections/SignIns.vue.d.ts +2 -0
- package/dist/identity/users/status.d.ts +4 -0
- package/dist/index-BsJ92eub.js +504 -0
- package/dist/index-CGv-u1Ws.js +459 -0
- package/dist/index-GcLnFF-z.js +706 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/languageName.d.ts +2 -0
- package/dist/keepAlive-WYQGRhuz.js +48 -0
- package/dist/languageName-CItV_SOv.js +11 -0
- package/dist/languages-BShG9LpE.js +10 -0
- package/dist/leaveGuard-Cc8yeLxM.js +72 -0
- package/dist/modal/Modal.vue.d.ts +1 -1
- package/dist/modal/Sheet.vue.d.ts +2 -0
- package/dist/modal/index.js +5 -5
- package/dist/modules/access/entities.d.ts +112 -0
- package/dist/modules/access/routes.d.ts +67 -0
- package/dist/modules/access/schemas.d.ts +73 -0
- package/dist/modules/events/entities.d.ts +16 -0
- package/dist/modules/events/routes.d.ts +17 -0
- package/dist/modules/events/schemas.d.ts +16 -0
- package/dist/modules/identity/entities.d.ts +150 -0
- package/dist/modules/identity/routes.d.ts +118 -0
- package/dist/modules/identity/schemas.d.ts +145 -0
- package/dist/modules/notification/entities.d.ts +46 -0
- package/dist/modules/notification/routes.d.ts +26 -0
- package/dist/modules/notification/schemas.d.ts +25 -0
- package/dist/{navigation-B33ikiCS.js → navigation-Cm3iChlR.js} +21 -20
- package/dist/neighbors-DpaIMQAL.js +86 -0
- package/dist/notifications/InboxPanel.vue.d.ts +16 -0
- package/dist/notifications/MarkAllRead.vue.d.ts +7 -0
- package/dist/notifications/NotificationBell.vue.d.ts +2 -0
- package/dist/notifications/SettingsLink.vue.d.ts +6 -0
- package/dist/notifications/context.d.ts +20 -0
- package/dist/notifications/deadletters/DeadLetters.vue.d.ts +2 -0
- package/dist/notifications/deadletters/access.d.ts +3 -0
- package/dist/notifications/deadletters/list.d.ts +3 -0
- package/dist/notifications/deadletters/routes.d.ts +13 -0
- package/dist/notifications/feature.d.ts +31 -0
- package/dist/notifications/inbox.d.ts +62 -0
- package/dist/notifications/index.d.ts +13 -0
- package/dist/notifications/index.js +8 -0
- package/dist/notifications/settings/EmailPanel.vue.d.ts +14 -0
- package/dist/notifications/settings/QuietHoursPanel.vue.d.ts +14 -0
- package/dist/notifications/settings/SettingsMenuItem.vue.d.ts +2 -0
- package/dist/notifications/settings/SettingsPage.vue.d.ts +2 -0
- package/dist/notifications/settings/categoryText.d.ts +9 -0
- package/dist/notifications/settings/routes.d.ts +13 -0
- package/dist/notifications/settings/settings.d.ts +18 -0
- package/dist/notifications/settings/state.d.ts +16 -0
- package/dist/notifications/state.d.ts +27 -0
- package/dist/notifications/stream.d.ts +21 -0
- package/dist/options-Ba_0uLWN.js +18 -0
- package/dist/overlay/AlertDialog.vue.d.ts +3 -3
- package/dist/overlay/Popover.vue.d.ts +1 -1
- package/dist/overlay/closeOverlays.d.ts +7 -0
- package/dist/overlay/index.js +21 -20
- package/dist/page/AdaptivePageShell.vue.d.ts +2 -2
- package/dist/page/ResourceHeader.vue.d.ts +2 -2
- package/dist/page/index.js +99 -457
- package/dist/phone/PhoneField.vue.d.ts +2 -2
- package/dist/phone/index.js +68 -67
- package/dist/platform/index.d.ts +2 -2
- package/dist/platform/index.js +73 -90
- package/dist/platform/platform.d.ts +2 -2
- package/dist/platform/session.d.ts +22 -1
- package/dist/platform-q3cjODLx.js +255 -0
- package/dist/resource/index.js +8 -248
- package/dist/route-goWMxDUN.js +13 -0
- package/dist/routeResource-DstM0hvf.js +82 -0
- package/dist/router/guards.d.ts +7 -1
- package/dist/router/index.js +23 -37
- package/dist/router/navigation.d.ts +1 -1
- package/dist/rowLayout-BqTEhEuy.js +603 -0
- package/dist/sectionIndex-BS0ic5W7.js +86 -0
- package/dist/{sections-LtxV5Mtk.js → sections-CntvUTxn.js} +1 -1
- package/dist/shell/AccountMenuItem.vue.d.ts +1 -1
- package/dist/shell/BackofficeShell.vue.d.ts +2 -2
- package/dist/shell/NavigationList.vue.d.ts +1 -1
- package/dist/shell/ShellBrand.vue.d.ts +1 -1
- package/dist/shell/backofficeShell.d.ts +1 -1
- package/dist/shell/identity.d.ts +1 -1
- package/dist/shell/index.js +491 -595
- package/dist/state/ProgressTrack.vue.d.ts +1 -1
- package/dist/state/index.js +59 -92
- package/dist/status-BuP3ULjH.js +33 -0
- package/dist/styles.css +1 -1
- package/dist/suggestions-BxMm6MQA.js +138 -0
- package/dist/testing/index.js +1 -1
- package/dist/toast-D9Z5To38.js +13 -0
- package/dist/transport-BnP7WC0Y.js +4 -0
- package/dist/useCommand-BkONMn3X.js +135 -0
- package/dist/useLoad-CYRVx6HW.js +39 -0
- package/dist/useResourceForm-D1hIpwW5.js +52 -0
- package/dist/useSaveChrome-chi6D3HY.js +25 -0
- package/dist/useSheetDrag-OsD6Eb6I.js +72 -0
- package/dist/useTypedEntry-aTfPBAhw.js +857 -0
- package/package.json +26 -5
- package/dist/NoAccess.vue_vue_type_script_setup_true_lang-OKW8pKYU.js +0 -78
- package/dist/SectionList.vue_vue_type_script_setup_true_lang-L9ita_Kx.js +0 -230
- package/dist/SelectField.vue_vue_type_script_setup_true_lang-DZTrU8NJ.js +0 -661
- package/dist/Sheet.vue_vue_type_script_setup_true_lang-CtkJ-4e3.js +0 -210
- package/dist/SwipeActions.vue_vue_type_script_setup_true_lang-CGTuEnTv.js +0 -243
- package/dist/chrome-D9pwD6iS.js +0 -101
- package/dist/environment-D3nozt9a.js +0 -75
- package/dist/feature-DyDtyMLU.js +0 -47
- package/dist/options-DAkBtYkI.js +0 -330
- package/dist/platform-jqlKVJ2e.js +0 -244
- package/dist/toast-DvrHQ6Ag.js +0 -131
package/README.md
CHANGED
|
@@ -18,6 +18,9 @@ Its plan and rules are in [PLAN.md](PLAN.md).
|
|
|
18
18
|
| `@wssto2/vue-core/resource`, `/page` | `useRouteResource`, `ResourcePage`, `SectionNavigator`, `AdaptivePageShell` |
|
|
19
19
|
| `@wssto2/vue-core/button`, `/controls`, `/content`, `/state`, `/overlay`, `/modal`, `/icon` | the primitives |
|
|
20
20
|
| `@wssto2/vue-core/i18n`, `/format`, `/client` | messages, `useDescribeError`, formatting, `HttpClient` and `ApiError` |
|
|
21
|
+
| `@wssto2/vue-core/identity`, `/access` | go-core's module contracts (types, route tables) and, in `/identity`, `identityFeature` (sign-in page, language), `identityPlatform()` and `usersFeature` (users, "my profile"): [sign-in](docs/recipes/sign-in.md), [users](docs/recipes/users.md) |
|
|
22
|
+
| `@wssto2/vue-core/access` (screens) | `accessFeature({ catalogue })`: roles list and editor, compare, replace, a person's roles (`PersonAccess`) and what they can do: [roles and access](docs/recipes/access.md) |
|
|
23
|
+
| `@wssto2/vue-core/notifications` | go-core's notification and events modules: `notificationsFeature({ categories, deadLetters })`: the bell with the unread count, the inbox (popover, bottom sheet on phones), the live stream, the failed-events page: [notifications](docs/recipes/notifications.md) |
|
|
21
24
|
| `@wssto2/vue-core/testing` | `createTestPlatform`, `createTestApp`, fake transports: for your tests, [testing](docs/recipes/testing.md) |
|
|
22
25
|
|
|
23
26
|
Nothing is reachable by a deep import. The peers are `vue`, `vue-router` and `vue-i18n`; the library never bundles them.
|
|
@@ -190,6 +193,25 @@ Its texts are JSON files under the feature, loaded the first time one of its rou
|
|
|
190
193
|
|
|
191
194
|
The views are [a list page](docs/recipes/list-page.md) and [a record page](docs/recipes/record-page.md).
|
|
192
195
|
|
|
196
|
+
## Typed routes
|
|
197
|
+
|
|
198
|
+
go-core's generator writes one `route<In, Out>(method, path, options?)` per endpoint; `client.request(route, input)` calls it with the input and the answer typed. Details, a list from a route and the errors: [typed routes](docs/recipes/typed-routes.md).
|
|
199
|
+
|
|
200
|
+
<!-- example: docs/examples/routes/api.ts:1-11 -->
|
|
201
|
+
```ts
|
|
202
|
+
import { createHttpClient, isApiError } from "@wssto2/vue-core/client";
|
|
203
|
+
import { ticketsRoutes } from "./routes";
|
|
204
|
+
import { route } from "@wssto2/vue-core/client";
|
|
205
|
+
|
|
206
|
+
const http = createHttpClient({ baseUrl: "/api" });
|
|
207
|
+
|
|
208
|
+
// A path parameter and the rest as the query: GET /api/v1/tickets/7
|
|
209
|
+
export async function loadTicket(id: number, signal: AbortSignal) {
|
|
210
|
+
const result = await http.request(ticketsRoutes.show, { id }, { signal });
|
|
211
|
+
return result.data; // typed as Ticket
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
193
215
|
## Permissions, destinations and icons
|
|
194
216
|
|
|
195
217
|
The library knows none of your permissions, none of your backend's menu destinations and none of your icons. You declare them by merging into three interfaces, like vue-router's `RouteMeta`; after that a typo in `meta.access`, in a navigation binding or in `<Icon name>` is a compile error:
|
|
@@ -206,6 +228,12 @@ declare module "@wssto2/vue-core/platform" {
|
|
|
206
228
|
"tickets:view": true;
|
|
207
229
|
"tickets:update": true;
|
|
208
230
|
"accounts:view": true;
|
|
231
|
+
// go-core's access module defines these in the catalogue, so a generated union has them (the roles screens name them).
|
|
232
|
+
"iam.role:view": true;
|
|
233
|
+
"iam.role:manage": true;
|
|
234
|
+
"iam.role:delete": true;
|
|
235
|
+
"iam.user:view": true;
|
|
236
|
+
"iam.user:manage": true;
|
|
209
237
|
}
|
|
210
238
|
}
|
|
211
239
|
|
|
@@ -213,6 +241,9 @@ declare module "@wssto2/vue-core/router" {
|
|
|
213
241
|
interface DestinationRegistry {
|
|
214
242
|
tickets: true;
|
|
215
243
|
accounts: true;
|
|
244
|
+
users: true;
|
|
245
|
+
"iam.roles": true;
|
|
246
|
+
"events.deadletters": true;
|
|
216
247
|
}
|
|
217
248
|
}
|
|
218
249
|
|
|
@@ -299,6 +330,11 @@ The library's own texts are under the `core` namespace in English, Croatian, Bos
|
|
|
299
330
|
- [Shell](docs/recipes/shell.md): the default shell, contributions from features, keyboard shortcuts and their help, running inside a frame, a custom shell
|
|
300
331
|
- [App setup](docs/recipes/app-setup.md): config, session, effects, locales and flags, permissions in the UI, error sentences, startup errors
|
|
301
332
|
- [Forms](docs/recipes/forms.md): form state, fields, a record edited in group sheets, a long form, commands
|
|
333
|
+
- [Typed routes](docs/recipes/typed-routes.md): generated routes, `client.request`, a list from a route
|
|
334
|
+
- [Sign-in](docs/recipes/sign-in.md): go-core's identity module: the sign-in page, the session wiring, the language, the module's committed types, the dev server
|
|
335
|
+
- [Users and profile](docs/recipes/users.md): the users list and a person's record, "my profile" with the e-mail change by code, opting out, extra sections, refusals
|
|
336
|
+
- [Roles and access](docs/recipes/access.md): go-core's access module: the roles list and editor from your catalogue, a person's roles and effective access, where a role applies, the refusals
|
|
337
|
+
- [Notifications](docs/recipes/notifications.md): the bell, the inbox and the live stream, categories, the failed-events page, trying it against go-core's dev server
|
|
302
338
|
- [Theming](docs/recipes/theming.md): brand accent, dark mode, tokens, status tones and category hues
|
|
303
339
|
- [Testing](docs/recipes/testing.md): the application's environment and a fake backend for your tests
|
|
304
340
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { defineComponent as t, computed as i, renderSlot as n } from "vue";
|
|
2
|
+
import { u as l } from "./platform-q3cjODLx.js";
|
|
3
|
+
const m = /* @__PURE__ */ t({
|
|
4
|
+
__name: "AccessGate",
|
|
5
|
+
props: {
|
|
6
|
+
permission: {},
|
|
7
|
+
any: {},
|
|
8
|
+
all: {}
|
|
9
|
+
},
|
|
10
|
+
setup(r) {
|
|
11
|
+
const o = r, e = l().access, a = i(() => {
|
|
12
|
+
if (o.permission !== void 0) return e.can(o.permission);
|
|
13
|
+
if (o.any !== void 0) return e.canAny(o.any);
|
|
14
|
+
if (o.all !== void 0) return e.canAll(o.all);
|
|
15
|
+
throw new Error("AccessGate needs one of the props permission, any or all.");
|
|
16
|
+
});
|
|
17
|
+
return (s, c) => a.value ? n(s.$slots, "default", {}, void 0, void 0, 0) : n(s.$slots, "fallback", {}, void 0, void 0, 1);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
export {
|
|
21
|
+
m as _
|
|
22
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { defineComponent as p, computed as r, openBlock as o, createElementBlock as d, normalizeClass as a, createBlock as c, resolveDynamicComponent as C, unref as i, mergeProps as E, withCtx as S, createCommentVNode as f, createElementVNode as m, toDisplayString as O } from "vue";
|
|
2
|
+
import { RouterLink as R } from "vue-router";
|
|
3
|
+
import { _ as s } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
4
|
+
import { _ as z } from "./CountryFlag.vue_vue_type_script_setup_true_lang-Kry_vPPZ.js";
|
|
5
|
+
import { d as v } from "./context-Ch1r4fdN.js";
|
|
6
|
+
const [D, B] = v("vue-core.accountMenu"), [F] = v("vue-core.headerSurface"), h = "focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-border-focus", I = "relative not-first:before:absolute not-first:before:top-0 not-first:before:right-0 not-first:before:left-[calc(var(--app-row-inset)+2.25rem)] not-first:before:border-t not-first:before:border-border-separator", H = /* @__PURE__ */ p({
|
|
7
|
+
__name: "AccountMenuItem",
|
|
8
|
+
props: {
|
|
9
|
+
label: {},
|
|
10
|
+
icon: { default: void 0 },
|
|
11
|
+
to: { default: void 0 },
|
|
12
|
+
checked: { type: Boolean, default: void 0 },
|
|
13
|
+
selected: { type: Boolean, default: void 0 },
|
|
14
|
+
tone: { default: void 0 },
|
|
15
|
+
flag: { default: void 0 }
|
|
16
|
+
},
|
|
17
|
+
emits: ["click"],
|
|
18
|
+
setup(e, { emit: k }) {
|
|
19
|
+
const l = e, b = k, u = B(), t = r(() => u.appearance === "sheet"), x = r(() => l.checked !== void 0 || l.selected !== void 0), n = r(() => l.tone === "critical"), w = `flex w-full cursor-pointer items-center gap-3 rounded-md px-2 py-1.5 text-left text-sm hover:bg-fill ${h}`, y = `flex min-h-row w-full cursor-pointer items-center gap-3 px-row-inset py-2 text-left text-body transition-colors duration-motion-fast active:bg-fill ${h}`;
|
|
20
|
+
function g() {
|
|
21
|
+
x.value || u.close(), b("click");
|
|
22
|
+
}
|
|
23
|
+
return (M, N) => (o(), d("div", {
|
|
24
|
+
class: a(t.value ? I : "")
|
|
25
|
+
}, [
|
|
26
|
+
(o(), c(C(e.to ? i(R) : "button"), E(e.to ? { to: e.to } : { type: "button" }, {
|
|
27
|
+
class: [t.value ? y : w, n.value ? "text-content-destructive" : "text-content-strong", t.value && n.value ? "justify-center" : ""],
|
|
28
|
+
role: e.checked !== void 0 ? "switch" : void 0,
|
|
29
|
+
"aria-checked": e.checked,
|
|
30
|
+
"aria-current": e.selected ? "true" : void 0,
|
|
31
|
+
"data-account-menu-item": "",
|
|
32
|
+
onClick: g
|
|
33
|
+
}), {
|
|
34
|
+
default: S(() => [
|
|
35
|
+
e.flag ? (o(), c(z, {
|
|
36
|
+
key: 0,
|
|
37
|
+
country: e.flag
|
|
38
|
+
}, null, 8, ["country"])) : e.icon && !(t.value && n.value) ? (o(), c(i(s), {
|
|
39
|
+
key: 1,
|
|
40
|
+
name: e.icon,
|
|
41
|
+
size: t.value ? 22 : 16,
|
|
42
|
+
class: a(["shrink-0", n.value ? "" : "text-content-muted"])
|
|
43
|
+
}, null, 8, ["name", "size", "class"])) : f("", !0),
|
|
44
|
+
m("span", {
|
|
45
|
+
class: a(["min-w-0 truncate", t.value && n.value ? "" : "flex-1"])
|
|
46
|
+
}, O(e.label), 3),
|
|
47
|
+
e.checked !== void 0 ? (o(), d("span", {
|
|
48
|
+
key: 2,
|
|
49
|
+
"aria-hidden": "true",
|
|
50
|
+
class: a(["relative inline-flex shrink-0 rounded-full transition-colors duration-motion-fast", [e.checked ? "bg-control-on" : "bg-fill-strong", t.value ? "h-switch-height w-switch-width" : "h-5 w-9"]])
|
|
51
|
+
}, [
|
|
52
|
+
m("span", {
|
|
53
|
+
class: a(["absolute top-0.5 left-0.5 aspect-square h-[calc(100%-0.25rem)] rounded-full bg-white shadow-knob transition-transform duration-motion-fast", e.checked ? t.value ? "translate-x-[calc(var(--app-switch-width)-var(--app-switch-height))]" : "translate-x-4" : "translate-x-0"])
|
|
54
|
+
}, null, 2)
|
|
55
|
+
], 2)) : e.selected ? (o(), c(i(s), {
|
|
56
|
+
key: 3,
|
|
57
|
+
name: "checkCustom",
|
|
58
|
+
size: 16,
|
|
59
|
+
class: "shrink-0 text-content-link"
|
|
60
|
+
})) : e.to && t.value ? (o(), c(i(s), {
|
|
61
|
+
key: 4,
|
|
62
|
+
name: "arrowRightSLine",
|
|
63
|
+
size: 18,
|
|
64
|
+
class: "shrink-0 text-content-disabled"
|
|
65
|
+
})) : f("", !0)
|
|
66
|
+
]),
|
|
67
|
+
_: 1
|
|
68
|
+
}, 16, ["class", "role", "aria-checked", "aria-current"]))
|
|
69
|
+
], 2));
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
export {
|
|
73
|
+
H as _,
|
|
74
|
+
D as a,
|
|
75
|
+
F as h
|
|
76
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { defineComponent as r, openBlock as s, createBlock as d, unref as n, withCtx as f, createElementVNode as t, normalizeClass as m, toDisplayString as l, createElementBlock as u, createCommentVNode as p, createVNode as b } from "vue";
|
|
2
|
+
import { e as _ } from "./control-7EP4tjYy.js";
|
|
3
|
+
import { _ as x } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
4
|
+
const k = ["disabled"], y = { class: "flex min-w-0 flex-1 flex-col" }, h = {
|
|
5
|
+
key: 0,
|
|
6
|
+
class: "text-footnote text-content-muted"
|
|
7
|
+
}, N = /* @__PURE__ */ r({
|
|
8
|
+
__name: "ActionRow",
|
|
9
|
+
props: {
|
|
10
|
+
label: {},
|
|
11
|
+
sub: { default: void 0 },
|
|
12
|
+
tone: { default: "link" },
|
|
13
|
+
disabled: { type: Boolean, default: !1 }
|
|
14
|
+
},
|
|
15
|
+
emits: ["click"],
|
|
16
|
+
setup(i, { emit: a }) {
|
|
17
|
+
const e = i, c = a;
|
|
18
|
+
return (v, o) => (s(), d(n(_), { layout: "stacked" }, {
|
|
19
|
+
default: f(() => [
|
|
20
|
+
t("button", {
|
|
21
|
+
type: "button",
|
|
22
|
+
disabled: e.disabled,
|
|
23
|
+
class: "flex w-full items-center gap-3 py-0.5 text-left focus-visible:outline-2 focus-visible:outline-border-focus disabled:opacity-50",
|
|
24
|
+
onClick: o[0] || (o[0] = (w) => c("click"))
|
|
25
|
+
}, [
|
|
26
|
+
t("span", y, [
|
|
27
|
+
t("span", {
|
|
28
|
+
class: m(["text-body", e.tone === "critical" ? "text-content-destructive" : "text-content-link"])
|
|
29
|
+
}, l(e.label), 3),
|
|
30
|
+
e.sub ? (s(), u("span", h, l(e.sub), 1)) : p("", !0)
|
|
31
|
+
]),
|
|
32
|
+
b(n(x), {
|
|
33
|
+
name: "arrowRightSLine",
|
|
34
|
+
size: 18,
|
|
35
|
+
class: "shrink-0 text-content-disabled"
|
|
36
|
+
})
|
|
37
|
+
], 8, k)
|
|
38
|
+
]),
|
|
39
|
+
_: 1
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
export {
|
|
44
|
+
N as _
|
|
45
|
+
};
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { defineComponent as S, ref as g, watch as w, computed as k, openBlock as i, createElementBlock as y, createVNode as _, unref as t, createElementVNode as r, withCtx as f, toDisplayString as u, Fragment as C, renderList as N, createBlock as x, createTextVNode as j, createCommentVNode as R } from "vue";
|
|
2
|
+
import { useI18n as q } from "vue-i18n";
|
|
3
|
+
import { _ as D } from "./IconTile.vue_vue_type_script_setup_true_lang-BpIjgu5E.js";
|
|
4
|
+
import { _ as I } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
|
|
5
|
+
import { u as O } from "./format-B8mJm946.js";
|
|
6
|
+
import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-GVasv8ao.js";
|
|
7
|
+
import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-DG2zdG_a.js";
|
|
8
|
+
import { e as z } from "./control-7EP4tjYy.js";
|
|
9
|
+
import { P as G, c as H, i as J } from "./index-CGv-u1Ws.js";
|
|
10
|
+
import { u as K } from "./platform-q3cjODLx.js";
|
|
11
|
+
import { b as M } from "./routeResource-DstM0hvf.js";
|
|
12
|
+
import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js";
|
|
13
|
+
import { _ as W } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
14
|
+
import { u as X } from "./useLoad-CYRVx6HW.js";
|
|
15
|
+
import { _ as Y } from "./PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js";
|
|
16
|
+
import { _ as Z } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
|
|
17
|
+
const ee = {
|
|
18
|
+
class: "flex min-w-0 flex-col gap-group-gap",
|
|
19
|
+
"data-person-activity": ""
|
|
20
|
+
}, te = { class: "flex flex-wrap items-end justify-between gap-3" }, ae = {
|
|
21
|
+
class: "flex items-end gap-2",
|
|
22
|
+
"data-activity-range": ""
|
|
23
|
+
}, se = {
|
|
24
|
+
key: 0,
|
|
25
|
+
class: "px-row-inset py-4 text-body text-content-muted",
|
|
26
|
+
"data-activity-empty": ""
|
|
27
|
+
}, oe = {
|
|
28
|
+
key: 1,
|
|
29
|
+
class: "flex min-w-0 flex-col gap-group-gap",
|
|
30
|
+
"data-activity-feed": ""
|
|
31
|
+
}, le = { class: "flex flex-wrap items-center gap-x-1.5" }, ne = { class: "text-body tabular-nums text-content-muted" }, ie = { class: "px-row-inset text-footnote text-content-muted" }, we = /* @__PURE__ */ S({
|
|
32
|
+
__name: "Activity",
|
|
33
|
+
setup(re) {
|
|
34
|
+
const { t: o, te: $ } = q(), { http: A } = K(), V = O(), b = M(G), { activityAreas: B } = H(), c = g("all"), d = g(null), m = g(null), v = g(1), p = X(
|
|
35
|
+
async ({ signal: a }) => {
|
|
36
|
+
const e = b.id.value;
|
|
37
|
+
if (e === null) return null;
|
|
38
|
+
const s = { id: e, page: v.value, per_page: 20, ...c.value === "all" ? {} : { area: c.value }, ...d.value ? { from: d.value } : {}, ...m.value ? { to: m.value } : {} };
|
|
39
|
+
return (await A.request(J.usersActivity, s, { signal: a })).data;
|
|
40
|
+
},
|
|
41
|
+
{ watch: () => b.id.value }
|
|
42
|
+
);
|
|
43
|
+
w([c, d, m], () => {
|
|
44
|
+
v.value = 1, p.reload();
|
|
45
|
+
}), w(v, () => void p.reload());
|
|
46
|
+
const h = (a) => {
|
|
47
|
+
if (a === "all" || a === "identity" || a === "other") return o(`core.users.activity.areas.${a}`);
|
|
48
|
+
const e = B[a];
|
|
49
|
+
return e && $(e) ? o(e) : o("core.users.activity.areas.other");
|
|
50
|
+
}, E = k(() => p.data.value?.meta?.views ?? []), P = k(() => {
|
|
51
|
+
const a = E.value.filter((e) => e.key === "all" || e.key === c.value || e.count > 0).map((e) => ({ value: e.key, label: h(e.key), badge: e.count }));
|
|
52
|
+
return a.length > 0 ? a : [{ value: "all", label: h("all") }];
|
|
53
|
+
}), F = (a) => $(`core.users.activity.actions.${a}`) ? o(`core.users.activity.actions.${a}`) : o("core.users.activity.actions.other"), L = k(() => {
|
|
54
|
+
const a = [];
|
|
55
|
+
for (const e of p.data.value?.data ?? []) {
|
|
56
|
+
const s = e.created_at.slice(0, 10), l = a[a.length - 1];
|
|
57
|
+
l && l.key === s ? l.rows.push(e) : a.push({ key: s, header: V.date(e.created_at), rows: [e] });
|
|
58
|
+
}
|
|
59
|
+
return a;
|
|
60
|
+
});
|
|
61
|
+
return (a, e) => (i(), y("div", ee, [
|
|
62
|
+
_(Z, {
|
|
63
|
+
title: t(o)("core.users.sections.activity"),
|
|
64
|
+
description: t(o)("core.users.intro.activity", { name: t(b).data.value?.name ?? "" })
|
|
65
|
+
}, null, 8, ["title", "description"]),
|
|
66
|
+
r("div", te, [
|
|
67
|
+
_(t(I), {
|
|
68
|
+
modelValue: c.value,
|
|
69
|
+
"onUpdate:modelValue": e[0] || (e[0] = (s) => c.value = s),
|
|
70
|
+
tabs: P.value,
|
|
71
|
+
presentation: "scope",
|
|
72
|
+
label: t(o)("core.users.activity.areas_label")
|
|
73
|
+
}, null, 8, ["modelValue", "tabs", "label"]),
|
|
74
|
+
r("div", ae, [
|
|
75
|
+
_(t(U), {
|
|
76
|
+
modelValue: d.value,
|
|
77
|
+
"onUpdate:modelValue": e[1] || (e[1] = (s) => d.value = s),
|
|
78
|
+
label: t(o)("core.users.activity.since"),
|
|
79
|
+
max: m.value ?? void 0
|
|
80
|
+
}, null, 8, ["modelValue", "label", "max"]),
|
|
81
|
+
_(t(U), {
|
|
82
|
+
modelValue: m.value,
|
|
83
|
+
"onUpdate:modelValue": e[2] || (e[2] = (s) => m.value = s),
|
|
84
|
+
label: t(o)("core.users.activity.until"),
|
|
85
|
+
min: d.value ?? void 0
|
|
86
|
+
}, null, 8, ["modelValue", "label", "min"])
|
|
87
|
+
])
|
|
88
|
+
]),
|
|
89
|
+
_(t(Q), {
|
|
90
|
+
state: t(p).state.value,
|
|
91
|
+
"skeleton-rows": 5,
|
|
92
|
+
"is-empty": () => !1,
|
|
93
|
+
onRetry: e[4] || (e[4] = (s) => t(p).reload())
|
|
94
|
+
}, {
|
|
95
|
+
default: f(({ value: s }) => [
|
|
96
|
+
!s || s.data.length === 0 ? (i(), y("p", se, u(t(o)("core.users.activity.empty")), 1)) : (i(), y("div", oe, [
|
|
97
|
+
(i(!0), y(C, null, N(L.value, (l) => (i(), x(t(T), {
|
|
98
|
+
key: l.key,
|
|
99
|
+
header: l.header
|
|
100
|
+
}, {
|
|
101
|
+
default: f(() => [
|
|
102
|
+
(i(!0), y(C, null, N(l.rows, (n) => (i(), x(t(z), {
|
|
103
|
+
key: n.id,
|
|
104
|
+
layout: "setting",
|
|
105
|
+
label: `${F(n.action)}`,
|
|
106
|
+
"data-activity-row": ""
|
|
107
|
+
}, {
|
|
108
|
+
leading: f(() => [
|
|
109
|
+
_(t(D), {
|
|
110
|
+
tone: "anchor",
|
|
111
|
+
icon: "listCheck"
|
|
112
|
+
})
|
|
113
|
+
]),
|
|
114
|
+
sub: f(() => [
|
|
115
|
+
r("span", le, [
|
|
116
|
+
r("span", null, u(h(n.area)), 1),
|
|
117
|
+
e[5] || (e[5] = r("span", { "aria-hidden": "true" }, "·", -1)),
|
|
118
|
+
r("span", null, u(n.record_type) + " #" + u(n.record_id), 1)
|
|
119
|
+
])
|
|
120
|
+
]),
|
|
121
|
+
default: f(() => [
|
|
122
|
+
n.signed_in_as ? (i(), x(t(W), {
|
|
123
|
+
key: 0,
|
|
124
|
+
tone: "warning",
|
|
125
|
+
"data-activity-signed-in-as": ""
|
|
126
|
+
}, {
|
|
127
|
+
default: f(() => [
|
|
128
|
+
j(u(n.signed_in_as.name ? t(o)("core.users.activity.signed_in_as", { name: n.signed_in_as.name }) : t(o)("core.users.activity.signed_in_as_other")), 1)
|
|
129
|
+
]),
|
|
130
|
+
_: 2
|
|
131
|
+
}, 1024)) : R("", !0),
|
|
132
|
+
r("span", ne, u(t(V).time(n.created_at)), 1)
|
|
133
|
+
]),
|
|
134
|
+
_: 2
|
|
135
|
+
}, 1032, ["label"]))), 128))
|
|
136
|
+
]),
|
|
137
|
+
_: 2
|
|
138
|
+
}, 1032, ["header"]))), 128))
|
|
139
|
+
])),
|
|
140
|
+
s ? (i(), x(Y, {
|
|
141
|
+
key: 2,
|
|
142
|
+
page: v.value,
|
|
143
|
+
"onUpdate:page": e[3] || (e[3] = (l) => v.value = l),
|
|
144
|
+
"last-page": s.last_page,
|
|
145
|
+
total: s.total
|
|
146
|
+
}, null, 8, ["page", "last-page", "total"])) : R("", !0),
|
|
147
|
+
r("p", ie, u(t(o)("core.users.activity.footer")), 1)
|
|
148
|
+
]),
|
|
149
|
+
_: 1
|
|
150
|
+
}, 8, ["state"])
|
|
151
|
+
]));
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
export {
|
|
155
|
+
we as default
|
|
156
|
+
};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { defineComponent as $, getCurrentInstance as D, inject as F, computed as k, openBlock as l, createBlock as _, Teleport as O, renderSlot as v, createElementBlock as p, Fragment as I, renderList as M, withCtx as x, createTextVNode as w, toDisplayString as h, unref as s, createElementVNode as
|
|
1
|
+
import { defineComponent as $, getCurrentInstance as D, inject as F, computed as k, openBlock as l, createBlock as _, Teleport as O, renderSlot as v, createElementBlock as p, Fragment as I, renderList as M, withCtx as x, createTextVNode as w, toDisplayString as h, unref as s, createElementVNode as m, mergeProps as H, createVNode as b, createCommentVNode as f, toValue as z, watch as B, onMounted as R, onBeforeUnmount as S, useTemplateRef as V, provide as A, ref as K, createSlots as q, normalizeClass as Q } from "vue";
|
|
2
2
|
import { a as j } from "./mediaQuery-CygcXmFW.js";
|
|
3
|
-
import { b as U
|
|
3
|
+
import { b as U } from "./bottomDock-BZEiOPYZ.js";
|
|
4
4
|
import { useI18n as E } from "vue-i18n";
|
|
5
|
-
import { _ as
|
|
6
|
-
import { _ as y } from "./Icon.vue_vue_type_script_lang-
|
|
7
|
-
import { _ as
|
|
8
|
-
import { RouterLink as L, useRoute as
|
|
5
|
+
import { _ as W } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
6
|
+
import { _ as y } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
7
|
+
import { _ as Y } from "./Menu.vue_vue_type_script_setup_true_lang-DTbAcDzL.js";
|
|
8
|
+
import { RouterLink as L, useRoute as G } from "vue-router";
|
|
9
|
+
import { b as N, c as J, p as X } from "./chrome-BS3xJcad.js";
|
|
9
10
|
import { d as Z } from "./context-Ch1r4fdN.js";
|
|
10
11
|
const ee = /* @__PURE__ */ $({
|
|
11
12
|
__name: "BottomDockPortal",
|
|
@@ -44,7 +45,7 @@ const ee = /* @__PURE__ */ $({
|
|
|
44
45
|
return t === e.leading || t.prominence === "plain" ? "plain" : t.prominence === "standard" ? "standard" : t.placement === "primary" ? "primary" : "standard";
|
|
45
46
|
}
|
|
46
47
|
return (t, a) => i.value.length || r.value.length ? (l(), p("div", te, [
|
|
47
|
-
(l(!0), p(I, null, M(i.value, (d) => (l(), _(
|
|
48
|
+
(l(!0), p(I, null, M(i.value, (d) => (l(), _(W, {
|
|
48
49
|
key: d.id,
|
|
49
50
|
prominence: c(d),
|
|
50
51
|
icon: d.icon,
|
|
@@ -59,13 +60,13 @@ const ee = /* @__PURE__ */ $({
|
|
|
59
60
|
]),
|
|
60
61
|
_: 2
|
|
61
62
|
}, 1032, ["prominence", "icon", "disabled", "processing", "keyboard-shortcut", "data-page-action", "onClick"]))), 128)),
|
|
62
|
-
r.value.length ? (l(), _(
|
|
63
|
+
r.value.length ? (l(), _(Y, {
|
|
63
64
|
key: 0,
|
|
64
65
|
items: r.value,
|
|
65
66
|
label: s(n)("core.page.more_actions")
|
|
66
67
|
}, {
|
|
67
68
|
trigger: x(({ toggle: d, attrs: g }) => [
|
|
68
|
-
|
|
69
|
+
m("button", H({ type: "button" }, g, {
|
|
69
70
|
"aria-label": s(n)("core.page.more_actions"),
|
|
70
71
|
"data-page-overflow": "",
|
|
71
72
|
class: "hit-target flex size-9 cursor-pointer items-center justify-center rounded-button bg-fill text-content-strong transition-colors duration-motion-fast hover:bg-fill-strong focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus",
|
|
@@ -75,10 +76,10 @@ const ee = /* @__PURE__ */ $({
|
|
|
75
76
|
], 16, ne)
|
|
76
77
|
]),
|
|
77
78
|
_: 1
|
|
78
|
-
}, 8, ["items", "label"])) :
|
|
79
|
-
])) :
|
|
79
|
+
}, 8, ["items", "label"])) : f("", !0)
|
|
80
|
+
])) : f("", !0);
|
|
80
81
|
}
|
|
81
|
-
}), ae = { class: "sticky top-
|
|
82
|
+
}), ae = { class: "sticky top-[var(--shell-banner-h,0px)] z-20 flex min-h-bar-height min-w-0 flex-wrap items-center gap-2.5 border-b border-border-separator bg-surface-page/85 py-2 pr-6 pl-4 backdrop-blur-xl" }, oe = ["aria-label"], se = {
|
|
82
83
|
class: "flex shrink-0 text-content-link",
|
|
83
84
|
"aria-hidden": "true"
|
|
84
85
|
}, le = { class: "flex min-w-0 items-center" }, re = {
|
|
@@ -106,13 +107,13 @@ const ee = /* @__PURE__ */ $({
|
|
|
106
107
|
"aria-label": s(n)("core.page.breadcrumbs"),
|
|
107
108
|
class: "-ml-1 flex min-w-0 items-center"
|
|
108
109
|
}, [
|
|
109
|
-
|
|
110
|
+
m("span", se, [
|
|
110
111
|
b(s(y), {
|
|
111
112
|
name: "arrowLeftSLine",
|
|
112
113
|
size: 20
|
|
113
114
|
})
|
|
114
115
|
]),
|
|
115
|
-
|
|
116
|
+
m("ol", le, [
|
|
116
117
|
(l(!0), p(I, null, M(i.value, (a) => (l(), p("li", {
|
|
117
118
|
key: a.label,
|
|
118
119
|
class: "flex min-w-0 max-w-48 shrink items-center max-lg:hidden"
|
|
@@ -127,14 +128,14 @@ const ee = /* @__PURE__ */ $({
|
|
|
127
128
|
]),
|
|
128
129
|
_: 2
|
|
129
130
|
}, 1032, ["to"]),
|
|
130
|
-
|
|
131
|
+
m("span", re, [
|
|
131
132
|
b(s(y), {
|
|
132
133
|
name: "arrowRightSLine",
|
|
133
134
|
size: 14
|
|
134
135
|
})
|
|
135
136
|
])
|
|
136
137
|
]))), 128)),
|
|
137
|
-
|
|
138
|
+
m("li", ie, [
|
|
138
139
|
b(s(L), {
|
|
139
140
|
to: r.value.to,
|
|
140
141
|
"data-page-back": "",
|
|
@@ -158,19 +159,19 @@ const ee = /* @__PURE__ */ $({
|
|
|
158
159
|
name: "arrowLeftSLine",
|
|
159
160
|
size: 20
|
|
160
161
|
}),
|
|
161
|
-
|
|
162
|
+
m("span", ce, h(e.back.label), 1)
|
|
162
163
|
]),
|
|
163
164
|
_: 1
|
|
164
|
-
}, 8, ["to"])) :
|
|
165
|
-
t[1] || (t[1] =
|
|
165
|
+
}, 8, ["to"])) : f("", !0),
|
|
166
|
+
t[1] || (t[1] = m("div", { class: "min-w-0 flex-1" }, null, -1)),
|
|
166
167
|
v(c.$slots, "pager"),
|
|
167
168
|
e.status ? (l(), p("span", ue, [
|
|
168
|
-
t[0] || (t[0] =
|
|
169
|
+
t[0] || (t[0] = m("span", {
|
|
169
170
|
class: "size-1.75 rounded-full bg-tint",
|
|
170
171
|
"aria-hidden": "true"
|
|
171
172
|
}, null, -1)),
|
|
172
173
|
w(h(e.status), 1)
|
|
173
|
-
])) :
|
|
174
|
+
])) : f("", !0),
|
|
174
175
|
b(P, {
|
|
175
176
|
actions: e.actions,
|
|
176
177
|
leading: e.leading
|
|
@@ -189,7 +190,7 @@ function pe(u, e, n = !0) {
|
|
|
189
190
|
c?.disconnect(), r.clearTitle();
|
|
190
191
|
});
|
|
191
192
|
}
|
|
192
|
-
const
|
|
193
|
+
const me = { class: "flex min-w-0 flex-wrap items-center gap-x-4 gap-y-3" }, fe = { class: "flex min-w-0 flex-[1_1_16rem] items-center gap-3.5" }, ge = {
|
|
193
194
|
key: 0,
|
|
194
195
|
"aria-hidden": "true",
|
|
195
196
|
class: "flex size-10 shrink-0 items-center justify-center rounded-group bg-tile-brand text-tile-brand-foreground compact:hidden"
|
|
@@ -222,47 +223,47 @@ const fe = { class: "flex min-w-0 flex-wrap items-center gap-x-4 gap-y-3" }, me
|
|
|
222
223
|
},
|
|
223
224
|
setup(u) {
|
|
224
225
|
const e = u, { locale: n } = E(), i = j("(max-width: 47.999rem)"), r = k(() => e.count == null ? null : new Intl.NumberFormat(n.value).format(e.count)), c = V("titleElement");
|
|
225
|
-
return pe(c, () => e.title), (t, a) => (l(), p("div",
|
|
226
|
-
|
|
226
|
+
return pe(c, () => e.title), (t, a) => (l(), p("div", me, [
|
|
227
|
+
m("div", fe, [
|
|
227
228
|
v(t.$slots, "leading", {}, () => [
|
|
228
229
|
e.icon ? (l(), p("span", ge, [
|
|
229
230
|
b(s(y), {
|
|
230
231
|
name: e.icon,
|
|
231
232
|
size: 20
|
|
232
233
|
}, null, 8, ["name"])
|
|
233
|
-
])) :
|
|
234
|
+
])) : f("", !0)
|
|
234
235
|
]),
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
236
|
+
m("div", ve, [
|
|
237
|
+
m("div", be, [
|
|
238
|
+
m("h1", {
|
|
238
239
|
ref_key: "titleElement",
|
|
239
240
|
ref: c,
|
|
240
241
|
class: "min-w-0 text-large-title font-semibold tracking-tight break-words text-content-strong"
|
|
241
242
|
}, h(e.title), 513),
|
|
242
|
-
r.value !== null ? (l(), p("span", he, h(r.value), 1)) :
|
|
243
|
+
r.value !== null ? (l(), p("span", he, h(r.value), 1)) : f("", !0)
|
|
243
244
|
]),
|
|
244
|
-
e.description ? (l(), p("p", ke, h(e.description), 1)) :
|
|
245
|
+
e.description ? (l(), p("p", ke, h(e.description), 1)) : f("", !0),
|
|
245
246
|
v(t.$slots, "description")
|
|
246
247
|
])
|
|
247
248
|
]),
|
|
248
249
|
e.inlineActions || !s(i) ? (l(), p("div", _e, [
|
|
249
250
|
e.status ? (l(), p("span", xe, [
|
|
250
|
-
a[0] || (a[0] =
|
|
251
|
+
a[0] || (a[0] = m("span", {
|
|
251
252
|
class: "size-1.75 rounded-full bg-tint",
|
|
252
253
|
"aria-hidden": "true"
|
|
253
254
|
}, null, -1)),
|
|
254
255
|
w(h(e.status), 1)
|
|
255
|
-
])) :
|
|
256
|
+
])) : f("", !0),
|
|
256
257
|
b(P, {
|
|
257
258
|
actions: e.actions,
|
|
258
259
|
leading: e.leading
|
|
259
260
|
}, null, 8, ["actions", "leading"])
|
|
260
|
-
])) :
|
|
261
|
+
])) : f("", !0)
|
|
261
262
|
]));
|
|
262
263
|
}
|
|
263
|
-
}), [ye,
|
|
264
|
+
}), [ye, je] = Z("vue-core.pageSectionBack");
|
|
264
265
|
function $e(u, e) {
|
|
265
|
-
const i =
|
|
266
|
+
const i = G().fullPath;
|
|
266
267
|
let r, c;
|
|
267
268
|
function t() {
|
|
268
269
|
r?.disconnect(), clearTimeout(c), document.removeEventListener("pointerdown", t, !0), document.removeEventListener("keydown", t, !0);
|
|
@@ -285,7 +286,7 @@ function $e(u, e) {
|
|
|
285
286
|
const Se = { key: 1 }, Te = {
|
|
286
287
|
key: 2,
|
|
287
288
|
class: "flex justify-center pt-2"
|
|
288
|
-
}, Ce = { class: "dock-safe-area pointer-events-auto order-1 border-t border-border-separator bg-surface-cell pt-screen-padding pr-[max(var(--app-screen-padding),var(--app-safe-right))] pb-screen-padding pl-[max(var(--app-screen-padding),var(--app-safe-left))]" },
|
|
289
|
+
}, Ce = { class: "dock-safe-area pointer-events-auto order-1 border-t border-border-separator bg-surface-cell pt-screen-padding pr-[max(var(--app-screen-padding),var(--app-safe-right))] pb-screen-padding pl-[max(var(--app-screen-padding),var(--app-safe-left))]" }, Ne = /* @__PURE__ */ $({
|
|
289
290
|
__name: "AdaptivePageShell",
|
|
290
291
|
props: {
|
|
291
292
|
title: {},
|
|
@@ -299,8 +300,8 @@ const Se = { key: 1 }, Te = {
|
|
|
299
300
|
width: { default: "full" }
|
|
300
301
|
},
|
|
301
302
|
setup(u) {
|
|
302
|
-
const e = u, n = N() ??
|
|
303
|
-
A(
|
|
303
|
+
const e = u, n = N() ?? J();
|
|
304
|
+
A(X, n);
|
|
304
305
|
const i = n.claimShell();
|
|
305
306
|
S(i);
|
|
306
307
|
const r = V("root");
|
|
@@ -345,8 +346,8 @@ const Se = { key: 1 }, Te = {
|
|
|
345
346
|
]),
|
|
346
347
|
key: "0"
|
|
347
348
|
} : void 0
|
|
348
|
-
]), 1032, ["back", "path", "actions", "leading", "status"])) :
|
|
349
|
-
|
|
349
|
+
]), 1032, ["back", "path", "actions", "leading", "status"])) : f("", !0),
|
|
350
|
+
m("div", {
|
|
350
351
|
class: Q(["mx-auto flex min-w-0 flex-col gap-section-gap pt-section-gap pr-[max(var(--app-screen-padding),var(--app-safe-right))] pb-[max(var(--app-screen-padding),var(--app-safe-bottom),calc(var(--bottom-dock-h,0px)+var(--app-screen-padding)))] pl-[max(var(--app-screen-padding),var(--app-safe-left))] lg:pt-[calc(var(--app-section-gap)*1.5)] lg:pr-[max(2.5rem,var(--app-safe-right))] lg:pl-[max(2.5rem,var(--app-safe-left))]", T[e.width]])
|
|
351
352
|
}, [
|
|
352
353
|
v(o.$slots, "header", {}, () => [
|
|
@@ -364,33 +365,33 @@ const Se = { key: 1 }, Te = {
|
|
|
364
365
|
key: 0,
|
|
365
366
|
actions: s(n).actions.value,
|
|
366
367
|
leading: s(n).leading.value
|
|
367
|
-
}, null, 8, ["actions", "leading"])) :
|
|
368
|
+
}, null, 8, ["actions", "leading"])) : f("", !0),
|
|
368
369
|
o.$slots.notices ? (l(), p("div", Se, [
|
|
369
370
|
v(o.$slots, "notices")
|
|
370
|
-
])) :
|
|
371
|
+
])) : f("", !0),
|
|
371
372
|
v(o.$slots, "default"),
|
|
372
373
|
o.$slots.pager && s(c) ? (l(), p("div", Te, [
|
|
373
374
|
v(o.$slots, "pager")
|
|
374
|
-
])) :
|
|
375
|
+
])) : f("", !0)
|
|
375
376
|
], 2),
|
|
376
377
|
o.$slots.bottom ? (l(), _(ee, { key: 1 }, {
|
|
377
378
|
default: x(() => [
|
|
378
|
-
|
|
379
|
+
m("div", Ce, [
|
|
379
380
|
v(o.$slots, "bottom")
|
|
380
381
|
])
|
|
381
382
|
]),
|
|
382
383
|
_: 3
|
|
383
|
-
})) :
|
|
384
|
+
})) : f("", !0)
|
|
384
385
|
], 512));
|
|
385
386
|
}
|
|
386
387
|
});
|
|
387
388
|
export {
|
|
388
389
|
ee as _,
|
|
389
|
-
|
|
390
|
+
Ne as a,
|
|
390
391
|
P as b,
|
|
391
392
|
de as c,
|
|
392
393
|
we as d,
|
|
393
|
-
|
|
394
|
+
je as e,
|
|
394
395
|
ye as p,
|
|
395
396
|
pe as u
|
|
396
397
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent as H, ref as L, useId as S, computed as u, watch as J, openBlock as a, createBlock as p, Teleport as K, createElementBlock as r, unref as t, createVNode as T, Transition as z, withCtx as I, createCommentVNode as s, createElementVNode as o, toDisplayString as l, renderSlot as V, normalizeClass as d, createTextVNode as $ } from "vue";
|
|
2
2
|
import { useI18n as Q } from "vue-i18n";
|
|
3
|
-
import { _ as j } from "./Icon.vue_vue_type_script_lang-
|
|
3
|
+
import { _ as j } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
4
4
|
import { u as R } from "./mediaQuery-CygcXmFW.js";
|
|
5
5
|
import { u as U } from "./useDialog-CXR3hN0G.js";
|
|
6
6
|
const X = ["aria-labelledby", "aria-describedby", "data-presentation"], Y = { class: "overflow-hidden rounded-menu bg-surface-overlay/95 backdrop-blur-xl" }, Z = { class: "flex flex-col gap-1 px-4 py-3.5 text-center" }, ee = ["id"], te = ["id"], ae = ["disabled"], ne = ["disabled"], oe = ["id"], ie = ["id"], se = ["disabled"], le = ["disabled"], pe = /* @__PURE__ */ H({
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { defineComponent as h, openBlock as a, createElementBlock as n, computed as $, Fragment as _, unref as o, renderSlot as y, renderList as w, createBlock as v, createVNode as u, withCtx as c, createElementVNode as d, toDisplayString as i, createCommentVNode as m, createTextVNode as g, normalizeClass as b, createSlots as x } from "vue";
|
|
2
2
|
import { useI18n as C } from "vue-i18n";
|
|
3
|
-
import { _ as k } from "./Button.vue_vue_type_script_setup_true_lang-
|
|
4
|
-
import { _ as E } from "./Icon.vue_vue_type_script_lang-
|
|
5
|
-
import { _ as S } from "./Banner.vue_vue_type_script_setup_true_lang-
|
|
6
|
-
import { _ as V } from "./EmptyState.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
import { _ as k } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
4
|
+
import { _ as E } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
5
|
+
import { _ as S } from "./Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js";
|
|
6
|
+
import { _ as V } from "./EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js";
|
|
7
7
|
function K(s) {
|
|
8
8
|
return s.status === "loading" || s.status === "failed" ? void 0 : s.value;
|
|
9
9
|
}
|