@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.
Files changed (314) hide show
  1. package/README.md +53 -9
  2. package/dist/AccessGate.vue_vue_type_script_setup_true_lang-DKX3PH2n.js +22 -0
  3. package/dist/AccountMenuItem.vue_vue_type_script_setup_true_lang-DIGqTLwd.js +76 -0
  4. package/dist/ActionRow.vue_vue_type_script_setup_true_lang-B7Lpfkf6.js +45 -0
  5. package/dist/Activity-DviO0VQ8.js +156 -0
  6. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-CKghARkW.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-CvAnzdc1.js} +48 -47
  7. package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-BZb4qKXo.js → AlertDialog.vue_vue_type_script_setup_true_lang-CJsMUIUg.js} +2 -2
  8. package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-B82bl36A.js → AsyncSection.vue_vue_type_script_setup_true_lang-CCtthMRd.js} +4 -4
  9. package/dist/Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js +51 -0
  10. 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
  11. package/dist/{BottomDock.vue_vue_type_script_setup_true_lang-DhlMnPC2.js → BottomDock.vue_vue_type_script_setup_true_lang-CjN7xYEr.js} +1 -1
  12. package/dist/Button.vue_vue_type_script_setup_true_lang-CYil8h9z.js +182 -0
  13. package/dist/Changes-DlT5mN9G.js +129 -0
  14. package/dist/CollectionPage.vue_vue_type_script_setup_true_lang-CXILftEc.js +1481 -0
  15. package/dist/CountryFlag.vue_vue_type_script_setup_true_lang-Kry_vPPZ.js +299 -0
  16. package/dist/DataTable.vue_vue_type_script_setup_true_lang-DSYgS9lC.js +52 -0
  17. package/dist/DateField.vue_vue_type_script_setup_true_lang-DMVjNsaM.js +1099 -0
  18. package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-Bx5O1RZJ.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-Cb3xJI1x.js} +1 -1
  19. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-BeGpHMUP.js → EmptyState.vue_vue_type_script_setup_true_lang-C2ZYIT9F.js} +1 -1
  20. package/dist/FormErrors.vue_vue_type_script_setup_true_lang-DVgNBQ8p.js +276 -0
  21. package/dist/FormGroup.vue_vue_type_script_setup_true_lang-0mfG8TkU.js +136 -0
  22. package/dist/FormView.vue_vue_type_script_setup_true_lang-Bz2m3AtF.js +38 -0
  23. package/dist/General-BD-Hcz0a.js +145 -0
  24. package/dist/{Icon.vue_vue_type_script_lang-DtC4_mkz.js → Icon.vue_vue_type_script_lang-VvcV2Bzo.js} +46 -33
  25. package/dist/{IconTile.vue_vue_type_script_setup_true_lang-Csfv6Sel.js → IconTile.vue_vue_type_script_setup_true_lang-D7QgnUyN.js} +1 -1
  26. package/dist/KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js +35 -0
  27. package/dist/{LeaveGuardRoot.vue_vue_type_script_setup_true_lang-DH6EB8br.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-C2udmeEA.js} +2 -2
  28. package/dist/{Menu.vue_vue_type_script_setup_true_lang-D44EHXQZ.js → Menu.vue_vue_type_script_setup_true_lang-BNAjx9tj.js} +61 -57
  29. package/dist/{Modal.vue_vue_type_script_setup_true_lang-DYQgaUtj.js → Modal.vue_vue_type_script_setup_true_lang-D7SwVPpL.js} +139 -129
  30. package/dist/NewRolePage-Dla4YnMs.js +42 -0
  31. package/dist/NoAccess.vue_vue_type_script_setup_true_lang-8m9cNptR.js +31 -0
  32. package/dist/NumberField.vue_vue_type_script_setup_true_lang-CYRg7Kfg.js +113 -0
  33. package/dist/OtpInput.vue_vue_type_script_setup_true_lang-gp4FfWAH.js +95 -0
  34. package/dist/PageBar.vue_vue_type_script_setup_true_lang-Cfr5xsJx.js +47 -0
  35. package/dist/{Panel.vue_vue_type_script_setup_true_lang-BQmv3cLb.js → Panel.vue_vue_type_script_setup_true_lang-BCRxRK4D.js} +1 -1
  36. package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-DDVQXJRB.js → PhotoViewer.vue_vue_type_script_setup_true_lang-B3Q4dhqJ.js} +2 -2
  37. package/dist/Popover.vue_vue_type_script_setup_true_lang-Dx-tDhNE.js +125 -0
  38. package/dist/ProfilePage-OJMQ8cr8.js +691 -0
  39. package/dist/{ProgressTrack.vue_vue_type_script_setup_true_lang-1DDaNs2W.js → ProgressTrack.vue_vue_type_script_setup_true_lang-B6Prw9hi.js} +2 -2
  40. package/dist/RecordHeader.vue_vue_type_script_setup_true_lang-DKsaKlAq.js +64 -0
  41. package/dist/ResourcePage.vue_vue_type_script_setup_true_lang-CJcKa9SW.js +173 -0
  42. package/dist/RoleEditor.vue_vue_type_script_setup_true_lang-DuEPOmjI.js +299 -0
  43. package/dist/RolePage-bZzv_E4l.js +315 -0
  44. package/dist/RolesPage-BniZv0nB.js +115 -0
  45. package/dist/SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js +23 -0
  46. package/dist/SectionList.vue_vue_type_script_setup_true_lang-BKP_bge8.js +148 -0
  47. package/dist/SectionNavigator.vue_vue_type_script_setup_true_lang-BgGEGxSI.js +314 -0
  48. package/dist/SegmentedField.vue_vue_type_script_setup_true_lang-BZ9UdgA1.js +58 -0
  49. package/dist/SelectField.vue_vue_type_script_setup_true_lang-BiGaEKBQ.js +422 -0
  50. package/dist/SessionList.vue_vue_type_script_setup_true_lang-DUQpr7gb.js +111 -0
  51. package/dist/Sessions-Co5-xdeb.js +96 -0
  52. package/dist/Sheet.vue_vue_type_script_setup_true_lang-bHYzx7-J.js +142 -0
  53. package/dist/SignIn-BWwFbxki.js +140 -0
  54. package/dist/SignInPage-FnLtoi2q.js +60 -0
  55. package/dist/SignInTable.vue_vue_type_script_setup_true_lang-Dnx3T_42.js +79 -0
  56. package/dist/SignIns-3UcI64_h.js +66 -0
  57. package/dist/SwipeActions.vue_vue_type_script_setup_true_lang-4I8m27ol.js +93 -0
  58. package/dist/Tabs.vue_vue_type_script_setup_true_lang-BeGaydRr.js +155 -0
  59. package/dist/TextField.vue_vue_type_script_setup_true_lang-C_FMf3Vc.js +269 -0
  60. package/dist/TextareaField.vue_vue_type_script_setup_true_lang-CU3KTKIJ.js +127 -0
  61. 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
  62. 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
  63. package/dist/UserRecord-Ci8HfwbX.js +267 -0
  64. package/dist/UsersList-vEJ-cgkT.js +155 -0
  65. package/dist/ViewTabs.vue_vue_type_script_setup_true_lang-ByqTU2JT.js +28 -0
  66. package/dist/access/AddRoleDialog.vue.d.ts +19 -0
  67. package/dist/access/BindingRow.vue.d.ts +19 -0
  68. package/dist/access/EffectiveAccess.vue.d.ts +12 -0
  69. package/dist/access/NewRolePage.vue.d.ts +2 -0
  70. package/dist/access/PermissionTree.vue.d.ts +13 -0
  71. package/dist/access/PersonAccess.vue.d.ts +21 -0
  72. package/dist/access/ReplaceRoleDialog.vue.d.ts +17 -0
  73. package/dist/access/RoleCompareDialog.vue.d.ts +14 -0
  74. package/dist/access/RoleEditor.vue.d.ts +28 -0
  75. package/dist/access/RolePage.vue.d.ts +2 -0
  76. package/dist/access/RolesPage.vue.d.ts +2 -0
  77. package/dist/access/api.d.ts +26 -0
  78. package/dist/access/catalogue.d.ts +64 -0
  79. package/dist/access/context.d.ts +20 -0
  80. package/dist/access/effective.d.ts +42 -0
  81. package/dist/access/feature.d.ts +27 -0
  82. package/dist/access/index.d.ts +13 -0
  83. package/dist/access/index.js +15 -0
  84. package/dist/access/labels.d.ts +35 -0
  85. package/dist/access/refusals.d.ts +6 -0
  86. package/dist/access/routes.d.ts +45 -0
  87. package/dist/access/scopes.d.ts +20 -0
  88. package/dist/app/application.d.ts +5 -0
  89. package/dist/app/contributions.d.ts +1 -1
  90. package/dist/app/environment.d.ts +2 -0
  91. package/dist/app/feature.d.ts +8 -0
  92. package/dist/app/index.js +260 -294
  93. package/dist/bottomDock-BZEiOPYZ.js +12 -0
  94. package/dist/button/Button.vue.d.ts +3 -3
  95. package/dist/button/index.d.ts +1 -1
  96. package/dist/button/index.js +5 -3
  97. package/dist/button/shortcut.d.ts +28 -2
  98. package/dist/chrome-BS3xJcad.js +93 -0
  99. package/dist/client/client.d.ts +13 -0
  100. package/dist/client/index.d.ts +3 -1
  101. package/dist/client/index.js +19 -138
  102. package/dist/client/route.d.ts +59 -0
  103. package/dist/client-Bw0aM5Gu.js +147 -0
  104. package/dist/closeOverlays-CjVsIrpL.js +8 -0
  105. package/dist/collection/CollectionPage.vue.d.ts +1 -0
  106. package/dist/collection/CollectionRows.vue.d.ts +59 -0
  107. package/dist/collection/CollectionTable.vue.d.ts +1 -1
  108. package/dist/collection/DataTable.vue.d.ts +47 -0
  109. package/dist/collection/RowActions.vue.d.ts +19 -0
  110. package/dist/collection/columns.d.ts +2 -0
  111. package/dist/collection/http.d.ts +4 -2
  112. package/dist/collection/index.d.ts +4 -2
  113. package/dist/collection/index.js +87 -2299
  114. package/dist/collection/rowLayout.d.ts +10 -0
  115. package/dist/collection/slots.d.ts +6 -3
  116. package/dist/content/index.js +37 -66
  117. package/dist/contributions-CDDg3fKp.js +26 -0
  118. package/dist/controls/DateButton.vue.d.ts +1 -1
  119. package/dist/controls/PopupButton.vue.d.ts +1 -1
  120. package/dist/controls/index.js +11 -10
  121. package/dist/defineRoutes-BGAdiIrt.js +19 -0
  122. package/dist/describeError-Ctga6GcS.js +41 -0
  123. package/dist/dialogStack-DZZg55w0.js +31 -0
  124. package/dist/environment-Dva-SG8D.js +6 -0
  125. package/dist/{error-Bb_dr_Ay.js → error-CD7x0Jrz.js} +2 -2
  126. package/dist/feature-DdUAfyi4.js +25 -0
  127. package/dist/fieldMessages-C3Rpbktw.js +25 -0
  128. package/dist/form/CheckboxField.vue.d.ts +1 -1
  129. package/dist/form/CommandDialog.vue.d.ts +13 -2
  130. package/dist/form/DateField.vue.d.ts +1 -1
  131. package/dist/form/DateTimeField.vue.d.ts +1 -1
  132. package/dist/form/EditorPage.vue.d.ts +1 -1
  133. package/dist/form/Field.vue.d.ts +1 -1
  134. package/dist/form/FileField.vue.d.ts +1 -1
  135. package/dist/form/FormGroup.vue.d.ts +1 -1
  136. package/dist/form/FormGroupButton.vue.d.ts +1 -1
  137. package/dist/form/FormRow.vue.d.ts +1 -1
  138. package/dist/form/I18nField.vue.d.ts +3 -3
  139. package/dist/form/MoneyField.vue.d.ts +1 -1
  140. package/dist/form/MonthYearField.vue.d.ts +1 -1
  141. package/dist/form/MultiSelectField.vue.d.ts +4 -1
  142. package/dist/form/NumberCell.vue.d.ts +1 -1
  143. package/dist/form/NumberField.vue.d.ts +8 -2
  144. package/dist/form/OptionList.vue.d.ts +6 -2
  145. package/dist/form/OtpInput.vue.d.ts +2 -2
  146. package/dist/form/PhotoField.vue.d.ts +1 -1
  147. package/dist/form/SelectField.vue.d.ts +4 -1
  148. package/dist/form/SwitchField.vue.d.ts +1 -1
  149. package/dist/form/TextField.vue.d.ts +3 -3
  150. package/dist/form/TextareaField.vue.d.ts +3 -3
  151. package/dist/form/TimeField.vue.d.ts +1 -1
  152. package/dist/form/date/DatePickerSheet.vue.d.ts +1 -1
  153. package/dist/form/date/MonthYearPanel.vue.d.ts +1 -1
  154. package/dist/form/index.d.ts +2 -0
  155. package/dist/form/index.js +1273 -3509
  156. package/dist/form/suggestions.d.ts +11 -0
  157. package/dist/form/useOptions.d.ts +60 -0
  158. package/dist/guards-Cd1V28oG.js +51 -0
  159. package/dist/http-DGGSKWvU.js +193 -0
  160. package/dist/i18n/describeError.d.ts +31 -0
  161. package/dist/i18n/index.d.ts +307 -0
  162. package/dist/i18n/index.js +54 -52
  163. package/dist/icon/core.d.ts +13 -0
  164. package/dist/icon/index.js +1 -1
  165. package/dist/identity/ImpersonationBanner.vue.d.ts +2 -0
  166. package/dist/identity/LocaleSync.vue.d.ts +2 -0
  167. package/dist/identity/SessionExpiry.vue.d.ts +2 -0
  168. package/dist/identity/SignInAsButton.vue.d.ts +15 -0
  169. package/dist/identity/SignInPage.vue.d.ts +2 -0
  170. package/dist/identity/context.d.ts +7 -0
  171. package/dist/identity/feature.d.ts +16 -0
  172. package/dist/identity/fieldMessages.d.ts +15 -0
  173. package/dist/identity/index.d.ts +16 -0
  174. package/dist/identity/index.js +18 -0
  175. package/dist/identity/profile/DetailsPanel.vue.d.ts +11 -0
  176. package/dist/identity/profile/EmailChangeDialog.vue.d.ts +14 -0
  177. package/dist/identity/profile/EmailPanel.vue.d.ts +11 -0
  178. package/dist/identity/profile/PanelActions.vue.d.ts +17 -0
  179. package/dist/identity/profile/PasswordPanel.vue.d.ts +2 -0
  180. package/dist/identity/profile/ProfileMenuItem.vue.d.ts +2 -0
  181. package/dist/identity/profile/ProfilePage.vue.d.ts +2 -0
  182. package/dist/identity/profile/SessionsPanel.vue.d.ts +2 -0
  183. package/dist/identity/profile/SignInsPanel.vue.d.ts +2 -0
  184. package/dist/identity/profile/VerifyCode.vue.d.ts +49 -0
  185. package/dist/identity/profile/routes.d.ts +13 -0
  186. package/dist/identity/session.d.ts +30 -0
  187. package/dist/identity/shared/ActionRow.vue.d.ts +20 -0
  188. package/dist/identity/shared/ChangeFeed.vue.d.ts +11 -0
  189. package/dist/identity/shared/PageBar.vue.d.ts +12 -0
  190. package/dist/identity/shared/SectionIntro.vue.d.ts +16 -0
  191. package/dist/identity/shared/SessionList.vue.d.ts +19 -0
  192. package/dist/{phone/CountryFlag.vue.d.ts → identity/shared/SignInTable.vue.d.ts} +5 -4
  193. package/dist/identity/shared/ViewTabs.vue.d.ts +23 -0
  194. package/dist/identity/shared/signInEvents.d.ts +9 -0
  195. package/dist/identity/signIn.d.ts +27 -0
  196. package/dist/identity/useSignInForm.d.ts +20 -0
  197. package/dist/identity/user.d.ts +6 -0
  198. package/dist/identity/users/DeactivateDialog.vue.d.ts +18 -0
  199. package/dist/identity/users/NewUserDialog.vue.d.ts +9 -0
  200. package/dist/identity/users/SetPasswordDialog.vue.d.ts +16 -0
  201. package/dist/identity/users/UserRecord.vue.d.ts +2 -0
  202. package/dist/identity/users/UsersList.vue.d.ts +2 -0
  203. package/dist/identity/users/access.d.ts +4 -0
  204. package/dist/identity/users/context.d.ts +9 -0
  205. package/dist/identity/users/feature.d.ts +34 -0
  206. package/dist/identity/users/languages.d.ts +4 -0
  207. package/dist/identity/users/list.d.ts +8 -0
  208. package/dist/identity/users/person.d.ts +26 -0
  209. package/dist/identity/users/personSections.d.ts +22 -0
  210. package/dist/identity/users/routes.d.ts +22 -0
  211. package/dist/identity/users/sections/Activity.vue.d.ts +2 -0
  212. package/dist/identity/users/sections/Changes.vue.d.ts +2 -0
  213. package/dist/identity/users/sections/General.vue.d.ts +2 -0
  214. package/dist/identity/users/sections/Sessions.vue.d.ts +2 -0
  215. package/dist/identity/users/sections/SignIn.vue.d.ts +2 -0
  216. package/dist/identity/users/sections/SignIns.vue.d.ts +2 -0
  217. package/dist/identity/users/status.d.ts +4 -0
  218. package/dist/index-B2dbYZR9.js +706 -0
  219. package/dist/index-BAcl44SC.js +459 -0
  220. package/dist/index.d.ts +1 -1
  221. package/dist/index.js +1 -1
  222. package/dist/internal/CountryFlag.vue.d.ts +10 -0
  223. package/dist/internal/languageName.d.ts +2 -0
  224. package/dist/keepAlive-WYQGRhuz.js +48 -0
  225. package/dist/languageName-CItV_SOv.js +11 -0
  226. package/dist/languages-BShG9LpE.js +10 -0
  227. package/dist/leaveGuard-Cc8yeLxM.js +72 -0
  228. package/dist/modal/Modal.vue.d.ts +4 -0
  229. package/dist/modal/ShortcutHelp.vue.d.ts +2 -0
  230. package/dist/modal/index.d.ts +2 -0
  231. package/dist/modal/index.js +64 -6
  232. package/dist/modal/placement.d.ts +22 -0
  233. package/dist/modules/access/entities.d.ts +112 -0
  234. package/dist/modules/access/routes.d.ts +67 -0
  235. package/dist/modules/access/schemas.d.ts +73 -0
  236. package/dist/modules/identity/entities.d.ts +150 -0
  237. package/dist/modules/identity/routes.d.ts +118 -0
  238. package/dist/modules/identity/schemas.d.ts +145 -0
  239. package/dist/{navigation-B33ikiCS.js → navigation-BPWa63ge.js} +21 -20
  240. package/dist/neighbors-D0WRBxXI.js +86 -0
  241. package/dist/{options-CjSz2dQK.js → options-BXkMR63B.js} +48 -49
  242. package/dist/overlay/AlertDialog.vue.d.ts +3 -3
  243. package/dist/overlay/Popover.vue.d.ts +4 -1
  244. package/dist/overlay/closeOverlays.d.ts +7 -0
  245. package/dist/overlay/dialogStack.d.ts +9 -0
  246. package/dist/overlay/index.d.ts +1 -1
  247. package/dist/overlay/index.js +20 -18
  248. package/dist/page/AdaptivePageShell.vue.d.ts +2 -2
  249. package/dist/page/ResourceHeader.vue.d.ts +2 -2
  250. package/dist/page/index.js +99 -457
  251. package/dist/phone/PhoneField.vue.d.ts +2 -2
  252. package/dist/phone/index.js +247 -540
  253. package/dist/platform/AccessGate.vue.d.ts +50 -0
  254. package/dist/platform/index.d.ts +4 -2
  255. package/dist/platform/index.js +38 -35
  256. package/dist/platform/platform.d.ts +2 -2
  257. package/dist/platform/session.d.ts +22 -1
  258. package/dist/platform-hunMqFdB.js +255 -0
  259. package/dist/resource/index.js +8 -248
  260. package/dist/routeResource-DstM0hvf.js +82 -0
  261. package/dist/router/guards.d.ts +7 -1
  262. package/dist/router/index.js +23 -37
  263. package/dist/router/navigation.d.ts +1 -1
  264. package/dist/rowLayout-BI7a3Kom.js +603 -0
  265. package/dist/sectionIndex-BS0ic5W7.js +86 -0
  266. package/dist/{sections-LtxV5Mtk.js → sections-BEqW1dOc.js} +1 -1
  267. package/dist/shell/AccountMenuItem.vue.d.ts +4 -1
  268. package/dist/shell/BackofficeShell.vue.d.ts +2 -2
  269. package/dist/shell/ShellBrand.vue.d.ts +1 -1
  270. package/dist/shell/backofficeShell.d.ts +1 -1
  271. package/dist/shell/identity.d.ts +1 -1
  272. package/dist/shell/index.js +476 -532
  273. package/dist/state/Badge.vue.d.ts +17 -10
  274. package/dist/state/ProgressTrack.vue.d.ts +1 -1
  275. package/dist/state/hue.d.ts +8 -0
  276. package/dist/state/index.d.ts +2 -0
  277. package/dist/state/index.js +34 -31
  278. package/dist/state/useLoad.d.ts +41 -0
  279. package/dist/status-C9aXR-Jb.js +33 -0
  280. package/dist/styles.css +1 -1
  281. package/dist/suggestions-BJAqOj4c.js +138 -0
  282. package/dist/testing/app.d.ts +61 -0
  283. package/dist/testing/async.d.ts +12 -0
  284. package/dist/testing/collection.d.ts +18 -0
  285. package/dist/testing/format.d.ts +9 -0
  286. package/dist/testing/i18n.d.ts +16 -0
  287. package/dist/testing/index.d.ts +14 -0
  288. package/dist/testing/index.js +178 -0
  289. package/dist/testing/media.d.ts +23 -0
  290. package/dist/testing/platform.d.ts +40 -0
  291. package/dist/testing/transport.d.ts +40 -0
  292. package/dist/toast-D9Z5To38.js +13 -0
  293. package/dist/useCommand-BgRwnYlV.js +135 -0
  294. package/dist/{useDialog-wmyNx2j_.js → useDialog-CXR3hN0G.js} +1 -1
  295. package/dist/useLoad-CYRVx6HW.js +39 -0
  296. package/dist/useResourceForm-Bgc9jMcu.js +52 -0
  297. package/dist/useSaveChrome-chi6D3HY.js +25 -0
  298. package/dist/useSheetDrag-OsD6Eb6I.js +72 -0
  299. package/package.json +26 -5
  300. package/src/styles/theme.css +60 -0
  301. package/dist/Badge.vue_vue_type_script_setup_true_lang-DKc6ugmr.js +0 -31
  302. package/dist/Button.vue_vue_type_script_setup_true_lang-3f0emVNU.js +0 -141
  303. package/dist/NoAccess.vue_vue_type_script_setup_true_lang-OKW8pKYU.js +0 -78
  304. package/dist/SectionList.vue_vue_type_script_setup_true_lang-DGcKX_OJ.js +0 -230
  305. package/dist/SelectField.vue_vue_type_script_setup_true_lang-SyFWE33A.js +0 -422
  306. package/dist/Sheet.vue_vue_type_script_setup_true_lang-BLBD5ps8.js +0 -210
  307. package/dist/SwipeActions.vue_vue_type_script_setup_true_lang-CGTuEnTv.js +0 -243
  308. package/dist/chrome-D9pwD6iS.js +0 -101
  309. package/dist/dialogStack-DiTG1rZc.js +0 -26
  310. package/dist/environment-D3nozt9a.js +0 -75
  311. package/dist/feature-DyDtyMLU.js +0 -47
  312. package/dist/platform-jqlKVJ2e.js +0 -244
  313. package/dist/toast-BTeX0r66.js +0 -129
  314. /package/dist/{phone → internal}/flagLoaders.d.ts +0 -0
@@ -0,0 +1,459 @@
1
+ import { route as i } from "./client/index.js";
2
+ import { d as H, p as Y } from "./feature-DdUAfyi4.js";
3
+ import { k as ie } from "./keepAlive-WYQGRhuz.js";
4
+ import { d as z } from "./defineRoutes-BGAdiIrt.js";
5
+ import { d as I } from "./context-Ch1r4fdN.js";
6
+ import { defineComponent as E, computed as b, watch as $, openBlock as x, createElementBlock as G, ref as D, useTemplateRef as oe, watchEffect as re, onBeforeUnmount as ae, createVNode as _, unref as o, createElementVNode as m, toDisplayString as f, createCommentVNode as F, useId as ce, createBlock as N, Teleport as ue, normalizeClass as j, createTextVNode as O, withCtx as T, mergeProps as le, h as me } from "vue";
7
+ import { u as pe } from "./environment-Dva-SG8D.js";
8
+ import { u as P } from "./describeError-Ctga6GcS.js";
9
+ import { t as k } from "./toast-D9Z5To38.js";
10
+ import { u as A, h as q, f as M } from "./platform-hunMqFdB.js";
11
+ import { a as R } from "./error-CD7x0Jrz.js";
12
+ import { useI18n as C } from "vue-i18n";
13
+ import { useRouter as J, useRoute as de } from "vue-router";
14
+ import { _ as Q } from "./Icon.vue_vue_type_script_lang-VvcV2Bzo.js";
15
+ import { _ as L } from "./Button.vue_vue_type_script_setup_true_lang-CYil8h9z.js";
16
+ import { u as fe } from "./leaveGuard-Cc8yeLxM.js";
17
+ import { _ as he } from "./FormView.vue_vue_type_script_setup_true_lang-Bz2m3AtF.js";
18
+ import { _ as ye } from "./TextField.vue_vue_type_script_setup_true_lang-C_FMf3Vc.js";
19
+ import { u as ge } from "./mediaQuery-CygcXmFW.js";
20
+ import { u as ve } from "./useDialog-CXR3hN0G.js";
21
+ import { c as _e } from "./closeOverlays-CjVsIrpL.js";
22
+ import { u as be } from "./FormErrors.vue_vue_type_script_setup_true_lang-DVgNBQ8p.js";
23
+ import { u as we } from "./format-B8mJm946.js";
24
+ import { _ as xe } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-DIGqTLwd.js";
25
+ import { b as Ee } from "./routeResource-DstM0hvf.js";
26
+ import { _ as Se } from "./AccessGate.vue_vue_type_script_setup_true_lang-DKX3PH2n.js";
27
+ const w = {
28
+ login: i("POST", "/v1/auth/login", { public: !0 }),
29
+ refresh: i("POST", "/v1/auth/refresh", { public: !0 }),
30
+ logout: i("POST", "/v1/auth/logout"),
31
+ me: i("GET", "/v1/auth/me"),
32
+ changeLocale: i("POST", "/v1/auth/change-locale"),
33
+ loginAs: i("POST", "/v1/auth/login-as"),
34
+ loginAsReturn: i("POST", "/v1/auth/login-as/return"),
35
+ usersList: i("GET", "/v1/iam/users", { permission: "iam.user:view" }),
36
+ usersShow: i("GET", "/v1/iam/users/:id", { permission: "iam.user:view" }),
37
+ usersCreate: i("POST", "/v1/iam/users", { permission: "iam.user:manage" }),
38
+ usersUpdate: i("PUT", "/v1/iam/users/:id", { permission: "iam.user:manage" }),
39
+ usersSetPassword: i("PUT", "/v1/iam/users/:id/password", { permission: "iam.user:manage" }),
40
+ usersDeactivate: i("POST", "/v1/iam/users/:id/deactivate", { permission: "iam.user:manage" }),
41
+ usersActivate: i("POST", "/v1/iam/users/:id/activate", { permission: "iam.user:manage" }),
42
+ usersUnlock: i("POST", "/v1/iam/users/:id/unlock", { permission: "iam.user:manage" }),
43
+ usersSignins: i("GET", "/v1/iam/users/:id/signins", { permission: "iam.user:view" }),
44
+ usersChanges: i("GET", "/v1/iam/users/:id/changes", { permission: "iam.user:view" }),
45
+ usersActivity: i("GET", "/v1/iam/users/:id/activity", { permission: "iam.user.activity:view" }),
46
+ usersSessions: i("GET", "/v1/iam/users/:id/sessions", { permission: "iam.user:view" }),
47
+ usersRevokeSession: i("DELETE", "/v1/iam/users/:id/sessions/:session_id", { permission: "iam.user:manage" }),
48
+ usersRevokeSessions: i("DELETE", "/v1/iam/users/:id/sessions", { permission: "iam.user:manage" }),
49
+ profileShow: i("GET", "/v1/iam/profile"),
50
+ profileUpdate: i("PUT", "/v1/iam/profile"),
51
+ profileChangePassword: i("PUT", "/v1/iam/profile/password"),
52
+ profileRequestEmail: i("POST", "/v1/iam/profile/email"),
53
+ profileResendEmail: i("POST", "/v1/iam/profile/email/resend"),
54
+ profileConfirmEmail: i("POST", "/v1/iam/profile/email/confirm"),
55
+ profileCancelEmail: i("DELETE", "/v1/iam/profile/email"),
56
+ profileSignins: i("GET", "/v1/iam/profile/signins"),
57
+ profileSessions: i("GET", "/v1/iam/profile/sessions"),
58
+ profileRevokeSession: i("DELETE", "/v1/iam/profile/sessions/:session_id")
59
+ }, [Te, X] = I("vue-core.identity"), K = (e) => R(e) && e.kind === "unauthorized";
60
+ function ke(e) {
61
+ if (!R(e) || e.code !== "identity.signin.locked") return null;
62
+ const s = e.params?.locked_until, t = typeof s == "string" ? new Date(s) : null;
63
+ return t && !Number.isNaN(t.getTime()) ? t : null;
64
+ }
65
+ async function Pe({ http: e, session: s }, t) {
66
+ await e.request(w.login, t, { handleUnauthorized: !1 }), await V({ session: s });
67
+ }
68
+ async function V({ session: e }) {
69
+ const s = await e.refresh();
70
+ if (s.status === "failed") throw s.error;
71
+ if (s.status !== "authenticated") throw new Error("The server accepted the request but reports nobody signed in.");
72
+ }
73
+ async function Ae(e, s) {
74
+ await e.http.request(w.loginAs, { user_id: s }), await V(e);
75
+ }
76
+ async function Ce(e) {
77
+ await e.http.request(w.loginAsReturn), await V(e);
78
+ }
79
+ const Oe = { hidden: "" }, Ie = /* @__PURE__ */ E({
80
+ __name: "LocaleSync",
81
+ setup(e) {
82
+ const { http: s, session: t } = A(), n = pe(), d = P(), g = b(() => {
83
+ const r = t.state.value, a = r.status === "authenticated" ? r.user.locale : void 0;
84
+ return typeof a == "string" ? a : null;
85
+ });
86
+ let u = null;
87
+ return $(g, async (r) => {
88
+ u = r, r !== null && r !== n.locale.value && n.locales.includes(r) && await n.setLocale(r);
89
+ }, { immediate: !0 }), $(n.locale, async (r) => {
90
+ if (!(t.state.value.status !== "authenticated" || r === u))
91
+ try {
92
+ await s.request(w.changeLocale, { locale: r }), u = r;
93
+ } catch (a) {
94
+ K(a) || k.error(d(a));
95
+ }
96
+ }), (r, a) => (x(), G("span", Oe));
97
+ }
98
+ }), Re = { class: "min-w-0 flex-1" }, Ke = { class: "hidden md:inline" }, Ue = { class: "md:hidden" }, $e = ["disabled"], qe = /* @__PURE__ */ E({
99
+ __name: "ImpersonationBanner",
100
+ setup(e) {
101
+ const { t: s } = C(), t = A(), n = J(), { home: d } = X(), g = P(), u = b(() => q(t.session.state.value)?.impersonator ?? null), r = b(() => {
102
+ const l = q(t.session.state.value)?.user;
103
+ return typeof l?.name == "string" ? l.name : typeof l?.login == "string" ? l.login : String(l?.id ?? "");
104
+ }), a = D(!1), p = oe("strip");
105
+ let c = null;
106
+ re(() => {
107
+ c?.disconnect(), c = null;
108
+ const l = p.value;
109
+ if (!l) return void document.documentElement.style.removeProperty("--shell-banner-h");
110
+ if (typeof ResizeObserver > "u") return;
111
+ const v = () => document.documentElement.style.setProperty("--shell-banner-h", `${l.offsetHeight}px`);
112
+ c = new ResizeObserver(v), c.observe(l), v();
113
+ }, { flush: "post" }), ae(() => {
114
+ c?.disconnect(), document.documentElement.style.removeProperty("--shell-banner-h");
115
+ });
116
+ async function h() {
117
+ a.value = !0;
118
+ try {
119
+ await Ce(t), await n.push(d);
120
+ } catch (l) {
121
+ K(l) || k.error(g(l)), t.session.refresh();
122
+ } finally {
123
+ a.value = !1;
124
+ }
125
+ }
126
+ return (l, v) => u.value ? (x(), G("div", {
127
+ key: 0,
128
+ ref_key: "strip",
129
+ ref: p,
130
+ role: "status",
131
+ "data-impersonation-banner": "",
132
+ class: "sticky top-0 z-40 flex flex-wrap items-center gap-x-3 gap-y-1.5 bg-status-warning-surface px-4 py-2 text-subheadline text-status-warning-content shadow-[inset_0_-1px_0_rgb(154_74_7/0.25)]"
133
+ }, [
134
+ _(o(Q), {
135
+ name: "informationLine",
136
+ size: 18,
137
+ class: "shrink-0 compact:hidden"
138
+ }),
139
+ m("span", Re, [
140
+ m("span", Ke, f(o(s)("core.identity.impersonation.banner", { name: r.value })), 1),
141
+ m("span", Ue, f(o(s)("core.identity.impersonation.banner_short", { name: r.value })), 1)
142
+ ]),
143
+ m("button", {
144
+ type: "button",
145
+ disabled: a.value,
146
+ class: "hit-target cursor-pointer rounded-control bg-status-warning-solid px-3 py-1 text-footnote font-semibold whitespace-nowrap text-white transition duration-motion-fast hover:brightness-110 disabled:opacity-45",
147
+ onClick: h
148
+ }, f(o(s)("core.identity.impersonation.return")), 9, $e)
149
+ ], 512)) : F("", !0);
150
+ }
151
+ });
152
+ function Le(e = {}) {
153
+ const { t: s } = C(), t = A(), n = we(), d = P(), u = be({
154
+ defaults: () => ({ login: e.login ?? "", password: "" }),
155
+ validator: {
156
+ safeParse(a) {
157
+ const p = a, c = ["login", "password"].filter((h) => p[h] === "").map((h) => ({ path: [h], message: s("core.identity.signin.required") }));
158
+ return c.length === 0 ? { success: !0, data: p } : { success: !1, error: { issues: c } };
159
+ }
160
+ },
161
+ failureMessage(a, p) {
162
+ const c = ke(p);
163
+ return c ? s("core.errors.identity.signin.locked", { locked_until: n.time(c) }) : R(p) ? d(p) : void 0;
164
+ }
165
+ }), r = b(() => u.errors.first("password") ?? (u.failure.value?.error ? u.failure.value.message : void 0));
166
+ return { form: u, passwordError: r, submit: async () => (await u.submit((a) => Pe(t, a))).status === "saved" };
167
+ }
168
+ const ze = ["aria-labelledby"], Ge = ["id"], De = { class: "mt-1 text-subheadline text-content-muted" }, Fe = { class: "flex items-center gap-2 rounded-control bg-status-success-surface px-2.5 py-2 text-footnote text-status-success-content" }, Ne = { class: "flex flex-col gap-1.5" }, Ve = { class: "text-footnote text-content-muted" }, Be = {
169
+ class: "rounded-control bg-fill px-2.5 py-2 text-body text-content-muted",
170
+ "data-expiry-login": ""
171
+ }, je = /* @__PURE__ */ E({
172
+ __name: "SessionExpiry",
173
+ setup(e) {
174
+ const { t: s } = C(), { session: t } = A(), n = de(), d = fe(), g = P(), u = ge(), r = ce(), a = b(() => {
175
+ const y = t.state.value, S = y.status === "anonymous" && y.reason === "expired" ? y.previous?.user : void 0;
176
+ return typeof S?.login == "string" ? S.login : null;
177
+ }), p = b(() => a.value !== null && n.meta.public !== !0), c = D(null), h = ve(c, { onEscape: () => {
178
+ } }), { isOpen: l } = h, { form: v, passwordError: se, submit: te } = Le({ login: a.value ?? "" });
179
+ $(p, (y) => {
180
+ y ? (v.hydrate({ login: a.value ?? "", password: "" }), _e(), k.dismiss(), h.present()) : h.dismissWithoutAsking();
181
+ }, { immediate: !0, flush: "post" });
182
+ async function ne() {
183
+ if (!(d.hasUnsavedChanges() && !await d.confirm()))
184
+ try {
185
+ await t.signOut();
186
+ } catch (y) {
187
+ K(y) || k.error(g(y));
188
+ }
189
+ }
190
+ return (y, S) => (x(), N(ue, { to: "body" }, [
191
+ o(l) ? (x(), G("div", {
192
+ key: 0,
193
+ class: "relative z-10000",
194
+ role: "alertdialog",
195
+ "aria-modal": "true",
196
+ "aria-labelledby": o(r),
197
+ "data-session-expiry": ""
198
+ }, [
199
+ S[0] || (S[0] = m("div", {
200
+ class: "fixed inset-0 bg-scrim",
201
+ "aria-hidden": "true"
202
+ }, null, -1)),
203
+ m("div", {
204
+ class: j(["fixed inset-0 flex p-4", o(u) ? "items-end p-0" : "items-center justify-center"])
205
+ }, [
206
+ m("div", {
207
+ ref_key: "panel",
208
+ ref: c,
209
+ tabindex: "-1",
210
+ class: j(["flex w-full flex-col gap-4 bg-surface-overlay p-6 shadow-float outline-none", o(u) ? "rounded-t-2xl pb-[max(2rem,var(--app-safe-bottom))]" : "max-w-sm rounded-menu"])
211
+ }, [
212
+ m("div", null, [
213
+ m("h2", {
214
+ id: o(r),
215
+ class: "text-headline font-semibold text-content-strong"
216
+ }, f(o(s)("core.identity.expired.title")), 9, Ge),
217
+ m("p", De, f(o(s)("core.identity.expired.body")), 1)
218
+ ]),
219
+ m("p", Fe, [
220
+ _(o(Q), {
221
+ name: "checkboxCircleFill",
222
+ size: 16,
223
+ class: "shrink-0"
224
+ }),
225
+ O(" " + f(o(s)("core.identity.expired.kept")), 1)
226
+ ]),
227
+ _(o(he), { onSubmit: o(te) }, {
228
+ default: T(() => [
229
+ m("div", Ne, [
230
+ m("span", Ve, f(o(s)("core.identity.username")), 1),
231
+ m("span", Be, f(a.value), 1)
232
+ ]),
233
+ _(o(ye), le(o(v).bind("password"), {
234
+ label: o(s)("core.identity.signin.password"),
235
+ type: "password",
236
+ autocomplete: "current-password",
237
+ required: "",
238
+ error: o(se)
239
+ }), null, 16, ["label", "error"]),
240
+ _(o(L), {
241
+ type: "submit",
242
+ prominence: "primary",
243
+ class: "w-full",
244
+ processing: o(v).submitting.value
245
+ }, {
246
+ default: T(() => [
247
+ O(f(o(s)("core.identity.signin.submit")), 1)
248
+ ]),
249
+ _: 1
250
+ }, 8, ["processing"])
251
+ ]),
252
+ _: 1
253
+ }, 8, ["onSubmit"]),
254
+ _(o(L), {
255
+ prominence: "plain",
256
+ class: "self-center",
257
+ onClick: ne
258
+ }, {
259
+ default: T(() => [
260
+ O(f(o(s)("core.identity.expired.sign_out")), 1)
261
+ ]),
262
+ _: 1
263
+ })
264
+ ], 2)
265
+ ], 2)
266
+ ], 8, ze)) : F("", !0)
267
+ ]));
268
+ }
269
+ }), Me = (e) => typeof e == "object" && e !== null && !Array.isArray(e), We = (e) => {
270
+ if (!Me(e)) throw new TypeError("expected an object");
271
+ if (typeof e.id != "number") throw new TypeError("id: expected a number");
272
+ for (const s of ["login", "name", "email", "locale"])
273
+ if (typeof e[s] != "string") throw new TypeError(`${s}: expected a string`);
274
+ return { id: e.id, login: e.login, name: e.name, email: e.email, locale: e.locale };
275
+ }, U = (e) => R(e) && e.kind === "unauthorized", B = (e, s) => e.request(w.refresh, { refresh_token: "" }, { signal: s, handleUnauthorized: !1 });
276
+ function He(e, s) {
277
+ return {
278
+ async load(t) {
279
+ try {
280
+ const { data: n } = await e.request(w.me, void 0, { signal: t, handleUnauthorized: !1 });
281
+ return M(n, s);
282
+ } catch (n) {
283
+ if (!U(n)) throw n;
284
+ }
285
+ try {
286
+ const { data: n } = await B(e, t);
287
+ return M(n, s);
288
+ } catch (n) {
289
+ if (U(n)) return null;
290
+ throw n;
291
+ }
292
+ },
293
+ async signOut() {
294
+ try {
295
+ await e.request(w.logout, void 0, { handleUnauthorized: !1 });
296
+ } catch (t) {
297
+ if (!U(t)) throw t;
298
+ }
299
+ }
300
+ };
301
+ }
302
+ function Cs(e) {
303
+ const s = e?.parseUser ?? We;
304
+ return {
305
+ session: (n) => He(n, s),
306
+ async renewSession(n, d) {
307
+ try {
308
+ return await B(d), (await n.refresh()).status === "authenticated";
309
+ } catch {
310
+ return !1;
311
+ }
312
+ }
313
+ };
314
+ }
315
+ const Ye = async (e) => {
316
+ await B(e.http);
317
+ }, Je = z({
318
+ login: { name: "login", path: "/login", component: () => import("./SignInPage-FnLtoi2q.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
319
+ });
320
+ function Os(e = {}) {
321
+ return H({
322
+ id: "identity",
323
+ routes: Je.records,
324
+ context: Y(Te, { home: e.home ?? "/" }),
325
+ holdsExpiredSession: !0,
326
+ contributions: [
327
+ // Not optional: a shell without a `host` could not ask for the password, and the person would be stuck on a dead page.
328
+ { id: "identity.expiry", slot: "host", component: je, scope: "always" },
329
+ // Not optional either: acting as somebody else must always be visible.
330
+ { id: "identity.impersonation", slot: "banner", component: qe, scope: "authenticated" },
331
+ { id: "identity.locale", slot: "host", component: Ie, scope: "authenticated", optional: !0 }
332
+ ],
333
+ effects: [ie({ renew: Ye })]
334
+ });
335
+ }
336
+ const Z = z({
337
+ index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-OJMQ8cr8.js"), meta: { titleKey: "core.profile.title" } }
338
+ }), Qe = /* @__PURE__ */ E({
339
+ __name: "ProfileMenuItem",
340
+ setup(e) {
341
+ const { t: s } = C();
342
+ return (t, n) => (x(), N(xe, {
343
+ label: o(s)("core.profile.menu"),
344
+ icon: "user3Line",
345
+ to: o(Z).index,
346
+ "data-profile-menu-item": ""
347
+ }, null, 8, ["label", "to"]));
348
+ }
349
+ }), [Xe, Is] = I("vue-core.users"), Ze = Symbol("vue-core.users.person"), [Rs, Ks] = I("vue-core.users.personActions"), [Us, $s] = I("vue-core.users.personSessions");
350
+ function es(e) {
351
+ const s = E({
352
+ name: `PersonSection(${e.path})`,
353
+ setup() {
354
+ const t = Ee(Ze);
355
+ return () => t.data.value ? me(e.component, e.props?.(t.data.value) ?? {}) : null;
356
+ }
357
+ });
358
+ return { name: `users.record.${e.path}`, path: e.path, component: s, meta: { ...e.meta } };
359
+ }
360
+ const W = "iam.user:view", qs = "iam.user:manage", ss = "iam.user.activity:view", ee = z({
361
+ index: { name: "users.index", path: "/users", component: () => import("./UsersList-vEJ-cgkT.js"), meta: { access: W, titleKey: "core.users.title" } },
362
+ record: {
363
+ name: "users.record",
364
+ path: "/users/:id",
365
+ component: () => import("./UserRecord-Ci8HfwbX.js"),
366
+ meta: { access: W, titleKey: "core.users.title", remountOnParam: "id" },
367
+ children: [
368
+ { name: "users.record.general", path: "general", component: () => import("./General-BD-Hcz0a.js"), meta: { section: { labelKey: "core.users.sections.general", icon: "user3Line", groupKey: "core.users.section_groups.person" } } },
369
+ { name: "users.record.signin", path: "signin", component: () => import("./SignIn-BWwFbxki.js"), meta: { section: { labelKey: "core.users.sections.signin", icon: "key2Line", groupKey: "core.users.section_groups.access" } } },
370
+ { name: "users.record.sessions", path: "sessions", component: () => import("./Sessions-Co5-xdeb.js"), meta: { section: { labelKey: "core.users.sections.sessions", icon: "deviceLine", groupKey: "core.users.section_groups.access" } } },
371
+ { name: "users.record.signins", path: "signins", component: () => import("./SignIns-3UcI64_h.js"), meta: { section: { labelKey: "core.users.sections.signins", icon: "timeFill", groupKey: "core.users.section_groups.activity" } } },
372
+ { name: "users.record.changes", path: "changes", component: () => import("./Changes-DlT5mN9G.js"), meta: { section: { labelKey: "core.users.sections.changes", icon: "edit", groupKey: "core.users.section_groups.activity" } } },
373
+ { name: "users.record.activity", path: "activity", component: () => import("./Activity-DviO0VQ8.js"), meta: { access: ss, section: { labelKey: "core.users.sections.activity", icon: "listCheck", groupKey: "core.users.section_groups.activity" } } }
374
+ ]
375
+ }
376
+ });
377
+ function ts(e) {
378
+ return ee.records.map((s) => s.name === "users.record" ? { ...s, children: [...s.children ?? [], ...e.map(es)] } : s);
379
+ }
380
+ function Ls(e = {}) {
381
+ const s = e.people ?? !0, t = e.profile ?? !0, n = e.signInAs ?? "iam.user:impersonate";
382
+ return H({
383
+ id: "users",
384
+ routes: [...s ? ts(e.sections ?? []) : [], ...t ? Z.records : []],
385
+ context: Y(Xe, { signInAs: n, activityAreas: e.activityAreas ?? {} }),
386
+ navigation: s && e.destination ? [{ destination: e.destination, to: ee.index, within: ["users.record"] }] : [],
387
+ // The entry of the account menu; a shell without that menu leaves it out.
388
+ contributions: t ? [{ id: "users.profile", slot: "accountMenu", component: Qe, scope: "authenticated", optional: !0, order: -10 }] : [],
389
+ requires: s && n !== !1 ? ["identity"] : []
390
+ });
391
+ }
392
+ const zs = /* @__PURE__ */ E({
393
+ __name: "SignInAsButton",
394
+ props: {
395
+ userId: {},
396
+ name: {},
397
+ permission: {}
398
+ },
399
+ setup(e) {
400
+ const s = e, { t } = C(), n = A(), d = J(), { home: g } = X(), u = P(), r = D(!1), a = b(() => {
401
+ const c = q(n.session.state.value);
402
+ return c !== null && c.impersonator === void 0 && c.user.id !== s.userId;
403
+ });
404
+ async function p() {
405
+ r.value = !0;
406
+ try {
407
+ await Ae(n, s.userId), await d.push(g);
408
+ } catch (c) {
409
+ K(c) || k.error(u(c));
410
+ } finally {
411
+ r.value = !1;
412
+ }
413
+ }
414
+ return (c, h) => a.value ? (x(), N(o(Se), {
415
+ key: 0,
416
+ permission: s.permission
417
+ }, {
418
+ default: T(() => [
419
+ _(o(L), {
420
+ processing: r.value,
421
+ "data-sign-in-as": "",
422
+ onClick: p
423
+ }, {
424
+ default: T(() => [
425
+ O(f(o(t)("core.identity.impersonation.sign_in_as", { name: s.name })), 1)
426
+ ]),
427
+ _: 1
428
+ }, 8, ["processing"])
429
+ ]),
430
+ _: 1
431
+ }, 8, ["permission"])) : F("", !0);
432
+ }
433
+ });
434
+ export {
435
+ qs as M,
436
+ Ze as P,
437
+ zs as _,
438
+ Le as a,
439
+ Ks as b,
440
+ Is as c,
441
+ K as d,
442
+ $s as e,
443
+ ee as f,
444
+ Rs as g,
445
+ Os as h,
446
+ w as i,
447
+ Cs as j,
448
+ He as k,
449
+ ke as l,
450
+ We as m,
451
+ Z as n,
452
+ Ce as o,
453
+ Us as p,
454
+ Ae as q,
455
+ Ye as r,
456
+ Pe as s,
457
+ Ls as t,
458
+ X as u
459
+ };
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** The version of @wssto2/vue-core (kept equal to package.json by index.test.ts). */
2
- export declare const version = "0.1.0";
2
+ export declare const version = "0.3.0";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const o = "0.1.0";
1
+ const o = "0.3.0";
2
2
  export {
3
3
  o as version
4
4
  };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The flag of a country (ISO 3166-1 alpha-2, upper case) as an SVG (Windows draws the emoji flags as two letters). Each flag is
3
+ * its own lazy module, loaded when the flag first scrolls into view, so an app downloads the flags a screen shows and not the 250
4
+ * of the package. Shared by the phone field and the shell's language menu; knows nothing of phone numbers.
5
+ */
6
+ type __VLS_Props = {
7
+ country: string;
8
+ };
9
+ 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>;
10
+ export default _default;
@@ -0,0 +1,2 @@
1
+ /** A language's name in itself ("hr" is "Hrvatski"), capitalised; the code when the runtime does not know it. */
2
+ export declare function languageName(code: string): string;
@@ -0,0 +1,48 @@
1
+ function w(a = {}) {
2
+ const { margin: v = 6e4, retryAfter: m = 3e4 } = a;
3
+ return {
4
+ id: "vue-core.keep-session-alive",
5
+ scope: "session",
6
+ start({ signal: n, platform: i, report: f }) {
7
+ let r, s = null;
8
+ const o = () => {
9
+ const e = i.session.state.value;
10
+ return e.status === "authenticated" && e.expiresAt ? e.expiresAt.getTime() - Date.now() - v : null;
11
+ }, h = () => (s ?? (s = (async () => {
12
+ try {
13
+ await a.renew?.(i), await i.session.refresh();
14
+ } catch (e) {
15
+ f(e);
16
+ } finally {
17
+ s = null;
18
+ }
19
+ })()), s);
20
+ function u(e = 0) {
21
+ clearTimeout(r);
22
+ const d = o();
23
+ d !== null && !n.aborted && (r = setTimeout(() => void t(), Math.min(Math.max(d, e), 864e5)));
24
+ }
25
+ async function t() {
26
+ if (n.aborted || !navigator.onLine) return;
27
+ const e = o();
28
+ if (e !== null) {
29
+ if (e <= 0) {
30
+ if (await h(), n.aborted) return;
31
+ u((o() ?? 1) <= 0 ? m : 0);
32
+ return;
33
+ }
34
+ u();
35
+ }
36
+ }
37
+ const c = () => {
38
+ document.visibilityState === "visible" && t();
39
+ }, l = () => void t();
40
+ return document.addEventListener("visibilitychange", c), window.addEventListener("online", l), t(), () => {
41
+ clearTimeout(r), document.removeEventListener("visibilitychange", c), window.removeEventListener("online", l);
42
+ };
43
+ }
44
+ };
45
+ }
46
+ export {
47
+ w as k
48
+ };
@@ -0,0 +1,11 @@
1
+ function e(a) {
2
+ try {
3
+ const t = new Intl.DisplayNames([a], { type: "language" }).of(a);
4
+ return t ? t.charAt(0).toLocaleUpperCase(a) + t.slice(1) : a;
5
+ } catch {
6
+ return a;
7
+ }
8
+ }
9
+ export {
10
+ e as l
11
+ };
@@ -0,0 +1,10 @@
1
+ import { computed as e } from "vue";
2
+ import { u as p } from "./environment-Dva-SG8D.js";
3
+ import { l as t } from "./languageName-CItV_SOv.js";
4
+ function r() {
5
+ const o = p();
6
+ return e(() => o.locales.map((a) => ({ value: a, label: t(a) })));
7
+ }
8
+ export {
9
+ r as u
10
+ };
@@ -0,0 +1,72 @@
1
+ import { inject as f, onMounted as v, onBeforeUnmount as m, shallowRef as p } from "vue";
2
+ import { matchedRouteKey as h, onBeforeRouteLeave as w, onBeforeRouteUpdate as g } from "vue-router";
3
+ import { d as L } from "./context-Ch1r4fdN.js";
4
+ class G extends Error {
5
+ constructor() {
6
+ super(
7
+ 'A page with unsaved changes needs to ask "Discard changes?", but no <LeaveGuardRoot /> is mounted. BackofficeShell renders it; a shell of your own must render <LeaveGuardRoot /> once (import it from @wssto2/vue-core/form).'
8
+ ), this.name = "MissingLeaveGuardRootError";
9
+ }
10
+ }
11
+ function R() {
12
+ const n = p(null), r = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new WeakMap();
13
+ let t = 0;
14
+ function o(e = null) {
15
+ if (t === 0) return Promise.reject(new G());
16
+ const i = e ? a.get(e) : void 0;
17
+ if (i) return i;
18
+ const s = n.value;
19
+ if (s && e === null && s.to === null) return s.decision;
20
+ s?.resolve(!1);
21
+ let c;
22
+ const u = new Promise((l) => c = l), d = {
23
+ to: e,
24
+ decision: u,
25
+ resolve: (l) => {
26
+ n.value === d && (n.value = null), c(l);
27
+ }
28
+ };
29
+ return n.value = d, e && a.set(e, u), u;
30
+ }
31
+ return {
32
+ pending: n,
33
+ confirm: o,
34
+ attach() {
35
+ t++;
36
+ let e = !1;
37
+ return () => {
38
+ e || t--, e = !0;
39
+ };
40
+ },
41
+ register(e) {
42
+ return r.add(e), () => r.delete(e);
43
+ },
44
+ hasUnsavedChanges: () => [...r].some((e) => e())
45
+ };
46
+ }
47
+ const [k, B] = L("vue-core.leaveGuard");
48
+ function U(n) {
49
+ const r = R();
50
+ return n.provide(k, r), r;
51
+ }
52
+ function b(n) {
53
+ const r = B();
54
+ f(h, null) && (w((o) => n() ? r.confirm(o) : !0), g((o, e) => o.path !== e.path && n() ? r.confirm(o) : !0));
55
+ function a(o) {
56
+ n() && (o.preventDefault(), o.returnValue = "");
57
+ }
58
+ let t = null;
59
+ return v(() => {
60
+ window.addEventListener("beforeunload", a), t = r.register(n);
61
+ }), m(() => {
62
+ window.removeEventListener("beforeunload", a), t?.();
63
+ }), { confirmDiscard: async () => !n() || r.confirm() };
64
+ }
65
+ export {
66
+ G as M,
67
+ b as a,
68
+ R as c,
69
+ U as i,
70
+ k as l,
71
+ B as u
72
+ };
@@ -1,4 +1,5 @@
1
1
  import { type IconName } from "../icon";
2
+ import { type ModalPlacement } from "./placement";
2
3
  /**
3
4
  * The adaptive dialog.
4
5
  *
@@ -57,6 +58,8 @@ type __VLS_Props = {
57
58
  value: number;
58
59
  complete?: boolean;
59
60
  } | null;
61
+ /** Wide screens: where the dialog stands, over the application's `modalPlacementKey` default. */
62
+ placement?: ModalPlacement;
60
63
  };
61
64
  type __VLS_Slots = {
62
65
  default?: () => unknown;
@@ -89,6 +92,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
89
92
  } | null;
90
93
  title: string;
91
94
  size: "sm" | "md" | "lg" | "xl";
95
+ placement: ModalPlacement;
92
96
  status: "idle" | "processing" | "done";
93
97
  subtitle: string;
94
98
  grouped: boolean;
@@ -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;
@@ -1,3 +1,5 @@
1
1
  export { default as DiscardChangesModal } from "./DiscardChangesModal.vue";
2
2
  export { default as Modal } from "./Modal.vue";
3
3
  export { default as Sheet } from "./Sheet.vue";
4
+ export { default as ShortcutHelp } from "./ShortcutHelp.vue";
5
+ export { modalPlacementKey, type ModalPlacement } from "./placement";