j-Editable
Táto zložka môže upravovať všetky prvky s triedou editable. funguje s hodnotami data-bind alebo dynamiky.
Konfigurácia:
autofocus{Boolean} sa zameriava na prvú položku (predvolené:false)validate{Boolean} môže vypnúť validáciu (predvolené:true)disabled{Boolean} môže vypnúť úpravu (pridáva triedyui-editable-disabledaui-editable-enabled), predvolené:falsechanged{String} voliteľné, odkaz na metódu alebo cestu --> bude obsahovať objekt s zmenenými hodnotami ibaenter{String} voliteľné, odkaz na metódumethod(path, value, el), metóda sa vykonáva, ak používateľ stlačíENTERescape{String} voliteľné, odkaz na metódumethod(path, value, el), metóda sa vykonáva, ak používateľ stlačíESCcan{String} voliteľné, odkaz na metódumethod(opt, el)musí vrátiťboolean, to znamenácan edit?error{String} voliteľné, odkaz na metódumethod(el, isInvalid, meta)sa hodnotí, keď je položka neplatná a naopak- NEW
class {String}voliteľné, pridáva názov triedy vo formuláriui-editable-CLASS(predvolené:default)
data-editable charakterizuje správanie:
path{String} relatívna cesta k majetku (môže byť zdedená zdata-bindautomaticky)required{Boolean} voliteľné, povolí "povinné" (predvolené:false)type{String} voliteľné, môže byťstring(predvolené),date,number,boolean,emailalebohtmlNEWtagscan{String} voliteľné, cesta kfunction(opt, el)musí vrátiťboolean, to znamenácan edit?save{String} voliteľné, cesta kfunction(opt, accepted(boolean)),acceptedfunkcia musí byť hodnotenáformat{String} voliteľný, formát predate, predvolený:yyyy-MM-dddirsource{String} voliteľné, cesta k zdroju údajovdircustom{String/Boolean} voliteľné, môže obsahovať cestu kfunction(val, next(new_val))alebo môže byťBoolean. Táto možnosť umožňuje pridávanie vlastnej hodnoty (hodnota nie je definovaná v zdroji údajov)dirrender{String} voliteľné, cesta kfunction(item, text)(musí vrátiť HTML prej-Directory), táto funkcia môže ovplyvniť zoznam položiek vj-Directorydirminwidth{Číslo} voliteľné, minimálna šírka prej-Directory, predvolená:200dirmaxwidth{Číslo} voliteľné, maximálna šírka prej-Directorydirplaceholder{String} voliteľné, umiestnenie prej-Directorydirempty{String} voliteľné, pridáva prázdne pole prej-Directorydirkey{String} voliteľné, kľúčové meno pre čítanietextvdirsource(predvolené:name)dirvalue{String} voliteľné, kľúčové meno pre čítanievaluevdirsource(predvolené:id)dirsearch{Boolean} voliteľné, môžete vypnúť vyhľadávanie prej-Directoryautosource{String} cesta k funkciisearchvautocomplete,function(search, render(arr))autovalue{String} vlastnosť trasa pre hodnotu vautosourcemaxlength{Číslo} maxlengthminvalue{Číslo} min. hodnota pre typ čísla (predvolené:undefined)maxvalue{Číslo} maximálna hodnota pre typ čísla (predvolená hodnota:undefined)rebind{Boolean} aktrueprepájadata-bindlen na tento prvok (predvolené:0)validate{String} voliteľný, podmienka pre validáciu hodnoty, môže obsahovať odkaz nafunction(value)alebo!!value.match(/[a-z]+/)multiline{Boolean} voliteľné, umožňuje multiline + prílohy triedyeditable-multiline(inline-block+width:100%) pri úprave (predvolené:false)raw{Boolean} voliteľné, keďtruepotom aktuálny obsah HTML bude ako umiestnený, ak je hodnotanullable(predvolená:true)accept{String} voliteľné, podmienka pre prijatie hodnoty, môže obsahovať odkaz nafunction(value)alebo!!value.match(/[a-z]+/)je podobnývalidateempty{String} voliteľné, umožňuje prázdnu hodnotu a môže obsahovať prázdny štítok alebo1alebotruepre autorebindz väzbyinvalid{String} voliteľné, odkaz na metódumethod(el, isInvalid, meta)sa hodnotí, keď je položka neplatná a naopak
Metódy:
- NEW:
component.changed()vráti objekt s zmenenými údajmi
Je dobré vedieť:
- Ak používateľ stlačí niektoré
keypotom editovateľný prvok bude obsahovať triedukeypressedtak dlho, kým neopustí kontrolu - Každý zmenený prvok bude obsahovať triedu
changed - Ak sa niektoré hodnoty zmenia, hlavný prvok bude obsahovať triedu
ui-editable-changed - Ak má prvok
data-bindsempty, potom sa vyčistí po zameraní - NEW teraz podporuje typ
tags. V súčasnosti podporuje len srebindadata-bind. (data-bindtemplates{jQuery selector}práce z+v18) - NEW ak prvok (__ alebo rodič, alebo rodičia_) obsahuje atribút
data-disabled="1", ovládací prvok bude vypnutý - NEW skryté a deaktivované prvky nebudú validované
Použite ho so <ui-component name="editable">. Keď komponent ešte nie je načítaný, jComponent ho stiahne pri prvom použití z adresy v DEF.fallback (predvolene CDN Componentator). Autor: Peter Širka. Zdroj: úložisko komponentov Componentator, licencia MIT.
<style>
.changed {}
.changed::after { float: right; content: '+'; margin-left: 5px; font-weight: normal; color: orange; }
</style>
<ui-component name="LAZY datepicker"></ui-component>
<ui-component name="LAZY directory"></ui-component>
<ui-component name="editable" path="form">
<div style="width:500px;padding:10px;border:1px solid #E0E0E0">
<div class="row">
<div class="col-xs-3">
Name:
</div>
<div class="col-xs-9">
<ui-bind path="form.name" config="html" class="editable block" data-editable="required:true"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Email:
</div>
<div class="col-xs-9">
<ui-bind path="form.email" config="html" class="editable block" data-editable="required:1;type:email"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Nickname:
</div>
<div class="col-xs-9">
<ui-bind path="form.nickname" config="empty:Nickname;html" class="editable block" data-editable="required:true"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Framework:
</div>
<div class="col-xs-9">
<ui-bind class="editable block" config="html;empty:Choose a framework;change:renderframework" path="form.frameworkid" data-editable="dirsource:frameworks;"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Country:
</div>
<div class="col-xs-9">
<ui-bind path="form.countries" config="template:{#countrytags}" class="editable block" data-editable="rebind:1;dirsource:countries;type:tags"></ui-bind>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Date:
</div>
<div class="col-xs-9">
<ui-bind path="form.date" config="html:(new Date() || value).format('yyyy-MM-dd')" class="editable block" data-editable="type:date"></ui-bind>
</div>
</div>
</div>
<pre><ui-bind path="form" config="html:JSON.stringify(value, null, ' ')"></ui-bind></pre>
</ui-component>
<script type="text/html" id="countrytags">
{{ foreach m in value }}<span class="editable-tag"><i class="ti ti-times"></i>{{ m }}</span>{{ end }}
</script>
<script>
// Alternative to tags (ui-bind path="path" config="change:myfunc")
function myfunc(data, path, el) {
if (!data)
return el.html('');
var template = '<span class="tag"><i class="ti ti-times"></i>{0}</span>';
var html = '';
for (var i = 0; i < data.length; i++)
html += template.format(data[i]);
el.html(html);
}
var frameworks = [{ id: 0, name: 'Nothing', template: '<b>{{ name }}</b>' }, { id: 1, name: 'jComponent' }, { id: 2, name: 'Angular.js' }, { id: 3, name: 'React' }];
var countries = ['Slovakia', 'Poland', 'Hungary', 'Germany', 'USA', 'Austria', 'Poland', 'Czechia'];
var form = {};
form.date = new Date();
form.name = 'Peter Širka';
form.countries = ['Slovakia', 'Hungary'];
form.frameworkid = 0;
function renderframework(value, path, el) {
return value ? frameworks.findValue('id', value, 'name', DEF.empty) : DEF.empty;
}
</script>