Hai Form

GitHub

Textový input

HTML
Info
Data
Parametry
<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.
  • Globální parametry
  • 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

HTML
Info
Data
Parametry
<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.
  • Globální parametry
  • 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

HTML
Info
Data
Parametry
<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.
  • Globální parametry
  • 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

HTML
Info
Data
Parametry
<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.
  • Globální parametry
  • 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)

HTML
Info
Data
Parametry
<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.
  • Globální parametry
  • 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).

Select

HTML
Info
Data
Parametry
<select id='test6' name='test6[]' multiple>
    <option value='js' selected>Javascript</option>
    <option value='py'>Python</option>
    <option value='php' selected>PHP</option>
    <option value='c#'>C#</option>
    <option value='c++'>C++</option>
    <option value='f'>F</option>
    <option value='ts'>Typescript</option>
    <option value='xml'>XML</option>
    <option value='json'>JSON</option>
    <option value='html'>HTML</option>
    <option value='shell'>Shell</option>
    <option value='markdown'>Markdown</option>
    <option value='css'>CSS</option>
</select>

<script type='module' async>
    import {HaiInput} from './classes/hai-input-class.js';

    let test6 = document.getElementById('test6');
    let parameters = {label: 'Test 6', multiple: true};
    let haiInput =
        await HaiInput.create('select', test6, parameters);
</script>
                            
Oproti tradičním selectům nabízí rozbalovací nabídka knihovny Hai Form řadu vylepšení zahrnujících zejména responzivní zobrazení, možnost filtrování položek nabídky na základě zadaného textu, načtení dat z externího JSON souboru a výrazně uživatelsky přívětivější rozhraní pro nabídky s možností výběru více než jedné položky. (Pro filtrování je využívána externí knihvna Fuse.js.)
  • options
    Typ: array Výchozí: null Ukázka: viz popis
    Nastavuje položky rozbalovací nabídky, které si uživatel může vybírat. Pole musí obsahovat objekty, z nich každý musí mít 'value' a 'label', zvláštní význam mají ještě 'group' pro určení skupiny, do které má položka spadat, a 'selected', která určuje, jestli má být položka vybraná.
    Ukázka pole objektů:
    
    [
        {
            value: 'php',
            label: 'PHP',
            group: 'First Group'
        },
        {
            value: 'javascript',
            label: 'JS',
            group: 'First Group'
        },
        {
            value: 'xml',
            label: 'XML',
            group: 'Second Group',
            selected: true
        }
    ]
    
                    
    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.
  • optionsSource
    Typ: string Výchozí: null Ukázka: 'data.json'
    Udává adresu souboru, ze kterého se mají načíst data položek rozbalovací nabídky. Data musí být ve formátu JSON a splňovat stejou strukturu, jako když by byla zadána prostřednictvím parametru 'options'.
    Poznámka: Tento parametr má přednost před parametrem 'options' i před parametrem 'list'.
  • multiple
    Typ: bool Výchozí: false
    Určuje, jestli uživatel může z nabídky vybrat více než jednu položku.
  • enableSearch
    Typ: bool Výchozí: true
    Aktivuje nebo vypíná vyhledávání (filtrování) položek v rozbalovací nabídce.
  • Globální parametry
  • 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).

Select (option groups)

HTML
Info
Data
Parametry
<select id='test7' name='test7[]' multiple>
    <optgroup label='First group'>
        <option value='py'>Python</option>
        <option value='php' selected>PHP</option>
    </optgroup>
    <optgroup label='Second group'>
        <option value='css'>CSS</option>
        <option value='xml'>XML</option>
        <option value='html'>HTML</option>
    </optgroup>
    <optgroup label='Third group'>
        <option value='js' selected>Javascript</option>
        <option value='c#'>C#</option>
        <option value='c++'>C++</option>
        <option value='shell'>Shell</option>
        <option value='markdown'>Markdown</option>
    </optgroup>
</select>

<script type='module' async>
    import {HaiInput} from './classes/hai-input-class.js';

    let test7 = document.getElementById('test7');
    let parameters = {label: 'Test 7', multiple: true};
    let haiInput =
        await HaiInput.create('select', test7, parameters);
</script>
                            
Oproti tradičním selectům nabízí rozbalovací nabídka knihovny Hai Form řadu vylepšení zahrnujících zejména responzivní zobrazení, možnost filtrování položek nabídky na základě zadaného textu, načtení dat z externího JSON souboru a výrazně uživatelsky přívětivější rozhraní pro nabídky s možností výběru více než jedné položky. (Pro filtrování je využívána externí knihvna Fuse.js.)
  • options
    Typ: array Výchozí: null Ukázka: viz popis
    Nastavuje položky rozbalovací nabídky, které si uživatel může vybírat. Pole musí obsahovat objekty, z nich každý musí mít 'value' a 'label', zvláštní význam mají ještě 'group' pro určení skupiny, do které má položka spadat, a 'selected', která určuje, jestli má být položka vybraná.
    Ukázka pole objektů:
    
    [
        {
            value: 'php',
            label: 'PHP',
            group: 'First Group'
        },
        {
            value: 'javascript',
            label: 'JS',
            group: 'First Group'
        },
        {
            value: 'xml',
            label: 'XML',
            group: 'Second Group',
            selected: true
        }
    ]
    
                    
    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.
  • optionsSource
    Typ: string Výchozí: null Ukázka: 'data.json'
    Udává adresu souboru, ze kterého se mají načíst data položek rozbalovací nabídky. Data musí být ve formátu JSON a splňovat stejou strukturu, jako když by byla zadána prostřednictvím parametru 'options'.
    Poznámka: Tento parametr má přednost před parametrem 'options' i před parametrem 'list'.
  • multiple
    Typ: bool Výchozí: false
    Určuje, jestli uživatel může z nabídky vybrat více než jednu položku.
  • enableSearch
    Typ: bool Výchozí: true
    Aktivuje nebo vypíná vyhledávání (filtrování) položek v rozbalovací nabídce.
  • Globální parametry
  • 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).

Select (single)

HTML
Info
Data
Parametry
<select id='test8' name='test8'>
    <option value='js' selected>Javascript</option>
    <option value='py'>Python</option>
    <option value='php' selected>PHP</option>
    <option value='c#'>C#</option>
    <option value='c++'>C++</option>
    <option value='f'>F</option>
    <option value='ts'>Typescript</option>
    <option value='xml'>XML</option>
    <option value='json'>JSON</option>
    <option value='html'>HTML</option>
    <option value='shell'>Shell</option>
    <option value='markdown'>Markdown</option>
    <option value='css'>CSS</option>
</select>

<script type='module' async>
    import {HaiInput} from './classes/hai-input-class.js';

    let test8 = document.getElementById('test8');
    let parameters = {label: 'Test 8'};
    let haiInput =
        await HaiInput.create('select', test8, parameters);
</script>
                            
Oproti tradičním selectům nabízí rozbalovací nabídka knihovny Hai Form řadu vylepšení zahrnujících zejména responzivní zobrazení, možnost filtrování položek nabídky na základě zadaného textu, načtení dat z externího JSON souboru a výrazně uživatelsky přívětivější rozhraní pro nabídky s možností výběru více než jedné položky. (Pro filtrování je využívána externí knihvna Fuse.js.)
  • options
    Typ: array Výchozí: null Ukázka: viz popis
    Nastavuje položky rozbalovací nabídky, které si uživatel může vybírat. Pole musí obsahovat objekty, z nich každý musí mít 'value' a 'label', zvláštní význam mají ještě 'group' pro určení skupiny, do které má položka spadat, a 'selected', která určuje, jestli má být položka vybraná.
    Ukázka pole objektů:
    
    [
        {
            value: 'php',
            label: 'PHP',
            group: 'First Group'
        },
        {
            value: 'javascript',
            label: 'JS',
            group: 'First Group'
        },
        {
            value: 'xml',
            label: 'XML',
            group: 'Second Group',
            selected: true
        }
    ]
    
                    
    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.
  • optionsSource
    Typ: string Výchozí: null Ukázka: 'data.json'
    Udává adresu souboru, ze kterého se mají načíst data položek rozbalovací nabídky. Data musí být ve formátu JSON a splňovat stejou strukturu, jako když by byla zadána prostřednictvím parametru 'options'.
    Poznámka: Tento parametr má přednost před parametrem 'options' i před parametrem 'list'.
  • multiple
    Typ: bool Výchozí: false
    Určuje, jestli uživatel může z nabídky vybrat více než jednu položku.
  • enableSearch
    Typ: bool Výchozí: true
    Aktivuje nebo vypíná vyhledávání (filtrování) položek v rozbalovací nabídce.
  • Globální parametry
  • 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).

Select (data given in parameter)

HTML
Info
Data
Parametry
<input id='test9' name='test9'>

<script type='module' async>
    import {HaiInput} from './classes/hai-input-class.js';

    let test9 = document.getElementById('test9');
    let parameters = {
        label: 'Test 9',
        enableSearch: false,
        options:
        [
            {
                value: 'php',
                label: 'PHP',
                group: 'First Group'
            },
            {
                value: 'javascript',
                label: 'JS',
                group: 'First Group'
            },
            {
                value: 'xml',
                label: 'XML',
                group: 'Second Group',
                selected: true
            },
            {
                value: 'json',
                label: 'JSON',
                group: 'Second Group'
            }
        ]};
    let haiInput =
        await HaiInput.create('select', test9, parameters);
</script>
                            
Oproti tradičním selectům nabízí rozbalovací nabídka knihovny Hai Form řadu vylepšení zahrnujících zejména responzivní zobrazení, možnost filtrování položek nabídky na základě zadaného textu, načtení dat z externího JSON souboru a výrazně uživatelsky přívětivější rozhraní pro nabídky s možností výběru více než jedné položky. (Pro filtrování je využívána externí knihvna Fuse.js.)
  • options
    Typ: array Výchozí: null Ukázka: viz popis
    Nastavuje položky rozbalovací nabídky, které si uživatel může vybírat. Pole musí obsahovat objekty, z nich každý musí mít 'value' a 'label', zvláštní význam mají ještě 'group' pro určení skupiny, do které má položka spadat, a 'selected', která určuje, jestli má být položka vybraná.
    Ukázka pole objektů:
    
    [
        {
            value: 'php',
            label: 'PHP',
            group: 'First Group'
        },
        {
            value: 'javascript',
            label: 'JS',
            group: 'First Group'
        },
        {
            value: 'xml',
            label: 'XML',
            group: 'Second Group',
            selected: true
        }
    ]
    
                    
    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.
  • optionsSource
    Typ: string Výchozí: null Ukázka: 'data.json'
    Udává adresu souboru, ze kterého se mají načíst data položek rozbalovací nabídky. Data musí být ve formátu JSON a splňovat stejou strukturu, jako když by byla zadána prostřednictvím parametru 'options'.
    Poznámka: Tento parametr má přednost před parametrem 'options' i před parametrem 'list'.
  • multiple
    Typ: bool Výchozí: false
    Určuje, jestli uživatel může z nabídky vybrat více než jednu položku.
  • enableSearch
    Typ: bool Výchozí: true
    Aktivuje nebo vypíná vyhledávání (filtrování) položek v rozbalovací nabídce.
  • Globální parametry
  • 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).

Select (data from remote file)

HTML
Info
Data
Parametry
<input id='test10' name='test10[]'>

<script type='module' async>
    import {HaiInput} from './classes/hai-input-class.js';

    let test10 = document.getElementById('test10');
    let parameters = {
        label: 'Test 10',
        placeholder: 'Click to select',
        optionsSource: 'employee-data.json',
        multiple: true
    };
    let haiInput =
        await HaiInput.create('select', test10, parameters);
</script>
                            
Oproti tradičním selectům nabízí rozbalovací nabídka knihovny Hai Form řadu vylepšení zahrnujících zejména responzivní zobrazení, možnost filtrování položek nabídky na základě zadaného textu, načtení dat z externího JSON souboru a výrazně uživatelsky přívětivější rozhraní pro nabídky s možností výběru více než jedné položky. (Pro filtrování je využívána externí knihvna Fuse.js.)
  • options
    Typ: array Výchozí: null Ukázka: viz popis
    Nastavuje položky rozbalovací nabídky, které si uživatel může vybírat. Pole musí obsahovat objekty, z nich každý musí mít 'value' a 'label', zvláštní význam mají ještě 'group' pro určení skupiny, do které má položka spadat, a 'selected', která určuje, jestli má být položka vybraná.
    Ukázka pole objektů:
    
    [
        {
            value: 'php',
            label: 'PHP',
            group: 'First Group'
        },
        {
            value: 'javascript',
            label: 'JS',
            group: 'First Group'
        },
        {
            value: 'xml',
            label: 'XML',
            group: 'Second Group',
            selected: true
        }
    ]
    
                    
    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.
  • optionsSource
    Typ: string Výchozí: null Ukázka: 'data.json'
    Udává adresu souboru, ze kterého se mají načíst data položek rozbalovací nabídky. Data musí být ve formátu JSON a splňovat stejou strukturu, jako když by byla zadána prostřednictvím parametru 'options'.
    Poznámka: Tento parametr má přednost před parametrem 'options' i před parametrem 'list'.
  • multiple
    Typ: bool Výchozí: false
    Určuje, jestli uživatel může z nabídky vybrat více než jednu položku.
  • enableSearch
    Typ: bool Výchozí: true
    Aktivuje nebo vypíná vyhledávání (filtrování) položek v rozbalovací nabídce.
  • placeholder
    Typ: string Výchozí: null Ukázka: 'Vyplňte...'
    Určuje placeholder daného formulářového pole.
  • Globální parametry
  • 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).

File

HTML
Info
Data
Parametry
<input id='test11' name='test11[]' type='file'>

<script type='module' async>
    import {HaiInput} from './classes/hai-input-class.js';

    let test11 = document.getElementById('test11');
    let parameters = {
        label: 'Test 11',
        multiple: true,
        maxFilesCount: 5,
        allowedFileTypes: ['.pdf', 'image/*', 'text/css'],
        maxFileSize: 15_000_000
    };
    let haiInput =
        await HaiInput.create('file', test11, parameters);
</script>
                            
Nahrávací pole je v knihovně Hai Form realizováno odlišně oproti většině javascriptových knihoven jako je kupříkladu Dropzone. Na rozdíl od nich neumí nahrávací pole v knihovně Hai Form samo uploadovat soubory na server, ale funguje prakticky jako grafické rozhraní pro klasický input typu file, který se odesílá normálně se zbytkem formuláře.
  • multiple
    Typ: bool Výchozí: false
    Určuje, jestli uživatel může vybrat více než jeden soubor.
    Upozornění: V případě povolení více souborů je možné vybrat stejný soubor vícekrát.
  • maxFilesCount
    Typ: integer Výchozí: null Ukázka: 4
    Nastavuje maximální počet souborů, který může uživatel vybrat k nahrání. Pokud není parametr nastaven, může uživatel vybrat libovolný počet souborů. Pokud je parametr 'multiple' nastaven na false, je parametr 'maxFilesCount' ignorován.
  • maxFileSize
    Typ: integer Výchozí: null Ukázka: 8000
    Nastavuje maximální velikost v Bytech, kterou můžou mít jednotlivé soubory vybrané uživatelem. Pokud není parametr nastaven, může uživatel vybrat soubory libovolné velikosti.
  • maxTotalSize
    Typ: integer Výchozí: null Ukázka: 8000
    Nastavuje maximální celkovou velikost v Bytech, kterou můžou mít (dohromady) soubory vybrané uživatelem. Pokud není parametr nastaven, můžou mít vybrané soubory celkově libovolnou velikost.
  • allowedFileTypes
    Typ: array|string Výchozí: null Ukázka: ['.pdf', 'image/*']
    Určuje povolené typu souborů, které může uživatel vybrat. Typy můžou být zadány přes pole textových řetězců nebo po vzoru HTML atributu 'accept', tedy jako jeden textový řetězec, ve kterém jsou jednotlivé typy odděleny čárkami. Pokud není parametr nastaven, může uživatel vybrat soubory libovolného typu.
    Upozornění: Kontrola typů je prováděna pouze na základě přípony souboru a nelze ji proto považovat za zcela důvěryhodnou.
  • Globální parametry
  • 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).

WYSIWYG

HTML
Info
Data
Parametry
<input id='test-wysiwyg-1' name='test-wysiwyg-1' type='text'>

<script type='module' async>
    import {HaiInput} from './hai-form/hai-input-class.esm.min.js';

    let test_wysiwyg_1 = document.getElementById('test-wysiwyg-1');
    let parameters = {
        label: 'Test WYSIWYG 1',
        placeholder: 'Napiště komentář...'
    };
    let haiInput = await HaiInput.create('textarea', test_wysiwyg_1, parameters);
</script>
                            
WYSIWYG editor v knihovně Hai Form nabízí základní možnost formátování textu, přičemž je možné vybrat, která tlačítka nástrojové lišty se mají zobrazit. Je však vhodné upozornit na dvě věci:
  1. Knihovna Hai Form v současné době nehlídá, zda uživatel nepropašoval do editoru i jiné tagy, než které jsou nezbytné pro formátování vybranými tlačítky nástrojkové lišty.
  2. WYSIWYG editor v knihovně Hai Form využívá pro formátování už dlouho zavrženou (deprecated) funkci window.execCommand(). Nelze tedy zaručit, že ji budou webové prohlížeče v budoucnu podporovat. Její opuštění není v současné době pravděpodobné vzhledem ke zpětné kompatibilitě, tomu, že za tuto funkci neexistuje žádná náhrada, a využívají ji i jiné WYSIWYG editory. Přesto je vhodné brát na tuto skutečnost zřetel.
  • placeholder
    Typ: string Výchozí: null Ukázka: 'Vyplňte...'
    Určuje placeholder daného formulářového pole.
  • maxLength
    Typ: integer Výchozí: null Ukázka: 100
    Nastavuje maximální počet znaků, který může text v editoru mít (nepočítají se HTML elementy).
  • minLength
    Typ: integer Výchozí: null Ukázka: 15
    Nastavuje minimální počet znaků, který musí text v editoru mít (nepočítají se HTML elementy).
  • maxHtmlLength
    Typ: integer Výchozí: null Ukázka: 100
    Nastavuje maximální počet znaků, který může text v editoru mít (včetně HTML elementů).
  • Globální parametry
  • 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

HTML
Info
Data
Parametry
<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).
  • Globální parametry
  • 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)

HTML
Info
Data
Parametry
<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).
  • Globální parametry
  • 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).