@lsw-abpvue/setting-management

The settings page of the ABP Vue UI: the tab tree other modules add to, and the email and time zone tabs this module brings.
1,020 3
Install
npm install @lsw-abpvue/setting-management
Latest Version:0.1.0
Vue:3
License:MIT
Last Updated:Oct 22, 2026
Links: GitHub  ·  npm
Maintainer: shiweiliang

@lsw-abpvue/setting-management

The settings page for Lsw.Abp.VueUI, an unofficial Vue UI for the ABP Framework.

pnpm add @lsw-abpvue/setting-management

Two entry points, loaded at different times:

// main.ts: the menu entry and the tabs, at startup
import { provideSettingManagementConfig } from '@lsw-abpvue/setting-management/config';

provideSettingManagementConfig();
// routes.ts: the page, on the first navigation into it
import { lazyRoutes } from '@lsw-abpvue/core/router';

lazyRoutes('/setting-management', () =>
  import('@lsw-abpvue/setting-management').then(module => module.createSettingManagementRoutes()),
);

What it is

A page that is nothing but a tab tree. The module brings two tabs of its own — emailing and the time zone — and every other module adds its to the same tree.

Emailing the SMTP settings, and a test mail behind SettingManagement.Emailing.Test
Time zone the server's default zone, where the backend's clock is UTC

Adding a tab

import { SettingTabsService } from '@lsw-abpvue/setting-management/config';

provideAppInitializer(() => {
  inject(SettingTabsService).add([
    {
      name: 'MyModule.Settings',
      text: 'MyModule::Menu:Settings',
      requiredPolicy: 'MyModule.Settings',
      order: 300,
      component: defineAsyncComponent(() => import('./MySettingsTab.vue')),
    },
  ]);
});

requiredPolicy is checked the way every other permission is, and visible() is read inside a computed for anything a permission cannot express — a feature switched off for the current tenant, say. When no tab survives either check the menu entry goes away with them, so nothing leads to an empty page.

Compared with the Angular UI

Same component key, same route name, same tab names, same localization keys. What differs:

Angular Here
No time zone tab, though the backend and the MVC UI both have one A tab, shown where the backend's clock is UTC
The test mail button is behind SettingManagement.Emailing, which is not what the endpoint checks Behind SettingManagement.Emailing.Test
The emailing tab is shown to a tenant whose feature is off, and its endpoints then refuse Hidden, the way the MVC UI hides it
The tab label is the tab's name The name still works as one; text names a different key
Tab components are imported at startup Asked for when a tab opens, in a chunk of their own

Registered in the design documents' api-parity-map.md.

Licence

MIT.

Related Packages

@agendize/vue-settings

Vue agendize's settings component

9,868
@lsw-abpvue/core

The kernel of the ABP Vue UI: dependency injection, application state, localizat...

1,373 3
@lsw-abpvue/utils

Framework-agnostic helpers for the ABP Vue UI. No dependencies, not even Vue.

1,306 3
@lsw-abpvue/components

The extension system of the ABP Vue UI: five extension points, the object extens...

1,295 3

Version History

Version Released Vue License
0.1.0 ^3.5.0 MIT
Pre-releases (6)
Version Released Vue License
0.0.1-alpha.5 ^3.5.0 MIT
0.0.1-alpha.4 ^3.5.0 MIT
0.0.1-alpha.3 ^3.5.0 MIT
0.0.1-alpha.2 ^3.5.0 MIT
0.0.1-alpha.1 ^3.5.0 MIT