@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
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { defineComponent as R, openBlock as q, createBlock as P, unref as e, withCtx as u, createVNode as t, mergeProps as L, provide as N, computed as g, useTemplateRef as $, createElementVNode as x, toDisplayString as C, createTextVNode as j } from "vue";
|
|
2
|
+
import { useI18n as A } from "vue-i18n";
|
|
3
|
+
import { u as F } from "./neighbors-D0WRBxXI.js";
|
|
4
|
+
import { _ as H } from "./Avatar.vue_vue_type_script_setup_true_lang-CFIheaSr.js";
|
|
5
|
+
import { u as J } from "./describeError-Ctga6GcS.js";
|
|
6
|
+
import { i as w, P as Q, p as W, f as X, M as Y, g as Z, d as ee } from "./index-BAcl44SC.js";
|
|
7
|
+
import { _ as se } from "./AlertDialog.vue_vue_type_script_setup_true_lang-CJsMUIUg.js";
|
|
8
|
+
import { t as k } from "./toast-D9Z5To38.js";
|
|
9
|
+
import { _ as ae } from "./SectionNavigator.vue_vue_type_script_setup_true_lang-BgGEGxSI.js";
|
|
10
|
+
import { u as E } from "./platform-hunMqFdB.js";
|
|
11
|
+
import { a as te } from "./routeResource-DstM0hvf.js";
|
|
12
|
+
import { a as oe } from "./ResourcePage.vue_vue_type_script_setup_true_lang-CJcKa9SW.js";
|
|
13
|
+
import { A as re } from "./access-DdRFrVV1.js";
|
|
14
|
+
import { _ as ne } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
15
|
+
import { u as ie } from "./useLoad-CYRVx6HW.js";
|
|
16
|
+
import { _ as V } from "./IconTile.vue_vue_type_script_setup_true_lang-D7QgnUyN.js";
|
|
17
|
+
import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-0mfG8TkU.js";
|
|
18
|
+
import { e as B } from "./options-BXkMR63B.js";
|
|
19
|
+
import { u as z, _ as K } from "./useCommand-BgRwnYlV.js";
|
|
20
|
+
import { u as U } from "./fieldMessages-C3Rpbktw.js";
|
|
21
|
+
import { u as ce, s as le } from "./status-C9aXR-Jb.js";
|
|
22
|
+
import { _ as M } from "./TextField.vue_vue_type_script_setup_true_lang-C_FMf3Vc.js";
|
|
23
|
+
const ue = /* @__PURE__ */ R({
|
|
24
|
+
__name: "DeactivateDialog",
|
|
25
|
+
props: {
|
|
26
|
+
id: {},
|
|
27
|
+
name: {},
|
|
28
|
+
sessionCount: {}
|
|
29
|
+
},
|
|
30
|
+
emits: ["done"],
|
|
31
|
+
setup(h, { expose: a, emit: d }) {
|
|
32
|
+
const c = h, v = d, { t: s } = A(), { http: n } = E(), l = z({
|
|
33
|
+
...U(),
|
|
34
|
+
defaults: () => ({}),
|
|
35
|
+
run: () => n.request(w.usersDeactivate, { id: c.id }),
|
|
36
|
+
done: () => {
|
|
37
|
+
k.success(s("core.users.deactivate.done", { name: c.name })), v("done");
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return a({ open: () => l.present() }), (f, o) => (q(), P(e(K), {
|
|
41
|
+
command: e(l),
|
|
42
|
+
title: e(s)("core.users.deactivate.title"),
|
|
43
|
+
subtitle: c.name,
|
|
44
|
+
"confirm-label": e(s)("core.users.actions.deactivate_short"),
|
|
45
|
+
"busy-label": e(s)("core.users.deactivate.busy"),
|
|
46
|
+
"done-label": e(s)("core.users.deactivate.done_label"),
|
|
47
|
+
size: "md"
|
|
48
|
+
}, {
|
|
49
|
+
default: u(() => [
|
|
50
|
+
t(e(T), { "data-deactivate-dialog": "" }, {
|
|
51
|
+
default: u(() => [
|
|
52
|
+
t(e(B), {
|
|
53
|
+
layout: "setting",
|
|
54
|
+
label: e(s)("core.users.deactivate.signs_out", { n: c.sessionCount ?? 0 }),
|
|
55
|
+
sub: e(s)("core.users.deactivate.signs_out_sub")
|
|
56
|
+
}, {
|
|
57
|
+
leading: u(() => [
|
|
58
|
+
t(e(V), {
|
|
59
|
+
tone: "anchor",
|
|
60
|
+
icon: "logoutBoxRLine"
|
|
61
|
+
})
|
|
62
|
+
]),
|
|
63
|
+
_: 1
|
|
64
|
+
}, 8, ["label", "sub"]),
|
|
65
|
+
t(e(B), {
|
|
66
|
+
layout: "setting",
|
|
67
|
+
label: e(s)("core.users.deactivate.cannot_sign_in"),
|
|
68
|
+
sub: e(s)("core.users.deactivate.cannot_sign_in_sub")
|
|
69
|
+
}, {
|
|
70
|
+
leading: u(() => [
|
|
71
|
+
t(e(V), {
|
|
72
|
+
tone: "anchor",
|
|
73
|
+
icon: "lockLine"
|
|
74
|
+
})
|
|
75
|
+
]),
|
|
76
|
+
_: 1
|
|
77
|
+
}, 8, ["label", "sub"])
|
|
78
|
+
]),
|
|
79
|
+
_: 1
|
|
80
|
+
})
|
|
81
|
+
]),
|
|
82
|
+
_: 1
|
|
83
|
+
}, 8, ["command", "title", "subtitle", "confirm-label", "busy-label", "done-label"]));
|
|
84
|
+
}
|
|
85
|
+
}), de = /* @__PURE__ */ R({
|
|
86
|
+
__name: "SetPasswordDialog",
|
|
87
|
+
props: {
|
|
88
|
+
id: {},
|
|
89
|
+
name: {}
|
|
90
|
+
},
|
|
91
|
+
emits: ["saved"],
|
|
92
|
+
setup(h, { expose: a, emit: d }) {
|
|
93
|
+
const c = h, v = d, { t: s } = A(), { http: n } = E(), l = {
|
|
94
|
+
safeParse(o) {
|
|
95
|
+
const { password: m, repeat: _ } = o, b = [
|
|
96
|
+
...m === "" ? [{ path: ["password"], message: s("core.account.validation.required") }] : [],
|
|
97
|
+
...m !== "" && _ !== m ? [{ path: ["repeat"], message: s(_ === "" ? "core.account.validation.required" : "core.account.validation.mismatch") }] : []
|
|
98
|
+
];
|
|
99
|
+
return b.length > 0 ? { success: !1, error: { issues: b } } : { success: !0, data: { password: m } };
|
|
100
|
+
}
|
|
101
|
+
}, f = z({
|
|
102
|
+
...U(),
|
|
103
|
+
defaults: () => ({ password: "", repeat: "" }),
|
|
104
|
+
validator: l,
|
|
105
|
+
run: (o) => n.request(w.usersSetPassword, { id: c.id, password: o.password }),
|
|
106
|
+
done: () => {
|
|
107
|
+
k.success(s("core.users.password.done", { name: c.name })), v("saved");
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
return a({ open: () => f.present() }), (o, m) => (q(), P(e(K), {
|
|
111
|
+
command: e(f),
|
|
112
|
+
title: e(s)("core.users.password.title"),
|
|
113
|
+
subtitle: c.name,
|
|
114
|
+
"confirm-label": e(s)("core.users.password.action")
|
|
115
|
+
}, {
|
|
116
|
+
default: u(() => [
|
|
117
|
+
t(e(T), {
|
|
118
|
+
footer: e(s)("core.users.password.footer"),
|
|
119
|
+
"data-set-password-dialog": ""
|
|
120
|
+
}, {
|
|
121
|
+
default: u(() => [
|
|
122
|
+
t(e(M), L(e(f).form.bind("password"), {
|
|
123
|
+
label: e(s)("core.users.fields.password"),
|
|
124
|
+
type: "password",
|
|
125
|
+
required: "",
|
|
126
|
+
autocomplete: "new-password"
|
|
127
|
+
}), null, 16, ["label"]),
|
|
128
|
+
t(e(M), L(e(f).form.bind("repeat"), {
|
|
129
|
+
label: e(s)("core.users.fields.password_repeat"),
|
|
130
|
+
type: "password",
|
|
131
|
+
required: "",
|
|
132
|
+
autocomplete: "new-password"
|
|
133
|
+
}), null, 16, ["label"])
|
|
134
|
+
]),
|
|
135
|
+
_: 1
|
|
136
|
+
}, 8, ["footer"])
|
|
137
|
+
]),
|
|
138
|
+
_: 1
|
|
139
|
+
}, 8, ["command", "title", "subtitle", "confirm-label"]));
|
|
140
|
+
}
|
|
141
|
+
}), me = {
|
|
142
|
+
class: "flex items-center gap-3 px-1.5",
|
|
143
|
+
"data-person-identity": ""
|
|
144
|
+
}, pe = { class: "flex min-w-0 flex-col items-start gap-0.5" }, fe = { class: "max-w-full truncate text-headline font-semibold text-content-strong" }, ve = { class: "max-w-full truncate text-footnote text-content-muted" }, Te = /* @__PURE__ */ R({
|
|
145
|
+
__name: "UserRecord",
|
|
146
|
+
setup(h) {
|
|
147
|
+
const { t: a } = A(), { http: d, access: c, session: v } = E(), s = J(), n = te({
|
|
148
|
+
key: Q,
|
|
149
|
+
param: "id",
|
|
150
|
+
load: async (r, { signal: p }) => (await d.request(w.usersShow, { id: r }, { signal: p })).data
|
|
151
|
+
}), l = ie(
|
|
152
|
+
async ({ signal: r }) => {
|
|
153
|
+
const p = n.data.value?.id;
|
|
154
|
+
return p === void 0 ? { sessions: [] } : (await d.request(w.usersSessions, { id: p }, { signal: r })).data;
|
|
155
|
+
},
|
|
156
|
+
{ watch: () => n.data.value?.id }
|
|
157
|
+
);
|
|
158
|
+
N(W, l);
|
|
159
|
+
const f = F(ce(d), { current: () => n.id.value, list: X.index, param: "id", backLabel: () => a("core.users.title") }), o = g(() => n.data.value), m = g(() => o.value !== null && v.state.value.status === "authenticated" && v.state.value.user.id === o.value.id), _ = $("deactivateDialog"), b = $("passwordDialog"), D = $("activateDialog");
|
|
160
|
+
async function y() {
|
|
161
|
+
await Promise.all([n.reload(), l.reload()]);
|
|
162
|
+
}
|
|
163
|
+
async function G() {
|
|
164
|
+
const r = n.id.value;
|
|
165
|
+
if (r !== null) {
|
|
166
|
+
try {
|
|
167
|
+
await d.request(w.usersActivate, { id: r }), k.success(a("core.users.activate.done", { name: o.value?.name ?? "" }));
|
|
168
|
+
} catch (p) {
|
|
169
|
+
ee(p) || k.error(s(p, { fallback: a("core.users.activate.failed") }));
|
|
170
|
+
}
|
|
171
|
+
await y();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const S = g(() => {
|
|
175
|
+
const r = c.can(Y);
|
|
176
|
+
return { manage: r, deactivate: r && !!o.value?.active && !m.value, activate: r && o.value !== null && !o.value.active, endSessions: r && !m.value };
|
|
177
|
+
});
|
|
178
|
+
N(Z, {
|
|
179
|
+
get can() {
|
|
180
|
+
return S.value;
|
|
181
|
+
},
|
|
182
|
+
deactivate: () => _.value?.open(),
|
|
183
|
+
activate: () => D.value?.present(),
|
|
184
|
+
setPassword: () => b.value?.open(),
|
|
185
|
+
refresh: y
|
|
186
|
+
});
|
|
187
|
+
const I = g(() => [
|
|
188
|
+
...S.value.deactivate ? [{ id: "deactivate", label: a("core.users.actions.deactivate"), icon: "lockLine", placement: "overflow", tone: "critical", onClick: () => _.value?.open() }] : [],
|
|
189
|
+
...S.value.activate ? [{ id: "activate", label: a("core.users.actions.activate"), icon: "checkCircle", placement: "overflow", onClick: () => D.value?.present() }] : []
|
|
190
|
+
]), O = g(() => ({
|
|
191
|
+
...l.data.value ? { "users.record.sessions": l.data.value.sessions.length } : {},
|
|
192
|
+
...o.value?.status === "locked" ? { "users.record.signin": a("core.users.status.locked") } : {}
|
|
193
|
+
}));
|
|
194
|
+
return (r, p) => (q(), P(e(oe), {
|
|
195
|
+
resource: e(n),
|
|
196
|
+
title: o.value?.name ?? e(a)("core.users.record"),
|
|
197
|
+
list: e(f).context,
|
|
198
|
+
actions: I.value
|
|
199
|
+
}, {
|
|
200
|
+
default: u(({ record: i }) => [
|
|
201
|
+
t(e(ae), {
|
|
202
|
+
label: e(a)("core.users.sections_label"),
|
|
203
|
+
desktop: "sidebar",
|
|
204
|
+
compact: "rows",
|
|
205
|
+
"back-label": i.name,
|
|
206
|
+
counts: O.value
|
|
207
|
+
}, {
|
|
208
|
+
summary: u(() => [
|
|
209
|
+
x("div", me, [
|
|
210
|
+
t(e(H), {
|
|
211
|
+
name: i.name,
|
|
212
|
+
size: "lg",
|
|
213
|
+
tone: "anchor"
|
|
214
|
+
}, null, 8, ["name"]),
|
|
215
|
+
x("div", pe, [
|
|
216
|
+
x("span", fe, C(i.name), 1),
|
|
217
|
+
x("span", ve, C(i.email), 1),
|
|
218
|
+
t(e(ne), {
|
|
219
|
+
tone: e(le)(i.status),
|
|
220
|
+
dot: "",
|
|
221
|
+
"data-person-status": ""
|
|
222
|
+
}, {
|
|
223
|
+
default: u(() => [
|
|
224
|
+
j(C(e(a)(`core.users.status.${i.status}`)), 1)
|
|
225
|
+
]),
|
|
226
|
+
_: 2
|
|
227
|
+
}, 1032, ["tone"])
|
|
228
|
+
])
|
|
229
|
+
])
|
|
230
|
+
]),
|
|
231
|
+
default: u(() => [
|
|
232
|
+
t(e(re))
|
|
233
|
+
]),
|
|
234
|
+
_: 2
|
|
235
|
+
}, 1032, ["label", "back-label", "counts"]),
|
|
236
|
+
t(ue, {
|
|
237
|
+
ref_key: "deactivateDialog",
|
|
238
|
+
ref: _,
|
|
239
|
+
id: i.id,
|
|
240
|
+
name: i.name,
|
|
241
|
+
"session-count": e(l).data.value?.sessions.length ?? null,
|
|
242
|
+
onDone: y
|
|
243
|
+
}, null, 8, ["id", "name", "session-count"]),
|
|
244
|
+
t(de, {
|
|
245
|
+
ref_key: "passwordDialog",
|
|
246
|
+
ref: b,
|
|
247
|
+
id: i.id,
|
|
248
|
+
name: i.name,
|
|
249
|
+
onSaved: y
|
|
250
|
+
}, null, 8, ["id", "name"]),
|
|
251
|
+
t(e(se), {
|
|
252
|
+
ref_key: "activateDialog",
|
|
253
|
+
ref: D,
|
|
254
|
+
icon: "checkCircle",
|
|
255
|
+
title: e(a)("core.users.activate.title"),
|
|
256
|
+
message: e(a)("core.users.activate.body", { name: i.name }),
|
|
257
|
+
"confirm-label": e(a)("core.users.actions.activate"),
|
|
258
|
+
action: G
|
|
259
|
+
}, null, 8, ["title", "message", "confirm-label"])
|
|
260
|
+
]),
|
|
261
|
+
_: 1
|
|
262
|
+
}, 8, ["resource", "title", "list", "actions"]));
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
export {
|
|
266
|
+
Te as default
|
|
267
|
+
};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { defineComponent as U, openBlock as p, createBlock as C, unref as e, withCtx as c, createVNode as r, mergeProps as i, useTemplateRef as V, computed as q, createTextVNode as z, toDisplayString as $, createCommentVNode as A, createElementBlock as S, normalizeClass as N } from "vue";
|
|
2
|
+
import { useI18n as B } from "vue-i18n";
|
|
3
|
+
import { useRouter as M } from "vue-router";
|
|
4
|
+
import { u as P, _ as D } from "./CollectionPage.vue_vue_type_script_setup_true_lang-CXILftEc.js";
|
|
5
|
+
import { _ as I } from "./Avatar.vue_vue_type_script_setup_true_lang-CFIheaSr.js";
|
|
6
|
+
import { u as F } from "./format-B8mJm946.js";
|
|
7
|
+
import { u as L } from "./platform-hunMqFdB.js";
|
|
8
|
+
import { _ as G } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
9
|
+
import { i as K, f as E, M as W } from "./index-BAcl44SC.js";
|
|
10
|
+
import { U as j, u as H, s as J } from "./status-C9aXR-Jb.js";
|
|
11
|
+
import { u as O } from "./environment-Dva-SG8D.js";
|
|
12
|
+
import { u as Q } from "./languages-BShG9LpE.js";
|
|
13
|
+
import { _ as X } from "./FormGroup.vue_vue_type_script_setup_true_lang-0mfG8TkU.js";
|
|
14
|
+
import { _ as Y } from "./SelectField.vue_vue_type_script_setup_true_lang-BiGaEKBQ.js";
|
|
15
|
+
import { _ as d } from "./TextField.vue_vue_type_script_setup_true_lang-C_FMf3Vc.js";
|
|
16
|
+
import { u as Z, _ as ee } from "./useCommand-BgRwnYlV.js";
|
|
17
|
+
import { t as se } from "./toast-D9Z5To38.js";
|
|
18
|
+
import { u as te } from "./fieldMessages-C3Rpbktw.js";
|
|
19
|
+
const oe = /* @__PURE__ */ U({
|
|
20
|
+
__name: "NewUserDialog",
|
|
21
|
+
emits: ["created"],
|
|
22
|
+
setup(T, { expose: o, emit: b }) {
|
|
23
|
+
const { t } = B(), { http: g } = L(), h = O(), f = te(), w = Q(), y = () => ({ login: "", name: "", email: "", phone: "", locale: h.locale.value, password: "", repeat: "" }), m = (s) => s.trim() === "", k = {
|
|
24
|
+
safeParse(s) {
|
|
25
|
+
const { repeat: n, locale: R, ...u } = s, v = t("core.account.validation.required"), _ = ["login", "name", "email", "password"].filter((x) => m(u[x])).map((x) => ({ path: [x], message: v }));
|
|
26
|
+
return R === null && _.push({ path: ["locale"], message: v }), !m(u.password) && n !== u.password && _.push({ path: ["repeat"], message: m(n) ? v : t("core.account.validation.mismatch") }), _.length > 0 ? { success: !1, error: { issues: _ } } : { success: !0, data: { ...u, locale: R ?? "", phone: m(u.phone) ? void 0 : u.phone } };
|
|
27
|
+
}
|
|
28
|
+
}, l = b, a = Z({
|
|
29
|
+
...f,
|
|
30
|
+
defaults: y,
|
|
31
|
+
validator: k,
|
|
32
|
+
run: async (s) => (await g.request(K.usersCreate, s)).data,
|
|
33
|
+
done: (s) => {
|
|
34
|
+
se.success(t("core.users.create.done", { name: s.name })), l("created", s);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return o({ create: () => a.present() }), (s, n) => (p(), C(e(ee), {
|
|
38
|
+
command: e(a),
|
|
39
|
+
title: e(t)("core.users.create.title"),
|
|
40
|
+
subtitle: e(t)("core.users.create.subtitle"),
|
|
41
|
+
"confirm-label": e(t)("core.users.create.action"),
|
|
42
|
+
size: "md"
|
|
43
|
+
}, {
|
|
44
|
+
default: c(() => [
|
|
45
|
+
r(e(X), { "label-width": "11rem" }, {
|
|
46
|
+
default: c(() => [
|
|
47
|
+
r(e(d), i(e(a).form.bind("name"), {
|
|
48
|
+
label: e(t)("core.users.fields.name"),
|
|
49
|
+
required: "",
|
|
50
|
+
autocomplete: "off"
|
|
51
|
+
}), null, 16, ["label"]),
|
|
52
|
+
r(e(d), i(e(a).form.bind("login"), {
|
|
53
|
+
label: e(t)("core.users.fields.login"),
|
|
54
|
+
required: "",
|
|
55
|
+
mono: "",
|
|
56
|
+
autocomplete: "off"
|
|
57
|
+
}), null, 16, ["label"]),
|
|
58
|
+
r(e(d), i(e(a).form.bind("password"), {
|
|
59
|
+
label: e(t)("core.users.fields.password"),
|
|
60
|
+
type: "password",
|
|
61
|
+
required: "",
|
|
62
|
+
autocomplete: "new-password"
|
|
63
|
+
}), null, 16, ["label"]),
|
|
64
|
+
r(e(d), i(e(a).form.bind("repeat"), {
|
|
65
|
+
label: e(t)("core.users.fields.password_repeat"),
|
|
66
|
+
type: "password",
|
|
67
|
+
required: "",
|
|
68
|
+
autocomplete: "new-password"
|
|
69
|
+
}), null, 16, ["label"]),
|
|
70
|
+
r(e(d), i(e(a).form.bind("email"), {
|
|
71
|
+
label: e(t)("core.users.fields.email"),
|
|
72
|
+
type: "email",
|
|
73
|
+
required: "",
|
|
74
|
+
autocomplete: "off"
|
|
75
|
+
}), null, 16, ["label"]),
|
|
76
|
+
r(e(d), i(e(a).form.bind("phone"), {
|
|
77
|
+
label: e(t)("core.users.fields.phone"),
|
|
78
|
+
type: "tel",
|
|
79
|
+
autocomplete: "off"
|
|
80
|
+
}), null, 16, ["label"]),
|
|
81
|
+
r(e(Y), i(e(a).form.bind("locale"), {
|
|
82
|
+
label: e(t)("core.users.fields.locale"),
|
|
83
|
+
options: e(w),
|
|
84
|
+
required: ""
|
|
85
|
+
}), null, 16, ["label", "options"])
|
|
86
|
+
]),
|
|
87
|
+
_: 1
|
|
88
|
+
})
|
|
89
|
+
]),
|
|
90
|
+
_: 1
|
|
91
|
+
}, 8, ["command", "title", "subtitle", "confirm-label"]));
|
|
92
|
+
}
|
|
93
|
+
}), ae = ["datetime"], xe = /* @__PURE__ */ U({
|
|
94
|
+
__name: "UsersList",
|
|
95
|
+
setup(T) {
|
|
96
|
+
const { t: o } = B(), { http: b, access: t } = L(), g = F(), h = M(), f = V("dialog"), w = q(() => [
|
|
97
|
+
{ key: "name", label: o("core.users.columns.person"), kind: "identity", subtitle: (l) => l.email, sort: "name", mobile: "primary" },
|
|
98
|
+
{ key: "login", label: o("core.users.columns.login"), sort: "login", hideBelow: "md", width: 180, mobile: "hidden" },
|
|
99
|
+
{ key: "last_sign_in", label: o("core.users.columns.last_sign_in"), width: 170, mobile: "meta" },
|
|
100
|
+
{ key: "status", label: o("core.users.columns.status"), width: 130, mobile: "accessory" }
|
|
101
|
+
]), y = q(() => j.map((l) => ({ key: l, label: o(`core.users.views.${l}`) }))), m = P(H(b), { columns: w, views: y, state: { kind: "url", key: "query" }, recordRoute: (l) => E.record({ id: l.id }) }), k = q(
|
|
102
|
+
() => t.can(W) ? [{ id: "create", label: o("core.users.create.title"), icon: "addLine", placement: "primary", compact: "icon", keyboardShortcut: { key: "N", ctrlKey: !0 }, onClick: () => f.value?.create() }] : []
|
|
103
|
+
);
|
|
104
|
+
return (l, a) => (p(), C(e(D), {
|
|
105
|
+
collection: e(m),
|
|
106
|
+
title: e(o)("core.users.title"),
|
|
107
|
+
description: e(o)("core.users.description"),
|
|
108
|
+
actions: k.value,
|
|
109
|
+
"row-height": 64,
|
|
110
|
+
"row-label": (s) => s.name,
|
|
111
|
+
"views-presentation": "scope"
|
|
112
|
+
}, {
|
|
113
|
+
leading: c(({ item: s }) => [
|
|
114
|
+
r(e(I), {
|
|
115
|
+
name: s.name,
|
|
116
|
+
size: "md",
|
|
117
|
+
tone: "anchor"
|
|
118
|
+
}, null, 8, ["name"])
|
|
119
|
+
]),
|
|
120
|
+
"cell-last_sign_in": c(({ item: s, compact: n }) => [
|
|
121
|
+
s.last_sign_in ? (p(), S("time", {
|
|
122
|
+
key: 0,
|
|
123
|
+
datetime: s.last_sign_in,
|
|
124
|
+
class: N(["text-content", n ? "text-footnote text-content-muted" : "text-body"])
|
|
125
|
+
}, $(e(g).dateTime(s.last_sign_in)), 11, ae)) : (p(), S("span", {
|
|
126
|
+
key: 1,
|
|
127
|
+
class: N(n ? "text-footnote text-content-disabled" : "text-body text-content-disabled")
|
|
128
|
+
}, $(e(o)("core.users.never")), 3))
|
|
129
|
+
]),
|
|
130
|
+
"cell-status": c(({ item: s, compact: n }) => [
|
|
131
|
+
!n || s.status !== "active" ? (p(), C(e(G), {
|
|
132
|
+
key: 0,
|
|
133
|
+
tone: e(J)(s.status),
|
|
134
|
+
dot: ""
|
|
135
|
+
}, {
|
|
136
|
+
default: c(() => [
|
|
137
|
+
z($(e(o)(`core.users.status.${s.status}`)), 1)
|
|
138
|
+
]),
|
|
139
|
+
_: 2
|
|
140
|
+
}, 1032, ["tone"])) : A("", !0)
|
|
141
|
+
]),
|
|
142
|
+
default: c(() => [
|
|
143
|
+
r(oe, {
|
|
144
|
+
ref_key: "dialog",
|
|
145
|
+
ref: f,
|
|
146
|
+
onCreated: a[0] || (a[0] = (s) => e(h).push(e(E).record({ id: s.id })))
|
|
147
|
+
}, null, 512)
|
|
148
|
+
]),
|
|
149
|
+
_: 1
|
|
150
|
+
}, 8, ["collection", "title", "description", "actions", "row-label"]));
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
export {
|
|
154
|
+
xe as default
|
|
155
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { defineComponent as u, useModel as m, computed as d, openBlock as r, createBlock as p, unref as c, mergeModels as i } from "vue";
|
|
2
|
+
import { _ as b } from "./Tabs.vue_vue_type_script_setup_true_lang-BeGaydRr.js";
|
|
3
|
+
const _ = /* @__PURE__ */ u({
|
|
4
|
+
__name: "ViewTabs",
|
|
5
|
+
props: /* @__PURE__ */ i({
|
|
6
|
+
views: {},
|
|
7
|
+
counts: {},
|
|
8
|
+
labelOf: { type: Function },
|
|
9
|
+
label: {}
|
|
10
|
+
}, {
|
|
11
|
+
modelValue: { required: !0 },
|
|
12
|
+
modelModifiers: {}
|
|
13
|
+
}),
|
|
14
|
+
emits: ["update:modelValue"],
|
|
15
|
+
setup(a) {
|
|
16
|
+
const e = a, t = m(a, "modelValue"), n = d(() => e.views.map((l) => ({ value: l, label: e.labelOf(l), badge: e.counts?.find((o) => o.key === l)?.count })));
|
|
17
|
+
return (l, o) => (r(), p(c(b), {
|
|
18
|
+
modelValue: t.value,
|
|
19
|
+
"onUpdate:modelValue": o[0] || (o[0] = (s) => t.value = s),
|
|
20
|
+
tabs: n.value,
|
|
21
|
+
presentation: "scope",
|
|
22
|
+
label: e.label
|
|
23
|
+
}, null, 8, ["modelValue", "tabs", "label"]));
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
export {
|
|
27
|
+
_
|
|
28
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Binding, SubjectRef } from "../modules/access/entities";
|
|
2
|
+
/**
|
|
3
|
+
* *Add role*: where first (a level of the hierarchy and the place, from what the server says this person may be given and the actor may give;
|
|
4
|
+
* an application with one level asks nothing here), then the role, from the ones the actor may give there (delegation already applied). What the
|
|
5
|
+
* chosen role reaches is the role's own and is only shown: it changes in Roles, not here.
|
|
6
|
+
*/
|
|
7
|
+
type __VLS_Props = {
|
|
8
|
+
subject: SubjectRef;
|
|
9
|
+
subjectLabel: string;
|
|
10
|
+
};
|
|
11
|
+
declare function present(): Promise<void>;
|
|
12
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {
|
|
13
|
+
present: typeof present;
|
|
14
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
15
|
+
added: (binding: Binding) => any;
|
|
16
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
17
|
+
onAdded?: ((binding: Binding) => any) | undefined;
|
|
18
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Binding } from "../modules/access/entities";
|
|
2
|
+
/**
|
|
3
|
+
* One role a person holds and where it applies, read-only: the role's name, its kind under it, the place on the right. The
|
|
4
|
+
* access panel puts *Remove* in the trailing slot; a profile page shows it as it is.
|
|
5
|
+
*/
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
binding: Pick<Binding, "role" | "scope">;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_Slots = {
|
|
10
|
+
trailing?: () => unknown;
|
|
11
|
+
};
|
|
12
|
+
declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
14
|
+
export default _default;
|
|
15
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
16
|
+
new (): {
|
|
17
|
+
$slots: S;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { EffectivePermission } from "../modules/access/entities";
|
|
2
|
+
/**
|
|
3
|
+
* *What {name} can do*: the effective permissions by module and screen, worked out from the roles; nothing here edits. Each screen says
|
|
4
|
+
* which actions are held, which roles give them and how wide (whose records, which places); *Why* opens the reason for every action.
|
|
5
|
+
* A permission switched off for the tenant is marked. On a phone the modules beyond the first three sit behind *All n modules*.
|
|
6
|
+
*/
|
|
7
|
+
type __VLS_Props = {
|
|
8
|
+
effective: readonly EffectivePermission[];
|
|
9
|
+
name: string;
|
|
10
|
+
};
|
|
11
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Grants } from "./catalogue";
|
|
2
|
+
/**
|
|
3
|
+
* The permissions of a role as the editor shows them: the catalogue's modules (a list on the left, a tab bar on phones)
|
|
4
|
+
* with what the role holds of each, then each screen as a group of switches. Switching a permission on switches on what it
|
|
5
|
+
* needs, off what needs it; where a screen's records have an owner the group opens with *whose* (own, location's, all), held
|
|
6
|
+
* once per record type. `grants` is edited in place; `readonly` shows the role without letting it change.
|
|
7
|
+
*/
|
|
8
|
+
type __VLS_Props = {
|
|
9
|
+
grants: Grants;
|
|
10
|
+
readonly: boolean;
|
|
11
|
+
};
|
|
12
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SubjectRef } from "../modules/access/entities";
|
|
2
|
+
/**
|
|
3
|
+
* A person's access: their roles, each with where it applies, *Add role* and removal (both offered only when the server says the actor may
|
|
4
|
+
* manage them), then *What {name} can do*, the effective permissions with their reasons. Put it on the person's record, as a section
|
|
5
|
+
* (`<PersonAccess :subject="{ kind: 'user', id }" :name="person.name" />`); `subjectLabel` says who a role is added for under the dialog's title.
|
|
6
|
+
*/
|
|
7
|
+
type __VLS_Props = {
|
|
8
|
+
subject: SubjectRef;
|
|
9
|
+
/** The person's name, for "What Ana can do". */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Under the add dialog's title; by default the name. */
|
|
12
|
+
subjectLabel?: string;
|
|
13
|
+
};
|
|
14
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {
|
|
15
|
+
reload: () => Promise<void>;
|
|
16
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
17
|
+
loaded: (bindings: number) => any;
|
|
18
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
19
|
+
onLoaded?: ((bindings: number) => any) | undefined;
|
|
20
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
21
|
+
export default _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Role, RoleSummary } from "../modules/access/entities";
|
|
2
|
+
/**
|
|
3
|
+
* *Replace*: every holder of a custom role gets a predefined role at the same place instead. It goes through the same rules as
|
|
4
|
+
* giving a role, so it can be refused (you cannot give more than you hold); either every holder moves or none does.
|
|
5
|
+
*/
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
role: Role;
|
|
8
|
+
others: readonly RoleSummary[];
|
|
9
|
+
};
|
|
10
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {
|
|
11
|
+
present: () => void;
|
|
12
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
13
|
+
replaced: (rebound: number) => any;
|
|
14
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
15
|
+
onReplaced?: ((rebound: number) => any) | undefined;
|
|
16
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
17
|
+
export default _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Role, RoleSummary } from "../modules/access/entities";
|
|
2
|
+
/**
|
|
3
|
+
* *Compare with a predefined role*: what a custom role holds that the other does not, what it lacks, and where the whose
|
|
4
|
+
* differs. The way to see how far a copy has drifted before replacing it.
|
|
5
|
+
*/
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
role: Role;
|
|
8
|
+
others: readonly RoleSummary[];
|
|
9
|
+
};
|
|
10
|
+
declare function present(): void;
|
|
11
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {
|
|
12
|
+
present: typeof present;
|
|
13
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Role } from "../modules/access/entities";
|
|
2
|
+
import { type Grants } from "./catalogue";
|
|
3
|
+
/**
|
|
4
|
+
* A role, read or edited: its name and description, then the permission tree. A custom role edits with Save and Cancel in the
|
|
5
|
+
* page chrome; a predefined or computed role only reads (*Copy* is its way to a custom one). `source` prefills a new role from
|
|
6
|
+
* another (Copy): it is still created as a new role.
|
|
7
|
+
*/
|
|
8
|
+
type __VLS_Props = {
|
|
9
|
+
/** The saved role; null while creating a new one. */
|
|
10
|
+
role: Role | null;
|
|
11
|
+
/** The role a new one is copied from. */
|
|
12
|
+
source?: Role | null;
|
|
13
|
+
};
|
|
14
|
+
interface Draft {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
grants: Grants;
|
|
18
|
+
}
|
|
19
|
+
declare function save(): Promise<void>;
|
|
20
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {
|
|
21
|
+
form: import("../form").Form<Draft, Draft>;
|
|
22
|
+
save: typeof save;
|
|
23
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
24
|
+
saved: (role: Role) => any;
|
|
25
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
26
|
+
onSaved?: ((role: Role) => any) | undefined;
|
|
27
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
28
|
+
export default _default;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { HttpClient } from "../client";
|
|
2
|
+
import type { BindInput, CreateRoleInput, UpdateRoleInput } from "../modules/access/schemas";
|
|
3
|
+
import type { SubjectRef } from "../modules/access/entities";
|
|
4
|
+
type Options = {
|
|
5
|
+
readonly signal?: AbortSignal;
|
|
6
|
+
};
|
|
7
|
+
/** go-core's access routes as calls; `data` of each answer already read. */
|
|
8
|
+
export declare function createAccessApi(http: HttpClient): {
|
|
9
|
+
roles: (options?: Options) => Promise<import(".").RoleSummary[]>;
|
|
10
|
+
role: (ref: string, options?: Options) => Promise<import(".").Role>;
|
|
11
|
+
holders: (ref: string, options?: Options) => Promise<import(".").RoleHolder[]>;
|
|
12
|
+
compare: (ref: string, other: string, options?: Options) => Promise<import(".").RoleComparison>;
|
|
13
|
+
create: (input: CreateRoleInput) => Promise<import(".").Role>;
|
|
14
|
+
update: (input: UpdateRoleInput) => Promise<import(".").Role>;
|
|
15
|
+
remove: (ref: string) => Promise<undefined>;
|
|
16
|
+
replace: (ref: string, other: string) => Promise<number>;
|
|
17
|
+
access: (subject: SubjectRef, options?: Options) => Promise<import(".").SubjectAccess>;
|
|
18
|
+
scopes: (subject: SubjectRef, options?: Options) => Promise<import(".").ScopeOptions>;
|
|
19
|
+
bindable: (level: string, scopeId: number | null, options?: Options) => Promise<import(".").Role[]>;
|
|
20
|
+
bind: (subject: SubjectRef, input: Omit<BindInput, "id">) => Promise<import(".").Binding>;
|
|
21
|
+
unbind: (subject: SubjectRef, bindingId: number) => Promise<undefined>;
|
|
22
|
+
};
|
|
23
|
+
export type AccessApi = ReturnType<typeof createAccessApi>;
|
|
24
|
+
/** The calls, over the platform's client; call it in `setup`. */
|
|
25
|
+
export declare const useAccessApi: () => AccessApi;
|
|
26
|
+
export {};
|