<?xml version="1.0" encoding="UTF-8"?>
<xbl:xbl xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xxi="http://orbeon.org/oxf/xml/xinclude"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
xmlns:saxon="http://saxon.sf.net/"
xmlns:xbl="http://www.w3.org/ns/xbl"
xmlns:xxbl="http://orbeon.org/oxf/xml/xbl"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oxf="http://www.orbeon.com/oxf/processors"
xmlns:exf="http://www.exforms.org/exf/1-0" >
<xbl:binding id="fr-inplace-input-binding" element="fr|inplace-input">
<metadata xmlns="http://orbeon.org/oxf/xml/form-builder">
<display-name lang="en">Inplace Input</display-name>
<display-name lang="fr">Entrée sur-place</display-name>
<icon lang="en">
<small-icon>/forms/orbeon/builder/images/input.png</small-icon>
<large-icon>/forms/orbeon/builder/images/input.png</large-icon>
</icon>
<template>
<fr:inplace-input>
<xforms:label ref=""/>
<xforms:hint ref=""/>
<xforms:help ref=""/>
<xforms:alert ref=""/>
</fr:inplace-input>
</template>
</metadata>
<xbl:resources>
<xbl:style>
.xbl-fr-inplace-input { display: inline-block; display: -moz-inline-box; *zoom: 1 }
.xbl-fr-inplace-input .fr-inplace-content:hover .xforms-output { background-color: #FFFF88 }
.xbl-fr-inplace-input .xforms-input input { background-color: #FFFF88; background-image: none; border: none }
.xbl-fr-inplace-input .fr-inplace-buttons { display: block; margin-top:0.5em }
.xbl-fr-inplace-input .fr-inplace-buttons .xforms-control { display: inline }
</xbl:style>
</xbl:resources>
<xbl:template xxbl:transform="oxf:xslt">
<xsl:transform version="2.0">
<xsl:template match="/*">
<xforms:group appearance="xxforms:internal">
<xforms:model id="fr-inplace-model">
<xforms:instance id="fr-inplace-instance">
<value/>
</xforms:instance>
</xforms:model>
<xforms:switch xbl:attr="ref bind context">
<xsl:attribute name="class" select="string-join(('fr-component-group', @class), ' ')"/>
<xbl:content includes="xforms|label, xforms|alert, xforms|help"/>
<xxforms:variable name="result" select="." as="node()*"/>
<xforms:case id="fr-inplace-view">
<xhtml:span class="fr-inplace-content fr-inplace-view">
<xforms:output ref="." xbl:attr="navindex navindex=tabindex" id="fr-inplace-input-view-output">
<xsl:choose>
<xsl:when test="xforms:hint">
<xsl:attribute name="value"
select="concat('for $value in .
return if (normalize-space($value) = '''' and not(exf:readonly($result)))
then concat(''['', ', if (xforms:hint/@ref) then xforms:hint/@ref else concat('''', xforms:hint, ''''), ', '']'')
else $value')"/>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="value" select="."/>
</xsl:otherwise>
</xsl:choose>
<xforms:action ev:event="DOMActivate" if="not(exf:readonly($result))">
<xforms:setvalue model="fr-inplace-model" ref="." value="context()"/>
<xforms:toggle case="fr-inplace-edit"/>
<xforms:setfocus control="fr-inplace-input"/>
</xforms:action>
</xforms:output>
</xhtml:span>
</xforms:case>
<xforms:case id="fr-inplace-edit">
<xforms:group class="fr-inplace-content fr-inplace-edit" model="fr-inplace-model" ref=".[not(exf:readonly($result))]" id="fr-inplace-input-edit-group">
<xforms:input id="fr-inplace-input" xbl:attr="navindex navindex=tabindex incremental" ref=".">
<xforms:action ev:event="DOMActivate">
<xforms:setvalue ref="$result" value="context()"/>
</xforms:action>
</xforms:input>
<xhtml:span class="fr-inplace-buttons">
<xforms:trigger class="fr-inplace-rename">
<xforms:label>Apply</xforms:label>
<xforms:action ev:event="DOMActivate">
<xforms:setvalue ref="$result" value="context()"/>
</xforms:action>
</xforms:trigger>
or
<xforms:trigger appearance="minimal" class="fr-inplace-cancel">
<xforms:label>Cancel</xforms:label>
</xforms:trigger>
</xhtml:span>
<xforms:action ev:event="DOMActivate">
<xforms:setvalue ref="."/>
<xforms:toggle case="fr-inplace-view"/>
</xforms:action>
</xforms:group>
</xforms:case>
</xforms:switch>
</xforms:group>
</xsl:template>
</xsl:transform>
</xbl:template>
</xbl:binding>
</xbl:xbl>