Textový input
<input id='test1' name='test1' value='' type='text'>
<script type='module' async>
import {HaiInput} from './classes/hai-input-class.js';
let test1 = document.getElementById('test1');
let parameters = {mask: '000 - AAA', label: 'Test 1', placeholder: '000 - AAA'}
let haiInput =
await HaiInput.create('text', test1, parameters);
</script>
Hlavním přínosem textového pole knihovny Hai Form je možnost nastavení masky určují podobu,
kterou má mít zadaný text. To je vhodné kupříkladu pro pole, do kterého má být zadána
registrační značka vozu nebo třeba číslo kreditní karty. Oproti regulárním výrazům
zadávaným přes atribut pattern má maska tu výhodu, že vůbec nepovolí napsání nevyhovujících
znaků a automaticky doplňuje ty, které jsou pevně dané, kupříkladu pomlčky nebo mezery.
mask |
Typ: string |
Výchozí: null |
Ukázka: '000 - AAA' |
Parametr pro nastavení masky textového pole. Jako masku lze využít
libovolný text, přičemž některé znaky (tokeny) mohou mít speciální
význam. Význam tokenů lze nastavit prostřednictvím parametru "maskTokens".
|
maskTokens |
Typ: object |
Výchozí: null |
Ukázka: {'#': /\d/} |
Nastavuje význam tokenů využívaných v masce. Pokud není parametr nastaven, použije se výchozí
nastavení tokenů.
Ukázka výchozího nastavení tokenů:
{
'0': {pattern: /\d/},
'A': {pattern: /[a-zA-Z0-9]/},
'S': {pattern: /[a-zA-Z]/},
'!': {escape: true}
}
Upozornění: Tento parametr není možné nastavit prostřednictvím data atributu v HTML.
|
maxLength |
Typ: integer |
Výchozí: null |
Ukázka: 8 |
Nastavuje maximální délku, kterou může text v poli mít.
Upozornění: Není doporučeno souběžné používání parametrů
"maxLength" a "mask".
|
minLength |
Typ: integer |
Výchozí: null |
Ukázka: 3 |
Nastavuje minimální délku, kterou musí text v poli mít.
Upozornění: Není doporučeno souběžné používání parametrů
"minLength" a "mask".
|
placeholder |
Typ: string |
Výchozí: null |
Ukázka: 'Vyplňte...' |
Určuje placeholder daného formulářového pole.
|
required |
Typ: bool |
Výchozí: undefined |
Určuje, zda musí být pole vyplněno (nebo musí mít vybranou nějakou hodnotu).
|
label |
Typ: string |
Výchozí: undefined |
Ukázka: 'Email' |
Nastavuje popisek (label) pro dané pole. Pokud není parametr použit (není zadána hodnota),
formulářové pole bude vygenerováno bez popisku.
|
value |
Typ: string|number |
Výchozí: undefined |
Ukázka: 'test' |
Parametr obsahující hodnotu formulářového pole.
Upozornění: Silně není doporučeno měnit parametr "value" po inicializaci pole.
|
readonly |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole pouze pro čtení (to znamená nijak nereagovat na input uživatele).
|
disabled |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole neaktivní (nereagovat na input uživatele a ani neodesílat hodnotu na server).
|
Číselný input
<input id='test2' name='test2' value='200' type='number'>
<script type='module' async>
import {HaiInput} from './classes/hai-input-class.js';
let test2 = document.getElementById('test2');
let parameters = {max: 250_000, label: 'Test 2'}
let haiInput =
await HaiInput.create('number', test2, parameters);
</script>
Číselné pole knihovny Hai Form se zaměřuje na zpříjemnění práce uživateli tím, že
kupříkladu nabízí možnost formátování čísla do tvaru, který je lépe čitelný
a odpovídá tomu, na co je uživatel zvyklý. Zároveň číselné pole umožňuje automatické
zpracování již nějakým způsobem formátovaná čísla zkopírovaného kupříkladu z aplikace MS
Excel. Oproti běžnému inputu typu number v HTML zároveň pole neumožňuje
psaní čísel s exponentem (znakem E).
min |
Typ: number |
Výchozí: null |
Ukázka: 0 |
Nastavuje minimální hodnotu, kterou může číslo zadané do pole mít.
|
max |
Typ: number |
Výchozí: null |
Ukázka: 150 |
Nastavuje maximální hodnotu, kterou může číslo zadané do pole mít.
|
step |
Typ: number |
Výchozí: 1 |
Ukázka: 0.1 |
Určeje velikost kroku, při změně čísla v poli prostřednictvím kolečka myši nebo
šipek na klávenici. Na rozdíl od atributu step v HTML neomezuje hodnoty, které
může uživatel zadat ručně, tedy i při nastaveném kroku 10 může uživatel zadat
číslo 7.
|
stripLeadingZeros |
Typ: bool |
Výchozí: true |
Nastavuje, jestli se z čísla zadaného do pole mají automaticky odebírat počáteční nuly.
|
decimalSeparator |
Typ: string |
Výchozí: ',' |
Ukázka: '.' |
Nastavuje znak pro oddělení desetinných čísel (tradičně desetinnou čárku nebo tečku).
|
delimiter |
Typ: string |
Výchozí: ' ' |
Ukázka: ',' |
Nastavuje znak pro oddělení číselných řádů (tisíců).
|
thousandsGroupStyle |
Typ: string |
Výchozí: 'thousand' |
Ukázka: 'lakh' |
Určuje, který způsob formátování čísel se má použít. Na výběr existují 3 způsoby: thousand, lakh, wan.
Ukázky:
- thousnad:
- 10 000 000
- lakh:
- 1 00 00 000
- wan:
- 1000 0000
|
enableValueFormation |
Typ: bool |
Výchozí: true |
Aktivuje nebo vypíná formátování (na základě paraetrů "delimiter", "decimalSeparator", atd.) čísel v poli.
|
mask |
Typ: string |
Výchozí: null |
Ukázka: '000 - AAA' |
Parametr pro nastavení masky textového pole. Jako masku lze využít
libovolný text, přičemž některé znaky (tokeny) mohou mít speciální
význam. Význam tokenů lze nastavit prostřednictvím parametru "maskTokens".
|
maskTokens |
Typ: object |
Výchozí: null |
Ukázka: {'#': /\d/} |
Nastavuje význam tokenů využívaných v masce. Pokud není parametr nastaven, použije se výchozí
nastavení tokenů.
Ukázka výchozího nastavení tokenů:
{
'0': {pattern: /\d/},
'A': {pattern: /[a-zA-Z0-9]/},
'S': {pattern: /[a-zA-Z]/},
'!': {escape: true}
}
Upozornění: Tento parametr není možné nastavit prostřednictvím data atributu v HTML.
|
maxLength |
Typ: integer |
Výchozí: null |
Ukázka: 8 |
Nastavuje maximální délku, kterou může text v poli mít.
Upozornění: Není doporučeno souběžné používání parametrů
"maxLength" a "mask".
|
minLength |
Typ: integer |
Výchozí: null |
Ukázka: 3 |
Nastavuje minimální délku, kterou musí text v poli mít.
Upozornění: Není doporučeno souběžné používání parametrů
"minLength" a "mask".
|
placeholder |
Typ: string |
Výchozí: null |
Ukázka: 'Vyplňte...' |
Určuje placeholder daného formulářového pole.
|
required |
Typ: bool |
Výchozí: undefined |
Určuje, zda musí být pole vyplněno (nebo musí mít vybranou nějakou hodnotu).
|
label |
Typ: string |
Výchozí: undefined |
Ukázka: 'Email' |
Nastavuje popisek (label) pro dané pole. Pokud není parametr použit (není zadána hodnota),
formulářové pole bude vygenerováno bez popisku.
|
value |
Typ: string|number |
Výchozí: undefined |
Ukázka: 'test' |
Parametr obsahující hodnotu formulářového pole.
Upozornění: Silně není doporučeno měnit parametr "value" po inicializaci pole.
|
readonly |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole pouze pro čtení (to znamená nijak nereagovat na input uživatele).
|
disabled |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole neaktivní (nereagovat na input uživatele a ani neodesílat hodnotu na server).
|
URL input
<input id='test4' name='test4' type='text' value='on'>
<script type='module' async>
import {HaiInput} from './classes/hai-input-class.js';
let test4 = document.getElementById('test4');
let parameters = {label: 'Test 4'}
let haiInput =
await HaiInput.create('switch', test4, parameters);
</script>
Standardní inputy typu URL nabízí pouze velmi omezenou kontrolu validity zadané adresy.
Naproti tomu knihovna Hai Form umožňuje povolení nebo naopak zákaz jednotlivých částí
URL adresy jako je port, uživatelské jméno a heslo, nebo cesta. Stejně tak je možné povolit pouze
specifický seznam protokolů a vybrat protokol, který má být automaticky doplňován, pakliže
uživatel žádný neuvede.
allowedSchemes |
Typ: array |
Výchozí: ['http', 'https'] |
Ukázka: ['ftp'] |
Určuje povolené protokoly, kterými může URL začínat.
|
defaultScheme |
Typ: string|null |
Výchozí: 'http' |
Ukázka: 'https' |
Nastavuje výchozí protokol, který bude automaticky doplněn, pokud URL zadaná do
pole nebude žádný protokol obsahovat. Hodnota null znamená deaktivaci funkce
automatického doplnění protokolu.
|
requireHost |
Typ: bool |
Výchozí: true |
Udává, jestli musí URL obsahovat hosta, to jest doménu nebo IP. Nutno vypnout v situaci,
kdy chcete povolit kupříklad zadávání datových URL (například "data:,Ahoj").
|
allowPart |
Typ: object |
Výchozí: viz popis |
Objekt udávající povolení nebo naopak zákaz jednotlivých částí URL, jak se specifikuje kupříkladu
Wikipedie.
Výchozí nastavení je následující:
{
userInfo: false,
port: false,
path: true,
query: true,
fragment: false
}
|
stripPart |
Typ: object |
Výchozí: viz popis |
Objekt s nastavením částí, které se mají z URL zadané do pole automaticky oříznout. Toto
lze nastavit pouze pro parametry dotazu a pro fragment.
Výchozí nastavení je následující:
{
query: false,
fragment: true
}
|
mask |
Typ: string |
Výchozí: null |
Ukázka: '000 - AAA' |
Parametr pro nastavení masky textového pole. Jako masku lze využít
libovolný text, přičemž některé znaky (tokeny) mohou mít speciální
význam. Význam tokenů lze nastavit prostřednictvím parametru "maskTokens".
|
maskTokens |
Typ: object |
Výchozí: null |
Ukázka: {'#': /\d/} |
Nastavuje význam tokenů využívaných v masce. Pokud není parametr nastaven, použije se výchozí
nastavení tokenů.
Ukázka výchozího nastavení tokenů:
{
'0': {pattern: /\d/},
'A': {pattern: /[a-zA-Z0-9]/},
'S': {pattern: /[a-zA-Z]/},
'!': {escape: true}
}
Upozornění: Tento parametr není možné nastavit prostřednictvím data atributu v HTML.
|
maxLength |
Typ: integer |
Výchozí: null |
Ukázka: 8 |
Nastavuje maximální délku, kterou může text v poli mít.
Upozornění: Není doporučeno souběžné používání parametrů
"maxLength" a "mask".
|
minLength |
Typ: integer |
Výchozí: null |
Ukázka: 3 |
Nastavuje minimální délku, kterou musí text v poli mít.
Upozornění: Není doporučeno souběžné používání parametrů
"minLength" a "mask".
|
placeholder |
Typ: string |
Výchozí: null |
Ukázka: 'Vyplňte...' |
Určuje placeholder daného formulářového pole.
|
required |
Typ: bool |
Výchozí: undefined |
Určuje, zda musí být pole vyplněno (nebo musí mít vybranou nějakou hodnotu).
|
label |
Typ: string |
Výchozí: undefined |
Ukázka: 'Email' |
Nastavuje popisek (label) pro dané pole. Pokud není parametr použit (není zadána hodnota),
formulářové pole bude vygenerováno bez popisku.
|
value |
Typ: string|number |
Výchozí: undefined |
Ukázka: 'test' |
Parametr obsahující hodnotu formulářového pole.
Upozornění: Silně není doporučeno měnit parametr "value" po inicializaci pole.
|
readonly |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole pouze pro čtení (to znamená nijak nereagovat na input uživatele).
|
disabled |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole neaktivní (nereagovat na input uživatele a ani neodesílat hodnotu na server).
|
Switch input
<input id='test4' name='test4' type='text' value='on'>
<script type='module' async>
import {HaiInput} from './classes/hai-input-class.js';
let test4 = document.getElementById('test4');
let parameters = {label: 'Test 4'}
let haiInput =
await HaiInput.create('switch', test4, parameters);
</script>
Přepínač je typ pole, který je velmi známý a běžně používaný zejména na mobilních zařízeních,
ale HTML5 ho ve svém základu nenabízí. Proto knihovna Hai Form toto pole přidává, a to rovnou
ve dvou variantách, kdy může uživatel vybírat buď ze dvou, nebo více hodnot.
variant |
Typ: string |
Výchozí: 'on/off' |
Ukázka: 'multiple' |
Určuje variantu přepínače. Na výběr jsou 2: dvoustavová ('on/off') a vícestaavová ('multiple').
Pokud jsou přes parametr 'options' zadány více než 2 přepínatelné možnosti, je parametr 'variant'
ignorován a automaticky se používá varianta 'multiple'.
|
options |
Typ: array |
Výchozí: ['', 'on'] |
Ukázka: ['0', '1'] |
Nastavuje možnosti, mezi kterými může uživatel v poli přepínat. Může být zadáváno dvěma způsoby,
buď prostřednictvím pole textových řetězců, nebo objektů. Pole lze použít jen ve variantě 'on/off',
kdy přepínač nepotřebuje popisky pro jednotlivé hodnoty. Obě položky pole jsou považovány za skutečné
hodnoty (value).
Druhým způsobem zadání položek přes parametr 'options' je ve formě pole objektů, který musí obsahovat
položky 'value' a 'label'. Ukázka pole objektů:
[
{
value: 'php',
label: 'PHP'
},
{
value: 'js',
label: 'Javascript'
},
{
value: 'py',
label: 'Python'
}
]
Poznámka: Tento parametr má přednost před parametrem 'list'.
Upozornění: Tento parametr není možné nastavit prostřednictvím data atributu v HTML.
|
list |
Typ: string |
Výchozí: null |
Ukázka: 'datalist-1' |
Určuje ID datalistu, ze kterého se mají načíst položky, se kterými bude pole pracovat.
|
optionOnValue |
Typ: string |
Výchozí: null |
Ukázka: 'on' |
Ve variantě 'on/off' přepínače určuje, která hodnota má být považována za hodnotu 'zapnuto'. Pokud
parametr není nastaven, je za zapnutou hodnotu považována druhá přepínatelná možnost.
Ve variantě 'multiple' přepínače není parametr 'optionOnValue' nijak používán.
|
required |
Typ: bool |
Výchozí: undefined |
Určuje, zda musí být pole vyplněno (nebo musí mít vybranou nějakou hodnotu).
|
label |
Typ: string |
Výchozí: undefined |
Ukázka: 'Email' |
Nastavuje popisek (label) pro dané pole. Pokud není parametr použit (není zadána hodnota),
formulářové pole bude vygenerováno bez popisku.
|
value |
Typ: string|number |
Výchozí: undefined |
Ukázka: 'test' |
Parametr obsahující hodnotu formulářového pole.
Upozornění: Silně není doporučeno měnit parametr "value" po inicializaci pole.
|
readonly |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole pouze pro čtení (to znamená nijak nereagovat na input uživatele).
|
disabled |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole neaktivní (nereagovat na input uživatele a ani neodesílat hodnotu na server).
|
Switch input (varianta multiple)
<input id='test5' name='test5' type='text' value='py'>
<datalist id='test5-datalist'>
<option value='php'>PHP</option>
<option value='js'>Javascript</option>
<option value='py'>Python</option>
</datalist>
<script type='module' async>
import {HaiInput} from './classes/hai-input-class.js';
let test5 = document.getElementById('test5');
let parameters = {list: 'test5-datalist', label: 'Test 5'};
let haiInput =
await HaiInput.create('switch', test5, parameters);
</script>
Přepínač je typ pole, který je velmi známý a běžně používaný zejména na mobilních zařízeních,
ale HTML5 ho ve svém základu nenabízí. Proto knihovna Hai Form toto pole přidává, a to rovnou
ve dvou variantách, kdy může uživatel vybírat buď ze dvou, nebo více hodnot.
variant |
Typ: string |
Výchozí: 'on/off' |
Ukázka: 'multiple' |
Určuje variantu přepínače. Na výběr jsou 2: dvoustavová ('on/off') a vícestaavová ('multiple').
Pokud jsou přes parametr 'options' zadány více než 2 přepínatelné možnosti, je parametr 'variant'
ignorován a automaticky se používá varianta 'multiple'.
|
options |
Typ: array |
Výchozí: ['', 'on'] |
Ukázka: ['0', '1'] |
Nastavuje možnosti, mezi kterými může uživatel v poli přepínat. Může být zadáváno dvěma způsoby,
buď prostřednictvím pole textových řetězců, nebo objektů. Pole lze použít jen ve variantě 'on/off',
kdy přepínač nepotřebuje popisky pro jednotlivé hodnoty. Obě položky pole jsou považovány za skutečné
hodnoty (value).
Druhým způsobem zadání položek přes parametr 'options' je ve formě pole objektů, který musí obsahovat
položky 'value' a 'label'. Ukázka pole objektů:
[
{
value: 'php',
label: 'PHP'
},
{
value: 'js',
label: 'Javascript'
},
{
value: 'py',
label: 'Python'
}
]
Poznámka: Tento parametr má přednost před parametrem 'list'.
Upozornění: Tento parametr není možné nastavit prostřednictvím data atributu v HTML.
|
list |
Typ: string |
Výchozí: null |
Ukázka: 'datalist-1' |
Určuje ID datalistu, ze kterého se mají načíst položky, se kterými bude pole pracovat.
|
optionOnValue |
Typ: string |
Výchozí: null |
Ukázka: 'on' |
Ve variantě 'on/off' přepínače určuje, která hodnota má být považována za hodnotu 'zapnuto'. Pokud
parametr není nastaven, je za zapnutou hodnotu považována druhá přepínatelná možnost.
Ve variantě 'multiple' přepínače není parametr 'optionOnValue' nijak používán.
|
required |
Typ: bool |
Výchozí: undefined |
Určuje, zda musí být pole vyplněno (nebo musí mít vybranou nějakou hodnotu).
|
label |
Typ: string |
Výchozí: undefined |
Ukázka: 'Email' |
Nastavuje popisek (label) pro dané pole. Pokud není parametr použit (není zadána hodnota),
formulářové pole bude vygenerováno bez popisku.
|
value |
Typ: string|number |
Výchozí: undefined |
Ukázka: 'test' |
Parametr obsahující hodnotu formulářového pole.
Upozornění: Silně není doporučeno měnit parametr "value" po inicializaci pole.
|
readonly |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole pouze pro čtení (to znamená nijak nereagovat na input uživatele).
|
disabled |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole neaktivní (nereagovat na input uživatele a ani neodesílat hodnotu na server).
|
Password
<input id='test-password-1' name='test-password-1' type='password' autoComplete='new-password' value=''>
<script type='module' async>
import {HaiInput} from './hai-form/hai-input-class.esm.min.js';
let test_password_1 = document.getElementById('test-password-1');
let parameters = {
label: 'Test password 1',
placeholder: 'Napiště heslo...',
newPassword: true,
minEntropy: 60,
requiredCharacters: {
lowercaseLetter: 2,
uppercaseLetter: 3,
number: 1,
special: 1,
}
};
let haiInput = await HaiInput.create('password', test_password_1, parameters);
</script>
Pole pro zadávání hesel v knihovně Hai Form nabízí speciální funkce určené pro
tvorbu nového hesla, konkrétně umožňuje stanovit požadovaný počet konkrétních
typů znaků (malých nebo velkých písmen, číslic a speciálních znaků), které musí nové
heslo obsahovat. Spolu s tím je také možné určit minimální sílu hesla.
Ta se defaultně počítá pomocí entropie, ale je možné použít i vlastní,
sofistikovanější funkci (která kupříkladu používá i slovníky nejčastějších hesel).
required |
Typ: bool |
Výchozí: undefined |
Určuje, zda musí být pole vyplněno (nebo musí mít vybranou nějakou hodnotu).
|
label |
Typ: string |
Výchozí: undefined |
Ukázka: 'Email' |
Nastavuje popisek (label) pro dané pole. Pokud není parametr použit (není zadána hodnota),
formulářové pole bude vygenerováno bez popisku.
|
value |
Typ: string|number |
Výchozí: undefined |
Ukázka: 'test' |
Parametr obsahující hodnotu formulářového pole.
Upozornění: Silně není doporučeno měnit parametr "value" po inicializaci pole.
|
readonly |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole pouze pro čtení (to znamená nijak nereagovat na input uživatele).
|
disabled |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole neaktivní (nereagovat na input uživatele a ani neodesílat hodnotu na server).
|
Password (custom strength function)
<input id='test-password-2' name='test-password-2' type='password' autocomplete='new-password' value=''>
<script type='module' async>
import {HaiInput} from './hai-form/hai-input-class.esm.min.js';
import {zxcvbn, zxcvbnOptions} from './ext-libraries/zxcvbn-ts/core.js';
import zxcvbnCommonPackage from './ext-libraries/zxcvbn-ts/language-common.js';
import zxcvbnEnPackage from './ext-libraries/zxcvbn-ts/language-en.js';
let options =
{
translations: zxcvbnEnPackage.translations,
graphs: zxcvbnCommonPackage.adjacencyGraphs,
dictionary: {
...zxcvbnCommonPackage.dictionary,
...zxcvbnEnPackage.dictionary,
},
useLevenshteinDistance: true
}
zxcvbnOptions.setOptions(options);
let customFunction = (password) => {
return zxcvbn(password).score;
};
let test_password_2 = document.getElementById('test-password-2');
let parameters = {
label: 'Test password 2',
placeholder: 'Napiště heslo...',
newPassword: true,
customPasswordCalcFun: customFunction,
minPasswordStrength: 3
};
let haiInput = await HaiInput.create('password', test_password_2, parameters);
</script>
Pole pro zadávání hesel v knihovně Hai Form nabízí speciální funkce určené pro
tvorbu nového hesla, konkrétně umožňuje stanovit požadovaný počet konkrétních
typů znaků (malých nebo velkých písmen, číslic a speciálních znaků), které musí nové
heslo obsahovat. Spolu s tím je také možné určit minimální sílu hesla.
Ta se defaultně počítá pomocí entropie, ale je možné použít i vlastní,
sofistikovanější funkci (která kupříkladu používá i slovníky nejčastějších hesel).
required |
Typ: bool |
Výchozí: undefined |
Určuje, zda musí být pole vyplněno (nebo musí mít vybranou nějakou hodnotu).
|
label |
Typ: string |
Výchozí: undefined |
Ukázka: 'Email' |
Nastavuje popisek (label) pro dané pole. Pokud není parametr použit (není zadána hodnota),
formulářové pole bude vygenerováno bez popisku.
|
value |
Typ: string|number |
Výchozí: undefined |
Ukázka: 'test' |
Parametr obsahující hodnotu formulářového pole.
Upozornění: Silně není doporučeno měnit parametr "value" po inicializaci pole.
|
readonly |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole pouze pro čtení (to znamená nijak nereagovat na input uživatele).
|
disabled |
Typ: bool |
Výchozí: false |
Určuje, zda má být pole neaktivní (nereagovat na input uživatele a ani neodesílat hodnotu na server).
|