From 18e073d1dd1f665021aa1d284514daf207d925f9 Mon Sep 17 00:00:00 2001 From: Andrea Minetti Date: Fri, 23 Oct 2026 16:34:01 +0200 Subject: [PATCH] Validation input class --- .../main/scala/ch/wsl/box/client/styles/BoxStyle.scala | 1 + .../scala/ch/wsl/box/client/styles/GlobalStyles.scala | 10 ++++++++++ .../client/views/components/widget/PopupWidget.scala | 4 ++-- .../client/views/components/widget/RichTextPopup.scala | 4 ++-- .../views/components/widget/geo/OlMapWidget.scala | 2 +- .../components/widget/lookup/PopupSelectWidget.scala | 4 ++-- 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/client/src/main/scala/ch/wsl/box/client/styles/BoxStyle.scala b/client/src/main/scala/ch/wsl/box/client/styles/BoxStyle.scala index 2baef046..0ae2bc3f 100644 --- a/client/src/main/scala/ch/wsl/box/client/styles/BoxStyle.scala +++ b/client/src/main/scala/ch/wsl/box/client/styles/BoxStyle.scala @@ -92,6 +92,7 @@ trait BoxStyle { val boxButtonIconMini: StyleA val boxNavigationLabel: StyleA val spacedList: StyleA + val validationInput:StyleA val boxButtonImportant: StyleA val boxButtonDanger: StyleA val popupButton: StyleA diff --git a/client/src/main/scala/ch/wsl/box/client/styles/GlobalStyles.scala b/client/src/main/scala/ch/wsl/box/client/styles/GlobalStyles.scala index d18daf63..b9aba2e1 100755 --- a/client/src/main/scala/ch/wsl/box/client/styles/GlobalStyles.scala +++ b/client/src/main/scala/ch/wsl/box/client/styles/GlobalStyles.scala @@ -1074,6 +1074,16 @@ class GlobalStyles(settings:Settings,conf:StyleConf,font:BoxFont ) extends Style ) ) + override val validationInput = style( + margin.`0`, + padding.`0`, + border.`0`, + float.left, + minHeight.`0`, + minWidth.`0`, + width(1 px), + height(1 px), + ) override val boxButtonImportant = style( diff --git a/client/src/main/scala/ch/wsl/box/client/views/components/widget/PopupWidget.scala b/client/src/main/scala/ch/wsl/box/client/views/components/widget/PopupWidget.scala index 9748089b..0d3373ca 100644 --- a/client/src/main/scala/ch/wsl/box/client/views/components/widget/PopupWidget.scala +++ b/client/src/main/scala/ch/wsl/box/client/views/components/widget/PopupWidget.scala @@ -142,7 +142,7 @@ object PopupWidget extends ComponentWidgetFactory { private def _renderOnTable(write:Boolean,nested:Binding.NestedInterceptor): JsDom.all.Modifier = popup(nested,write,(modal,modalStatus) => { div( - TextInput(params.prop.bitransform(_.string)(x => params.prop.get))(width := 1.px, height := 1.px, padding := 0, border := 0, float.left,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field + TextInput(params.prop.bitransform(_.string)(x => params.prop.get))(ClientConf.style.validationInput,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field button(ClientConf.style.popupButton, width := 100.pct, onclick :+= ((e:Event) => { modalStatus.set(Status.Open) e.preventDefault() @@ -161,7 +161,7 @@ object PopupWidget extends ComponentWidgetFactory { div(BootstrapCol.md(12),ClientConf.style.noPadding, ClientConf.style.smallBottomMargin,ClientConf.style.fieldContainerWrite)( WidgetUtils.toLabel(field,WidgetUtils.LabelRight), - TextInput(params.prop.bitransform(_.string)(x => params.prop.get))(width := 1.px, height := 1.px, padding := 0, border := 0, float.left,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field + TextInput(params.prop.bitransform(_.string)(x => params.prop.get))(ClientConf.style.validationInput,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field tooltip(button(ClientConf.style.popupButton,BootstrapStyles.Float.right(), onclick :+= ((e:Event) => { modalStatus.set(Status.Open) e.preventDefault() diff --git a/client/src/main/scala/ch/wsl/box/client/views/components/widget/RichTextPopup.scala b/client/src/main/scala/ch/wsl/box/client/views/components/widget/RichTextPopup.scala index 4b7be832..5b3ec0d1 100644 --- a/client/src/main/scala/ch/wsl/box/client/views/components/widget/RichTextPopup.scala +++ b/client/src/main/scala/ch/wsl/box/client/views/components/widget/RichTextPopup.scala @@ -111,7 +111,7 @@ object RichTextPopup extends ComponentWidgetFactory { private def _renderOnTable(write:Boolean,nested:Binding.NestedInterceptor): JsDom.all.Modifier = popup(nested,write,(modal,modalStatus) => { div( - TextInput(params.prop.bitransform(_.string)(x => params.prop.get))(width := 1.px, height := 1.px, padding := 0, border := 0, float.left,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field + TextInput(params.prop.bitransform(_.string)(x => params.prop.get))(ClientConf.style.validationInput,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field produceLabel(modalStatus), modal.render ) @@ -124,7 +124,7 @@ object RichTextPopup extends ComponentWidgetFactory { div(BootstrapCol.md(12),ClientConf.style.noPadding, ClientConf.style.smallBottomMargin, WidgetUtils.toLabel(field,WidgetUtils.LabelRight), - TextInput(params.prop.bitransform(_.string)(x => params.prop.get))(width := 1.px, height := 1.px, padding := 0, border := 0, float.left,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field + TextInput(params.prop.bitransform(_.string)(x => params.prop.get))(ClientConf.style.validationInput,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field produceLabel(modalStatus), modal.render diff --git a/client/src/main/scala/ch/wsl/box/client/views/components/widget/geo/OlMapWidget.scala b/client/src/main/scala/ch/wsl/box/client/views/components/widget/geo/OlMapWidget.scala index fef71102..033361d9 100644 --- a/client/src/main/scala/ch/wsl/box/client/views/components/widget/geo/OlMapWidget.scala +++ b/client/src/main/scala/ch/wsl/box/client/views/components/widget/geo/OlMapWidget.scala @@ -339,7 +339,7 @@ class OlMapWidget(val id: ReadableProperty[Option[String]], val field: JSONField def requiredCheckField = TextInput( _data.bitransform(_.map(_.toString(1).take(5)).getOrElse("")) // check on the actual data is is non empty (x => _data.get) // the text input will never been changed - )(width := 1.px, height := 1.px, minHeight := 1.px, padding := 0, border := 0, float.left,WidgetUtils.toNullable(field.nullable)) //in order to use HTML5 validation we insert an hidden field + )(ClientConf.style.validationInput,WidgetUtils.toNullable(field.nullable)) //in order to use HTML5 validation we insert an hidden field override protected def edit(nested:Binding.NestedInterceptor): JsDom.all.Modifier = { diff --git a/client/src/main/scala/ch/wsl/box/client/views/components/widget/lookup/PopupSelectWidget.scala b/client/src/main/scala/ch/wsl/box/client/views/components/widget/lookup/PopupSelectWidget.scala index f6a40af6..f9700bf4 100644 --- a/client/src/main/scala/ch/wsl/box/client/views/components/widget/lookup/PopupSelectWidget.scala +++ b/client/src/main/scala/ch/wsl/box/client/views/components/widget/lookup/PopupSelectWidget.scala @@ -256,7 +256,7 @@ object PopupSelectWidget extends ComponentWidgetFactory { override def editOnTable(nested:Binding.NestedInterceptor): JsDom.all.Modifier = popupEdit(nested)((modalStatus) => { div( - TextInput(data.bitransform(_.string)(x => data.get))(width := 1.px, height := 1.px, padding := 0, border := 0, float.left,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field + TextInput(data.bitransform(_.string)(x => data.get))(ClientConf.style.validationInput,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field button(ClientConf.style.popupButton, width := 100.pct, onclick :+= ((e:Event) => { modalStatus.set(Status.Open) e.preventDefault() @@ -271,7 +271,7 @@ object PopupSelectWidget extends ComponentWidgetFactory { div(ClientConf.style.fieldContainerWrite)( WidgetUtils.toLabel(field,WidgetUtils.LabelRight), - TextInput(data.bitransform(_.string)(x => data.get))(width := 1.px, height := 1.px, padding := 0, border := 0, float.left,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field + TextInput(data.bitransform(_.string)(x => data.get))(ClientConf.style.validationInput,WidgetUtils.toNullable(field.nullable)), //in order to use HTML5 validation we insert an hidden field tooltip(button(ClientConf.style.popupButton, onclick :+= ((e:Event) => { modalStatus.set(Status.Open) e.preventDefault()