Summary
-
Page properties (3 modified, 0 added, 0 removed)
-
Objects (2 modified, 5 added, 2 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 - APIMacro1 +Show Hide Macro - Parent
-
... ... @@ -1,1 +1,1 @@ 1 -WebHome 1 +Macros.WebHome - Content
-
... ... @@ -1,7 +1,66 @@ 1 -{{apimacro title="APIMacro"}} 2 -Code 1 +Wiki macros implementation for simple show/hide of a content with some animations. 2 +This version 2.0 is HTML compatible with the old version, so that existing project could continue styling 3 +with the same kind of CSS rules. However, it is now based on jQuery, and need requireJS, so it requires 4 +XWiki 5.x or more. 3 3 4 - Code6 +{{info}}Using ##id="..."## is still supported and provide the same HTML result but it is no more needed to achieve a working animation.{{/info}} 5 5 6 -Code 7 -{{/apimacro}} 8 +== Without effect == 9 + 10 +{{showhide showmessage="Show" hidemessage="Hide" style="background-color: #ccc"}} 11 +Here is some hidden content that can become visible 12 +Here is some hidden content that can become visible 13 +Here is some hidden content that can become visible 14 +Here is some hidden content that can become visible 15 +{{/showhide}} 16 + 17 +{{code}} 18 +{{showhide showmessage="Show" hidemessage="Hide" style="background-color: #ccc"}} 19 +Here is some hidden content that can become visible 20 +Here is some hidden content that can become visible 21 +Here is some hidden content that can become visible 22 +Here is some hidden content that can become visible 23 +{{/showhide}} 24 +{{/code}} 25 + 26 +== With a fade in effect == 27 + 28 +{{showhide showmessage="Show" hidemessage="Hide" effect="fade" effectduration="2" style="background-color: #ccc"}} 29 +Here is some hidden content that can become visible 30 +Here is some hidden content that can become visible 31 +Here is some hidden content that can become visible 32 +Here is some hidden content that can become visible 33 +{{/showhide}} 34 + 35 +{{code}} 36 +{{showhide showmessage="Show" hidemessage="Hide" effect="fade" effectduration="2" style="background-color: #ccc"}} 37 +Here is some hidden content that can become visible 38 +Here is some hidden content that can become visible 39 +Here is some hidden content that can become visible 40 +Here is some hidden content that can become visible 41 +{{/showhide}} 42 +{{/code}} 43 + 44 +{{info}}Using ##effect="appear"## is still supported and provide the same behavior{{/info}} 45 + 46 +== With a sliding down effect == 47 + 48 +{{showhide showmessage="Show" hidemessage="Hide" effect="slide" effectduration="0.5" style="background-color: #ccc"}} 49 +Here is some hidden content that can become visible 50 +Here is some hidden content that can become visible 51 +Here is some hidden content that can become visible 52 +Here is some hidden content that can become visible 53 +{{/showhide}} 54 + 55 +{{code}} 56 +{{showhide showmessage="Show" hidemessage="Hide" effect="slide" effectduration="0.5" style="background-color: #ccc"}} 57 +Here is some hidden content that can become visible 58 +Here is some hidden content that can become visible 59 +Here is some hidden content that can become visible 60 +Here is some hidden content that can become visible 61 +{{/showhide}} 62 +{{/code}} 63 + 64 +{{info}}This effect is equivalent to ##effect="blind"## in the 1.0 macro, so both ##slide## and ##blind## effect are now using the exact same animation.{{/info}} 65 + 66 +
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -1,26 +1,16 @@ 1 1 require(['jquery'], function($) { 2 - function onClickHeader() { 3 - var header = $(this), 4 - content = header.next('.showhidecontent'), 5 - effect = header.attr('data-show-effect'), 6 - duration = parseInt(header.attr('data-show-duration')) || 300; 7 - 8 - if ($.inArray(effect, ['toggle', 'fadeToggle', 'slideToggle']) === -1) { 9 - effect = 'toggle'; 10 - } 11 - 12 - var isVisible = content.is(':visible'); 13 - var newState = !isVisible; 14 - 15 - // Toggle 'open'-Klasse für Rotation 16 - header.toggleClass('open', newState); 17 - 18 - // Ein-/Ausblenden des Inhalts 19 - content.stop()[effect](duration); 20 - } 21 - 22 - $(document).ready(function () { 23 - $('.showhide-header').on('click', onClickHeader); 24 - }); 2 + function onClick () { 3 + var button = $(this), 4 + content = button.parent().next(), 5 + effect = button.attr('data-show-effect'), 6 + data = button.data(); 7 + if($.inArray(effect,['toggle','fadeToggle','slideToggle']) == -1) effect = 'toggle'; 8 + data.showHideState = !(('showHideState' in data) ? data.showHideState : content.is(':visible')); 9 + button.html(button.attr(data.showHideState ? 'data-hide-message' : 'data-show-message')); 10 + content.stop()[effect](parseInt(button.attr('data-show-duration'))); 11 + return false; 12 + } 13 + $(document).ready(function() { 14 + $('.showhidebutton').children('a').click(onClick); 15 + }); 25 25 }); 26 - - Name
-
... ... @@ -1,1 +1,0 @@ 1 -APIMacro
- XWiki.StyleSheetExtension[0]
-
- Caching policy
-
... ... @@ -1,1 +1,0 @@ 1 -long - Code
-
... ... @@ -1,44 +1,0 @@ 1 -.showhide-header { 2 - border: 1px solid #ccc; 3 - background-color: #f7f7f7; 4 - border-radius: 4px 4px 0 0; 5 - padding: 10px 12px; 6 - margin: 30px 0 0; 7 - cursor: pointer; 8 - user-select: none; 9 -} 10 - 11 -.showhidecontent { 12 - border: 1px solid #ccc; 13 - border-top: none; 14 - border-radius: 0 0 4px 4px; 15 - padding: 10px; 16 - background-color: #fff; 17 -} 18 - 19 -.showhide-header-flex { 20 - display: flex; 21 - justify-content: space-between; 22 - align-items: center; 23 -} 24 - 25 -.showhide-title { 26 - flex: 1; 27 - text-align: left; 28 - font-weight: bold; 29 -} 30 - 31 -.showhide-arrow { 32 - display: inline-block; 33 - transition: transform 0.3s ease; 34 - transform: rotate(0deg); 35 - font-size: 16px; 36 - color: #0645ad; 37 -} 38 - 39 -/* Wenn Container 'open' ist → Pfeil dreht sich */ 40 -.showhide-header.open .showhide-arrow { 41 - transform: rotate(90deg); 42 -} 43 - 44 - - Content Type
-
... ... @@ -1,1 +1,0 @@ 1 -CSS - Name
-
... ... @@ -1,1 +1,0 @@ 1 -APIMacro Style - Parse content
-
... ... @@ -1,1 +1,0 @@ 1 -No - Use this extension
-
... ... @@ -1,1 +1,0 @@ 1 -always
- XWiki.WikiMacroClass[0]
-
- Cached
-
... ... @@ -1,1 +1,0 @@ 1 -No - Asynchronous rendering
-
... ... @@ -1,1 +1,0 @@ 1 -No - Macro code
-
... ... @@ -1,11 +1,9 @@ 1 1 {{velocity}} 2 -#set($discard = $xwiki.jsx.use("Macros. APIMacro"))2 +#set($discard = $xwiki.jsx.use("Macros.ShowHideMacro")) 3 3 #set($mparams = $wikimacro.parameters) 4 4 #if(!$mparams) 5 5 #set($mparams = $xcontext.macro.params) 6 6 #end 7 - 8 -## Parameter vorbereiten 9 9 #if($mparams.id) 10 10 #set($id = $util.convertToAlphaNumeric($mparams.id)) 11 11 #end ... ... @@ -19,32 +19,19 @@ 19 19 #set($effect = "slideToggle") 20 20 #end 21 21 #set($effectduration = $mathtool.mul(1000,$mparams.effectduration)) 22 -#set($title = $escapetool.xml($mparams.title)) 23 - 24 -## Wrapper starten 20 +(% #if($divstyle && $divstyle!="") style="${divstyle}" #end %) 21 +((( 22 +(% class="showhidebutton" %) 23 +((( 25 25 {{html clean=false}} 26 -<div class="showhide-wrapper" #if($divstyle && $divstyle!="") style="$divstyle" #end> 27 - <div class="showhide-header" 28 - #if($id && $id!="") id="showhideheader${id}" #end 29 - data-show-duration="$effectduration" 30 - data-show-effect="$effect"> 31 - <div class="showhide-header-flex"> 32 - <div class="showhide-title"> 33 - $title 34 - </div> 35 - <div class="showhide-arrow">▶</div> ## Unicode ▶ 36 - </div> 37 - </div> 25 +<a href="javascript:void(0)" #if($id && $id!="")id="showhidebuttontext${id}" #end data-show-duration="$effectduration" data-show-effect="$effect" data-show-message="$showmessage" data-hide-message="$hidemessage">$mparams.showmessage</a> 38 38 {{/html}} 39 - 40 -## Inhaltsteil 41 -(% class="showhidecontent" 42 - #if($id && $id!="") id="showhidecontent${id}" #end 43 - #if($xcontext.action != 'edit') style="display: none;" #end 44 -%) 45 -{{html clean=false}} 46 -{{wikimacrocontent /}} 47 -</div> <!-- .showhide-wrapper schließen --> 48 -{{/html}} 27 +))) 28 +(% class="showhidecontent" #if($id && $id!="")id="showhidecontent${id}" #end style="display: none;" %) 29 +((( 30 +((( 31 +$xcontext.macro.content 32 +))) 33 +))) 34 +))) 49 49 {{/velocity}} 50 - - Macro content type
-
... ... @@ -1,1 +1,0 @@ 1 -Wiki - Macro description
-
... ... @@ -1,1 +1,1 @@ 1 - Makrofür PublicAPI-Commands1 +Show Hide Macro - Macro id
-
... ... @@ -1,1 +1,1 @@ 1 - apimacro1 +showhide - Macro name
-
... ... @@ -1,1 +1,1 @@ 1 - APIMacro1 +showhide
- XWiki.WikiMacroParameterClass[7]
-
- Parameter mandatory
-
... ... @@ -1,1 +1,0 @@ 1 -No - Parameter name
-
... ... @@ -1,1 +1,0 @@ 1 -title
- XWiki.WikiMacroParameterClass[0]
-
- Parameter default value
-
... ... @@ -1,0 +1,1 @@ 1 +Show ! - Parameter description
-
... ... @@ -1,0 +1,1 @@ 1 +Show Message - Parameter mandatory
-
... ... @@ -1,0 +1,1 @@ 1 +No - Parameter name
-
... ... @@ -1,0 +1,1 @@ 1 +showmessage
- XWiki.WikiMacroParameterClass[1]
-
- Parameter default value
-
... ... @@ -1,0 +1,1 @@ 1 +Hide ! - Parameter description
-
... ... @@ -1,0 +1,1 @@ 1 +Hide Message - Parameter name
-
... ... @@ -1,0 +1,1 @@ 1 +hidemessage
- XWiki.WikiMacroParameterClass[3]
-
- Parameter default value
-
... ... @@ -1,0 +1,1 @@ 1 +toggle - Parameter description
-
... ... @@ -1,0 +1,1 @@ 1 +Scriptaculous Effect - Parameter mandatory
-
... ... @@ -1,0 +1,1 @@ 1 +No - Parameter name
-
... ... @@ -1,0 +1,1 @@ 1 +effect
- XWiki.WikiMacroParameterClass[5]
-
- Parameter default value
-
... ... @@ -1,0 +1,1 @@ 1 +0 - Parameter description
-
... ... @@ -1,0 +1,1 @@ 1 +Effect duration - Parameter mandatory
-
... ... @@ -1,0 +1,1 @@ 1 +No - Parameter name
-
... ... @@ -1,0 +1,1 @@ 1 +effectduration
- XWiki.WikiMacroParameterClass[6]
-
- Parameter description
-
... ... @@ -1,0 +1,1 @@ 1 +DIV style - Parameter mandatory
-
... ... @@ -1,0 +1,1 @@ 1 +No - Parameter name
-
... ... @@ -1,0 +1,1 @@ 1 +style

