0.0.7 • Published 1 year ago

@new0/nf-builder-settings-factory v0.0.7

Weekly downloads
-
License
GPL-3.0
Repository
github
Last release
1 year ago

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-factory

Settings 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 settings
  • advancedSettingsFactory: 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

  1. Use the pre-configured factories when working with form-related settings
  2. Leverage the criteria-based search for complex queries
  3. Use dependency management for settings that rely on other settings
  4. 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.

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago