Browse Source

Build 1.8.0

pull/1729/head
jlukic 10 years ago
parent
commit
a3932fcbdb
17 changed files with 938 additions and 241 deletions
  1. 2
      RELEASE-NOTES.md
  2. 81
      dist/components/checkbox.css
  3. 2
      dist/components/checkbox.js
  4. 2
      dist/components/checkbox.min.css
  5. 2
      dist/components/checkbox.min.js
  6. 59
      dist/components/dropdown.js
  7. 2
      dist/components/dropdown.min.js
  8. 273
      dist/components/form.js
  9. 2
      dist/components/form.min.js
  10. 22
      dist/components/input.css
  11. 2
      dist/components/input.min.css
  12. 1
      dist/components/modal.css
  13. 2
      dist/components/modal.min.css
  14. 104
      dist/semantic.css
  15. 607
      dist/semantic.js
  16. 2
      dist/semantic.min.css
  17. 14
      dist/semantic.min.js

2
RELEASE-NOTES.md

@ -2,6 +2,8 @@
### Version 1.8.0 - January 23, 2015
[View Closed Issues in 1.8.0](https://github.com/Semantic-Org/Semantic-UI/issues?q=is%3Aissue+milestone%3A1.8.0+is%3Aclosed+sort%3Acomments-desc)
**Key Features**
- **Form** - Form now has new methods `reset`, `clear`, `set value(s)`, and `read value(s)` for modifying and reading form data. Check docs for details on implementation. **Thanks @mktm**

81
dist/components/checkbox.css

@ -32,7 +32,8 @@
outline: none;
vertical-align: middle;
}
.ui.checkbox input {
.ui.checkbox input[type="checkbox"],
.ui.checkbox input[type="radio"] {
position: absolute;
top: 0px;
left: 0px;
@ -142,7 +143,8 @@
background: #f5f5f5;
border: 1px solid 1px solid rgba(39, 41, 43, 0.3);
}
.ui.checkbox input:active ~ label {
.ui.checkbox input[type="checkbox"]:active ~ label,
.ui.checkbox input[type="radio"]:active ~ label {
color: rgba(0, 0, 0, 0.8);
}
@ -150,12 +152,15 @@
Focus
---------------*/
.ui.checkbox input:focus ~ .box:before,
.ui.checkbox input:focus ~ label:before {
.ui.checkbox input[type="checkbox"]:focus ~ .box:before,
.ui.checkbox input[type="checkbox"]:focus ~ label:before,
.ui.checkbox input[type="radio"]:focus ~ .box:before,
.ui.checkbox input[type="radio"]:focus ~ label:before {
background: #f5f5f5;
border: 1px solid 1px solid rgba(39, 41, 43, 0.3);
}
.ui.checkbox input:focus ~ label {
.ui.checkbox input[type="checkbox"]:focus ~ label,
.ui.checkbox input[type="radio"]:focus ~ label {
color: rgba(0, 0, 0, 0.8);
}
@ -163,8 +168,10 @@
Active
---------------*/
.ui.checkbox input:checked ~ .box:after,
.ui.checkbox input:checked ~ label:after {
.ui.checkbox input[type="checkbox"]:checked ~ .box:after,
.ui.checkbox input[type="checkbox"]:checked ~ label:after,
.ui.checkbox input[type="radio"]:checked ~ .box:after,
.ui.checkbox input[type="radio"]:checked ~ label:after {
opacity: 1;
}
@ -183,8 +190,10 @@
.ui.disabled.checkbox .box:after,
.ui.disabled.checkbox label,
.ui.checkbox input[disabled] ~ .box:after,
.ui.checkbox input[disabled] ~ label {
.ui.checkbox input[type="checkbox"][disabled] ~ .box:after,
.ui.checkbox input[type="checkbox"][disabled] ~ label,
.ui.checkbox input[type="radio"][disabled] ~ .box:after,
.ui.checkbox input[type="radio"][disabled] ~ label {
cursor: default;
opacity: 0.5;
color: #000000;
@ -306,8 +315,10 @@
}
/* Focus */
.ui.slider.checkbox input:focus ~ .box:before,
.ui.slider.checkbox input:focus ~ label:before {
.ui.slider.checkbox input[type="checkbox"]:focus ~ .box:before,
.ui.slider.checkbox input[type="checkbox"]:focus ~ label:before,
.ui.slider.checkbox input[type="radio"]:focus ~ .box:before,
.ui.slider.checkbox input[type="radio"]:focus ~ label:before {
background-color: rgba(0, 0, 0, 0.1);
border: none;
}
@ -323,16 +334,22 @@
}
/* Active */
.ui.slider.checkbox input:checked ~ .box,
.ui.slider.checkbox input:checked ~ label {
.ui.slider.checkbox input[type="checkbox"]:checked ~ .box,
.ui.slider.checkbox input[type="checkbox"]:checked ~ label,
.ui.slider.checkbox input[type="radio"]:checked ~ .box,
.ui.slider.checkbox input[type="radio"]:checked ~ label {
color: rgba(0, 0, 0, 0.8);
}
.ui.slider.checkbox input:checked ~ .box:before,
.ui.slider.checkbox input:checked ~ label:before {
.ui.slider.checkbox input[type="checkbox"]:checked ~ .box:before,
.ui.slider.checkbox input[type="checkbox"]:checked ~ label:before,
.ui.slider.checkbox input[type="radio"]:checked ~ .box:before,
.ui.slider.checkbox input[type="radio"]:checked ~ label:before {
background-color: rgba(0, 0, 0, 0.1);
}
.ui.slider.checkbox input:checked ~ .box:after,
.ui.slider.checkbox input:checked ~ label:after {
.ui.slider.checkbox input[type="checkbox"]:checked ~ .box:after,
.ui.slider.checkbox input[type="checkbox"]:checked ~ label:after,
.ui.slider.checkbox input[type="radio"]:checked ~ .box:after,
.ui.slider.checkbox input[type="radio"]:checked ~ label:after {
left: 2rem;
}
@ -393,14 +410,18 @@
left 0.3s ease 0s
;
}
.ui.toggle.checkbox input ~ .box:after,
.ui.toggle.checkbox input ~ label:after {
.ui.toggle.checkbox input[type="checkbox"] ~ .box:after,
.ui.toggle.checkbox input[type="checkbox"] ~ label:after,
.ui.toggle.checkbox input[type="radio"] ~ .box:after,
.ui.toggle.checkbox input[type="radio"] ~ label:after {
left: -0.05rem;
}
/* Focus */
.ui.toggle.checkbox input:focus ~ .box:before,
.ui.toggle.checkbox input:focus ~ label:before {
.ui.toggle.checkbox input[type="checkbox"]:focus ~ .box:before,
.ui.toggle.checkbox input[type="checkbox"]:focus ~ label:before,
.ui.toggle.checkbox input[type="radio"]:focus ~ .box:before,
.ui.toggle.checkbox input[type="radio"]:focus ~ label:before {
background-color: rgba(0, 0, 0, 0.1);
border: none;
}
@ -413,16 +434,22 @@
}
/* Active */
.ui.toggle.checkbox input:checked ~ .box,
.ui.toggle.checkbox input:checked ~ label {
.ui.toggle.checkbox input[type="checkbox"]:checked ~ .box,
.ui.toggle.checkbox input[type="checkbox"]:checked ~ label,
.ui.toggle.checkbox input[type="radio"]:checked ~ .box,
.ui.toggle.checkbox input[type="radio"]:checked ~ label {
color: #5bbd72;
}
.ui.toggle.checkbox input:checked ~ .box:before,
.ui.toggle.checkbox input:checked ~ label:before {
.ui.toggle.checkbox input[type="checkbox"]:checked ~ .box:before,
.ui.toggle.checkbox input[type="checkbox"]:checked ~ label:before,
.ui.toggle.checkbox input[type="radio"]:checked ~ .box:before,
.ui.toggle.checkbox input[type="radio"]:checked ~ label:before {
background-color: #5bbd72;
}
.ui.toggle.checkbox input:checked ~ .box:after,
.ui.toggle.checkbox input:checked ~ label:after {
.ui.toggle.checkbox input[type="checkbox"]:checked ~ .box:after,
.ui.toggle.checkbox input[type="checkbox"]:checked ~ label:after,
.ui.toggle.checkbox input[type="radio"]:checked ~ .box:after,
.ui.toggle.checkbox input[type="radio"]:checked ~ label:after {
left: 2.05rem;
}

2
dist/components/checkbox.js

@ -498,7 +498,7 @@ $.fn.checkbox.settings = {
},
selector : {
input : 'input[type=checkbox], input[type=radio]',
input : 'input[type="checkbox"], input[type="radio"]',
label : 'label'
}

2
dist/components/checkbox.min.css
File diff suppressed because it is too large
View File

2
dist/components/checkbox.min.js
File diff suppressed because it is too large
View File

59
dist/components/dropdown.js

@ -759,31 +759,23 @@ $.fn.dropdown = function(parameters) {
nothing: function() {},
hide: function() {
module.hide(function() {
module.remove.filteredItem();
});
},
select: function(text, value) {
activate: function(text, value) {
value = (value !== undefined)
? value
: text
;
module.set.selected(value);
module.set.value(value);
module.hide(function() {
module.remove.filteredItem();
});
},
activate: function(text, value) {
select: function(text, value) {
value = (value !== undefined)
? value
: text
;
module.set.selected(value);
module.set.value(value);
module.hide(function() {
module.remove.filteredItem();
});
@ -795,7 +787,12 @@ $.fn.dropdown = function(parameters) {
: text
;
module.set.selected(value);
module.set.value(value);
module.hide(function() {
module.remove.filteredItem();
});
},
hide: function() {
module.hide(function() {
module.remove.filteredItem();
});
@ -834,7 +831,7 @@ $.fn.dropdown = function(parameters) {
}
},
choiceValue: function($choice, choiceText) {
choiceText = choiceText || module.get.choiceText($text);
choiceText = choiceText || module.get.choiceText($choice);
return ($choice.data(metadata.value) !== undefined)
? $choice.data(metadata.value)
: (typeof choiceText === 'string')
@ -968,7 +965,7 @@ $.fn.dropdown = function(parameters) {
;
module.debug('Restoring default text', defaultText);
module.set.text(defaultText);
$text.addClass(settings.className.placeholder);
$text.addClass(className.placeholder);
},
defaultValue: function() {
var
@ -978,7 +975,6 @@ $.fn.dropdown = function(parameters) {
module.debug('Restoring default value', defaultValue);
if(defaultValue.length) {
module.set.selected(defaultValue);
module.set.value(defaultValue);
}
else {
module.remove.activeItem();
@ -991,6 +987,7 @@ $.fn.dropdown = function(parameters) {
save: {
defaults: function() {
module.save.defaultText();
module.save.placeholderText();
module.save.defaultValue();
},
defaultValue: function() {
@ -998,9 +995,25 @@ $.fn.dropdown = function(parameters) {
},
defaultText: function() {
$module.data(metadata.defaultText, $text.text() );
},
placeholderText: function() {
if($text.hasClass(className.placeholder)) {
$module.data(metadata.placeholderText, $text.text());
}
}
},
clear: function() {
var
placeholderText = $module.data(metadata.placeholderText)
;
module.set.text(placeholderText);
module.set.value('');
module.remove.activeItem();
module.remove.selectedItem();
$text.addClass(className.placeholder);
},
set: {
filtered: function() {
var
@ -1128,20 +1141,21 @@ $.fn.dropdown = function(parameters) {
selected: function(value) {
var
$selectedItem = module.get.item(value),
selectedText
selectedText,
selectedValue
;
if($selectedItem) {
module.debug('Setting selected menu item to', $selectedItem);
module.remove.activeItem();
module.remove.selectedItem();
$selectedItem
.addClass(className.active)
.addClass(className.selected)
;
selectedText = module.get.choiceText($selectedItem);
selectedText = module.get.choiceText($selectedItem);
selectedValue = module.get.choiceValue($selectedItem, selectedText);
module.set.text(selectedText);
module.set.value(selectedValue);
settings.onChange.call(element, value, selectedText, $selectedItem);
}
}
@ -1661,10 +1675,11 @@ $.fn.dropdown.settings = {
},
metadata: {
defaultText : 'defaultText',
defaultValue : 'defaultValue',
text : 'text',
value : 'value'
defaultText : 'defaultText',
defaultValue : 'defaultValue',
placeholderText : 'placeholderText',
text : 'text',
value : 'value'
},
selector : {

2
dist/components/dropdown.min.js
File diff suppressed because it is too large
View File

273
dist/components/form.js

@ -40,18 +40,21 @@ $.fn.form = function(fields, parameters) {
$allModules
.each(function() {
var
$module = $(this),
$field = $(this).find(selector.field),
$group = $(this).find(selector.group),
$message = $(this).find(selector.message),
$prompt = $(this).find(selector.prompt),
$submit = $(this).find(selector.submit),
formErrors = [],
keyStuckDown = false,
element = this,
instance = $module.data(moduleNamespace),
$module = $(this),
$field = $(this).find(selector.field),
$group = $(this).find(selector.group),
$message = $(this).find(selector.message),
$prompt = $(this).find(selector.prompt),
$submit = $(this).find(selector.submit),
$clear = $(this).find(selector.clear),
$reset = $(this).find(selector.reset),
formErrors = [],
keyHeldDown = false,
element = this,
instance = $module.data(moduleNamespace),
module
;
@ -60,6 +63,7 @@ $.fn.form = function(fields, parameters) {
initialize: function() {
module.verbose('Initializing form validation', $module, validation, settings);
module.bindEvents();
module.set.defaults();
module.instantiate();
},
@ -102,7 +106,6 @@ $.fn.form = function(fields, parameters) {
},
bindEvents: function() {
if(settings.keyboardShortcuts) {
$field
.on('keydown' + eventNamespace, module.event.field.keydown)
@ -114,8 +117,11 @@ $.fn.form = function(fields, parameters) {
$field
.on('blur' + eventNamespace, module.event.field.blur)
;
// attach submit events
// attach events to common elements
module.attachEvents($submit, 'submit');
module.attachEvents($reset, 'reset');
module.attachEvents($clear, 'clear');
$field
.each(function() {
@ -130,6 +136,78 @@ $.fn.form = function(fields, parameters) {
;
},
clear: function() {
$field
.each(function () {
var
$field = $(this),
$element = $field.parent(),
$fieldGroup = $field.closest($group),
$prompt = $fieldGroup.find(selector.prompt),
defaultValue = $field.data(metadata.defaultValue) || '',
isCheckbox = $element.is(selector.uiCheckbox),
isDropdown = $element.is(selector.uiDropdown),
isErrored = $fieldGroup.hasClass(className.error)
;
if(isErrored) {
module.verbose('Resetting error on field', $fieldGroup);
$fieldGroup.removeClass(className.error);
$prompt.remove();
}
if(isDropdown) {
module.verbose('Resetting dropdown value', $element, defaultValue);
$element.dropdown('clear');
}
else if(isCheckbox) {
$element.checkbox('uncheck');
}
else {
module.verbose('Resetting field value', $field, defaultValue);
$field.val('');
}
})
;
},
reset: function() {
$field
.each(function () {
var
$field = $(this),
$element = $field.parent(),
$fieldGroup = $field.closest($group),
$prompt = $fieldGroup.find(selector.prompt),
defaultValue = $field.data(metadata.defaultValue) || '',
isCheckbox = $element.is(selector.uiCheckbox),
isDropdown = $element.is(selector.uiDropdown),
isErrored = $fieldGroup.hasClass(className.error)
;
if(isErrored) {
module.verbose('Resetting error on field', $fieldGroup);
$fieldGroup.removeClass(className.error);
$prompt.remove();
}
if(isDropdown) {
module.verbose('Resetting dropdown value', $element, defaultValue);
$element.dropdown('restore defaults');
}
else if(isCheckbox) {
module.verbose('Resetting checkbox value', $element, defaultValue);
if(defaultValue === true) {
$element.checkbox('check');
}
else {
$element.checkbox('uncheck');
}
}
else {
module.verbose('Resetting field value', $field, defaultValue);
$field.val(defaultValue);
}
})
;
},
removeEvents: function() {
$module
.off(eventNamespace)
@ -166,18 +244,18 @@ $.fn.form = function(fields, parameters) {
$submit
.addClass(className.pressed)
;
if(!keyStuckDown) {
if(!keyHeldDown) {
$field
.one('keyup' + eventNamespace, module.event.field.keyup)
;
module.submit();
module.debug('Enter pressed on input submitting form');
}
keyStuckDown = true;
keyHeldDown = true;
}
},
keyup: function() {
keyStuckDown = false;
keyHeldDown = false;
$submit.removeClass(className.pressed);
},
blur: function() {
@ -250,6 +328,59 @@ $.fn.form = function(fields, parameters) {
}
});
return rules || false;
},
value: function (field) {
var
fields = [],
results
;
fields.push(field);
results = module.get.values.call(element, fields);
return results[field];
},
values: function (fields) {
var
values = {}
;
// return all fields if no parameters
if(!$.isArray(fields)) {
fields = $field;
}
$.each(fields, function(index, field) {
var
$field = (typeof field === 'string')
? module.get.field(field)
: $(field),
type = $field.prop('type'),
name = $field.prop('name'),
value = $field.val(),
isCheckbox = $field.is(selector.checkbox),
isRadio = $field.is(selector.radio),
isChecked = (isCheckbox)
? $field.is(':checked')
: false
;
if(name) {
if(isRadio) {
if(isChecked) {
values[name] = value;
}
}
else if(isCheckbox) {
if(isChecked) {
values[name] = true;
}
else {
module.debug('Omitted unchecked checkbox', $field);
return true;
}
}
else {
values[name] = value;
}
}
});
return values;
}
},
@ -357,11 +488,74 @@ $.fn.form = function(fields, parameters) {
.addClass(className.success)
;
},
defaults: function () {
$field
.each(function () {
var
$field = $(this),
isCheckbox = ($field.filter(selector.checkbox).length > 0),
value = (isCheckbox)
? $field.is(':checked')
: $field.val()
;
$field.data(metadata.defaultValue, value);
})
;
},
error: function() {
$module
.removeClass(className.success)
.addClass(className.error)
;
},
value: function (field, value) {
var
fields = {}
;
fields[field] = value;
return module.set.values.call(element, fields);
},
values: function (fields) {
if($.isEmptyObject(fields)) {
return;
}
$.each(fields, function(key, value) {
var
$field = module.get.field(key),
$element = $field.parent(),
isCheckbox = $element.is(selector.uiCheckbox),
isDropdown = $element.is(selector.uiDropdown),
isRadio = $field.is(selector.radio),
fieldExists = ($field.length > 0)
;
if(fieldExists) {
if(isRadio && isCheckbox) {
module.verbose('Selecting radio value', value, $field);
$field.filter('[value="' + value + '"]')
.parent(selector.uiCheckbox)
.checkbox('check')
;
}
else if(isCheckbox) {
module.verbose('Setting checkbox value', value, $element);
if(value === true) {
$element.checkbox('check');
}
else {
$element.checkbox('uncheck');
}
}
else if(isDropdown) {
module.verbose('Setting dropdown value', value, $element);
$element.dropdown('set selected', value);
}
else {
module.verbose('Setting field value', value, $field);
$field.val(value);
}
}
});
module.validate.form();
}
},
@ -374,7 +568,7 @@ $.fn.form = function(fields, parameters) {
;
// input keydown event will fire submit repeatedly by browser default
if(keyStuckDown) {
if(keyHeldDown) {
return false;
}
@ -606,7 +800,7 @@ $.fn.form = function(fields, parameters) {
}
});
}
if ( $.isFunction( found ) ) {
if( $.isFunction( found ) ) {
response = found.apply(context, passedArguments);
}
else if(found !== undefined) {
@ -666,31 +860,36 @@ $.fn.form.settings = {
transition : 'scale',
duration : 200,
onValid : function() {},
onInvalid : function() {},
onSuccess : function() { return true; },
onFailure : function() { return false; },
metadata : {
validate: 'validate'
defaultValue : 'default',
validate : 'validate'
},
selector : {
message : '.error.message',
field : 'input, textarea, select',
group : '.field',
checkbox: 'input[type="checkbox"], input[type="radio"]',
input : 'input',
prompt : '.prompt.label',
submit : '.submit'
checkbox : 'input[type="checkbox"], input[type="radio"]',
clear : '.clear',
field : 'input, textarea, select',
group : '.field',
input : 'input',
message : '.error.message',
prompt : '.prompt.label',
radio : 'input[type="radio"]',
reset : '.reset',
submit : '.submit',
uiCheckbox : '.ui.checkbox',
uiDropdown : '.ui.dropdown'
},
className : {
error : 'error',
success : 'success',
label : 'ui prompt label',
pressed : 'down',
label : 'ui prompt label'
success : 'success'
},
error: {
@ -698,6 +897,8 @@ $.fn.form.settings = {
},
templates: {
// template that produces error message
error: function(errors) {
var
html = '<ul class="list">'
@ -708,6 +909,8 @@ $.fn.form.settings = {
html += '</ul>';
return $(html);
},
// template that produces label
prompt: function(errors) {
return $('<div/>')
.addClass('ui red pointing prompt label')
@ -750,20 +953,20 @@ $.fn.form.settings = {
max,
parts
;
if (range === undefined || range === '' || range === '..') {
if(range === undefined || range === '' || range === '..') {
// do nothing
}
else if (range.indexOf('..') == -1) {
if (intRegExp.test(range)) {
else if(range.indexOf('..') == -1) {
if(intRegExp.test(range)) {
min = max = range - 0;
}
}
else {
parts = range.split('..', 2);
if (intRegExp.test(parts[0])) {
if(intRegExp.test(parts[0])) {
min = parts[0] - 0;
}
if (intRegExp.test(parts[1])) {
if(intRegExp.test(parts[1])) {
max = parts[1] - 0;
}
}

2
dist/components/form.min.js
File diff suppressed because it is too large
View File

22
dist/components/input.css

@ -31,9 +31,9 @@
outline: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
text-align: left;
line-height: 1.33;
line-height: 1.2142em;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
padding: 0.62071em 1em;
padding: 0.67861em 1em;
background: #ffffff;
border: 1px solid rgba(0, 0, 0, 0.15);
color: rgba(0, 0, 0, 0.8);
@ -207,14 +207,14 @@
right: 0px;
margin: 0em;
height: 100%;
width: 1.18em;
width: 2.82142em;
opacity: 0.5;
border-radius: 0em 0.2857rem 0.2857rem 0em;
-webkit-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
}
.ui.icon.input input {
padding-right: 1.18em !important;
padding-right: 2.82142em !important;
}
.ui.icon.input > i.icon:before,
.ui.icon.input > i.icon:after {
@ -244,7 +244,7 @@
left: 0.5em;
}
.ui[class*="left icon"].input > input {
padding-left: 1.18em !important;
padding-left: 2.82142em !important;
padding-right: 1em !important;
}
@ -412,25 +412,25 @@
---------------------*/
.ui.mini.input {
font-size: 0.71428571rem;
font-size: 0.8125rem;
}
.ui.small.input {
font-size: 0.92857143rem;
font-size: 0.875rem;
}
.ui.input {
font-size: 1rem;
}
.ui.large.input {
font-size: 1.14285714rem;
font-size: 1.125rem;
}
.ui.big.input {
font-size: 1.28571429rem;
font-size: 1.25rem;
}
.ui.huge.input {
font-size: 1.42857143rem;
font-size: 1.375rem;
}
.ui.massive.input {
font-size: 1.71428571rem;
font-size: 1.5rem;
}

2
dist/components/input.min.css
File diff suppressed because it is too large
View File

1
dist/components/modal.css

@ -250,6 +250,7 @@
.ui.basic.modal {
background-color: transparent;
border: none;
border-radius: 0em;
box-shadow: 0px 0px 0px 0px;
color: #ffffff;
}

2
dist/components/modal.min.css
File diff suppressed because it is too large
View File

104
dist/semantic.css

@ -8565,9 +8565,9 @@ img.ui.bordered.image {
outline: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
text-align: left;
line-height: 1.33;
line-height: 1.2142em;
font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
padding: 0.62071em 1em;
padding: 0.67861em 1em;
background: #ffffff;
border: 1px solid rgba(0, 0, 0, 0.15);
color: rgba(0, 0, 0, 0.8);
@ -8751,7 +8751,7 @@ img.ui.bordered.image {
right: 0px;
margin: 0em;
height: 100%;
width: 1.18em;
width: 2.82142em;
opacity: 0.5;
border-radius: 0em 0.2857rem 0.2857rem 0em;
-webkit-transition: opacity 0.3s ease;
@ -8759,7 +8759,7 @@ img.ui.bordered.image {
}
.ui.icon.input input {
padding-right: 1.18em !important;
padding-right: 2.82142em !important;
}
.ui.icon.input > i.icon:before,
@ -8795,7 +8795,7 @@ img.ui.bordered.image {
}
.ui[class*="left icon"].input > input {
padding-left: 1.18em !important;
padding-left: 2.82142em !important;
padding-right: 1em !important;
}
@ -8988,11 +8988,11 @@ img.ui.bordered.image {
---------------------*/
.ui.mini.input {
font-size: 0.71428571rem;
font-size: 0.8125rem;
}
.ui.small.input {
font-size: 0.92857143rem;
font-size: 0.875rem;
}
.ui.input {
@ -9000,19 +9000,19 @@ img.ui.bordered.image {
}
.ui.large.input {
font-size: 1.14285714rem;
font-size: 1.125rem;
}
.ui.big.input {
font-size: 1.28571429rem;
font-size: 1.25rem;
}
.ui.huge.input {
font-size: 1.42857143rem;
font-size: 1.375rem;
}
.ui.massive.input {
font-size: 1.71428571rem;
font-size: 1.5rem;
}
/*******************************
@ -22392,7 +22392,8 @@ a.ui.card:hover,
vertical-align: middle;
}
.ui.checkbox input {
.ui.checkbox input[type="checkbox"],
.ui.checkbox input[type="radio"] {
position: absolute;
top: 0px;
left: 0px;
@ -22505,7 +22506,8 @@ a.ui.card:hover,
border: 1px solid 1px solid rgba(39, 41, 43, 0.3);
}
.ui.checkbox input:active ~ label {
.ui.checkbox input[type="checkbox"]:active ~ label,
.ui.checkbox input[type="radio"]:active ~ label {
color: rgba(0, 0, 0, 0.8);
}
@ -22513,13 +22515,16 @@ a.ui.card:hover,
Focus
---------------*/
.ui.checkbox input:focus ~ .box:before,
.ui.checkbox input:focus ~ label:before {
.ui.checkbox input[type="checkbox"]:focus ~ .box:before,
.ui.checkbox input[type="checkbox"]:focus ~ label:before,
.ui.checkbox input[type="radio"]:focus ~ .box:before,
.ui.checkbox input[type="radio"]:focus ~ label:before {
background: #f5f5f5;
border: 1px solid 1px solid rgba(39, 41, 43, 0.3);
}
.ui.checkbox input:focus ~ label {
.ui.checkbox input[type="checkbox"]:focus ~ label,
.ui.checkbox input[type="radio"]:focus ~ label {
color: rgba(0, 0, 0, 0.8);
}
@ -22527,8 +22532,10 @@ a.ui.card:hover,
Active
---------------*/
.ui.checkbox input:checked ~ .box:after,
.ui.checkbox input:checked ~ label:after {
.ui.checkbox input[type="checkbox"]:checked ~ .box:after,
.ui.checkbox input[type="checkbox"]:checked ~ label:after,
.ui.checkbox input[type="radio"]:checked ~ .box:after,
.ui.checkbox input[type="radio"]:checked ~ label:after {
opacity: 1;
}
@ -22547,8 +22554,10 @@ a.ui.card:hover,
.ui.disabled.checkbox .box:after,
.ui.disabled.checkbox label,
.ui.checkbox input[disabled] ~ .box:after,
.ui.checkbox input[disabled] ~ label {
.ui.checkbox input[type="checkbox"][disabled] ~ .box:after,
.ui.checkbox input[type="checkbox"][disabled] ~ label,
.ui.checkbox input[type="radio"][disabled] ~ .box:after,
.ui.checkbox input[type="radio"][disabled] ~ label {
cursor: default;
opacity: 0.5;
color: #000000;
@ -22671,8 +22680,10 @@ a.ui.card:hover,
/* Focus */
.ui.slider.checkbox input:focus ~ .box:before,
.ui.slider.checkbox input:focus ~ label:before {
.ui.slider.checkbox input[type="checkbox"]:focus ~ .box:before,
.ui.slider.checkbox input[type="checkbox"]:focus ~ label:before,
.ui.slider.checkbox input[type="radio"]:focus ~ .box:before,
.ui.slider.checkbox input[type="radio"]:focus ~ label:before {
background-color: rgba(0, 0, 0, 0.1);
border: none;
}
@ -22691,18 +22702,24 @@ a.ui.card:hover,
/* Active */
.ui.slider.checkbox input:checked ~ .box,
.ui.slider.checkbox input:checked ~ label {
.ui.slider.checkbox input[type="checkbox"]:checked ~ .box,
.ui.slider.checkbox input[type="checkbox"]:checked ~ label,
.ui.slider.checkbox input[type="radio"]:checked ~ .box,
.ui.slider.checkbox input[type="radio"]:checked ~ label {
color: rgba(0, 0, 0, 0.8);
}
.ui.slider.checkbox input:checked ~ .box:before,
.ui.slider.checkbox input:checked ~ label:before {
.ui.slider.checkbox input[type="checkbox"]:checked ~ .box:before,
.ui.slider.checkbox input[type="checkbox"]:checked ~ label:before,
.ui.slider.checkbox input[type="radio"]:checked ~ .box:before,
.ui.slider.checkbox input[type="radio"]:checked ~ label:before {
background-color: rgba(0, 0, 0, 0.1);
}
.ui.slider.checkbox input:checked ~ .box:after,
.ui.slider.checkbox input:checked ~ label:after {
.ui.slider.checkbox input[type="checkbox"]:checked ~ .box:after,
.ui.slider.checkbox input[type="checkbox"]:checked ~ label:after,
.ui.slider.checkbox input[type="radio"]:checked ~ .box:after,
.ui.slider.checkbox input[type="radio"]:checked ~ label:after {
left: 2rem;
}
@ -22766,15 +22783,19 @@ a.ui.card:hover,
left 0.3s ease 0s;
}
.ui.toggle.checkbox input ~ .box:after,
.ui.toggle.checkbox input ~ label:after {
.ui.toggle.checkbox input[type="checkbox"] ~ .box:after,
.ui.toggle.checkbox input[type="checkbox"] ~ label:after,
.ui.toggle.checkbox input[type="radio"] ~ .box:after,
.ui.toggle.checkbox input[type="radio"] ~ label:after {
left: -0.05rem;
}
/* Focus */
.ui.toggle.checkbox input:focus ~ .box:before,
.ui.toggle.checkbox input:focus ~ label:before {
.ui.toggle.checkbox input[type="checkbox"]:focus ~ .box:before,
.ui.toggle.checkbox input[type="checkbox"]:focus ~ label:before,
.ui.toggle.checkbox input[type="radio"]:focus ~ .box:before,
.ui.toggle.checkbox input[type="radio"]:focus ~ label:before {
background-color: rgba(0, 0, 0, 0.1);
border: none;
}
@ -22789,18 +22810,24 @@ a.ui.card:hover,
/* Active */
.ui.toggle.checkbox input:checked ~ .box,
.ui.toggle.checkbox input:checked ~ label {
.ui.toggle.checkbox input[type="checkbox"]:checked ~ .box,
.ui.toggle.checkbox input[type="checkbox"]:checked ~ label,
.ui.toggle.checkbox input[type="radio"]:checked ~ .box,
.ui.toggle.checkbox input[type="radio"]:checked ~ label {
color: #5bbd72;
}
.ui.toggle.checkbox input:checked ~ .box:before,
.ui.toggle.checkbox input:checked ~ label:before {
.ui.toggle.checkbox input[type="checkbox"]:checked ~ .box:before,
.ui.toggle.checkbox input[type="checkbox"]:checked ~ label:before,
.ui.toggle.checkbox input[type="radio"]:checked ~ .box:before,
.ui.toggle.checkbox input[type="radio"]:checked ~ label:before {
background-color: #5bbd72;
}
.ui.toggle.checkbox input:checked ~ .box:after,
.ui.toggle.checkbox input:checked ~ label:after {
.ui.toggle.checkbox input[type="checkbox"]:checked ~ .box:after,
.ui.toggle.checkbox input[type="checkbox"]:checked ~ label:after,
.ui.toggle.checkbox input[type="radio"]:checked ~ .box:after,
.ui.toggle.checkbox input[type="radio"]:checked ~ label:after {
left: 2.05rem;
}
@ -24507,6 +24534,7 @@ select.ui.dropdown {
.ui.basic.modal {
background-color: transparent;
border: none;
border-radius: 0em;
box-shadow: 0px 0px 0px 0px;
color: #ffffff;
}

607
dist/semantic.js

@ -537,18 +537,21 @@ $.fn.form = function(fields, parameters) {
$allModules
.each(function() {
var
$module = $(this),
$field = $(this).find(selector.field),
$group = $(this).find(selector.group),
$message = $(this).find(selector.message),
$prompt = $(this).find(selector.prompt),
$submit = $(this).find(selector.submit),
formErrors = [],
keyStuckDown = false,
element = this,
instance = $module.data(moduleNamespace),
$module = $(this),
$field = $(this).find(selector.field),
$group = $(this).find(selector.group),
$message = $(this).find(selector.message),
$prompt = $(this).find(selector.prompt),
$submit = $(this).find(selector.submit),
$clear = $(this).find(selector.clear),
$reset = $(this).find(selector.reset),
formErrors = [],
keyHeldDown = false,
element = this,
instance = $module.data(moduleNamespace),
module
;
@ -557,6 +560,7 @@ $.fn.form = function(fields, parameters) {
initialize: function() {
module.verbose('Initializing form validation', $module, validation, settings);
module.bindEvents();
module.set.defaults();
module.instantiate();
},
@ -599,7 +603,6 @@ $.fn.form = function(fields, parameters) {
},
bindEvents: function() {
if(settings.keyboardShortcuts) {
$field
.on('keydown' + eventNamespace, module.event.field.keydown)
@ -611,8 +614,11 @@ $.fn.form = function(fields, parameters) {
$field
.on('blur' + eventNamespace, module.event.field.blur)
;
// attach submit events
// attach events to common elements
module.attachEvents($submit, 'submit');
module.attachEvents($reset, 'reset');
module.attachEvents($clear, 'clear');
$field
.each(function() {
@ -627,6 +633,78 @@ $.fn.form = function(fields, parameters) {
;
},
clear: function() {
$field
.each(function () {
var
$field = $(this),
$element = $field.parent(),
$fieldGroup = $field.closest($group),
$prompt = $fieldGroup.find(selector.prompt),
defaultValue = $field.data(metadata.defaultValue) || '',
isCheckbox = $element.is(selector.uiCheckbox),
isDropdown = $element.is(selector.uiDropdown),
isErrored = $fieldGroup.hasClass(className.error)
;
if(isErrored) {
module.verbose('Resetting error on field', $fieldGroup);
$fieldGroup.removeClass(className.error);
$prompt.remove();
}
if(isDropdown) {
module.verbose('Resetting dropdown value', $element, defaultValue);
$element.dropdown('clear');
}
else if(isCheckbox) {
$element.checkbox('uncheck');
}
else {
module.verbose('Resetting field value', $field, defaultValue);
$field.val('');
}
})
;
},
reset: function() {
$field
.each(function () {
var
$field = $(this),
$element = $field.parent(),
$fieldGroup = $field.closest($group),
$prompt = $fieldGroup.find(selector.prompt),
defaultValue = $field.data(metadata.defaultValue) || '',
isCheckbox = $element.is(selector.uiCheckbox),
isDropdown = $element.is(selector.uiDropdown),
isErrored = $fieldGroup.hasClass(className.error)
;
if(isErrored) {
module.verbose('Resetting error on field', $fieldGroup);
$fieldGroup.removeClass(className.error);
$prompt.remove();
}
if(isDropdown) {
module.verbose('Resetting dropdown value', $element, defaultValue);
$element.dropdown('restore defaults');
}
else if(isCheckbox) {
module.verbose('Resetting checkbox value', $element, defaultValue);
if(defaultValue === true) {
$element.checkbox('check');
}
else {
$element.checkbox('uncheck');
}
}
else {
module.verbose('Resetting field value', $field, defaultValue);
$field.val(defaultValue);
}
})
;
},
removeEvents: function() {
$module
.off(eventNamespace)
@ -663,18 +741,18 @@ $.fn.form = function(fields, parameters) {
$submit
.addClass(className.pressed)
;
if(!keyStuckDown) {
if(!keyHeldDown) {
$field
.one('keyup' + eventNamespace, module.event.field.keyup)
;
module.submit();
module.debug('Enter pressed on input submitting form');
}
keyStuckDown = true;
keyHeldDown = true;
}
},
keyup: function() {
keyStuckDown = false;
keyHeldDown = false;
$submit.removeClass(className.pressed);
},
blur: function() {
@ -747,6 +825,59 @@ $.fn.form = function(fields, parameters) {
}
});
return rules || false;
},
value: function (field) {
var
fields = [],
results
;
fields.push(field);
results = module.get.values.call(element, fields);
return results[field];
},
values: function (fields) {
var
values = {}
;
// return all fields if no parameters
if(!$.isArray(fields)) {
fields = $field;
}
$.each(fields, function(index, field) {
var
$field = (typeof field === 'string')
? module.get.field(field)
: $(field),
type = $field.prop('type'),
name = $field.prop('name'),
value = $field.val(),
isCheckbox = $field.is(selector.checkbox),
isRadio = $field.is(selector.radio),
isChecked = (isCheckbox)
? $field.is(':checked')
: false
;
if(name) {
if(isRadio) {
if(isChecked) {
values[name] = value;
}
}
else if(isCheckbox) {
if(isChecked) {
values[name] = true;
}
else {
module.debug('Omitted unchecked checkbox', $field);
return true;
}
}
else {
values[name] = value;
}
}
});
return values;
}
},
@ -854,11 +985,74 @@ $.fn.form = function(fields, parameters) {
.addClass(className.success)
;
},
defaults: function () {
$field
.each(function () {
var
$field = $(this),
isCheckbox = ($field.filter(selector.checkbox).length > 0),
value = (isCheckbox)
? $field.is(':checked')
: $field.val()
;
$field.data(metadata.defaultValue, value);
})
;
},
error: function() {
$module
.removeClass(className.success)
.addClass(className.error)
;
},
value: function (field, value) {
var
fields = {}
;
fields[field] = value;
return module.set.values.call(element, fields);
},
values: function (fields) {
if($.isEmptyObject(fields)) {
return;
}
$.each(fields, function(key, value) {
var
$field = module.get.field(key),
$element = $field.parent(),
isCheckbox = $element.is(selector.uiCheckbox),
isDropdown = $element.is(selector.uiDropdown),
isRadio = $field.is(selector.radio),
fieldExists = ($field.length > 0)
;
if(fieldExists) {
if(isRadio && isCheckbox) {
module.verbose('Selecting radio value', value, $field);
$field.filter('[value="' + value + '"]')
.parent(selector.uiCheckbox)
.checkbox('check')
;
}
else if(isCheckbox) {
module.verbose('Setting checkbox value', value, $element);
if(value === true) {
$element.checkbox('check');
}
else {
$element.checkbox('uncheck');
}
}
else if(isDropdown) {
module.verbose('Setting dropdown value', value, $element);
$element.dropdown('set selected', value);
}
else {
module.verbose('Setting field value', value, $field);
$field.val(value);
}
}
});
module.validate.form();
}
},
@ -871,7 +1065,7 @@ $.fn.form = function(fields, parameters) {
;
// input keydown event will fire submit repeatedly by browser default
if(keyStuckDown) {
if(keyHeldDown) {
return false;
}
@ -1103,7 +1297,7 @@ $.fn.form = function(fields, parameters) {
}
});
}
if ( $.isFunction( found ) ) {
if( $.isFunction( found ) ) {
response = found.apply(context, passedArguments);
}
else if(found !== undefined) {
@ -1163,31 +1357,36 @@ $.fn.form.settings = {
transition : 'scale',
duration : 200,
onValid : function() {},
onInvalid : function() {},
onSuccess : function() { return true; },
onFailure : function() { return false; },
metadata : {
validate: 'validate'
defaultValue : 'default',
validate : 'validate'
},
selector : {
message : '.error.message',
field : 'input, textarea, select',
group : '.field',
checkbox: 'input[type="checkbox"], input[type="radio"]',
input : 'input',
prompt : '.prompt.label',
submit : '.submit'
checkbox : 'input[type="checkbox"], input[type="radio"]',
clear : '.clear',
field : 'input, textarea, select',
group : '.field',
input : 'input',
message : '.error.message',
prompt : '.prompt.label',
radio : 'input[type="radio"]',
reset : '.reset',
submit : '.submit',
uiCheckbox : '.ui.checkbox',
uiDropdown : '.ui.dropdown'
},
className : {
error : 'error',
success : 'success',
label : 'ui prompt label',
pressed : 'down',
label : 'ui prompt label'
success : 'success'
},
error: {
@ -1195,6 +1394,8 @@ $.fn.form.settings = {
},
templates: {
// template that produces error message
error: function(errors) {
var
html = '<ul class="list">'
@ -1205,6 +1406,8 @@ $.fn.form.settings = {
html += '</ul>';
return $(html);
},
// template that produces label
prompt: function(errors) {
return $('<div/>')
.addClass('ui red pointing prompt label')
@ -1247,20 +1450,20 @@ $.fn.form.settings = {
max,
parts
;
if (range === undefined || range === '' || range === '..') {
if(range === undefined || range === '' || range === '..') {
// do nothing
}
else if (range.indexOf('..') == -1) {
if (intRegExp.test(range)) {
else if(range.indexOf('..') == -1) {
if(intRegExp.test(range)) {
min = max = range - 0;
}
}
else {
parts = range.split('..', 2);
if (intRegExp.test(parts[0])) {
if(intRegExp.test(parts[0])) {
min = parts[0] - 0;
}
if (intRegExp.test(parts[1])) {
if(intRegExp.test(parts[1])) {
max = parts[1] - 0;
}
}
@ -2391,7 +2594,7 @@ $.fn.checkbox.settings = {
},
selector : {
input : 'input[type=checkbox], input[type=radio]',
input : 'input[type="checkbox"], input[type="radio"]',
label : 'label'
}
@ -3787,31 +3990,23 @@ $.fn.dropdown = function(parameters) {
nothing: function() {},
hide: function() {
module.hide(function() {
module.remove.filteredItem();
});
},
select: function(text, value) {
activate: function(text, value) {
value = (value !== undefined)
? value
: text
;
module.set.selected(value);
module.set.value(value);
module.hide(function() {
module.remove.filteredItem();
});
},
activate: function(text, value) {
select: function(text, value) {
value = (value !== undefined)
? value
: text
;
module.set.selected(value);
module.set.value(value);
module.hide(function() {
module.remove.filteredItem();
});
@ -3823,7 +4018,12 @@ $.fn.dropdown = function(parameters) {
: text
;
module.set.selected(value);
module.set.value(value);
module.hide(function() {
module.remove.filteredItem();
});
},
hide: function() {
module.hide(function() {
module.remove.filteredItem();
});
@ -3862,7 +4062,7 @@ $.fn.dropdown = function(parameters) {
}
},
choiceValue: function($choice, choiceText) {
choiceText = choiceText || module.get.choiceText($text);
choiceText = choiceText || module.get.choiceText($choice);
return ($choice.data(metadata.value) !== undefined)
? $choice.data(metadata.value)
: (typeof choiceText === 'string')
@ -3996,7 +4196,7 @@ $.fn.dropdown = function(parameters) {
;
module.debug('Restoring default text', defaultText);
module.set.text(defaultText);
$text.addClass(settings.className.placeholder);
$text.addClass(className.placeholder);
},
defaultValue: function() {
var
@ -4006,7 +4206,6 @@ $.fn.dropdown = function(parameters) {
module.debug('Restoring default value', defaultValue);
if(defaultValue.length) {
module.set.selected(defaultValue);
module.set.value(defaultValue);
}
else {
module.remove.activeItem();
@ -4019,6 +4218,7 @@ $.fn.dropdown = function(parameters) {
save: {
defaults: function() {
module.save.defaultText();
module.save.placeholderText();
module.save.defaultValue();
},
defaultValue: function() {
@ -4026,9 +4226,25 @@ $.fn.dropdown = function(parameters) {
},
defaultText: function() {
$module.data(metadata.defaultText, $text.text() );
},
placeholderText: function() {
if($text.hasClass(className.placeholder)) {
$module.data(metadata.placeholderText, $text.text());
}
}
},
clear: function() {
var
placeholderText = $module.data(metadata.placeholderText)
;
module.set.text(placeholderText);
module.set.value('');
module.remove.activeItem();
module.remove.selectedItem();
$text.addClass(className.placeholder);
},
set: {
filtered: function() {
var
@ -4156,20 +4372,21 @@ $.fn.dropdown = function(parameters) {
selected: function(value) {
var
$selectedItem = module.get.item(value),
selectedText
selectedText,
selectedValue
;
if($selectedItem) {
module.debug('Setting selected menu item to', $selectedItem);
module.remove.activeItem();
module.remove.selectedItem();
$selectedItem
.addClass(className.active)
.addClass(className.selected)
;
selectedText = module.get.choiceText($selectedItem);
selectedText = module.get.choiceText($selectedItem);
selectedValue = module.get.choiceValue($selectedItem, selectedText);
module.set.text(selectedText);
module.set.value(selectedValue);
settings.onChange.call(element, value, selectedText, $selectedItem);
}
}
@ -4689,10 +4906,11 @@ $.fn.dropdown.settings = {
},
metadata: {
defaultText : 'defaultText',
defaultValue : 'defaultValue',
text : 'text',
value : 'value'
defaultText : 'defaultText',
defaultValue : 'defaultValue',
placeholderText : 'placeholderText',
text : 'text',
value : 'value'
},
selector : {
@ -15434,18 +15652,21 @@ $.fn.form = function(fields, parameters) {
$allModules
.each(function() {
var
$module = $(this),
$field = $(this).find(selector.field),
$group = $(this).find(selector.group),
$message = $(this).find(selector.message),
$prompt = $(this).find(selector.prompt),
$submit = $(this).find(selector.submit),
formErrors = [],
keyStuckDown = false,
element = this,
instance = $module.data(moduleNamespace),
$module = $(this),
$field = $(this).find(selector.field),
$group = $(this).find(selector.group),
$message = $(this).find(selector.message),
$prompt = $(this).find(selector.prompt),
$submit = $(this).find(selector.submit),
$clear = $(this).find(selector.clear),
$reset = $(this).find(selector.reset),
formErrors = [],
keyHeldDown = false,
element = this,
instance = $module.data(moduleNamespace),
module
;
@ -15454,6 +15675,7 @@ $.fn.form = function(fields, parameters) {
initialize: function() {
module.verbose('Initializing form validation', $module, validation, settings);
module.bindEvents();
module.set.defaults();
module.instantiate();
},
@ -15496,7 +15718,6 @@ $.fn.form = function(fields, parameters) {
},
bindEvents: function() {
if(settings.keyboardShortcuts) {
$field
.on('keydown' + eventNamespace, module.event.field.keydown)
@ -15508,8 +15729,11 @@ $.fn.form = function(fields, parameters) {
$field
.on('blur' + eventNamespace, module.event.field.blur)
;
// attach submit events
// attach events to common elements
module.attachEvents($submit, 'submit');
module.attachEvents($reset, 'reset');
module.attachEvents($clear, 'clear');
$field
.each(function() {
@ -15524,6 +15748,78 @@ $.fn.form = function(fields, parameters) {
;
},
clear: function() {
$field
.each(function () {
var
$field = $(this),
$element = $field.parent(),
$fieldGroup = $field.closest($group),
$prompt = $fieldGroup.find(selector.prompt),
defaultValue = $field.data(metadata.defaultValue) || '',
isCheckbox = $element.is(selector.uiCheckbox),
isDropdown = $element.is(selector.uiDropdown),
isErrored = $fieldGroup.hasClass(className.error)
;
if(isErrored) {
module.verbose('Resetting error on field', $fieldGroup);
$fieldGroup.removeClass(className.error);
$prompt.remove();
}
if(isDropdown) {
module.verbose('Resetting dropdown value', $element, defaultValue);
$element.dropdown('clear');
}
else if(isCheckbox) {
$element.checkbox('uncheck');
}
else {
module.verbose('Resetting field value', $field, defaultValue);
$field.val('');
}
})
;
},
reset: function() {
$field
.each(function () {
var
$field = $(this),
$element = $field.parent(),
$fieldGroup = $field.closest($group),
$prompt = $fieldGroup.find(selector.prompt),
defaultValue = $field.data(metadata.defaultValue) || '',
isCheckbox = $element.is(selector.uiCheckbox),
isDropdown = $element.is(selector.uiDropdown),
isErrored = $fieldGroup.hasClass(className.error)
;
if(isErrored) {
module.verbose('Resetting error on field', $fieldGroup);
$fieldGroup.removeClass(className.error);
$prompt.remove();
}
if(isDropdown) {
module.verbose('Resetting dropdown value', $element, defaultValue);
$element.dropdown('restore defaults');
}
else if(isCheckbox) {
module.verbose('Resetting checkbox value', $element, defaultValue);
if(defaultValue === true) {
$element.checkbox('check');
}
else {
$element.checkbox('uncheck');
}
}
else {
module.verbose('Resetting field value', $field, defaultValue);
$field.val(defaultValue);
}
})
;
},
removeEvents: function() {
$module
.off(eventNamespace)
@ -15560,18 +15856,18 @@ $.fn.form = function(fields, parameters) {
$submit
.addClass(className.pressed)
;
if(!keyStuckDown) {
if(!keyHeldDown) {
$field
.one('keyup' + eventNamespace, module.event.field.keyup)
;
module.submit();
module.debug('Enter pressed on input submitting form');
}
keyStuckDown = true;
keyHeldDown = true;
}
},
keyup: function() {
keyStuckDown = false;
keyHeldDown = false;
$submit.removeClass(className.pressed);
},
blur: function() {
@ -15644,6 +15940,59 @@ $.fn.form = function(fields, parameters) {
}
});
return rules || false;
},
value: function (field) {
var
fields = [],
results
;
fields.push(field);
results = module.get.values.call(element, fields);
return results[field];
},
values: function (fields) {
var
values = {}
;
// return all fields if no parameters
if(!$.isArray(fields)) {
fields = $field;
}
$.each(fields, function(index, field) {
var
$field = (typeof field === 'string')
? module.get.field(field)
: $(field),
type = $field.prop('type'),
name = $field.prop('name'),
value = $field.val(),
isCheckbox = $field.is(selector.checkbox),
isRadio = $field.is(selector.radio),
isChecked = (isCheckbox)
? $field.is(':checked')
: false
;
if(name) {
if(isRadio) {
if(isChecked) {
values[name] = value;
}
}
else if(isCheckbox) {
if(isChecked) {
values[name] = true;
}
else {
module.debug('Omitted unchecked checkbox', $field);
return true;
}
}
else {
values[name] = value;
}
}
});
return values;
}
},
@ -15751,11 +16100,74 @@ $.fn.form = function(fields, parameters) {
.addClass(className.success)
;
},
defaults: function () {
$field
.each(function () {
var
$field = $(this),
isCheckbox = ($field.filter(selector.checkbox).length > 0),
value = (isCheckbox)
? $field.is(':checked')
: $field.val()
;
$field.data(metadata.defaultValue, value);
})
;
},
error: function() {
$module
.removeClass(className.success)
.addClass(className.error)
;
},
value: function (field, value) {
var
fields = {}
;
fields[field] = value;
return module.set.values.call(element, fields);
},
values: function (fields) {
if($.isEmptyObject(fields)) {
return;
}
$.each(fields, function(key, value) {
var
$field = module.get.field(key),
$element = $field.parent(),
isCheckbox = $element.is(selector.uiCheckbox),
isDropdown = $element.is(selector.uiDropdown),
isRadio = $field.is(selector.radio),
fieldExists = ($field.length > 0)
;
if(fieldExists) {
if(isRadio && isCheckbox) {
module.verbose('Selecting radio value', value, $field);
$field.filter('[value="' + value + '"]')
.parent(selector.uiCheckbox)
.checkbox('check')
;
}
else if(isCheckbox) {
module.verbose('Setting checkbox value', value, $element);
if(value === true) {
$element.checkbox('check');
}
else {
$element.checkbox('uncheck');
}
}
else if(isDropdown) {
module.verbose('Setting dropdown value', value, $element);
$element.dropdown('set selected', value);
}
else {
module.verbose('Setting field value', value, $field);
$field.val(value);
}
}
});
module.validate.form();
}
},
@ -15768,7 +16180,7 @@ $.fn.form = function(fields, parameters) {
;
// input keydown event will fire submit repeatedly by browser default
if(keyStuckDown) {
if(keyHeldDown) {
return false;
}
@ -16000,7 +16412,7 @@ $.fn.form = function(fields, parameters) {
}
});
}
if ( $.isFunction( found ) ) {
if( $.isFunction( found ) ) {
response = found.apply(context, passedArguments);
}
else if(found !== undefined) {
@ -16060,31 +16472,36 @@ $.fn.form.settings = {
transition : 'scale',
duration : 200,
onValid : function() {},
onInvalid : function() {},
onSuccess : function() { return true; },
onFailure : function() { return false; },
metadata : {
validate: 'validate'
defaultValue : 'default',
validate : 'validate'
},
selector : {
message : '.error.message',
field : 'input, textarea, select',
group : '.field',
checkbox: 'input[type="checkbox"], input[type="radio"]',
input : 'input',
prompt : '.prompt.label',
submit : '.submit'
checkbox : 'input[type="checkbox"], input[type="radio"]',
clear : '.clear',
field : 'input, textarea, select',
group : '.field',
input : 'input',
message : '.error.message',
prompt : '.prompt.label',
radio : 'input[type="radio"]',
reset : '.reset',
submit : '.submit',
uiCheckbox : '.ui.checkbox',
uiDropdown : '.ui.dropdown'
},
className : {
error : 'error',
success : 'success',
label : 'ui prompt label',
pressed : 'down',
label : 'ui prompt label'
success : 'success'
},
error: {
@ -16092,6 +16509,8 @@ $.fn.form.settings = {
},
templates: {
// template that produces error message
error: function(errors) {
var
html = '<ul class="list">'
@ -16102,6 +16521,8 @@ $.fn.form.settings = {
html += '</ul>';
return $(html);
},
// template that produces label
prompt: function(errors) {
return $('<div/>')
.addClass('ui red pointing prompt label')
@ -16144,20 +16565,20 @@ $.fn.form.settings = {
max,
parts
;
if (range === undefined || range === '' || range === '..') {
if(range === undefined || range === '' || range === '..') {
// do nothing
}
else if (range.indexOf('..') == -1) {
if (intRegExp.test(range)) {
else if(range.indexOf('..') == -1) {
if(intRegExp.test(range)) {
min = max = range - 0;
}
}
else {
parts = range.split('..', 2);
if (intRegExp.test(parts[0])) {
if(intRegExp.test(parts[0])) {
min = parts[0] - 0;
}
if (intRegExp.test(parts[1])) {
if(intRegExp.test(parts[1])) {
max = parts[1] - 0;
}
}

2
dist/semantic.min.css
File diff suppressed because it is too large
View File

14
dist/semantic.min.js
File diff suppressed because it is too large
View File

Loading…
Cancel
Save