hmpo-template-mixins
Advanced tools
Comparing version
@@ -87,3 +87,4 @@ 'use strict'; | ||
var conditionaltranslate = function (key) { | ||
// Like t() but returns null on failed translations | ||
var conditionalTranslate = function (key) { | ||
key = sharedTranslationsKey + key; | ||
@@ -94,6 +95,13 @@ var translated = translate(key); | ||
var getTranslationKey = function (key, property) { | ||
return fields && fields[key] && fields[key][property] ? fields[key][property] : 'fields.' + key + '.' + property; | ||
}; | ||
function inputText(key, extension) { | ||
var hKey = getTranslationKey(key, 'hint'); | ||
var lKey = getTranslationKey(key, 'label'); | ||
var hint = conditionalTranslate(hKey); | ||
extension = extension || {}; | ||
var hint = conditionaltranslate('fields.' + key + '.hint'); | ||
var fieldLabel = fields && fields[key] ? fields[key].label : false; | ||
return _.extend(extension, { | ||
@@ -104,3 +112,3 @@ id: key, | ||
value: this.values && this.values[key], | ||
label: t(fieldLabel || 'fields.' + key + '.label'), | ||
label: t(lKey), | ||
labelClassName: classNames(key, 'labelClassName') || 'form-label-bold', | ||
@@ -135,3 +143,3 @@ hint: hint, | ||
'legendClassName': legendClassName, | ||
hint: conditionaltranslate('fields.' + key + '.hint'), | ||
hint: conditionalTranslate(getTranslationKey(key, 'hint')), | ||
'options': _.map(fields[key] && fields[key].options, function (obj) { | ||
@@ -138,0 +146,0 @@ var selected = false, label, value, toggle; |
{ | ||
"name": "hmpo-template-mixins", | ||
"version": "3.4.0", | ||
"version": "3.5.0", | ||
"description": "A middleware that exposes a series of Mustache mixins on res.locals to ease usage of forms, translations, and some general needs.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -68,2 +68,27 @@ var mixins = require('../lib/template-mixins'); | ||
it('looks up default field label if nothing is set', function () { | ||
middleware = mixins({ | ||
'field-name': { | ||
} | ||
}); | ||
middleware(req, res, next); | ||
res.locals['input-text']().call(res.locals, 'field-name'); | ||
render.should.have.been.calledWith(sinon.match({ | ||
label: 'fields.field-name.label' | ||
})); | ||
}); | ||
it('uses label when available for the field', function () { | ||
middleware = mixins({ | ||
'field-name': { | ||
label: 'Label text' | ||
} | ||
}); | ||
middleware(req, res, next); | ||
res.locals['input-text']().call(res.locals, 'field-name'); | ||
render.should.have.been.calledWith(sinon.match({ | ||
label: 'Label text' | ||
})); | ||
}); | ||
it('prefixes translation lookup with namespace if provided', function () { | ||
@@ -107,3 +132,3 @@ middleware = mixins({}, { translate: translate, sharedTranslationsKey: 'name.space' }); | ||
it('uses locales translation property', function () { | ||
var translate = sinon.stub().withArgs({'label': 'field-name.label'}).returns('Field name'); | ||
var translate = sinon.stub().withArgs('field-name.label').returns('Field name'); | ||
middleware = mixins({ | ||
@@ -121,7 +146,20 @@ 'field-name': { | ||
it('includes a hint if it is defined in the locales', function () { | ||
var translate = sinon.stub().withArgs('field-name.hint').returns('Field hint'); | ||
middleware = mixins({ | ||
'field-name': { | ||
} | ||
}, { translate: translate }); | ||
middleware(req, res, next); | ||
res.locals['input-text']().call(res.locals, 'field-name'); | ||
render.should.have.been.calledWith(sinon.match({ | ||
hint: 'Field hint' | ||
})); | ||
}); | ||
it('includes a hint if it is defined in translation', function () { | ||
var translate = sinon.stub().withArgs({'label': 'field-name.hint'}).returns('Field hint'); | ||
var translate = sinon.stub().withArgs('field-name.hint').returns('Field hint'); | ||
middleware = mixins({ | ||
'field-name': { | ||
'label': 'field-name.label' | ||
'hint': 'field-name.hint' | ||
} | ||
@@ -139,3 +177,3 @@ }, { translate: translate }); | ||
'field-name': { | ||
'label': 'field-name.label' | ||
'hint': 'field-name.hint' | ||
} | ||
@@ -449,3 +487,3 @@ }, { translate: translate }); | ||
it('uses locales translation property', function () { | ||
var translate = sinon.stub().withArgs({'label': 'field-name.label'}).returns('Field name'); | ||
var translate = sinon.stub().withArgs('field-name.label').returns('Field name'); | ||
middleware = mixins({ | ||
@@ -555,3 +593,3 @@ 'field-name': { | ||
it('uses locales translation property', function () { | ||
var translate = sinon.stub().withArgs({'label': 'field-name.label'}).returns('Field name'); | ||
var translate = sinon.stub().withArgs('field-name.label').returns('Field name'); | ||
middleware = mixins({ | ||
@@ -681,4 +719,4 @@ 'field-name': { | ||
it('adds a hint if it exists in locales', function () { | ||
translate = sinon.stub().withArgs('field.field-name.hint').returns('Field hint'); | ||
it('uses locales translation for hint if a field value isn\'t provided', function () { | ||
translate = sinon.stub().withArgs('fields.field-name.hint').returns('Field hint'); | ||
middleware = mixins({ | ||
@@ -685,0 +723,0 @@ 'field-name': {} |
59686
3.05%1099
3.78%