Skip to main content
Version: 2.9.0

v2.7.0

Release Date: February 2026

This release introduces the new Text template management package, enhanced utilities for password validation and enum handling, improved component replacement and route name constants across all packages, and converts several enums to const objects for better tree-shaking.

Highlights

  • New Package: @abpjs/text-template-management - Complete text template management UI for ABP Commercial
  • Password Validation Utilities - New utilities for validating passwords against ABP Identity settings
  • Enum Utility Functions - mapEnumToOptions() and isNumber() for common operations
  • Component Replacement Keys - All packages now export eComponents constants for component replacement
  • Route Name Constants - All packages now export eRouteNames constants for localization
  • Enum to Const Conversions - Several enums converted to const objects for tree-shaking

New Package

@abpjs/text-template-management

A new package for managing text templates in ABP Commercial applications:

import {
TextTemplatesComponent,
TemplateContentsComponent,
useTextTemplates,
eTextTemplateManagementComponents,
eTextTemplateManagementRouteNames,
} from '@abpjs/text-template-management';

function TextTemplatesPage() {
const {
templateDefinitions,
fetchTemplateDefinitions,
getTemplateContent,
updateTemplateContent,
restoreToDefault,
} = useTextTemplates();

return <TextTemplatesComponent />;
}

Features:

  • Template definition listing with pagination and search
  • Multi-culture template content editing
  • Restore to default functionality
  • Full TypeScript support with TextTemplateManagement namespace

See the Text template management documentation for details.


New Features

@abpjs/core

Utility Functions

mapEnumToOptions() - Convert enums to select options:

import { mapEnumToOptions } from '@abpjs/core';

enum Status { Active = 0, Inactive = 1 }
const options = mapEnumToOptions(Status);
// [{ key: 'Active', value: 0 }, { key: 'Inactive', value: 1 }]

isNumber() - Validate numeric values:

import { isNumber } from '@abpjs/core';

isNumber(42); // true
isNumber('42'); // true
isNumber('abc'); // false

generatePassword() - Generate secure random passwords:

import { generatePassword } from '@abpjs/core';

const password = generatePassword(); // 16 characters
const short = generatePassword(8); // 8 characters

Application Configuration Types

New interfaces for culture and date/time formatting:

import { ApplicationConfiguration } from '@abpjs/core';

const culture: ApplicationConfiguration.CurrentCulture;
const dateFormat: ApplicationConfiguration.DateTimeFormat;

DomInsertionService Updates

  • insertContent() now returns the inserted element
  • New removeContent(element) method
  • has() method (replaces deprecated hasInserted())

@abpjs/theme-shared

Password Validation Utilities

import { getPasswordValidators, getPasswordValidationRules } from '@abpjs/theme-shared';

// Get validators array
const validators = getPasswordValidators({ getSetting });

// Get react-hook-form compatible rules
const passwordRules = getPasswordValidationRules({ getSetting });

ModalService

New service for programmatic modal rendering:

import { ModalProvider, ModalContainer, useModal } from '@abpjs/theme-shared';

function App() {
return (
<ModalProvider>
<MainContent />
<ModalContainer />
</ModalProvider>
);
}

function MyComponent() {
const modal = useModal();
modal.renderTemplate((context) => <MyModal {...context} />);
}

HTTP Error Configuration

import { HttpErrorConfigContext, useHttpErrorConfig } from '@abpjs/theme-shared';

@abpjs/theme-basic

Component Replacement Keys

import { eThemeBasicComponents } from '@abpjs/theme-basic';

// eThemeBasicComponents.ApplicationLayout = 'Theme.ApplicationLayoutComponent'
// eThemeBasicComponents.Logo = 'Theme.LogoComponent'
// eThemeBasicComponents.Routes = 'Theme.RoutesComponent'
// eThemeBasicComponents.NavItems = 'Theme.NavItemsComponent'
import { eNavigationElementNames } from '@abpjs/theme-basic';

// eNavigationElementNames.Language = 'LanguageRef'
// eNavigationElementNames.User = 'CurrentUserRef'

LayoutStateService

import { useLayoutStateService } from '@abpjs/theme-basic';

const layoutStateService = useLayoutStateService();
layoutStateService.dispatchAddNavigationElement({ name: 'MyElement', element: <MyNav /> });

Public API Components

  • LogoComponent - Displays the application logo
  • RoutesComponent - Renders navigation routes
  • NavItemsComponent - Renders navigation items

@abpjs/audit-logging

EntityChangeService

New service for entity change operations:

import { EntityChangeService, useEntityChanges } from '@abpjs/audit-logging';

const { entityChanges, fetchEntityChanges, getEntityChangeDetails } = useEntityChanges();

EntityChange Namespace

import { EntityChange, eEntityChangeType } from '@abpjs/audit-logging';

const change: EntityChange.EntityChangeDto;
const type = eEntityChangeType.Created; // 0

@abpjs/identity-pro

changePassword Method

import { useIdentityService } from '@abpjs/identity-pro';

const identityService = useIdentityService();
await identityService.changePassword(userId, {
currentPassword: 'old',
newPassword: 'new',
});

Component and Route Name Constants

All packages now export constants for component replacement and route localization:

PackageComponentsRoute Names
@abpjs/accounteAccountComponentseAccountRouteNames
@abpjs/feature-managementeFeatureManagementComponents-
@abpjs/identityeIdentityComponentseIdentityRouteNames
@abpjs/permission-managementePermissionManagementComponents-
@abpjs/setting-managementeSettingManagementComponentseSettingManagementRouteNames
@abpjs/tenant-managementeTenantManagementComponentseTenantManagementRouteNames
@abpjs/account-proeAccountComponentseAccountRouteNames
@abpjs/audit-loggingeAuditLoggingComponentseAuditLoggingRouteNames
@abpjs/identity-proeIdentityComponentseIdentityRouteNames
@abpjs/language-managementeLanguageManagementComponentseLanguageManagementRouteNames
@abpjs/saaseSaasComponentseSaasRouteNames
@abpjs/text-template-managementeTextTemplateManagementComponentseTextTemplateManagementRouteNames

Enum to Const Object Conversions

Several packages converted their enums to const objects for better tree-shaking:

@abpjs/identity-pro

// Before (enum)
enum eIdentityComponents { Users = 'Identity.UsersComponent' }

// After (const object)
const eIdentityComponents = { Users: 'Identity.UsersComponent' } as const;

@abpjs/language-management

// Before (enum)
enum eLanguageManagementComponents { Languages = 'LanguageManagement.LanguagesComponent' }

// After (const object)
const eLanguageManagementComponents = { Languages: 'LanguageManagement.LanguagesComponent' } as const;

@abpjs/saas

// Before (enum)
enum eSaasComponents { Tenants = 'Saas.TenantsComponent' }

// After (const object)
const eSaasComponents = { Tenants: 'Saas.TenantsComponent' } as const;

Deprecations

@abpjs/core

  • DomInsertionService.hasInserted() - Use has() instead

Packages

PackageVersionChanges
@abpjs/core2.7.0mapEnumToOptions, isNumber, generatePassword, CurrentCulture, DateTimeFormat types
@abpjs/theme-shared2.7.0Password validation utilities, ModalService, HttpErrorConfigContext
@abpjs/theme-basic2.7.0eThemeBasicComponents, eNavigationElementNames, LayoutStateService, public components
@abpjs/account2.7.0eAccountComponents, eAccountRouteNames, TenantIdResponse.name
@abpjs/feature-management2.7.0eFeatureManagementComponents
@abpjs/identity2.7.0eIdentityComponents, eIdentityRouteNames
@abpjs/permission-management2.7.0ePermissionManagementComponents
@abpjs/setting-management2.7.0eSettingManagementComponents, eSettingManagementRouteNames
@abpjs/tenant-management2.7.0eTenantManagementComponents, eTenantManagementRouteNames
@abpjs/account-pro2.7.0eAccountComponents, eAccountRouteNames
@abpjs/audit-logging2.7.0EntityChangeService, EntityChange namespace, eAuditLoggingRouteNames
@abpjs/identity-pro2.7.0changePassword() method, eIdentityRouteNames, enum-to-const
@abpjs/language-management2.7.0eLanguageManagementRouteNames, enum-to-const
@abpjs/saas2.7.0eSaasRouteNames, enum-to-const
@abpjs/text-template-management2.7.0New package - Text template management UI

Upgrade

npm install @abpjs/core@2.7.0 @abpjs/theme-shared@2.7.0 @abpjs/theme-basic@2.7.0 @abpjs/account@2.7.0 @abpjs/identity@2.7.0 @abpjs/feature-management@2.7.0 @abpjs/permission-management@2.7.0 @abpjs/setting-management@2.7.0 @abpjs/tenant-management@2.7.0

For Pro packages:

npm install @abpjs/account-pro@2.7.0 @abpjs/audit-logging@2.7.0 @abpjs/identity-pro@2.7.0 @abpjs/language-management@2.7.0 @abpjs/saas@2.7.0 @abpjs/text-template-management@2.7.0

See Also