Index: /Users/team/fluid-repos/fluid-components/src/webapp/fluid-components/js/fluid/InlineEdit.js =================================================================== --- /Users/team/fluid-repos/fluid-components/src/webapp/fluid-components/js/fluid/InlineEdit.js (revision 5211) +++ /Users/team/fluid-repos/fluid-components/src/webapp/fluid-components/js/fluid/InlineEdit.js (working copy) @@ -17,8 +17,9 @@ (function ($, fluid) { // Is paddings doing what we want? Should it be in the CSS file instead? - function edit(text, editContainer, editField, invitationStyle, focusStyle, paddings, selectOnEdit) { - editField.val(text.text()); + function edit(text, editContainer, editField, invitationStyle, focusStyle, paddings, invitationText, selectOnEdit) { + var displayText = text.text(); + editField.val(displayText === invitationText ? "" : displayText); editField.width(Math.max(text.width() + paddings.add, paddings.minimum)); text.removeClass(invitationStyle); text.removeClass(focusStyle); @@ -40,9 +41,14 @@ text.show(); } - function finish(editContainer, editField, text, finishedFn) { + function finish(editContainer, editField, text, finishedFn, invitationText) { finishedFn(editField[0], text[0]); - text.text(editField.val()); + var editVal = editField.val(); + if (!editVal) { + text.text(invitationText); + } else { + text.text(editVal); + } view(editContainer, text); text.focus(); } @@ -47,9 +53,9 @@ text.focus(); } - function editHandler(text, editContainer, editField, invitationStyle, focusStyle, paddings, selectOnEdit) { + function editHandler(text, editContainer, editField, invitationStyle, focusStyle, paddings, invitationText, selectOnEdit) { return function () { - edit(text, editContainer, editField, invitationStyle, focusStyle, paddings, selectOnEdit); + edit(text, editContainer, editField, invitationStyle, focusStyle, paddings, invitationText, selectOnEdit); return false; }; } @@ -65,9 +71,9 @@ text.hover(over, out); } - function mouse(text, editContainer, editField, styles, paddings, finishFn, selectOnEdit) { + function mouse(text, editContainer, editField, styles, paddings, finishFn, invitationText, selectOnEdit) { bindHoverHandlers(text, styles.invitation); - text.click(editHandler(text, editContainer, editField, styles.invitation, styles.focus, paddings, selectOnEdit)); + text.click(editHandler(text, editContainer, editField, styles.invitation, styles.focus, paddings, invitationText, selectOnEdit)); } function bindKeyHighlight(text, focusStyle) { @@ -82,13 +88,13 @@ text.blur(focusOff); } - function keyNav(text, editContainer, editField, styles, paddings, selectOnEdit) { + function keyNav(text, editContainer, editField, styles, paddings, invitationText, selectOnEdit) { text.tabbable(); bindKeyHighlight(text, styles.focus); - text.activatable(editHandler(text, editContainer, editField, styles.invitation, styles.focus, paddings, selectOnEdit)); + text.activatable(editHandler(text, editContainer, editField, styles.invitation, styles.focus, paddings, invitationText, selectOnEdit)); } - function bindEditFinish(editContainer, editField, text, finishedFn) { + function bindEditFinish(editContainer, editField, text, finishedFn, invitationText) { var finishHandler = function (evt) { // Fix for handling arrow key presses see FLUID-760 var code = (evt.keyCode ? evt.keyCode : (evt.which ? evt.which : 0)); @@ -96,7 +102,7 @@ return true; } - finish(editContainer, editField, text, finishedFn); + finish(editContainer, editField, text, finishedFn, invitationText); return false; }; @@ -122,6 +128,7 @@ instance.paddings = $.extend({}, defaults.paddings, options.paddings); instance.finishedEditing = options.finishedEditing || function () {}; instance.editModeInjector = options.editModeInjector || defaults.editModeInjector; + instance.invitationText = options.invitationText || defaults.invitationText; }; var bindToDom = function (instance, container) { @@ -128,6 +135,10 @@ // Bind to the DOM. instance.container = fluid.container(container); instance.text = $(instance.selectors.text, instance.container); + var displayText = instance.text.text(); + if (!displayText) { + instance.text.text(instance.invitationText); + } // If an edit container is found in the markup, use it. Otherwise generate one based on the view text. instance.editContainer = $(instance.selectors.editContainer, instance.container); @@ -144,7 +155,7 @@ var defaultEditModeInjector = function (componentContainerId, view) { // Template strings. - var editModeTemplate = "
"; + var editModeTemplate = ""; // Create the edit container and pull out the textfield. var editContainer = $(editModeTemplate); @@ -183,9 +194,9 @@ bindToDom(this, componentContainer); // Add event handlers. - mouse(this.text, this.editContainer, this.editField, this.styles, this.paddings, this.finishedEditing, options.selectOnEdit); - keyNav(this.text, this.editContainer, this.editField, this.styles, this.paddings, options.selectOnEdit); - bindEditFinish(this.editContainer, this.editField, this.text, this.finishedEditing); + mouse(this.text, this.editContainer, this.editField, this.styles, this.paddings, this.finishedEditing, this.invitationText, options.selectOnEdit); + keyNav(this.text, this.editContainer, this.editField, this.styles, this.paddings, this.invitationText, options.selectOnEdit); + bindEditFinish(this.editContainer, this.editField, this.text, this.finishedEditing, this.invitationText); bindBlurHandler(this.editContainer, this.editField, this.text, this.finishedEditing); // Add ARIA support. @@ -196,11 +207,11 @@ }; fluid.InlineEdit.prototype.edit = function () { - edit(this.text, this.editContainer, this.editField, this.styles.invitation, this.styles.focus, this.paddings); + edit(this.text, this.editContainer, this.editField, this.styles.invitation, this.styles.focus, this.paddings, this.invitationText); }; fluid.InlineEdit.prototype.finish = function () { - finish(this.editContainer, this.editField, this.text, this.finishedEditing); + finish(this.editContainer, this.editField, this.text, this.finishedEditing, this.invitationText); }; fluid.InlineEdit.prototype.defaults = { @@ -222,6 +233,8 @@ editModeInjector: defaultEditModeInjector, + invitationText: "Click here to edit", + selectOnEdit: false }; Index: /Users/team/fluid-repos/fluid-components/src/webapp/tests/fluid-tests/InlineEdit-test.html =================================================================== --- /Users/team/fluid-repos/fluid-components/src/webapp/tests/fluid-tests/InlineEdit-test.html (revision 5211) +++ /Users/team/fluid-repos/fluid-components/src/webapp/tests/fluid-tests/InlineEdit-test.html (working copy) @@ -22,7 +22,7 @@ - +The following line is an empty inline edit with default invitation text: + +
+ +The following line is an empty inline edit with custom invitation text: + +
+ ++ These edit fields + are all set up + with a single function call. -