InlineEdit API change?

Antranig Basman antranig.basman at colorado.edu
Mon Jul 16 21:44:56 UTC 2012


Hi Anastasia - I think the API change in itself is harmless here since 
the function has already been documented as non-API forming. However, 
I'm against the particular change suggested here since we have so far 
been at least moderately careful to avoid "that-ist leak" in the 
InlineEdit infrastructure, restricting our utility functions to only 
expecting the minimum information in their argument lists, rather than 
leaking a reference to the entire component "that" which then makes the 
expectations of the function unclear.

What I would recommend here is to take the opportunity for a bit of 
"opportunistic refactoring". The best times for this kind of thing are 
exactly times like the present - where some additional requirement 
increases costs within the component and makes its architectural 
problems more impactful. In this case, there are some comments attached 
to some strings in the options block of this form:

         // this is here for backwards API compatibility, but should be 
in the strings block
         defaultViewText: "Click here to edit",

etc.

A good move here would be to write some code to actually copy these 
options into the strings block after initialisation, and to rewrite the 
InlineEdit implementation so that the versions in the strings block are 
the ones used throughout. You can then supply the signature to 
bindHighlightHandler as (element, displayModeRenderer, styles, strings) 
which I think would be a reasonable and communicative signature. 
Although "displayModeRenderer" is I think a quite misleading name for 
this DOM element argument.

The string options accepted at top level can then be marked as properly 
deprecated and scheduled for removal in some future version of the API 
(perhaps 2.0)

Cheers,
Antranig


On 16/07/2012 22:40, Cheetham, Anastasia wrote:
>
> I'm working on implementing a change to InlineEdit requested by the designers: the ability to change the invitation text when focus lands on the field.
>
> 	http://issues.fluidproject.org/browse/FLUID-4725
>
> The implementation requires a small API change to one of the functions, fluid.inlineEdit.bindHighlightHandler(), changing the last parameter:
>
> -    fluid.inlineEdit.bindHighlightHandler = function (element, displayModeRenderer, styles) {
> +    fluid.inlineEdit.bindHighlightHandler = function (element, displayModeRenderer, that) {
>
> This function binds keyboard focus and blur event handlers to an element. It is not part of the 'public' API, and I suspect that it's not something that is being overridden by implementations: the function basically adds and removes classes, so customization would likely occur by adjusting the styles themselves or overriding the classnames.
>
> I'm wondering how the community feels about this API change. Does anyone want to point out reasons not to make the change?
>





More information about the fluid-work mailing list