Adobe AEM/CQ5 personalizable carousel - aem

I am trying to build a carousel where a user can personalize each slide. Out of box carousel does not seem to do it.
The solution I end up doing was to extend the parsys and keep the virtual 3cols. I renamed the 3cols to carousel and added a custom attribute called renderType and set it to "carousel". So when parsys tries to render, knowing it is carousel I render as carousel instead of regular content holder.
It works but then I would like call a javascript when a user clicks "Preview" so that I can render this as carousel and when they unchoose "Preview" by clicking Edit or Target, I would render normally.
I see that you can listen to WCMMode change event but I am not able to get concrete e.g or documentation to perform. Any help?

Related

Flutter mobile anchor menu links

I have set of tags in top of the page like '#Java, #C++, #PHP' and list of widgets related to those tags, When I click on the tag, I need to scroll down and focus on related widget(Ex: if you click on #java tag it should automatically scroll to java widget) in the same page. Can anyone tell me how to do it on flutter?

Why doesn't RouterLink take you to the top of the new page but a regular HTML link does when both compile to the same HTML?

I have <router-outlet [routes]="Routes.all"></router-outlet> set in my app component. I have a page with links at the bottom of the page. If a user clicks a link I want them to be taken to the top of the new page.
If I use RouterLink the current scroll position is retained so the user lands in the middle of the new page.
<a [routerLink]="RoutePaths.featurePage.toUrl()">...</a>
If I use a regular HTML link, I get the behavior I want, the user lands at the top of the new page.
...
What I really don't get is how they can respond differently yet compile to the exact same HTML code.
<a class="_ngcontent-zbb-0" href="/feature-page">...</a>
What am I missing here?
I understand regular non-Dart Angular has something called scrollPositionRestoration but it doesn't seem to exist for AngularDart.
The answer is really a hack to return the scroll position by utilizing the
window.scrollTo(x,y) function.
This issue was raised in here in regular angular
Equivalent to autoscroll=true: automatic scroll to top when route changes
remmeber to import dart:html

Any links or HTML form items like button inside the Bootstrap 4 modal is unusable

I have cart icon, which when clicked loads the cart of the user in a Modal. However, any link or HTML form items like input or buttons that are within this modal are unusable. It can never be brought to focus nor clicked. I tried playing with CSS property z-index with no success.
Check site here.
Add any product to cart and then click bag/cart icon on the top right to see the issue.
Changing the pointer-events value in CSS solved the issue. wrapping the content part in an element with class modal-content is also fixing the issue as suggested in comments.

How to drag and drop a component over other components (other than parsys) in CQ5?

I have created a button component in CQ5 without inheriting existing button component. Now I want to
place this button component over another custom Banner component by drag and drop method from sidekick. I gave the banner comp as parent for my button and in banner I gave this button in allowed children and made it as container too. also I have created design dialog for the banner component where I added this button component in allowed components option. still I am not able to drag and drop this button over the banner, as its going either above or below this banner and the banner itself is inside parsys. if I include the component via jsp, its working fine. but I must do it by drag and drop.
I am new to CQ5, appreciate any help I can get. thanks in advance.
A parsys is the fundamental container component for composition. Applying this functionality manually into another component would require quite a bit of custom configuration.
If you look at the parsys at /libs/foundation/components/parsys, you will see that it is defined as a container by the property cq:isContainer - true, which instructs CQ to allow for drag and drop. There are multiple sub nodes that will need to be defined etc.
If you are trying to limit only a particular component to be dropped in, this may make sense, and yo should look at the image component, however, the best approach is to make a component that contains a parsys.
Remember that the author's should have the ability to add as much as they want to, and a single object does not allow for this flexibility. You should be handling bad author activity through a review process before the content is published, rather than enforcing it on a software level.
Hope that helps.
Drag and Drop feature is available on Parsys or IParsys only. So to achieve your requirement you need to include parsys in banner component.
If you want to restrict banner parsys to allow button component, please use design config and select button component in button's parsys

SmartGWT: hide current element showing in Canvas

I'm working something like a dynamic menu, where you click some radio buttons and it shows a specific form, each radio control matches to a different form.
Examples from the showcase always base themselves on the Tabs widget and I don't need that behaviour.
I opted for placing all the forms inside one Canvas and hide/show them accordingly (Not sure this was the best idea, if someone knows better I would like to hear it)
Now my problem is that every onClick event has to .show() one form and .hide() the other 9. that is annoying.
Is there a way to "get" the current displayed child in the Canvas and hide it?
If what you want is basically mutex display, you could put all the components as members of a Layout instead of a Canvas, then use setVisibleMember(). That hides all other members.