j-Editable
Ten składnik może edytować wszystkie elementy z klasą editable. działa z wartościami data-bind lub dynamicznymi.
Konfiguracja:
autofocus{Boolean} koncentruje się na pierwszym punkcie (default:false)validate{Boolean} może wyłączyć weryfikację (default:true)disabled{Boolean} może wyłączyć edycję (dodaje klasęui-editable-disablediui-editable-enabled), wstępnie:falsechanged{String} opcjonalny, link do metody lub drogi --> będzie zawierać obiekt z zmienionymi wartościami tylkoenter{String} opcjonalny, link do metodymethod(path, value, el), metoda jest wykonywana, jeśli użytkownik naciśnijENTERescape{String} opcjonalny, link do metodymethod(path, value, el), metoda jest wykonywana, jeśli użytkownik naciśnijESCcan{String} opcjonalny, link do metodymethod(opt, el)musi zwrócićboolean, oznacza to, żecan edit?error{String} opcjonalne, link do metodymethod(el, isInvalid, meta)jest oceniany, gdy element jest nieważny i odwrotnie- NEW
class {String}opcjonalny, dodaje nazwę klasy w formularzuui-editable-CLASS(default:default)
Wskaźnik data-editable opisuje zachowanie:
path{String} relative path do własności (można odziedziczyć zdata-bindautomatycznie)required{Boolean} opcjonalne, umożliwia "wymagane" (default:false)type{String} opcjonalny, może byćstring(default),date,number,boolean,emaillubhtmlNEWtagscan{String} opcjonalny, droga dofunction(opt, el)musi powrócić doboolean, co oznacza, żecan edit?save{String} opcjonalny, trasa dofunction(opt, accepted(boolean)), funkcjaacceptedmusi być ocenianaformat{String} opcjonalny, format dladate, domyślny:yyyy-MM-dddirsource{String} opcjonalny, droga do źródła danychdircustom{String/Boolean} opcjonalny, może zawierać ścieżkę dofunction(val, next(new_val))lub może byćBoolean.dirrender{String} opcjonalny, ścieżka dofunction(item, text)(musisz zwrócić HTML dlaj-Directory), ta funkcja może wpływać na listę elementów wj-Directorydirminwidth{Liczba} opcjonalne, minimalna szerokość dlaj-Directory, domyślnie:200dirmaxwidth{Liczba} opcjonalne, maksymalna szerokość dlaj-Directorydirplaceholder{String} opcjonalne, miejsce dlaj-Directorydirempty{String} opcjonalnie, dodaje puste pole dlaj-Directorydirkey{String} opcjonalne, nazwa kluczowa do czytaniatextwdirsource(default:name)dirvalue{String} opcjonalne, nazwa kluczowa do czytaniavaluewdirsource(default:id)dirsearch{Boolean} opcjonalne, można wyłączyć wyszukiwanie dlaj-Directoryautosource{String} trasa do funkcjisearchwautocomplete,function(search, render(arr))autovalue{String} trasa właściwości dla wartości wautosourcemaxlength{Liczba} maksymalna długośćminvalue{Liczba} min. wartość dla typu liczby (default:undefined)maxvalue{Liczba} maksymalna wartość dla typu liczby (default:undefined)rebind{Boolean} jeślitrueodłączadata-bindtylko do tego elementu (default:0)validate{String} opcjonalny, warunek weryfikacji wartości, może zawierać link dofunction(value)lub!!value.match(/[a-z]+/)multiline{Boolean} opcjonalne, umożliwia wielokrotne + dodatki klasyeditable-multiline(inline-block+width:100%) podczas edycji (default:false)raw{Boolean} opcjonalne, kiedytrueto bieżąca zawartość HTML będzie jako miejsce, jeśli wartość jestnullable(default:true)accept{String} opcjonalny, warunek akceptacji wartości, może zawierać link dofunction(value)lub!!value.match(/[a-z]+/)jest podobny dovalidateempty{String} opcjonalny, umożliwia pustą wartość i może zawierać pustą etykietę lub1lubtruedla automatycznegorebindwiązaniainvalid{String} opcjonalne, link do metodymethod(el, isInvalid, meta)jest oceniany, gdy element jest nieważny i odwrotnie
Metody:
- NEW:
component.changed()zwraca obiekt z zmienionymi danymi
Dobrze wiedzieć:
- Jeśli użytkownik naciśni trochę
key, element edycyjny będzie zawierał klasękeypressedtak długo, jak nie opuszczają kontroli. - Każdy zmienny element będzie zawierał klasę
changed - Jeśli składnik zmienia niektóre wartości, główny element będzie zawierać klasę
ui-editable-changed - Jeśli element ma
data-bindzempty, zostanie on wyczyszczony po skupieniu - NOWOŚĆ - Wspierają
tagsW tej chwili wspiera tylkorebindidata-bind(dane związane ztemplatez{jQuery selector}Prace z+v18) - NEW jeśli element ( lub rodzic, lub rodzica) zawiera atrybut
data-disabled="1", sterowanie zostanie wyłączone - NEW ukryte i uszkodzone elementy nie zostaną zatwierdzone
Użyj go z <ui-component name="editable">Gdy element nie jest jeszcze ładowany, jComponent Pobierz go po pierwszym użyciu z adresu DEF.fallback (Wydaje się Componentator Autor: Peter Širka Źródło: Componentator Zestaw składników, licencja 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>