An related question: Will this code `org.apache.wicket.core.util.string.ComponentRenderer.renderComponent(Component)` work as expected?
On Tue, 14 Jan 2020 at 14:15, Maxim Solodovnik <solomax...@gmail.com> wrote: > Is this comment make sense: > https://github.com/apache/wicket/commit/6d91a6a9e5c1d955a53571f9fb0f76262ac5c5d2#r36784645 > ? > > On Tue, 14 Jan 2020 at 14:13, Martin Grigorov <mgrigo...@apache.org> > wrote: > >> On Tue, Jan 14, 2020 at 9:05 AM Maxim Solodovnik <solomax...@gmail.com> >> wrote: >> >> > Wasn't aware of `hidden` attribute >> > (and it seems to be widely supported >> > >> https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden >> > ) >> > >> >> Thanks for the reference, Maxim! >> >> It says "elements that are descendants of a hidden element are still >> active, which means that script elements can still execute and form >> elements can still submit" and this is different than display: none. >> So we should stick with CSS display! >> >> >> > Thanks :) >> > >> > On Tue, 14 Jan 2020 at 14:01, Martin Grigorov <mgrigo...@apache.org> >> > wrote: >> > >> > > Hi, >> > > >> > > 1) I see that such CSS resource might be used for other needs, not >> just >> > > this particular case but would it be an option to use "hidden" >> attribute >> > in >> > > this case instead of CSS "display" ? >> > > >> > > 2) wicket-core.css instead of wicket-base.css ? >> > > >> > > On Mon, Jan 13, 2020 at 9:43 PM <papega...@apache.org> wrote: >> > > >> > > > This is an automated email from the ASF dual-hosted git repository. >> > > > >> > > > papegaaij pushed a commit to branch csp >> > > > in repository https://gitbox.apache.org/repos/asf/wicket.git >> > > > >> > > > >> > > > The following commit(s) were added to refs/heads/csp by this push: >> > > > new 6d91a6a WICKET-6725: replace display:none by >> wicket--hidden >> > css >> > > > class >> > > > 6d91a6a is described below >> > > > >> > > > commit 6d91a6a9e5c1d955a53571f9fb0f76262ac5c5d2 >> > > > Author: Emond Papegaaij <emond.papega...@topicus.nl> >> > > > AuthorDate: Mon Jan 13 20:43:01 2020 +0100 >> > > > >> > > > WICKET-6725: replace display:none by wicket--hidden css class >> > > > --- >> > > > .../src/main/java/org/apache/wicket/Component.java | 2 +- >> > > > .../src/main/java/org/apache/wicket/Page.java | 11 +++++++ >> > > > .../wicket/css/WicketBaseCSSResourceReference.java | 36 >> > > > ++++++++++++++++++++++ >> > > > .../java/org/apache/wicket/css/wicket-base.css | 3 ++ >> > > > .../apache/wicket/settings/ResourceSettings.java | 31 >> > > > +++++++++++++++++++ >> > > > .../ajax/markup/html/AjaxIndicatorAppender.java | 2 +- >> > > > 6 files changed, 83 insertions(+), 2 deletions(-) >> > > > >> > > > diff --git >> a/wicket-core/src/main/java/org/apache/wicket/Component.java >> > > > b/wicket-core/src/main/java/org/apache/wicket/Component.java >> > > > index 9da8ec5..d2da23b 100644 >> > > > --- a/wicket-core/src/main/java/org/apache/wicket/Component.java >> > > > +++ b/wicket-core/src/main/java/org/apache/wicket/Component.java >> > > > @@ -2367,7 +2367,7 @@ public abstract class Component >> > > > response.write(name); >> > > > response.write(" id=\""); >> > > > response.write(getAjaxRegionMarkupId()); >> > > > - response.write("\" style=\"display:none\" >> > > > data-wicket-placeholder=\"\"></"); >> > > > + response.write("\" class=\"wicket--hidden\" >> > > > data-wicket-placeholder=\"\"></"); >> > > > response.write(name); >> > > > response.write(">"); >> > > > } >> > > > diff --git a/wicket-core/src/main/java/org/apache/wicket/Page.java >> > > > b/wicket-core/src/main/java/org/apache/wicket/Page.java >> > > > index 3f0f5b5..3d70ad8 100644 >> > > > --- a/wicket-core/src/main/java/org/apache/wicket/Page.java >> > > > +++ b/wicket-core/src/main/java/org/apache/wicket/Page.java >> > > > @@ -24,10 +24,13 @@ import java.util.Set; >> > > > >> > > > import org.apache.wicket.authorization.UnauthorizedActionException; >> > > > import org.apache.wicket.core.util.lang.WicketObjects; >> > > > +import org.apache.wicket.css.WicketBaseCSSResourceReference; >> > > > import org.apache.wicket.feedback.FeedbackDelay; >> > > > import org.apache.wicket.markup.MarkupException; >> > > > import org.apache.wicket.markup.MarkupStream; >> > > > import org.apache.wicket.markup.MarkupType; >> > > > +import org.apache.wicket.markup.head.CssHeaderItem; >> > > > +import org.apache.wicket.markup.head.IHeaderResponse; >> > > > import org.apache.wicket.markup.html.WebPage; >> > > > import org.apache.wicket.markup.resolver.IComponentResolver; >> > > > import org.apache.wicket.model.IModel; >> > > > @@ -1003,6 +1006,14 @@ public abstract class Page extends >> > MarkupContainer >> > > > } >> > > > } >> > > > >> > > > + @Override >> > > > + public void renderHead(IHeaderResponse response) >> > > > + { >> > > > + super.renderHead(response); >> > > > + response.render( >> > > > + >> > > > >> > > >> > >> CssHeaderItem.forReference(getApplication().getResourceSettings().getWicketBaseCSS())); >> > > > + } >> > > > + >> > > > /** >> > > > * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT >> > CALL. >> > > > * >> > > > diff --git >> > > > >> > > >> > >> a/wicket-core/src/main/java/org/apache/wicket/css/WicketBaseCSSResourceReference.java >> > > > >> > > >> > >> b/wicket-core/src/main/java/org/apache/wicket/css/WicketBaseCSSResourceReference.java >> > > > new file mode 100644 >> > > > index 0000000..9247216 >> > > > --- /dev/null >> > > > +++ >> > > > >> > > >> > >> b/wicket-core/src/main/java/org/apache/wicket/css/WicketBaseCSSResourceReference.java >> > > > @@ -0,0 +1,36 @@ >> > > > +/* >> > > > + * Licensed to the Apache Software Foundation (ASF) under one or >> more >> > > > + * contributor license agreements. See the NOTICE file distributed >> > with >> > > > + * this work for additional information regarding copyright >> ownership. >> > > > + * The ASF licenses this file to You under the Apache License, >> Version >> > > 2.0 >> > > > + * (the "License"); you may not use this file except in compliance >> > with >> > > > + * the License. You may obtain a copy of the License at >> > > > + * >> > > > + * http://www.apache.org/licenses/LICENSE-2.0 >> > > > + * >> > > > + * Unless required by applicable law or agreed to in writing, >> software >> > > > + * distributed under the License is distributed on an "AS IS" >> BASIS, >> > > > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> > > > implied. >> > > > + * See the License for the specific language governing permissions >> and >> > > > + * limitations under the License. >> > > > + */ >> > > > +package org.apache.wicket.css; >> > > > + >> > > > +import org.apache.wicket.request.resource.CssResourceReference; >> > > > + >> > > > +public final class WicketBaseCSSResourceReference extends >> > > > CssResourceReference >> > > > +{ >> > > > + private static final long serialVersionUID = >> > > 6795863553105608280L; >> > > > + >> > > > + private static final WicketBaseCSSResourceReference >> INSTANCE = >> > > new >> > > > WicketBaseCSSResourceReference(); >> > > > + >> > > > + public static WicketBaseCSSResourceReference get() >> > > > + { >> > > > + return INSTANCE; >> > > > + } >> > > > + >> > > > + private WicketBaseCSSResourceReference() >> > > > + { >> > > > + super(WicketBaseCSSResourceReference.class, >> > > > "wicket-base.css"); >> > > > + } >> > > > +} >> > > > diff --git >> > > > a/wicket-core/src/main/java/org/apache/wicket/css/wicket-base.css >> > > > b/wicket-core/src/main/java/org/apache/wicket/css/wicket-base.css >> > > > new file mode 100644 >> > > > index 0000000..9bbdd63 >> > > > --- /dev/null >> > > > +++ >> b/wicket-core/src/main/java/org/apache/wicket/css/wicket-base.css >> > > > @@ -0,0 +1,3 @@ >> > > > +.wicket--hidden { >> > > > + display: none!important; >> > > > +} >> > > > \ No newline at end of file >> > > > diff --git >> > > > >> > > >> > >> a/wicket-core/src/main/java/org/apache/wicket/settings/ResourceSettings.java >> > > > >> > > >> > >> b/wicket-core/src/main/java/org/apache/wicket/settings/ResourceSettings.java >> > > > index b76fbcd..68317f4 100644 >> > > > --- >> > > > >> > > >> > >> a/wicket-core/src/main/java/org/apache/wicket/settings/ResourceSettings.java >> > > > +++ >> > > > >> > > >> > >> b/wicket-core/src/main/java/org/apache/wicket/settings/ResourceSettings.java >> > > > @@ -29,12 +29,14 @@ import >> > > > org.apache.wicket.core.util.resource.locator.IResourceStreamLocator; >> > > > import >> > > org.apache.wicket.core.util.resource.locator.ResourceStreamLocator; >> > > > import >> > > > >> > > >> > >> org.apache.wicket.core.util.resource.locator.caching.CachingResourceStreamLocator; >> > > > import org.apache.wicket.css.ICssCompressor; >> > > > +import org.apache.wicket.css.WicketBaseCSSResourceReference; >> > > > import org.apache.wicket.javascript.IJavaScriptCompressor; >> > > > import org.apache.wicket.markup.head.PriorityFirstComparator; >> > > > import >> > > > org.apache.wicket.markup.head.ResourceAggregator.RecordedHeaderItem; >> > > > import org.apache.wicket.markup.html.IPackageResourceGuard; >> > > > import org.apache.wicket.markup.html.SecurePackageResourceGuard; >> > > > import org.apache.wicket.request.http.WebResponse; >> > > > +import org.apache.wicket.request.resource.CssResourceReference; >> > > > import >> > > > >> > > >> > >> org.apache.wicket.request.resource.caching.FilenameWithVersionResourceCachingStrategy; >> > > > import >> > > > org.apache.wicket.request.resource.caching.IResourceCachingStrategy; >> > > > import >> > > > >> org.apache.wicket.request.resource.caching.NoOpResourceCachingStrategy; >> > > > @@ -172,6 +174,8 @@ public class ResourceSettings implements >> > > > IPropertiesFactoryContext >> > > > false); >> > > > >> > > > private boolean encodeJSessionId = false; >> > > > + >> > > > + private CssResourceReference wicketBaseCSS = >> > > > WicketBaseCSSResourceReference.get(); >> > > > >> > > > /** >> > > > * Configures Wicket's default ResourceLoaders.<br> >> > > > @@ -770,4 +774,31 @@ public class ResourceSettings implements >> > > > IPropertiesFactoryContext >> > > > this.encodeJSessionId = encodeJSessionId; >> > > > return this; >> > > > } >> > > > + >> > > > + /** >> > > > + * Returns the resource reference of the base stylesheet for >> > > > Wicket. This stylesheet contains >> > > > + * some lowlevel styling used by Wicket. >> > > > + * >> > > > + * @return The resource reference of the base stylesheet for >> > > > Wicket. >> > > > + */ >> > > > + public CssResourceReference getWicketBaseCSS() >> > > > + { >> > > > + return wicketBaseCSS; >> > > > + } >> > > > + >> > > > + /** >> > > > + * Replaces the base stylesheet for Wicket. Changes made to >> the >> > > > styling can break functionality >> > > > + * like {@link >> > Component#setOutputMarkupPlaceholderTag(boolean)}, >> > > > causing components that should >> > > > + * not be visible to be displayed. Make sure the replacement >> > > > stylesheet has matching definitions >> > > > + * for the corresponding sections in the Wicket version. >> > > > + * >> > > > + * @param wicketBaseCSS >> > > > + * The replacement styleheet. >> > > > + * @return {@code this} object for chaining >> > > > + */ >> > > > + public ResourceSettings >> setWicketBaseCSS(CssResourceReference >> > > > wicketBaseCSS) >> > > > + { >> > > > + this.wicketBaseCSS = wicketBaseCSS; >> > > > + return this; >> > > > + } >> > > > } >> > > > diff --git >> > > > >> > > >> > >> a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java >> > > > >> > > >> > >> b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java >> > > > index d0fee97..ab1c0a1 100644 >> > > > --- >> > > > >> > > >> > >> a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java >> > > > +++ >> > > > >> > > >> > >> b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxIndicatorAppender.java >> > > > @@ -95,7 +95,7 @@ public class AjaxIndicatorAppender extends >> Behavior >> > > > super.afterRender(component); >> > > > final Response r = component.getResponse(); >> > > > >> > > > - r.write("<span style=\"display:none;\" class=\""); >> > > > + r.write("<span class=\"wicket--hidden\" class=\""); >> > > > r.write(getSpanClass()); >> > > > r.write("\" "); >> > > > r.write("id=\""); >> > > > >> > > > >> > > >> > >> > >> > -- >> > WBR >> > Maxim aka solomax >> > >> > > > -- > WBR > Maxim aka solomax > -- WBR Maxim aka solomax