Skip to content

Commit e3b9fce

Browse files
author
Tim Berners-Lee
committed
Improve form system look. Add a prompt to the base blue plus when a multiple is empty.
1 parent 4f656e3 commit e3b9fce

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

lib/widgets.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,9 @@ widgetModule.field[UI.ns.ui('Multiple').uri] = function (
433433
var tail = box.appendChild(dom.createElement('tr'))
434434
var img = tail.appendChild(dom.createElement('img'))
435435
img.setAttribute('src', UI.icons.originalIconBase + 'tango/22-list-add.png') // blue plus
436-
img.title = '(m) Add ' + UI.utils.label(property)
436+
img.setAttribute('style', 'margin: 0.2em;') // blue plus
437+
img.title = 'Click to add one or more ' + UI.utils.label(property)
438+
var prompt = tail.appendChild(dom.createElement('span'))
437439

438440
var addItem = function (e, object) {
439441
UI.log.debug('Multiple add: ' + object)
@@ -459,13 +461,17 @@ widgetModule.field[UI.ns.ui('Multiple').uri] = function (
459461
fn(dom, body, already, object, element, store, itemDone)
460462
}
461463

462-
kb.each(subject, property).map(function (obj) { addItem(null, obj) })
464+
var values = kb.each(subject, property)
465+
prompt.textContent = (values.length === 0 ? 'Add one or more ' : 'Add more ') +
466+
UI.utils.label(property)
463467

464-
for (i = kb.each(subject, property).length; i < min; i++) {
468+
values.map(function (obj) { addItem(null, obj) })
469+
470+
for (i = values.length; i < min; i++) {
465471
addItem() // Add blanks if less than minimum
466472
}
467473

468-
img.addEventListener('click', addItem, true)
474+
tail.addEventListener('click', addItem, true) // img.addEventListener('click', addItem, true)
469475
return box
470476
}
471477

@@ -561,7 +567,7 @@ widgetModule.field[UI.ns.ui('PhoneField').uri] =
561567
var uri = widgetModule.bottomURI(form)
562568
var params = widgetModule.fieldParams[uri]
563569
if (params === undefined) params = {} // non-bottom field types can do this
564-
var style = params.style ? params.style : ''
570+
var style = params.style || 'font-size: 100%; margin: 0.1em; padding: 0.1em;'
565571
// box.appendChild(dom.createTextNode(' uri='+uri+', pattern='+ params.pattern))
566572
var field = dom.createElement('input')
567573
rhs.appendChild(field)
@@ -582,6 +588,7 @@ widgetModule.field[UI.ns.ui('PhoneField').uri] =
582588
if (obj) {
583589
field.value = obj.value || obj.uri
584590
}
591+
field.setAttribute('style', style)
585592
field.addEventListener('keyup', function (e) {
586593
if (params.pattern) {
587594
field.setAttribute('style', style + (
@@ -591,7 +598,7 @@ widgetModule.field[UI.ns.ui('PhoneField').uri] =
591598
field.addEventListener('change', function (e) { // i.e. lose focus with changed data
592599
if (params.pattern && !field.value.match(params.pattern)) return
593600
field.disabled = true // See if this stops getting two dates from fumbling e.g the chrome datepicker.
594-
field.setAttribute('style', 'color: gray;') // pending
601+
field.setAttribute('style', style + 'color: gray;') // pending
595602
var ds = kb.statementsMatching(subject, property) // remove any multiple values
596603
// var newObj = params.uriPrefix ? kb.sym(params.uriPrefix + field.value.replace(/ /g, ''))
597604
// : kb.literal(field.value, params.dt)

0 commit comments

Comments
 (0)