79 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // License: LGPL-3.0-or-later
 | |
| // npm
 | |
| const h = require('snabbdom/h')
 | |
| const R = require('ramda')
 | |
| const notification = require('ff-core/notification')
 | |
| const button = require('ff-core/button')
 | |
| // local
 | |
| const colorPicker = require('../../../components/color-picker.es6')
 | |
| const fonts = require('../../../common/brand-fonts')
 | |
| 
 | |
| 
 | |
| const message = 'This branding will be applied to your donate buttons, profile page, campaign pages and event pages'
 | |
| 
 | |
| var updatedTask = "Select a color and font to make your fundraising tools consistent with your brand."
 | |
| const view = state =>
 | |
|   h('section.branding.settings-pane.nonprofit-settings.hide', [
 | |
|     h('header.pane-header', [h('h3', 'Branding')])
 | |
|   ,  h('div.pane-inner.branding', [
 | |
|       h('p.pastelBox--yellow.u-padding--10', message)
 | |
|     , h('br')
 | |
|     , h('div.branding-settings-wrapper', [
 | |
|         colorPickWrap(state)
 | |
|       , fontPicker(state)
 | |
|       , form(state)
 | |
|       ])
 | |
|     , preview(state)
 | |
|     ])
 | |
|   , notification.view(state.notification)
 | |
|   ])
 | |
| 
 | |
| const colorPickWrap = state =>
 | |
|   h('div.color-wrapper', [
 | |
|     h('p.title', 'Select Brand Color')
 | |
|   , colorPicker.view(state.colorPicker)
 | |
|   , h('div.colPick-wrapper.inner#colorpicker')
 | |
|   ])
 | |
| 
 | |
| const fontPicker = state =>
 | |
|   h('div.font-wrapper', [
 | |
|     h('p.title', 'Select Brand Font')
 | |
|   , fontListing(state)
 | |
|   ])
 | |
| 
 | |
| const fontListing = state =>
 | |
|   h('ul.inner', R.map(R.apply(fontRow(state)), R.toPairs(fonts)))
 | |
| 
 | |
| const fontRow = R.curry((state, key, font) =>
 | |
|   h('li', {
 | |
|     style: { fontFamily: font.family }
 | |
|   , on: {click: [state.font$, R.merge(font, {key: key})]}
 | |
|   }, font.name)
 | |
| )
 | |
| 
 | |
| const form = state => {
 | |
|   var btn = button({ buttonText: 'Save Branding' , loading$: state.loading$ })
 | |
| 
 | |
|   return h('form.branding-form', {
 | |
|     on: {submit: ev => {ev.preventDefault(); state.submit$(state)}}
 | |
|   }, [btn])
 | |
| }
 | |
| 
 | |
| const preview = state =>
 | |
|   h('div.preview-wrapper', [
 | |
|     h('p.title', 'Preview')
 | |
|   , previewDonateBtn(state)
 | |
|   ])
 | |
| 
 | |
| const previewDonateBtn = state =>
 | |
|   h('div.branded-donate-button-wrapper', [
 | |
|     h('p.branded-donate-button', {
 | |
|       style: {
 | |
|         background: state.colorPicker.color$()
 | |
|       , fontFamily: state.font$().family
 | |
|       }
 | |
|     }, 'Donate' )
 | |
|   ])
 | |
| 
 | |
| module.exports = view
 | |
| 
 | 
