This is an automated email from the ASF dual-hosted git repository.

vlamp pushed a commit to branch TAP5-2686
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git

commit dd51ea9767a95355257e4e892756a73fbf108453
Author: Volker Lamp <vl...@apache.org>
AuthorDate: Sat Jun 18 23:48:59 2022 +0200

    TAP5-2686: Fix for the 404 error.
    
    However, popovers won't work with the bundled Bootstrap until TAP5-2733
    has been done.
---
 .../apache/tapestry5/modules/JavaScriptModule.java   |  2 +-
 .../tapestry5/integration/app7/PopoverTest.groovy    | 20 ++++++++++++++++++++
 .../tapestry5/integration/app7/pages/Popover.java    | 16 ++++++++++++++++
 .../integration/app7/services/AppModule.java         | 11 +++++++++++
 .../test/resources/META-INF/modules/app/Popover.js   |  5 +++++
 .../tapestry5/integration/app7/pages/Index.tml       |  3 +++
 .../tapestry5/integration/app7/pages/Popover.tml     |  6 ++++++
 7 files changed, 62 insertions(+), 1 deletion(-)

diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
index 63dfc5fcc..cbf5b8cd3 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
@@ -446,7 +446,7 @@ public class JavaScriptModule
                     bootstrapUtil.forFile("popper.js")));
             
             for (String name : new String[]{"alert", "button", "carousel", 
"collapse", "dropdown", "modal",
-                    "scrollspy", "tab", "tooltip"})
+                    "popover", "scrollspy", "tab", "tooltip"})
             {
                 Resource lib = bootstrapUtil.forFile(name + ".js");
                 if (lib.exists())
diff --git 
a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app7/PopoverTest.groovy
 
b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app7/PopoverTest.groovy
new file mode 100644
index 000000000..0ec4379e8
--- /dev/null
+++ 
b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app7/PopoverTest.groovy
@@ -0,0 +1,20 @@
+package org.apache.tapestry5.integration.app7
+
+import org.apache.tapestry5.integration.GroovyTapestryCoreTestCase
+import org.apache.tapestry5.test.TapestryTestConfiguration
+import org.testng.annotations.Test
+
+@TapestryTestConfiguration(webAppFolder = "src/test/app7")
+class PopoverTest extends GroovyTapestryCoreTestCase
+{
+       
+       /** TAP5-2686 */
+       @Test
+       void popover_js_accessible()
+       {
+               open "/modules.gz/bootstrap/popover.js"
+               waitForPageToLoad()
+               assertTextPresent("Bootstrap popover.js v4.3.1 
(https://getbootstrap.com/)")
+       }
+
+}
diff --git 
a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app7/pages/Popover.java
 
b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app7/pages/Popover.java
new file mode 100644
index 000000000..8a87ca6e0
--- /dev/null
+++ 
b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app7/pages/Popover.java
@@ -0,0 +1,16 @@
+package org.apache.tapestry5.integration.app7.pages;
+
+import org.apache.tapestry5.annotations.Environmental;
+import org.apache.tapestry5.services.javascript.JavaScriptSupport;
+
+public class Popover {
+
+       @Environmental
+       JavaScriptSupport jsSupport;
+       
+       void afterRender() {
+               jsSupport.require("app/Popover");
+       }
+
+       
+}
diff --git 
a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app7/services/AppModule.java
 
b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app7/services/AppModule.java
index 9d8c36c5b..aebaea91c 100644
--- 
a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app7/services/AppModule.java
+++ 
b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app7/services/AppModule.java
@@ -1,9 +1,20 @@
 package org.apache.tapestry5.integration.app7.services;
 
+import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.ioc.annotations.ImportModule;
+import org.apache.tapestry5.ioc.services.ApplicationDefaults;
+import org.apache.tapestry5.ioc.services.SymbolProvider;
 import org.apache.tapestry5.modules.Bootstrap4Module;
 
 @ImportModule(Bootstrap4Module.class)
 public class AppModule {
 
+       @Contribute(SymbolProvider.class)
+       @ApplicationDefaults
+       public static void configureTapestry(MappedConfiguration<String, 
Object> conf) {
+               conf.add(SymbolConstants.JAVASCRIPT_INFRASTRUCTURE_PROVIDER, 
"jquery");
+       }
+
 }
diff --git a/tapestry-core/src/test/resources/META-INF/modules/app/Popover.js 
b/tapestry-core/src/test/resources/META-INF/modules/app/Popover.js
new file mode 100644
index 000000000..732d28b92
--- /dev/null
+++ b/tapestry-core/src/test/resources/META-INF/modules/app/Popover.js
@@ -0,0 +1,5 @@
+require(['bootstrap/popover'], () => {
+       // Popovers are opt-in for performance reasons, so you must initialize 
them yourself.
+       // 
https://getbootstrap.com/docs/4.3/components/popovers/#example-enable-popovers-everywhere
+    $('[data-toggle="popover"]').popover()
+})
\ No newline at end of file
diff --git 
a/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app7/pages/Index.tml
 
b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app7/pages/Index.tml
index b3d222e45..39540137d 100644
--- 
a/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app7/pages/Index.tml
+++ 
b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app7/pages/Index.tml
@@ -7,6 +7,9 @@
                <li>
                        <t:pagelink t:page="Forms">Forms</t:pagelink>
                </li>
+               <li>
+                       <t:pagelink t:page="Popover">Popover</t:pagelink>
+               </li>
        </ul>
 
 </div> 
\ No newline at end of file
diff --git 
a/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app7/pages/Popover.tml
 
b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app7/pages/Popover.tml
new file mode 100644
index 000000000..e92031b52
--- /dev/null
+++ 
b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app7/pages/Popover.tml
@@ -0,0 +1,6 @@
+<div t:type="layout" 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd";
+       xmlns:p="tapestry:parameter" t:pageTitle="literal:Popover">
+
+       <button type="button" class="btn btn-lg btn-danger" 
data-toggle="popover" title="Popover title" data-content="And here is some 
amazing content. It is very engaging. Right?">Click to toggle popover</button>
+
+</div> 
\ No newline at end of file

Reply via email to