45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
|
// License: LGPL-3.0-or-later
|
||
|
const h = require('snabbdom/h')
|
||
|
const flyd = require('flyd')
|
||
|
const R = require('ramda')
|
||
|
|
||
|
const soldOut = require('./is-sold-out')
|
||
|
const giftButton = require('./gift-option-button')
|
||
|
|
||
|
const giftOption = g => h('option', { props: {value: g.id} }, g.name)
|
||
|
|
||
|
const setDisplayGift = (state, gifts) => ev => {
|
||
|
var id = Number(ev.target.value)
|
||
|
state.selectedModalGift$(R.find(R.propEq('id', id))(gifts))
|
||
|
}
|
||
|
|
||
|
const chooseGift = (state, gifts) =>
|
||
|
h('div.pastelBox--grey.u-padding--10', [
|
||
|
h('select.u-margin--0', {on: {change: setDisplayGift(state, gifts)}}
|
||
|
, R.concat([h('option', 'Choose a gift option')], R.map(giftOption, gifts)))
|
||
|
, h('div.sideGifts',
|
||
|
state.selectedModalGift$() && state.selectedModalGift$().id
|
||
|
? [
|
||
|
h('p.u-marginTop--10', state.selectedModalGift$().description || '')
|
||
|
, giftButton(state.giftOptions, state.selectedModalGift$())
|
||
|
]
|
||
|
: ''
|
||
|
)
|
||
|
])
|
||
|
|
||
|
const regularContribution = state => {
|
||
|
if (app.campaign.hide_custom_amounts) return ''
|
||
|
return h('div.u-marginTop--15.centered', [
|
||
|
h('a', {on: {click: state.clickRegularContribution$}}, 'Contribute with no gift option')
|
||
|
])
|
||
|
}
|
||
|
|
||
|
module.exports = state => {
|
||
|
var gifts = R.filter(g => !soldOut(g), state.giftOptions.giftOptions$() || [])
|
||
|
return h('div.u-padding--15', [
|
||
|
chooseGift(state, gifts)
|
||
|
, regularContribution(state)
|
||
|
])
|
||
|
}
|
||
|
|