diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index f01a5608e..f6b0eaf9a 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -4,9 +4,10 @@ **Key Features** -- **Form** - Form now has new methods `reset`, `set value(s)` and `serialize` for modifying form data. Check docs for details on implementation. **Thanks @mktm** +- **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** - **Search** - Search `onSelect` now recieves JSON object matching currently selected element, you can now programmatically retrieve result JSON using `.search('get result', 'query')` or `.search('get results'). `get result` will default to current value unless specified as first parameter. - **Transition** - Added many new transitions, and new directions for existing transitions **Thanks @ph7vc** +- **Dropdown** - Dropdown now stores `placeholder text` (prompt text) as separate from `default text` (text set on page load). You can now reset placeholder conditions using `$('.ui.dropdown').dropdown('clear');`` **Enhancements** - **API** - Added new behavior `$.api('abort')` which cancels current request diff --git a/src/definitions/behaviors/form.js b/src/definitions/behaviors/form.js index 6182571c7..0a155c455 100644 --- a/src/definitions/behaviors/form.js +++ b/src/definitions/behaviors/form.js @@ -131,6 +131,39 @@ $.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 () { diff --git a/src/definitions/modules/dropdown.js b/src/definitions/modules/dropdown.js index 1614f723c..ceb4126b7 100644 --- a/src/definitions/modules/dropdown.js +++ b/src/definitions/modules/dropdown.js @@ -965,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 @@ -987,6 +987,7 @@ $.fn.dropdown = function(parameters) { save: { defaults: function() { module.save.defaultText(); + module.save.placeholderText(); module.save.defaultValue(); }, defaultValue: function() { @@ -994,9 +995,23 @@ $.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(''); + $text.addClass(className.placeholder); + }, + set: { filtered: function() { var @@ -1658,10 +1673,11 @@ $.fn.dropdown.settings = { }, metadata: { - defaultText : 'defaultText', - defaultValue : 'defaultValue', - text : 'text', - value : 'value' + defaultText : 'defaultText', + defaultValue : 'defaultValue', + placeholderText : 'placeholderText', + text : 'text', + value : 'value' }, selector : {