New:Socket for Asana Is Now Available.Learn more
Get Started

@abpjs/feature-management

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@abpjs/feature-management

ABP Framework feature-management components for React - translated from @abp/ng.feature-management

Source
npmnpm
Version
3.0.0
Version published
Weekly downloads
19
-40.62%
Maintainers
1
Weekly downloads
 
Created
Source

@abpjs/feature-management

Feature management UI components for ABP Framework in React

npm version License: LGPL-3.0

Overview

@abpjs/feature-management provides feature management capabilities for ABP-based React applications. It allows managing features for tenants and editions with support for toggle and free-text value types.

This package is a React translation of the original @abp/ng.feature-management Angular package.

Features

  • Feature Modal - Modal component for viewing and editing features
  • Toggle Features - Checkbox-based boolean features
  • Free Text Features - Text input for string-based features
  • Provider Support - Supports tenant (T) and edition (E) providers
  • Localization - Full i18n support using ABP localization
  • Chakra UI - Beautiful, accessible components
  • TypeScript - Full type safety with comprehensive definitions

Installation

# Using npm
npm install @abpjs/feature-management

# Using yarn
yarn add @abpjs/feature-management

# Using pnpm
pnpm add @abpjs/feature-management

Required Dependencies

This package requires the following peer dependencies:

npm install @abpjs/core @abpjs/theme-shared @chakra-ui/react @emotion/react

Quick Start

Using the Modal Component

import { useState } from 'react';
import { FeatureManagementModal } from '@abpjs/feature-management';

function TenantFeatures({ tenantId }: { tenantId: string }) {
  const [visible, setVisible] = useState(false);

  return (
    <>
      <button onClick={() => setVisible(true)}>Manage Features</button>
      <FeatureManagementModal
        providerName="T"
        providerKey={tenantId}
        visible={visible}
        onVisibleChange={setVisible}
        onSave={() => console.log('Features saved!')}
      />
    </>
  );
}

Using the Hook

import { useFeatureManagement } from '@abpjs/feature-management';
import { useEffect } from 'react';

function CustomFeaturePage({ tenantId }: { tenantId: string }) {
  const {
    features,
    isLoading,
    fetchFeatures,
    saveFeatures,
    updateFeatureValue,
    isFeatureEnabled,
  } = useFeatureManagement();

  useEffect(() => {
    fetchFeatures(tenantId, 'T');
  }, [tenantId, fetchFeatures]);

  const handleToggle = (featureName: string) => {
    const newValue = isFeatureEnabled(featureName) ? 'false' : 'true';
    updateFeatureValue(featureName, newValue);
  };

  const handleSave = async () => {
    const result = await saveFeatures(tenantId, 'T');
    if (result.success) {
      console.log('Features saved!');
    }
  };

  return (
    <div>
      {features.map(feature => (
        <div key={feature.name}>
          <span>{feature.name}</span>
          {feature.valueType?.name === 'ToggleStringValueType' ? (
            <input
              type="checkbox"
              checked={isFeatureEnabled(feature.name)}
              onChange={() => handleToggle(feature.name)}
            />
          ) : (
            <input
              type="text"
              value={feature.value}
              onChange={(e) => updateFeatureValue(feature.name, e.target.value)}
            />
          )}
        </div>
      ))}
      <button onClick={handleSave} disabled={isLoading}>
        Save
      </button>
    </div>
  );
}

Components

FeatureManagementModal

Modal component for managing features of a provider.

import { FeatureManagementModal } from '@abpjs/feature-management';

<FeatureManagementModal
  providerName="T"
  providerKey={tenantId}
  visible={visible}
  onVisibleChange={setVisible}
  onSave={() => console.log('Saved!')}
/>

Props:

PropTypeRequiredDescription
providerNamestringYesProvider type ("T" for tenant, "E" for edition)
providerKeystringYesProvider identifier (tenant ID or edition ID)
visiblebooleanYesWhether the modal is visible
onVisibleChange(visible: boolean) => voidNoCallback when visibility changes
onSave() => voidNoCallback when features are saved

Hooks

useFeatureManagement

Hook for managing feature state and operations.

import { useFeatureManagement } from '@abpjs/feature-management';

const {
  features,           // Array of features
  featureValues,      // Current values (form state)
  isLoading,          // Loading state
  error,              // Error message
  fetchFeatures,      // Fetch features for provider
  saveFeatures,       // Save changes to server
  updateFeatureValue, // Update a feature value locally
  getFeatureValue,    // Get current feature value
  isFeatureEnabled,   // Check if toggle feature is enabled
  reset,              // Reset all state
} = useFeatureManagement();

Services

FeatureManagementService

Service class for direct API interaction.

import { FeatureManagementService } from '@abpjs/feature-management';
import { useRestService } from '@abpjs/core';

function MyComponent() {
  const restService = useRestService();
  const service = new FeatureManagementService(restService);

  // Get features
  const features = await service.getFeatures({
    providerName: 'T',
    providerKey: tenantId,
  });

  // Update features
  await service.updateFeatures({
    providerName: 'T',
    providerKey: tenantId,
    features: [
      { name: 'MyFeature', value: 'true' },
    ],
  });
}

Data Models

FeatureManagement Namespace

import { FeatureManagement } from '@abpjs/feature-management';

interface FeatureManagement.Feature {
  name: string;
  value: string;
  description?: string;
  valueType?: ValueType;
  depth?: number;
  parentName?: string;
}

interface FeatureManagement.ValueType {
  name: string;           // 'ToggleStringValueType' or 'FreeTextStringValueType'
  properties: object;
  validator: object;
}

interface FeatureManagement.Provider {
  providerName: string;   // 'T' for tenant, 'E' for edition
  providerKey: string;    // Provider ID
}

interface FeatureManagement.Features {
  features: Feature[];
}

Value Types

Value TypeDescriptionUI Component
ToggleStringValueTypeBoolean toggleCheckbox/Switch
FreeTextStringValueTypeFree text inputText input

API Endpoints

MethodEndpointDescription
GET/api/abp/featuresFetch features for provider
PUT/api/abp/featuresUpdate features for provider

Contributing

This package is part of the ABP React monorepo. Contributions are welcome!

License

LGPL-3.0 - See LICENSE for details.

View Full Documentation | Report Issues | View Source

Keywords

abp

FAQs

Package last updated on 06 Feb 2026

Related posts