Skip to main content

Hi Could I ask a question?


I have a componet called Fruit. I created an intance of Fruit in my Figma document. It has properties like colour, origin

Suppose possible options for colour are Green, Red, Orange, DarkRed

Suppose possible options for origin are Indian,Netherland,England,France


It will come under variant properties. So in my plugin, I will set colour=Green using setProperties API.


I read this property Green Blue etc from a txt file. So sometimes there is a chance that Green is green(Capital letter,small letter issue) and Figma plugin throw error if there is no exact match. So in plugin I would like to read all the possible combinations of colour before throwing an exception. How can I do that?


For example, if I click fruit instance node, can I iterate through its properties like colour and origin then list all available values of colour and origin to a string array? So before I assign colour = inputFromTextFile, I can check if InputFromTextFile is Green or green.

@tank666 any guidance tips?


figma.com

I have seen this. But how can I iterate the items in the combobox of a property. When I try to print, it is returning only the present value


for example,

if Apple is an instance node, when I select it, I can see the properties on right side,

it will presently shown as

Colour = Green

Origin = India


But if I press green, I will get a combo box option, other values. So I wish to iterate those values when I select an instance node.


Sorry, but I can’t confirm this. The output should be something like this:


{
'PropertyName 1': {
type: 'VARIANT',
defaultValue: 'Default',
variantOptions: :'Default', 'Variant 2', 'Variant 3', '…']
},
'PropertyName 2': {
type: 'VARIANT',
defaultValue: 'True',
variantOptions: n'True', 'False']
},

}

Exactly that variantOptions is I am looking for. But it is not showing in my log.

I did as this.


let mySelectedFruit = currentPageSelection[0] as ComponentNode;

console.log(mySelectedFruit .componentProperties)


It is not showing VariantOptions


Check the ComponentSetNode.


ComponentSetNode?


I tried as this

let mySelectedFruit = currentPageSelection[0] as ComponentSetNode;

console.log(mySelectedFruit .componentProperties)


it returned undefined 😦


InstanceNode.mainComponent.parent.componentPropertyDefinitions

Fantastic. It prints. But I am pretty sure, if you not give this tip, I would have keep struggle with this. Thanks alot. Now I will try to iterate that VariantOptions. 🙂

Happy weekend


Do you think it is iteratable? VariantOptions ?


I do not understand your question. Are you asking if arrays are iterable? Yes, arrays are iterable objects.

developer.mozilla.org

Oh no 🙂 Come on…


It is returning as

{

‘PropertyName 1’: {

type: ‘VARIANT’,

defaultValue: ‘Default’,

variantOptions: r‘Default’, ‘Variant 2’, ‘Variant 3’, ‘…’]

},

‘PropertyName 2’: {

type: ‘VARIANT’,

defaultValue: ‘True’,

variantOptions: a‘True’, ‘False’]

},



}

as you mentioned, I need to iterate each property in the returned data and go to variantOptions… So I am stil trying to know how to

navigate to VariantOptions from InstanceNode.mainComponent.parent.componentPropertyDefinitions


ComponentSetNode.componentPropertyDefinitions['PropertyName'].variantOptions

developer.mozilla.org

Ah thanks,


It works now. Cheers.


tks!!You help me a lot!


Reply