Format/DateOfBirth.js
'use strict'
const Moment = require('moment')
const months = [
{ label: 'January', value: '01' },
{ label: 'February', value: '02' },
{ label: 'March', value: '03' },
{ label: 'April', value: '04' },
{ label: 'May', value: '05' },
{ label: 'June', value: '06' },
{ label: 'July', value: '07' },
{ label: 'August', value: '08' },
{ label: 'September', value: '09' },
{ label: 'October', value: '10' },
{ label: 'November', value: '11' },
{ label: 'December', value: '12' }
]
/**
* Generate Year options for dropdown
* @private
* @param {Number} currentYear
* @return {Array.Object}
*/
const _generateYears = currentYear => {
const years = []
Array.from(Array(100).keys()).forEach(index => {
index = currentYear - index - 8
years.push({
label: index.toString(),
value: index.toString()
})
})
return years
}
/**
* Generate day of month options for dropdown
* @private
* @return {Array.Object}
*/
const _generateDays = () => {
const days = []
Array.from(Array(31).keys()).forEach(index => {
const str = `${index + 1}`
days.push({
label: str,
value: (`0${str}`).slice(-2)
})
})
return days
}
/**
* Return form field options and values for date of birth
*
* @module Format/DateOfBirth
* @requires moment
* @param {String} [dateOfBirth] Partial or complete URL
* @return {Object} Select options and selected values ready for select mixins
*
* @example
* DateOfBirth('1995-03-05')
*
* // returns {
* // days: [{label: '1', value: '01'}, {label: '1', value: '02'}...],
* // months: [{label: 'January', value: '01'}, {label: 'February', value: '02'}...],
* // years: [{label: '1920', value: '1920'}, {label: '1921', value: '1921'}...],
* // day: '05',
* // month: '03',
* // year: '1995'
* // }
*/
module.exports = (dateOfBirth) => {
const currentYear = Moment().format('YYYY')
let year = (currentYear - 30).toString()
let month = '01'
let day = '01'
if (dateOfBirth && typeof dateOfBirth === 'string') {
const split = dateOfBirth.split('-')
year = split[0]
month = split[1]
day = split[2]
}
const years = _generateYears(currentYear)
const days = _generateDays()
return { years, months, days, year, month, day }
}