Fonctions utilitaires couramment partagées entre les packages officiels de FormKit.
Vous pouvez ajouter ce package en utilisant npm install @formkit/utils
ou yarn add @formkit/utils
.
Effectue une opération récursive similaire à Object.assign
.
assignDeep<A extends Record<PropertyKey, any>, B extends Record<PropertyKey, any>>(a: A, b: B): A & B;
a
— Un objet à assigner.b
— Un objet à partir duquel obtenir des valeurs.A & B
Ceci convertit le kebab-case en camelCase. Il convertit UNIQUEMENT du kebab en camel.
camel(str: string): string;
str
— Chaîne à convertir en camel case.string
Effectue un clonage récursif sur un objet donné. Destiné uniquement à être utilisé pour des objets simples comme des tableaux et des POJOs.
clone<T extends Record<string, unknown> | unknown[] | null>(obj: T, explicit?: string[]): T;
obj
— Objet à cloner.explicit
optionnel — Tableau d'éléments à cloner explicitement.T
Clone n'importe quoi. Si l'élément est scalaire, pas de soucis, il le renvoie tel quel. S'il s'agit d'un objet, il effectue une opération de clonage (rapide/lâche).
cloneAny<T>(obj: T): T;
obj
— La valeur à cloner.T
Étant donné 2 tableaux, les renvoie sous forme d'un tableau combiné sans doublons.
dedupe<T extends any[] | Set<any>, X extends any[] | Set<any>>(arr1: T, arr2?: X): any[];
arr1
— Premier tableau.arr2
optionnel — Deuxième tableau.any[]
Détermine si une valeur est vide ou non.
empty(value: any): boolean;
value
— La valeur à vérifier si elle est vide.boolean
Compare deux valeurs pour l'égalité, éventuellement en profondeur.
eq(valA: any, valB: any, deep?: boolean, explicit?: string[]): boolean;
valA
— Première valeur.valB
— Deuxième valeur.deep
optionnel — S'il va comparer en profondeur s'il s'agit d'un objet.explicit
optionnel — Un tableau de clés à vérifier explicitement.boolean
Une expression régulière pour tester une chaîne de caractères de date valide.
eqRegExp(x: RegExp, y: RegExp): boolean;
x
— Une RegExp à comparer.y
— Une RegExp à comparer.Échappe une chaîne de caractères pour une utilisation dans des expressions régulières.
escapeExp(string: string): string;
string
— Chaîne de caractères à échapper.string
Renvoie un nouvel objet (superficiel) avec les propriétés souhaitées supprimées.
except(obj: Record<string, any>, toRemove: Array<string | RegExp>): Record<string, any>;
obj
— L'objet de départ.toRemove
— Le tableau des propriétés à supprimer. Accepte des chaînes de caractères ou des expressions régulières.Record<string, any>
Fusionne récursivement les données supplémentaires dans l'original en renvoyant un nouvel objet.
extend(original: Record<string, any>, additional: Record<string, any> | string | null, extendArrays?: boolean, ignoreUndefined?: boolean): Record<string, any> | string | null;
original
— Le tableau original.additional
— Le tableau à fusionner.extendArrays
optionnel — S'il va étendre/concaténer les valeurs de tableau au lieu de les remplacer.ignoreUndefined
optionnel — S'il va préserver les valeurs de l'objet original même si l'objet supplémentaire a ces valeurs définies comme indéfinies.Record<string, any> | string | null
NO_SIDE_EFFECTS
Obtenez une valeur spécifique via la notation pointée.
getAt(obj: any, addr: string): unknown;
obj
— Un objet à partir duquel récupérer des données.addr
— Une "adresse" en notation pointée.unknown
Vérifie si la propriété donnée existe sur l'objet donné.
has(obj: {
[index: string]: any;
[index: number]: any;
}, property: string | symbol | number): boolean;
obj
— Un objet à vérifier.property
— La propriété à vérifier.boolean
Définit un objet comme valeur initiale.
init<T extends object>(obj: T): T & {
__init?: true;
};
obj
— Objet auquel une valeur initiale doit être ajoutée.T & { __init?: true }
Vérifie si un objet est un tableau simple ou un enregistrement.
isObject(o: unknown): o is Record<PropertyKey, unknown> | unknown[];
o
— Valeur à vérifier.boolean
Tente de déterminer si un objet est un POJO (Plain Old JavaScript Object). Principalement tiré de is-plain-object: https://github.com/jonschlinkert/is-plain-object Copyright (c) 2014-2017, Jon Schlinkert.
isPojo(o: any): o is Record<string, any>;
o
— La valeur à vérifier.boolean
Détermine si la chaîne donnée est entièrement citée.
isQuotedString(str: string): boolean;
str
— La chaîne à vérifier.boolean
hello - false
"hello" - true
'world' - true
"hello"=="world" - false
"hello'this'" - false
"hello"'there' - false
"hello""there" - false
'hello === world' - true
Détermine si un objet est un objet.
isRecord(o: unknown): o is Record<PropertyKey, unknown>;
o
— La valeur à vérifier.boolean
Cela convertit le camel-case en kebab case. Il convertit UNIQUEMENT du camel au kebab.
kebab(str: string): string;
str
— Chaîne à transformer en kebab.string
Filtre les valeurs d'un objet qui ne devraient pas être considérées comme des "props" d'un nœud de base, comme "value" et "name".
nodeProps(...sets: Array<Record<string, any>>): Record<string, any>;
sets
— Les tableaux dont les valeurs doivent être filtrées.Record<string, any>
Étant donné un type d'entrée FormKit, renvoie le type correct en minuscules().
nodeType(type: string): 'list' | 'group' | 'input';
type
— Chaîne à retourner pour vérifier le type correct'list' | 'group' | 'input'
Étant donné une fonction, un seul appel sera effectué par pile d'appels. Tous les autres seront ignorés.
oncePerTick<T extends CallableFunction>(fn: T): T;
fn
— La fonction à appeler une fois par tick.Extrait un ensemble de clés d'un objet donné. Importamment, cela extraira les valeurs même si elles ne sont pas définies sur l'objet original — elles auront simplement une valeur indéfinie.
only(obj: Record<string, any>, include: Array<string | RegExp>): Record<string, any>;
obj
— L'objet à partir duquel obtenir les valeurs.include
— Le tableau d'éléments à obtenir.Record<string, any>
Analyse une chaîne pour des arguments séparés par des virgules.
parseArgs(str: string): string[];
str
— Chaîne à partir de laquelle analyser les arguments.string[]
Étant donné un format de date en chaîne, retourne une regex pour correspondre.
regexForFormat(format: string): RegExp;
format
— Chaîne à transformer en RegExp.RegExp
regexForFormat('MM') // retourne '(0[1-9]|1[012])'
Supprime les caractères d'échappement supplémentaires.
rmEscapes(str: string): string;
str
— Chaîne à partir de laquelle supprimer les caractères d'échappement supplémentaires.string
Crée un nouvel ensemble du type spécifié et utilise les valeurs d'un tableau ou d'un ensemble existant.
setify<T>(items: Set<T> | T[] | null | undefined): Set<T>;
items
— Un tableau ou un ensemble.Set<T>
import { setify } from '@formkit/utils'
const tk = setify(['a', 'b'])
// Set(2) {'a', 'b'}
Clone superficiellement l'objet donné.
shallowClone<T>(obj: T, explicit?: string[]): T;
obj
— Objet à cloner superficiellement.explicit
optionnel — Le tableau de clés à cloner explicitement.T
Transforme n'importe quelle chaîne en une chaîne sûre pour les URL/DOM.
slugify(str: string): string;
str
— Chaîne à transformer en une chaîne sûre pour une URL.string
Étend un objet ou un tableau, sinon renvoie la même valeur.
spread<T>(obj: T, explicit?: string[]): T;
obj
— L'objet à étendre.explicit
optionnel — Le tableau des éléments à étendre explicitement.T
Génère une chaîne de caractères aléatoire.
token(): string;
string
import { token } from '@formkit/utils'
const tk = token()
// 'jkbyqnphqm'
Détermine si la valeur d'une propriété est présente (true) ou non (undefined). Par exemple, la propriété désactivée devrait être désactivée simplement en existant, mais que se passe-t-il si elle est définie sur la chaîne "false" — alors elle ne devrait pas être désactivée.
undefine(value: unknown): true | undefined;
value
— Valeur à vérifier pour undefined.true | undefined
Utilise un observateur de mutation global pour attendre qu'un élément donné apparaisse dans le DOM.
whenAvailable(childId: string, callback: (el: Element) => void, root?: Document | ShadowRoot): void;
childId
— L'id du nœud enfant.callback
— Le rappel à appeler lorsque le nœud enfant est trouvé.root
optionnelLes chaînes de jetons de date qui peuvent être utilisées pour le formatage des dates.
export type FormKitDateTokens = 'MM' | 'M' | 'DD' | 'D' | 'YYYY' | 'YY';