@new0/nf-builder-settings-factory v0.0.7
nf-builder-settings-factory
A factory class for managing builder default settings for fields, actions and form settings.
Installation
yarn add @new0/nf-builder-settings-factory
||
npm install @new0/nf-builder-settings-factorySettings Factory
A flexible and powerful settings management system for handling complex configurations in JavaScript applications. The SettingsFactory provides methods to organize, access, and manipulate settings based on various criteria including types, groups, dependencies, and merge tags.
Usage
Import the factory and pre-configured instances:
import {
SettingsFactory,
actionsSettingsFactory,
fieldSettingsFactory,
advancedSettingsFactory
} from './settings';Pre-configured Instances
The package provides three pre-configured instances for common use cases:
actionsSettingsFactory: Manages form action settings (email, redirect, custom actions, etc.)fieldSettingsFactory: Handles form field settingsadvancedSettingsFactory: Controls advanced form settings (calculations, restrictions, display)
Creating a New Instance
You can create a custom settings factory instance by passing either an array or object of settings:
// Using an object
const settings = {
setting1: { name: 'setting1', type: 'text', value: 'default' },
setting2: { name: 'setting2', type: 'number', value: 42 }
};
const factory = new SettingsFactory(settings);
// Using an array
const settingsArray = [
{ name: 'setting1', type: 'text', value: 'default' },
{ name: 'setting2', type: 'number', value: 42 }
];
const factoryFromArray = new SettingsFactory(settingsArray);API Reference
Basic Operations
Get a Single Setting
const setting = factory.getSetting('settingName');Get Multiple Settings
const settings = factory.getSettings(['setting1', 'setting2']);Check if Setting Exists
const exists = factory.hasSetting('settingName');Get/Update Setting Value
const value = factory.getValue('settingName');
factory.updateValue('settingName', newValue);Advanced Queries
Get Settings by Type
const textSettings = factory.getSettingsByType('text');
// Or multiple types
const settings = factory.getSettingsByType(['text', 'number']);Get Settings by Group
const groupSettings = factory.getSettingsByGroup('display');Get Settings by Criteria
const criteria = {
type: 'text',
group: 'display',
required: true
};
const matchingSettings = factory.getSettingsByCriteria(criteria);Get Dependent Settings
const dependencies = [
{ parentSetting: 'value1' }
];
const dependentSettings = factory.getDependentSettings(dependencies);Merge Tags
Get Settings with Merge Tags
// Get all settings with merge tags
const mergeTagSettings = factory.getSettingsWithMergeTags();
// Filter by specific tags
const filtered = factory.getSettingsWithMergeTags({
include: ['user', 'date']
});
// Exclude specific tags
const filtered = factory.getSettingsWithMergeTags({
exclude: ['system']
});Utility Methods
Get All Settings
const allSettings = factory.getAllSettings();Get All Setting Keys
const keys = factory.getAllKeys();Get Settings by Value
const settings = factory.getSettingsByValue('specificValue');
// Or multiple values
const settings = factory.getSettingsByValue(['value1', 'value2']);Setting Object Structure
A setting object typically includes these properties:
{
name: 'settingName', // Unique identifier
type: 'text', // Setting type
value: 'default', // Current value
group: 'display', // Optional grouping
deps: { // Optional dependencies
parentSetting: 'value'
},
use_merge_tags: true // Or object with include/exclude arrays
}Best Practices
- Use the pre-configured factories when working with form-related settings
- Leverage the criteria-based search for complex queries
- Use dependency management for settings that rely on other settings
- Utilize merge tags for template-based settings
Error Handling
The factory methods generally return null, empty arrays, or false for invalid inputs rather than throwing errors. Always check return values when working with optional settings.