@wssto2/vue-core 0.1.0 → 0.3.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 +53 -9
- package/dist/AccessGate.vue_vue_type_script_setup_true_lang-DKX3PH2n.js +22 -0
- package/dist/AccountMenuItem.vue_vue_type_script_setup_true_lang-DIGqTLwd.js +76 -0
- package/dist/ActionRow.vue_vue_type_script_setup_true_lang-B7Lpfkf6.js +45 -0
- package/dist/Activity-DviO0VQ8.js +156 -0
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-CKghARkW.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-CvAnzdc1.js} +48 -47
- package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-BZb4qKXo.js → AlertDialog.vue_vue_type_script_setup_true_lang-CJsMUIUg.js} +2 -2
- package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-B82bl36A.js → AsyncSection.vue_vue_type_script_setup_true_lang-CCtthMRd.js} +4 -4
- package/dist/Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js +51 -0
- package/dist/{Banner.vue_vue_type_script_setup_true_lang-n_wGPIIu.js → Banner.vue_vue_type_script_setup_true_lang-Cib_YYpr.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-CYil8h9z.js +182 -0
- package/dist/Changes-DlT5mN9G.js +129 -0
- package/dist/CollectionPage.vue_vue_type_script_setup_true_lang-CXILftEc.js +1481 -0
- package/dist/CountryFlag.vue_vue_type_script_setup_true_lang-Kry_vPPZ.js +299 -0
- package/dist/DataTable.vue_vue_type_script_setup_true_lang-DSYgS9lC.js +52 -0
- package/dist/DateField.vue_vue_type_script_setup_true_lang-DMVjNsaM.js +1099 -0
- package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-Bx5O1RZJ.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-Cb3xJI1x.js} +1 -1
- package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-BeGpHMUP.js → EmptyState.vue_vue_type_script_setup_true_lang-C2ZYIT9F.js} +1 -1
- package/dist/FormErrors.vue_vue_type_script_setup_true_lang-DVgNBQ8p.js +276 -0
- package/dist/FormGroup.vue_vue_type_script_setup_true_lang-0mfG8TkU.js +136 -0
- package/dist/FormView.vue_vue_type_script_setup_true_lang-Bz2m3AtF.js +38 -0
- package/dist/General-BD-Hcz0a.js +145 -0
- package/dist/{Icon.vue_vue_type_script_lang-DtC4_mkz.js → Icon.vue_vue_type_script_lang-VvcV2Bzo.js} +46 -33
- package/dist/{IconTile.vue_vue_type_script_setup_true_lang-Csfv6Sel.js → IconTile.vue_vue_type_script_setup_true_lang-D7QgnUyN.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-DH6EB8br.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-C2udmeEA.js} +2 -2
- package/dist/{Menu.vue_vue_type_script_setup_true_lang-D44EHXQZ.js → Menu.vue_vue_type_script_setup_true_lang-BNAjx9tj.js} +61 -57
- package/dist/{Modal.vue_vue_type_script_setup_true_lang-DYQgaUtj.js → Modal.vue_vue_type_script_setup_true_lang-D7SwVPpL.js} +139 -129
- package/dist/NewRolePage-Dla4YnMs.js +42 -0
- package/dist/NoAccess.vue_vue_type_script_setup_true_lang-8m9cNptR.js +31 -0
- package/dist/NumberField.vue_vue_type_script_setup_true_lang-CYRg7Kfg.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-Cfr5xsJx.js +47 -0
- package/dist/{Panel.vue_vue_type_script_setup_true_lang-BQmv3cLb.js → Panel.vue_vue_type_script_setup_true_lang-BCRxRK4D.js} +1 -1
- package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-DDVQXJRB.js → PhotoViewer.vue_vue_type_script_setup_true_lang-B3Q4dhqJ.js} +2 -2
- package/dist/Popover.vue_vue_type_script_setup_true_lang-Dx-tDhNE.js +125 -0
- package/dist/ProfilePage-OJMQ8cr8.js +691 -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-DKsaKlAq.js +64 -0
- package/dist/ResourcePage.vue_vue_type_script_setup_true_lang-CJcKa9SW.js +173 -0
- package/dist/RoleEditor.vue_vue_type_script_setup_true_lang-DuEPOmjI.js +299 -0
- package/dist/RolePage-bZzv_E4l.js +315 -0
- package/dist/RolesPage-BniZv0nB.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-BKP_bge8.js +148 -0
- package/dist/SectionNavigator.vue_vue_type_script_setup_true_lang-BgGEGxSI.js +314 -0
- package/dist/SegmentedField.vue_vue_type_script_setup_true_lang-BZ9UdgA1.js +58 -0
- package/dist/SelectField.vue_vue_type_script_setup_true_lang-BiGaEKBQ.js +422 -0
- package/dist/SessionList.vue_vue_type_script_setup_true_lang-DUQpr7gb.js +111 -0
- package/dist/Sessions-Co5-xdeb.js +96 -0
- package/dist/Sheet.vue_vue_type_script_setup_true_lang-bHYzx7-J.js +142 -0
- package/dist/SignIn-BWwFbxki.js +140 -0
- package/dist/SignInPage-FnLtoi2q.js +60 -0
- package/dist/SignInTable.vue_vue_type_script_setup_true_lang-Dnx3T_42.js +79 -0
- package/dist/SignIns-3UcI64_h.js +66 -0
- package/dist/SwipeActions.vue_vue_type_script_setup_true_lang-4I8m27ol.js +93 -0
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-BeGaydRr.js +155 -0
- package/dist/TextField.vue_vue_type_script_setup_true_lang-C_FMf3Vc.js +269 -0
- package/dist/TextareaField.vue_vue_type_script_setup_true_lang-CU3KTKIJ.js +127 -0
- package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-CSY_mMm1.js → Timestamp.vue_vue_type_script_setup_true_lang-1RJGKxbD.js} +1 -1
- package/dist/{Tooltip.vue_vue_type_script_setup_true_lang-BJWPVyfT.js → Tooltip.vue_vue_type_script_setup_true_lang-OOD_XNWx.js} +1 -1
- package/dist/UserRecord-Ci8HfwbX.js +267 -0
- package/dist/UsersList-vEJ-cgkT.js +155 -0
- package/dist/ViewTabs.vue_vue_type_script_setup_true_lang-ByqTU2JT.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/application.d.ts +5 -0
- package/dist/app/contributions.d.ts +1 -1
- package/dist/app/environment.d.ts +2 -0
- package/dist/app/feature.d.ts +8 -0
- package/dist/app/index.js +260 -294
- package/dist/bottomDock-BZEiOPYZ.js +12 -0
- package/dist/button/Button.vue.d.ts +3 -3
- package/dist/button/index.d.ts +1 -1
- package/dist/button/index.js +5 -3
- package/dist/button/shortcut.d.ts +28 -2
- 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 +19 -138
- package/dist/client/route.d.ts +59 -0
- package/dist/client-Bw0aM5Gu.js +147 -0
- package/dist/closeOverlays-CjVsIrpL.js +8 -0
- package/dist/collection/CollectionPage.vue.d.ts +1 -0
- package/dist/collection/CollectionRows.vue.d.ts +59 -0
- package/dist/collection/CollectionTable.vue.d.ts +1 -1
- package/dist/collection/DataTable.vue.d.ts +47 -0
- package/dist/collection/RowActions.vue.d.ts +19 -0
- package/dist/collection/columns.d.ts +2 -0
- package/dist/collection/http.d.ts +4 -2
- package/dist/collection/index.d.ts +4 -2
- package/dist/collection/index.js +87 -2299
- package/dist/collection/rowLayout.d.ts +10 -0
- package/dist/collection/slots.d.ts +6 -3
- package/dist/content/index.js +37 -66
- package/dist/contributions-CDDg3fKp.js +26 -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-Ctga6GcS.js +41 -0
- package/dist/dialogStack-DZZg55w0.js +31 -0
- 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 +13 -2
- 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/MultiSelectField.vue.d.ts +4 -1
- package/dist/form/NumberCell.vue.d.ts +1 -1
- package/dist/form/NumberField.vue.d.ts +8 -2
- package/dist/form/OptionList.vue.d.ts +6 -2
- package/dist/form/OtpInput.vue.d.ts +2 -2
- package/dist/form/PhotoField.vue.d.ts +1 -1
- package/dist/form/SelectField.vue.d.ts +4 -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.d.ts +2 -0
- package/dist/form/index.js +1273 -3509
- package/dist/form/suggestions.d.ts +11 -0
- package/dist/form/useOptions.d.ts +60 -0
- package/dist/guards-Cd1V28oG.js +51 -0
- package/dist/http-DGGSKWvU.js +193 -0
- package/dist/i18n/describeError.d.ts +31 -0
- package/dist/i18n/index.d.ts +307 -0
- package/dist/i18n/index.js +54 -52
- package/dist/icon/core.d.ts +13 -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/{phone/CountryFlag.vue.d.ts → identity/shared/SignInTable.vue.d.ts} +5 -4
- 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-B2dbYZR9.js +706 -0
- package/dist/index-BAcl44SC.js +459 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/CountryFlag.vue.d.ts +10 -0
- 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 +4 -0
- package/dist/modal/ShortcutHelp.vue.d.ts +2 -0
- package/dist/modal/index.d.ts +2 -0
- package/dist/modal/index.js +64 -6
- package/dist/modal/placement.d.ts +22 -0
- 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/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/{navigation-B33ikiCS.js → navigation-BPWa63ge.js} +21 -20
- package/dist/neighbors-D0WRBxXI.js +86 -0
- package/dist/{options-CjSz2dQK.js → options-BXkMR63B.js} +48 -49
- package/dist/overlay/AlertDialog.vue.d.ts +3 -3
- package/dist/overlay/Popover.vue.d.ts +4 -1
- package/dist/overlay/closeOverlays.d.ts +7 -0
- package/dist/overlay/dialogStack.d.ts +9 -0
- package/dist/overlay/index.d.ts +1 -1
- package/dist/overlay/index.js +20 -18
- 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 +247 -540
- package/dist/platform/AccessGate.vue.d.ts +50 -0
- package/dist/platform/index.d.ts +4 -2
- package/dist/platform/index.js +38 -35
- package/dist/platform/platform.d.ts +2 -2
- package/dist/platform/session.d.ts +22 -1
- package/dist/platform-hunMqFdB.js +255 -0
- package/dist/resource/index.js +8 -248
- 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-BI7a3Kom.js +603 -0
- package/dist/sectionIndex-BS0ic5W7.js +86 -0
- package/dist/{sections-LtxV5Mtk.js → sections-BEqW1dOc.js} +1 -1
- package/dist/shell/AccountMenuItem.vue.d.ts +4 -1
- package/dist/shell/BackofficeShell.vue.d.ts +2 -2
- 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 +476 -532
- package/dist/state/Badge.vue.d.ts +17 -10
- package/dist/state/ProgressTrack.vue.d.ts +1 -1
- package/dist/state/hue.d.ts +8 -0
- package/dist/state/index.d.ts +2 -0
- package/dist/state/index.js +34 -31
- package/dist/state/useLoad.d.ts +41 -0
- package/dist/status-C9aXR-Jb.js +33 -0
- package/dist/styles.css +1 -1
- package/dist/suggestions-BJAqOj4c.js +138 -0
- package/dist/testing/app.d.ts +61 -0
- package/dist/testing/async.d.ts +12 -0
- package/dist/testing/collection.d.ts +18 -0
- package/dist/testing/format.d.ts +9 -0
- package/dist/testing/i18n.d.ts +16 -0
- package/dist/testing/index.d.ts +14 -0
- package/dist/testing/index.js +178 -0
- package/dist/testing/media.d.ts +23 -0
- package/dist/testing/platform.d.ts +40 -0
- package/dist/testing/transport.d.ts +40 -0
- package/dist/toast-D9Z5To38.js +13 -0
- package/dist/useCommand-BgRwnYlV.js +135 -0
- package/dist/{useDialog-wmyNx2j_.js → useDialog-CXR3hN0G.js} +1 -1
- package/dist/useLoad-CYRVx6HW.js +39 -0
- package/dist/useResourceForm-Bgc9jMcu.js +52 -0
- package/dist/useSaveChrome-chi6D3HY.js +25 -0
- package/dist/useSheetDrag-OsD6Eb6I.js +72 -0
- package/package.json +26 -5
- package/src/styles/theme.css +60 -0
- package/dist/Badge.vue_vue_type_script_setup_true_lang-DKc6ugmr.js +0 -31
- package/dist/Button.vue_vue_type_script_setup_true_lang-3f0emVNU.js +0 -141
- package/dist/NoAccess.vue_vue_type_script_setup_true_lang-OKW8pKYU.js +0 -78
- package/dist/SectionList.vue_vue_type_script_setup_true_lang-DGcKX_OJ.js +0 -230
- package/dist/SelectField.vue_vue_type_script_setup_true_lang-SyFWE33A.js +0 -422
- package/dist/Sheet.vue_vue_type_script_setup_true_lang-BLBD5ps8.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/dialogStack-DiTG1rZc.js +0 -26
- package/dist/environment-D3nozt9a.js +0 -75
- package/dist/feature-DyDtyMLU.js +0 -47
- package/dist/platform-jqlKVJ2e.js +0 -244
- package/dist/toast-BTeX0r66.js +0 -129
- /package/dist/{phone → internal}/flagLoaders.d.ts +0 -0
package/README.md
CHANGED
|
@@ -10,14 +10,17 @@ Its plan and rules are in [PLAN.md](PLAN.md).
|
|
|
10
10
|
|
|
11
11
|
| Import | For |
|
|
12
12
|
|---|---|
|
|
13
|
-
| `@wssto2/vue-core/platform` | `readBootstrap`, `createPlatform` (HTTP client, session, access), typed contexts |
|
|
13
|
+
| `@wssto2/vue-core/platform` | `readBootstrap`, `createPlatform` (HTTP client, session, access), `AccessGate`, typed contexts |
|
|
14
14
|
| `@wssto2/vue-core/app` | `createApplication`, `defineFeature`, shell outlets, effects |
|
|
15
15
|
| `@wssto2/vue-core/shell` | `backofficeShell`, the shell's parts for a custom one |
|
|
16
16
|
| `@wssto2/vue-core/router` | `defineRoutes` (typed targets), guards, navigation |
|
|
17
|
-
| `@wssto2/vue-core/collection` | `defineCollection`, `useCollection`, `CollectionPage`, record neighbors |
|
|
17
|
+
| `@wssto2/vue-core/collection` | `defineCollection`, `useCollection`, `CollectionPage`, `DataTable` (a table over an array), record neighbors |
|
|
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
|
-
| `@wssto2/vue-core/i18n`, `/format`, `/client` | messages, formatting, `HttpClient` and `ApiError` |
|
|
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/testing` | `createTestPlatform`, `createTestApp`, fake transports: for your tests, [testing](docs/recipes/testing.md) |
|
|
21
24
|
|
|
22
25
|
Nothing is reachable by a deep import. The peers are `vue`, `vue-router` and `vue-i18n`; the library never bundles them.
|
|
23
26
|
|
|
@@ -174,12 +177,40 @@ Its texts are JSON files under the feature, loaded the first time one of its rou
|
|
|
174
177
|
"open": "Open",
|
|
175
178
|
"closed": "Closed",
|
|
176
179
|
"record": "Ticket",
|
|
177
|
-
"details": "Details"
|
|
180
|
+
"details": "Details",
|
|
181
|
+
"history": "History",
|
|
182
|
+
"history_empty": "Nothing has happened yet.",
|
|
183
|
+
"when": "When",
|
|
184
|
+
"kind": "Kind",
|
|
185
|
+
"author": "Author",
|
|
186
|
+
"note": "Note",
|
|
187
|
+
"comment": "Comment",
|
|
188
|
+
"change": "Status change",
|
|
189
|
+
"remove": "Remove"
|
|
178
190
|
}
|
|
179
191
|
```
|
|
180
192
|
|
|
181
193
|
The views are [a list page](docs/recipes/list-page.md) and [a record page](docs/recipes/record-page.md).
|
|
182
194
|
|
|
195
|
+
## Typed routes
|
|
196
|
+
|
|
197
|
+
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).
|
|
198
|
+
|
|
199
|
+
<!-- example: docs/examples/routes/api.ts:1-11 -->
|
|
200
|
+
```ts
|
|
201
|
+
import { createHttpClient, isApiError } from "@wssto2/vue-core/client";
|
|
202
|
+
import { ticketsRoutes } from "./routes";
|
|
203
|
+
import { route } from "@wssto2/vue-core/client";
|
|
204
|
+
|
|
205
|
+
const http = createHttpClient({ baseUrl: "/api" });
|
|
206
|
+
|
|
207
|
+
// A path parameter and the rest as the query: GET /api/v1/tickets/7
|
|
208
|
+
export async function loadTicket(id: number, signal: AbortSignal) {
|
|
209
|
+
const result = await http.request(ticketsRoutes.show, { id }, { signal });
|
|
210
|
+
return result.data; // typed as Ticket
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
183
214
|
## Permissions, destinations and icons
|
|
184
215
|
|
|
185
216
|
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:
|
|
@@ -196,6 +227,12 @@ declare module "@wssto2/vue-core/platform" {
|
|
|
196
227
|
"tickets:view": true;
|
|
197
228
|
"tickets:update": true;
|
|
198
229
|
"accounts:view": true;
|
|
230
|
+
// go-core's access module defines these in the catalogue, so a generated union has them (the roles screens name them).
|
|
231
|
+
"iam.role:view": true;
|
|
232
|
+
"iam.role:manage": true;
|
|
233
|
+
"iam.role:delete": true;
|
|
234
|
+
"iam.user:view": true;
|
|
235
|
+
"iam.user:manage": true;
|
|
199
236
|
}
|
|
200
237
|
}
|
|
201
238
|
|
|
@@ -203,6 +240,8 @@ declare module "@wssto2/vue-core/router" {
|
|
|
203
240
|
interface DestinationRegistry {
|
|
204
241
|
tickets: true;
|
|
205
242
|
accounts: true;
|
|
243
|
+
users: true;
|
|
244
|
+
"iam.roles": true;
|
|
206
245
|
}
|
|
207
246
|
}
|
|
208
247
|
|
|
@@ -284,12 +323,17 @@ The library's own texts are under the `core` namespace in English, Croatian, Bos
|
|
|
284
323
|
|
|
285
324
|
## Recipes
|
|
286
325
|
|
|
287
|
-
- [List page](docs/recipes/list-page.md): a typed collection, columns, filters, row actions, URL state
|
|
288
|
-
- [Record page](docs/recipes/record-page.md): a simple record, a record with sections, regions that load on their own, previous / next
|
|
289
|
-
- [Shell](docs/recipes/shell.md): the default shell, contributions from features, a custom shell
|
|
290
|
-
- [App setup](docs/recipes/app-setup.md): config, session, effects, locales, errors
|
|
326
|
+
- [List page](docs/recipes/list-page.md): a typed collection, columns, filters, row actions, URL state; a table over an array
|
|
327
|
+
- [Record page](docs/recipes/record-page.md): a simple record, a record with sections, regions that load on their own (`useResource`, `useLoad`), previous / next
|
|
328
|
+
- [Shell](docs/recipes/shell.md): the default shell, contributions from features, keyboard shortcuts and their help, running inside a frame, a custom shell
|
|
329
|
+
- [App setup](docs/recipes/app-setup.md): config, session, effects, locales and flags, permissions in the UI, error sentences, startup errors
|
|
291
330
|
- [Forms](docs/recipes/forms.md): form state, fields, a record edited in group sheets, a long form, commands
|
|
292
|
-
- [
|
|
331
|
+
- [Typed routes](docs/recipes/typed-routes.md): generated routes, `client.request`, a list from a route
|
|
332
|
+
- [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
|
|
333
|
+
- [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
|
|
334
|
+
- [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
|
|
335
|
+
- [Theming](docs/recipes/theming.md): brand accent, dark mode, tokens, status tones and category hues
|
|
336
|
+
- [Testing](docs/recipes/testing.md): the application's environment and a fake backend for your tests
|
|
293
337
|
|
|
294
338
|
Forms have their own recipe when that phase lands.
|
|
295
339
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { defineComponent as t, computed as i, renderSlot as n } from "vue";
|
|
2
|
+
import { u as l } from "./platform-hunMqFdB.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-VvcV2Bzo.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 "./options-BXkMR63B.js";
|
|
3
|
+
import { _ as x } from "./Icon.vue_vue_type_script_lang-VvcV2Bzo.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-D7QgnUyN.js";
|
|
4
|
+
import { _ as I } from "./Tabs.vue_vue_type_script_setup_true_lang-BeGaydRr.js";
|
|
5
|
+
import { u as O } from "./format-B8mJm946.js";
|
|
6
|
+
import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-DMVjNsaM.js";
|
|
7
|
+
import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-0mfG8TkU.js";
|
|
8
|
+
import { e as z } from "./options-BXkMR63B.js";
|
|
9
|
+
import { P as G, c as H, i as J } from "./index-BAcl44SC.js";
|
|
10
|
+
import { u as K } from "./platform-hunMqFdB.js";
|
|
11
|
+
import { b as M } from "./routeResource-DstM0hvf.js";
|
|
12
|
+
import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CCtthMRd.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-Cfr5xsJx.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
|
+
};
|