diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_html.html b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_html.html index 7bd5624801eead5c40289bfb286934244362398b..4cf380bb455900882a1c5048bd78ea494b11f94c 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_html.html +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_html.html @@ -12,7 +12,7 @@ </head> <body> <div class="ui-field-contain"> - <label> <span></span></label> + <label></label> <div></div> </div> </body> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_html.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_html.xml index 7b4a8929a7557222ddd7a0a9670418bcd2240a05..be49cc83cc95616598ea4918c9caecbbe6d81af2 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_html.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_html.xml @@ -234,7 +234,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>954.24197.36337.41506</string> </value> + <value> <string>961.42413.53044.57736</string> </value> </item> <item> <key> <string>state</string> </key> @@ -252,7 +252,7 @@ </tuple> <state> <tuple> - <float>1475585351.18</float> + <float>1503674612.29</float> <string>UTC</string> </tuple> </state> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_js.js index 91ef33fc081ec78c978c8a0cd7b2375c5105e616..9bbe1191caaa5e87c2f5c5ce8356a2046548ef1f 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_js.js +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_label_field_js.js @@ -20,16 +20,14 @@ .setState({ label_text: '', error_text: '', - label: true, + label: true, // the label element is already present in the HTML template css_class: '' }) .ready(function () { return this.changeState({ - label_element: this.element.querySelector('label'), - label_text_element: this.element.querySelector('label').firstChild, - error_element: this.element.querySelector('span'), - container_element: this.element.querySelector('div') + container_element: this.element.querySelector('div'), // matches the closest div + label_element: this.element.querySelector('label') }); }) @@ -44,6 +42,11 @@ hidden: options.field_json.hidden, css_class: options.field_json.css_class }; + // RenderJS would overwrite default value with empty variables :-( + // So we have to mitigate this behaviour + if (state_dict.label === undefined) { + state_dict.label = true; + } return this.changeState(state_dict); }) @@ -58,7 +61,7 @@ } if (modification_dict.hasOwnProperty('label_text')) { - this.state.label_text_element.textContent = this.state.label_text; + this.state.label_element.textContent = this.state.label_text; } this.state.label_element.setAttribute('for', gadget.state.scope); @@ -67,11 +70,16 @@ } if (modification_dict.hasOwnProperty('error_text')) { - this.state.error_element.textContent = ""; + // first remove old errors + span = this.state.container_element.querySelector('span'); + if (span) { + this.state.container_element.removeChild(span); + } + // display new error if present if (this.state.error_text) { span = document.createElement('span'); span.textContent = this.state.error_text; - this.state.error_element.appendChild(span); + this.state.container_element.appendChild(span); } } diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.css b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.css index 0a10626d552809c60cfc06d18ae0bfd525b398ee..1dff9ebcf63440e536658ceae03f41adbfe8364d 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.css +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.css @@ -932,7 +932,6 @@ div[data-gadget-scope='header'] .ui-header ul { } } */ - /* form validation (assuming label>span is used) */ } .gadget-content div[data-gadget-scope='m'] { animation: fadein 0.2s ease-out; @@ -1069,26 +1068,26 @@ div[data-gadget-scope='header'] .ui-header ul { flex: 7; } } -.gadget-content form label { +.gadget-content form .ui-field-contain { position: relative; } -.gadget-content form label span span { +.gadget-content form .ui-field-contain > span { animation: fadein 0.2s ease-out; } @media not screen and (max-width: 85em), only screen and (min-width: 45em) and (max-width: 85em) { - .gadget-content form label span span { + .gadget-content form .ui-field-contain > span { background-color: #FF6600; color: #f8fff3; - left: 110%; + left: 25%; position: absolute; - bottom: 130%; + bottom: 110%; white-space: pre; padding: 6pt; border-radius: 0.325em; width: auto; z-index: 1001; } - .gadget-content form label span span:before { + .gadget-content form .ui-field-contain > span:before { position: absolute; top: 100%; left: 2em; @@ -1100,7 +1099,7 @@ div[data-gadget-scope='header'] .ui-header ul { } } @media not screen and (min-width: 45em) { - .gadget-content form label span span { + .gadget-content form .ui-field-contain > span { margin-left: 6pt; color: #FF6600; } diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/erp5css.less.txt b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/erp5css.less.txt index 1d89b4be5e7455a121b5f6fa93d748c63792934a..c8793b908325fa9ffc028b3dad1e4ea551b46363 100644 --- a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/erp5css.less.txt +++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/erp5css.less.txt @@ -1247,19 +1247,19 @@ div[data-gadget-scope='header'] .ui-header { } */ - /* form validation (assuming label>span is used) */ - form label { + form .ui-field-contain { + // relative for displaying popups with errors position: relative; - span span { + & > span { animation: fadein @transition-timing; @media @desktop, @tablet { background-color: @coloraccent; color: @colorsubheaderlink; - left: 110%; + left: 25%; position: absolute; - bottom: 130%; + bottom: 110%; white-space: pre; padding: @margin-size; border-radius: @border-radius;