merkle-open / aem-generic-multifield Goto Github PK
View Code? Open in Web Editor NEWGeneric Multifield component dialog extension for AEM
License: MIT License
Generic Multifield component dialog extension for AEM
License: MIT License
Consider using Github Actions instead of Tracis-CI to deploy the binaries to Maven Central.
Whenever the last item of the generic multifield has been deleted, the itemStorageNode has to be deleted too.
The generic multifield dialog handler restores the previous dialogs by using the CSS selector coral-dialog coral-dialog-content
. The problem arises as soon as multiple dialogs match this selector. That's why the selector has to be changed to select only the dialog which is active (has class is-open
).
When a node is removed for a live copy it is not actually removed from JCR. It removes all the properties for this node and sets "sling:resourceType" property for it equal to "wcm/msm/components/ghost":
MSM ghost node is needed in author for re-enabling inheritance in future.
https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/issue-with-wcm-msm-components-ghost/m-p/371261
The Generic Multifield widget shows those "ghost" nodes but they cannot be removed:
The solution is to exclude the nodes and not show them in the widget.
I'm having a problem with generic-mutifield in table or smaller viewport
Steps to reproduce:
When the user deletes an entry item, the button forces the dialog to close. Many of these dialog open and close issues starting occurring, once the buttons UI have been updated from coral 3 to coral spectrum pattern
If the attribute "sling:resourceSuperType" is being used within the item dialog, then the properties from the superType are not being merged.
When the generic multifield is used within a dialog which is loaded under /mnt/overlay/ errors occur.
Hi,
For some reason, nodes in JCR which correspond to multifield entries are created with some generic names, eg. 14_1559297980446.
What I can see from the screenshot on the home page is that these node names should be equal to a value of some property, and the property name is set via itemNameProperty attribute.
Environment: Adobe Experience Manager (6.4.3.0)
Here's the sample code:
<locations
jcr:primaryType="nt:unstructured"
sling:resourceType="namics/genericmultifield"
cq:showOnCreate="{Boolean}true"
fieldLabel="Locations"
itemDialog="/apps/<proj>/<some_page_component>/sub_dialog"
itemNameProperty="locationName"
itemStorageNode="locations"
maxElements="99"
name="./locations"/>
Entry definition:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
xmlns:granite="http://www.adobe.com/jcr/granite/1.0"
jcr:primaryType="nt:unstructured"
jcr:title="Location"
sling:resourceType="cq/gui/components/authoring/dialog">
<content
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/container">
<items jcr:primaryType="nt:unstructured">
<column
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/container">
<items jcr:primaryType="nt:unstructured">
<locationName
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
fieldLabel="Location Name"
name="./locationName"
required="{Boolean}true"/>
<street
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
fieldLabel="Street"
name="./street"/>
<!-- etc. -->
</items>
</column>
</items>
</content>
</jcr:root>
In order to add items in a nested generic multifield, the parent item has to be saved first. Otherwise the generic multifield won't create the nested item.
One possible solution could be:
Include release notes for Cloud Version including breaking changes hint
As AEM has composite multifield support since AEM 6.3 I am wondering when this approach should be used over plain https://helpx.adobe.com/experience-manager/6-3/sites/developing/using/reference-materials/granite-ui/api/jcr_root/libs/granite/ui/components/coral/foundation/form/multifield/index.html?
Do you have a comparison somewhere with some guidelines when to use which?
Multifield functionality brakes if labelWithKeyAsFallback contains html keywords (ex: "hidden", "class")
1.The required validation forces multiple error lines. The error of the dialog is being manipulated to many times. Also, the validation seems to be triggered before the item dialog is "opened". Not when the item dialog is being "saved/confirmed". Example given:
Hi
we just about migrating to aem 6.5 and use the generic multifield. With this version and aem 6.5 it doesn't work anymore.
When I open the dialog in the author (see 2020-03-20 11_56_31-Autoversicherung_ Jetzt Prämie berechnen _ Helvetia.ch.png)
, no items are displayed. But there should be (see
)
If I add an item in the dialog (see
, the item is displayed in the dialog. The node I created is
locate "/items/3_1584700968848" here.
The dialog looks like:
The dependency looks like:
com.namics.oss.aem
genericmultifield
3.0.0
Can you please have a look. I didn't change our code. I only upgraded to aem 6.5 and version 3.0.0 of the generic-multifield.
Thanks in advance.
The file _cq_editConfig.xml of a component can contain the page refresh listener:
<cq:listeners ... afteredit="REFRESH_PAGE" />
Normally after closing the dialog, the page should get refreshed. But if a dialog of the generic multifield has been opened during editing, nothing happens after closing the component's dialog.
After closing the last generic multifield dialog the backdrop is not showing anymore.
Issue: If the storage node contains a multi value property , it gets picked up by the control and displayed as a list item.
For instance, if you create some content using generic multi field control and do a roll out. The rolled out content will contain jcr:mixinTypes as a multi value property (array when you ask for itemStorageNode json) and we end up with "jcr:mixinTypes" as the first item in the multi field list.
Please see the attached image.
Hello, I was closely following the resolve of #38, that you fixed in release 4.0.0. I migrated to this version and there were some improvements, but there is still an issue in smaller viewports ( VP < 1024).
The issues before:
If you had a large textarea and a multi-field component in the same dialog - the text area was missing and not interactable - this was fixed!
You could not click on the add(+) button of the multi-field - this is also fixed!
The issues now:
Once you click on the add(+) on the multi field, in my case I have a new dialog with a big text area, this text area is now not visible and interactable . Also the OOTB adobe Save and Cancel dialog in the bottom of the form get transferred to the top of the dialog( this is okey) in the form of X and / ( tick) ( this is also okey) the issues with these new buttons are.
First of all - if you click on any one of them - they close both the edit dialogs ( the main one in which the have the multi field and the dialog of the multi field itself). The 2nd issue is - the tick (/) Done checkmark saves the dialog even if there were fields with a mandatory check and were left empty, so the button can save invalid data to the multi field fields.
I'm having an issue when I try to use genericmultifield and granite/ui/components/coral/foundation/form/multifield in the same dialog.
When I edit an item from genericmultifield and if I have a granite multifield in the same dialog, the fields from granite multifield gets updated with a new value for the name;
Below you can see the field name before updating an item:
And here you can see it after editing an item
The field path is updated from: ./pages/item0/./linkUrl
to ./pages/item0/./pages/item0/./linkUrl
My code:
<genericmultifield
jcr:primaryType="nt:unstructured"
sling:resourceType="namics/genericmultifield"
fieldLabel="Teaser Items"
itemDialog="/apps/website/components/content/standardteaser/teaseritemdialog"
itemStorageNode="items"
itemNameProperty="textarea"
name="./items"/>
<teaserpages
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/multifield"
composite="{Boolean}true"
fieldLabel="Teaser Pages">
<field
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/container"
name="./pages">
<items
jcr:primaryType="nt:unstructured">
<linkurl
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/pathbrowser"
name="./linkUrl"
rootPath="/content"/>
</items>
</field>
</teaserpages>
I'm using AEM version 6.5.4.
When the Min or Max threshold of the items is being reached, the warning message informing the user of the error, closes the component dialog. In some occasion, even a page refresh is being forced (circumstances for this issue are not found out yet)
Hi,
I'm using gernericmultifield and getting console error while switching and saving the policy in design dialog.
unable to save the changed policy from the policy dropdown AEM 6.5(selected new option from the dropdown).
1.added generic multifield to design dialog
2.at least maintain 2 policies.
3. try to change the policy option from the dropdown option.
4.check are you able to submit the dialog design dialog successfully.
The Field Dependency doesn't work anymore after having closed a generic multifield dialog.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.