Created
January 8, 2019 13:47
-
-
Save davo/b43443644bee938ed7cddfa43d2a07bb to your computer and use it in GitHub Desktop.
Dynamic ControlType.Enum values on Framer X
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import * as React from 'react' | |
import { fonts } from './fonts' | |
const fontNames = fontArray => { | |
let fontList = [] | |
fontArray.forEach((elem, index) => fontList.push(elem.family)) | |
return fontList | |
} | |
const filterFontsByCategory = (category: string) => { | |
let fontListByCategory = fonts.filter(elem => elem.category === category) | |
return fontNames(fontListByCategory) | |
} | |
const serifList = filterFontsByCategory('serif') | |
const sansSerifList = filterFontsByCategory('sans-serif') | |
export class GoogleFontPlus extends React.Component<Props> { | |
static defaultProps = {...} | |
static propertyControls: PropertyControls = { | |
text: { type: ControlType.String, title: 'Text' }, | |
fontCategory: { | |
type: ControlType.SegmentedEnum, | |
title: 'Category', | |
options: ['all', 'serif', 'sans-serif', 'display', 'handwriting', 'monospace'], | |
optionTitles: ['All', '𝐅', '𝗙', '𝔽', 'ℱ', '𝙵'] | |
}, | |
fonts: { | |
type: ControlType.Enum, | |
title: 'Fonts', | |
options: fontNames(fonts), // Calling this filter function to bring a subset of the font.ts collection | |
hidden(props) { | |
return props.fontCategory === 'all' ? false : true | |
} | |
}, | |
serifFonts: { | |
type: ControlType.Enum, | |
title: '↳ Serif', | |
options: serifList, // Calling this filter function to bring a subset of the font.ts collection | |
hidden(props) { | |
return props.fontCategory === 'serif' ? false : true | |
} | |
}, | |
sansSerifFonts: { | |
type: ControlType.Enum, | |
title: '↳ Sans', | |
options: sansSerifList, // Calling this filter function to bring a subset of the font.ts collection | |
hidden(props) { | |
return props.fontCategory === 'sans-serif' ? false : true | |
} | |
}, | |
... | |
} | |
render() { | |
} | |
return ( | |
<></> | |
) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment