I'm building LWC component and I have custom metadata type that has picklist field with 70 values.
I need to display them as options in dual-list-box in LWC.
Is there any imports that I can use to read the values directly or should I use @wire to read the picklist values from apex and send back to JS the values to display and if so, how?
Thank you.
EDIT 1:
I used the first suggestion, created a apex method and called it with @wire.
String elementValue;
String elementLabel;
List<String> sessionOptions = new List<String>();
Schema.DescribeFieldResult objFieldDescribe = Piwik_Pro_Integration_Settings__mdt.Piwik_Pro_Fields_Session__c.getDescribe();
List<Schema.PicklistEntry> lstPickListValues = objFieldDescribe.getPickListValues();
for (Schema.PicklistEntry objPickList : lstPickListValues) {
elementLabel = objPickList.getLabel();
sessionOptions.add(elementLabel);
}
// system.debug(apiNamesList);
return sessionOptions;
VS Code JS call:
@wire(getOptions, { dataType: 'dataType'})
dualListBoxOption;
VS dual list box:
<lightning-dual-listbox name="dimensions"
label="Select Dimensions"
source-label="Available"
selected-label="Selected"
field-level-help="Select your preferred dimensions:"
options={dualListBoxOption}
onchange={selectedDimensionsSet}>
</lightning-dual-listbox>
EDIT 2:
import { LightningElement, track, wire, api} from 'lwc';
import getPicklistValues from '@salesforce/apex/PiwikHttpCallout.getPicklistValues';
@wire(getPicklistValues,{dataType: '$dataType'})pickListValues({data,error}){
if(data){
this.showPickList = true;
data.forEach(i => {
this.options.push({label:i,value:i});
});
// console.log(this.options);
}
};
<lightning-dual-listbox
if:true={showPickList}
name="dimensions"
label="Select Dimensions"
source-label="Available"
selected-label="Selected"
field-level-help="Select your preferred dimensions"
options={options}>
</lightning-dual-listbox>
APEX:
@AuraEnabled(cacheable=true)
public static List<String> getPicklistValues(String dataType){
List<String> pickListValues = new List<String>();
if(dataType=='Sessions'){
Schema.DescribeFieldResult pickList = Metadata__mdt.Metadata1__c.getDescribe();
for( Schema.PicklistEntry pickVal : pickList.getPicklistValues()){
pickListValues .add(pickVal.getLabel());
}
return pickListValues;
}
else if(dataType=='Events'){
Schema.DescribeFieldResult pickList = Metadata__mdt.Metadata__c.getDescribe();
for( Schema.PicklistEntry pickVal : pickList.getPicklistValues()){
pickListValues .add(pickVal.getLabel());
}
return pickListValues;
}
else return null;
}