solid-ui 2.4.22-dc79c0e3 → 2.4.22-e3f38b00

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/main.js +7839 -8316
  2. package/dist/main.js.map +1 -1
  3. package/lib/acl/access-controller.js.map +1 -1
  4. package/lib/acl/access-groups.js.map +1 -1
  5. package/lib/acl/acl-control.js.map +1 -1
  6. package/lib/acl/acl.js.map +1 -1
  7. package/lib/acl/add-agent-buttons.js +0 -1
  8. package/lib/acl/add-agent-buttons.js.map +1 -1
  9. package/lib/acl/index.js.map +1 -1
  10. package/lib/acl/styles.js.map +1 -1
  11. package/lib/acl/types.js.map +1 -1
  12. package/lib/chat/bookmarks.js +2 -4
  13. package/lib/chat/bookmarks.js.map +1 -1
  14. package/lib/chat/chatLogic.js.map +1 -1
  15. package/lib/chat/dateFolder.js.map +1 -1
  16. package/lib/chat/infinite.js.map +1 -1
  17. package/lib/chat/message.js.map +1 -1
  18. package/lib/chat/messageTools.js.map +1 -1
  19. package/lib/chat/thread.js.map +1 -1
  20. package/lib/create/create.js.map +1 -1
  21. package/lib/create/index.js.map +1 -1
  22. package/lib/create/types.js.map +1 -1
  23. package/lib/debug.js.map +1 -1
  24. package/lib/folders.js.map +1 -1
  25. package/lib/footer/index.js.map +1 -1
  26. package/lib/footer/styleMap.js.map +1 -1
  27. package/lib/header/empty-profile.js.map +1 -1
  28. package/lib/header/index.js.map +1 -1
  29. package/lib/header/styleMap.js.map +1 -1
  30. package/lib/iconBase.js +3 -2
  31. package/lib/iconBase.js.map +1 -1
  32. package/lib/icons/solid_logo.js.map +1 -1
  33. package/lib/index.js.map +1 -1
  34. package/lib/jss/index.js.map +1 -1
  35. package/lib/log.js.map +1 -1
  36. package/lib/login/login.d.ts +9 -8
  37. package/lib/login/login.d.ts.map +1 -1
  38. package/lib/login/login.js +290 -342
  39. package/lib/login/login.js.map +1 -1
  40. package/lib/matrix/index.js.map +1 -1
  41. package/lib/matrix/matrix.js.map +1 -1
  42. package/lib/matrix/types.js.map +1 -1
  43. package/lib/media/index.js.map +1 -1
  44. package/lib/media/media-capture.js.map +1 -1
  45. package/lib/messageArea.js.map +1 -1
  46. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  47. package/lib/ns.js.map +1 -1
  48. package/lib/pad.js.map +1 -1
  49. package/lib/participation.js.map +1 -1
  50. package/lib/preferences.js.map +1 -1
  51. package/lib/signup/config-default.js.map +1 -1
  52. package/lib/signup/signup.js.map +1 -1
  53. package/lib/stories/decorators.js.map +1 -1
  54. package/lib/style.js.map +1 -1
  55. package/lib/style_multiSelect.js.map +1 -1
  56. package/lib/table.js.map +1 -1
  57. package/lib/tabs.d.ts.map +1 -1
  58. package/lib/tabs.js +21 -18
  59. package/lib/tabs.js.map +1 -1
  60. package/lib/typings.d.js.map +1 -1
  61. package/lib/utils/headerFooterHelpers.js.map +1 -1
  62. package/lib/utils/index.js.map +1 -1
  63. package/lib/utils/label.js.map +1 -1
  64. package/lib/versionInfo.d.ts +9 -9
  65. package/lib/versionInfo.js +14 -14
  66. package/lib/versionInfo.js.map +1 -1
  67. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  68. package/lib/widgets/buttons.js.map +1 -1
  69. package/lib/widgets/dragAndDrop.js.map +1 -1
  70. package/lib/widgets/error.d.ts +0 -12
  71. package/lib/widgets/error.d.ts.map +1 -1
  72. package/lib/widgets/error.js +5 -0
  73. package/lib/widgets/error.js.map +1 -1
  74. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  75. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  76. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  77. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  78. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  79. package/lib/widgets/forms/basic.js.map +1 -1
  80. package/lib/widgets/forms/comment.js.map +1 -1
  81. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  82. package/lib/widgets/forms/fieldParams.js.map +1 -1
  83. package/lib/widgets/forms/formStyle.js.map +1 -1
  84. package/lib/widgets/forms.js +119 -20
  85. package/lib/widgets/forms.js.map +1 -1
  86. package/lib/widgets/index.js.map +1 -1
  87. package/lib/widgets/multiSelect.js.map +1 -1
  88. package/lib/widgets/peoplePicker.js.map +1 -1
  89. package/lib/widgets/widgetHelpers.js.map +1 -1
  90. package/package.json +11 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/widgets/forms/basic.ts"],"names":["store","solidLogicSingleton","renderNameValuePair","dom","kb","box","form","label","style","display","flexDirection","lhs","appendChild","createElement","width","formFieldNameBoxWidth","rhs","setAttribute","formFieldNameBoxStyle","createTextNode","any","ns","ui","fieldLabel","property","fieldInQuestion","lab","undefined","anchor","uri","textContent","fieldStore","subject","predicate","def","sts","statementsMatching","length","updater","Error","why","value","editable","sym","basicField","container","already","doc","callbackFunction","formDoc","suppressEmptyUneditable","anyJS","params","fieldParams","paramStyle","textInputStyle","field","type","size","textInputSize","maxLength","obj","uriPrefix","decodeURIComponent","replace","readOnly","textInputStyleUneditable","addEventListener","_e","pattern","match","disabled","ds","result","namedNode","encodeURIComponent","dt","Literal","trim","xsd","is","map","statement","updateMany","callback","docs","forEach","st","includes","push","update","pop","is1","filter","is2","ds1","ds2","ok","body"],"mappings":"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","sourcesContent":["import { BlankNode, Literal, NamedNode, Node, st, Store, Variable } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as ns from '../../ns'\nimport { formFieldNameBoxStyle, formFieldNameBoxWidth, textInputSize, textInputStyle, textInputStyleUneditable } from '../../style'\nimport { label } from '../../utils'\nimport { errorMessageBlock } from '../error'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/* Style and create a name, value pair\n*/\nexport function renderNameValuePair (dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode, label?: string):HTMLElement {\n // const property = kb.any(form, ns.ui('property'))\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const lhs = box.appendChild(dom.createElement('div'))\n lhs.style.width = formFieldNameBoxWidth\n const rhs = box.appendChild(dom.createElement('div'))\n\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', formFieldNameBoxStyle)\n rhs.setAttribute('class', 'formFieldValue')\n if (label) {\n lhs.appendChild(dom.createTextNode(label))\n } else if (kb.any(form, ns.ui('property'))) { // Assume more space for error on right\n lhs.appendChild(fieldLabel(dom, kb.any(form, ns.ui('property')) as NamedNode, form))\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'No property or label given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\n }\n return rhs\n}\n\n/**\n * Create an anchor element with a label as the anchor text.\n *\n * @param dom The DOM\n * @param property href for the anchor element\n * @param fieldInQuestion field to produce a label for\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldLabel (dom: HTMLDocument, property: NamedNode | undefined, fieldInQuestion: Node): HTMLElement | Text {\n let lab = store.any(fieldInQuestion as any, ns.ui('label'))\n if (!lab) lab = label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n /* istanbul ignore next */\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', 'color: #3B5998; text-decoration: none;') // Not too blue and no underline\n anchor.textContent = lab as any\n return anchor\n}\n\n/**\n * Returns the document for the first quad that matches\n * the subject and predicate provided, or default if that\n * store is not editable.\n *\n * @param subject Subject about which we want to find an editable RDF document\n * @param predicate Predicate about which we want to find an editable RDF document\n * @param def default RDF document to return if none found\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldStore (subject: NamedNode | BlankNode | Variable, predicate: NamedNode | Variable, def: NamedNode | undefined): NamedNode | undefined {\n const sts = store.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n if (\n sts.length > 0 &&\n sts[0].why.value &&\n store.updater.editable(sts[0].why.value, store)\n ) {\n return store.sym(sts[0].why.value)\n }\n return def\n}\n\n/**\n * Render a basic form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n// eslint-disable-next-line complexity\nexport function basicField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n\n const property = kb.any(form, ns.ui('property'))\n if (container) container.appendChild(box)\n if (!property) {\n return box.appendChild(\n errorMessageBlock(dom, 'Error: No property given for text field: ' + form)\n )\n }\n const rhs = renderNameValuePair(dom, kb, box, form)\n\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) params = { style: '' } // non-bottom field types can do this\n const paramStyle = params.style || ''\n const style = textInputStyle + paramStyle\n const field = dom.createElement('input')\n ;(field as any).style = style\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n\n const size = kb.anyJS(form, ns.ui('size')) || textInputSize || 20\n field.setAttribute('size', size)\n\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : '4096')\n\n doc = doc || fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj && obj.value && params.uriPrefix) {\n // eg tel: or mailto:\n field.value = decodeURIComponent(obj.value.replace(params.uriPrefix, '')) // should have no spaces but in case\n .replace(/ /g, '')\n } else if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', style)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = textInputStyleUneditable + paramStyle\n // backgroundColor = textInputBackgroundColorUneditable\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n\n // read-write:\n field.addEventListener(\n 'keyup',\n function (_e) {\n if (params.pattern) {\n field.setAttribute(\n 'style',\n style +\n (field.value.match(params.pattern)\n ? 'color: green;'\n : 'color: red;')\n )\n }\n },\n true\n )\n field.addEventListener(\n 'change',\n function (_e) {\n // i.e. lose focus with changed data\n if (params.pattern && !field.value.match(params.pattern)) return\n field.disabled = true // See if this stops getting two dates from fumbling e.g the chrome datepicker.\n field.setAttribute('style', style + 'color: gray;') // pending\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n let result\n if (params.namedNode) {\n result = kb.sym(field.value)\n } else if (params.uriPrefix) {\n result = encodeURIComponent(field.value.replace(/ /g, ''))\n result = kb.sym(params.uriPrefix + field.value)\n } else {\n if (params.dt) {\n result = new Literal(\n field.value.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n result = new Literal(field.value)\n }\n }\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n\n function updateMany (ds, is: { why: { uri: string } }[], callback) {\n const docs: any[] = []\n is.forEach(st => {\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n ds.forEach(st => {\n /* istanbul ignore next */\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n /* istanbul ignore next */\n if (docs.length === 0) {\n throw new Error('updateMany has no docs to patch')\n }\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (docs.length === 1) {\n return kb.updater.update(ds, is as any, callback)\n }\n // return kb.updater.update(ds, is, callback)\n\n const doc = docs.pop()\n const is1 = is.filter(st => st.why.uri === doc)\n const is2 = is.filter(st => st.why.uri !== doc)\n const ds1 = ds.filter(st => st.why.uri === doc)\n const ds2 = ds.filter(st => st.why.uri !== doc)\n kb.updater.update(ds1, is1 as any, function (uri, ok, body) {\n if (ok) {\n updateMany(ds2, is2, callback)\n } else {\n callback(uri, ok, body)\n }\n })\n }\n\n updateMany(ds, is as any, function (uri, ok, body) {\n // kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n field.disabled = false\n field.setAttribute('style', style)\n } else {\n box.appendChild(errorMessageBlock(dom, body))\n }\n callbackFunction(ok, body)\n })\n },\n true\n )\n return box\n}\n"],"file":"basic.js"}
1
+ {"version":3,"file":"basic.js","names":["store","solidLogicSingleton","renderNameValuePair","dom","kb","box","form","label","style","display","flexDirection","lhs","appendChild","createElement","width","formFieldNameBoxWidth","rhs","setAttribute","formFieldNameBoxStyle","createTextNode","any","ns","ui","fieldLabel","errorMessageBlock","property","fieldInQuestion","lab","undefined","anchor","uri","textContent","fieldStore","subject","predicate","def","sts","statementsMatching","length","updater","Error","why","value","editable","sym","basicField","container","already","doc","callbackFunction","formDoc","suppressEmptyUneditable","anyJS","mostSpecificClassURI","params","fieldParams","paramStyle","textInputStyle","field","type","size","textInputSize","maxLength","obj","uriPrefix","decodeURIComponent","replace","readOnly","textInputStyleUneditable","addEventListener","_e","pattern","match","disabled","ds","result","namedNode","encodeURIComponent","dt","Literal","trim","xsd","is","map","statement","st","updateMany","callback","docs","forEach","includes","push","update","pop","is1","filter","is2","ds1","ds2","ok","body"],"sources":["../../../src/widgets/forms/basic.ts"],"sourcesContent":["import { BlankNode, Literal, NamedNode, Node, st, Store, Variable } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as ns from '../../ns'\nimport { formFieldNameBoxStyle, formFieldNameBoxWidth, textInputSize, textInputStyle, textInputStyleUneditable } from '../../style'\nimport { label } from '../../utils'\nimport { errorMessageBlock } from '../error'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/* Style and create a name, value pair\n*/\nexport function renderNameValuePair (dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode, label?: string):HTMLElement {\n // const property = kb.any(form, ns.ui('property'))\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const lhs = box.appendChild(dom.createElement('div'))\n lhs.style.width = formFieldNameBoxWidth\n const rhs = box.appendChild(dom.createElement('div'))\n\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', formFieldNameBoxStyle)\n rhs.setAttribute('class', 'formFieldValue')\n if (label) {\n lhs.appendChild(dom.createTextNode(label))\n } else if (kb.any(form, ns.ui('property'))) { // Assume more space for error on right\n lhs.appendChild(fieldLabel(dom, kb.any(form, ns.ui('property')) as NamedNode, form))\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'No property or label given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\n }\n return rhs\n}\n\n/**\n * Create an anchor element with a label as the anchor text.\n *\n * @param dom The DOM\n * @param property href for the anchor element\n * @param fieldInQuestion field to produce a label for\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldLabel (dom: HTMLDocument, property: NamedNode | undefined, fieldInQuestion: Node): HTMLElement | Text {\n let lab = store.any(fieldInQuestion as any, ns.ui('label'))\n if (!lab) lab = label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n /* istanbul ignore next */\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', 'color: #3B5998; text-decoration: none;') // Not too blue and no underline\n anchor.textContent = lab as any\n return anchor\n}\n\n/**\n * Returns the document for the first quad that matches\n * the subject and predicate provided, or default if that\n * store is not editable.\n *\n * @param subject Subject about which we want to find an editable RDF document\n * @param predicate Predicate about which we want to find an editable RDF document\n * @param def default RDF document to return if none found\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldStore (subject: NamedNode | BlankNode | Variable, predicate: NamedNode | Variable, def: NamedNode | undefined): NamedNode | undefined {\n const sts = store.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n if (\n sts.length > 0 &&\n sts[0].why.value &&\n store.updater.editable(sts[0].why.value, store)\n ) {\n return store.sym(sts[0].why.value)\n }\n return def\n}\n\n/**\n * Render a basic form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n// eslint-disable-next-line complexity\nexport function basicField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n\n const property = kb.any(form, ns.ui('property'))\n if (container) container.appendChild(box)\n if (!property) {\n return box.appendChild(\n errorMessageBlock(dom, 'Error: No property given for text field: ' + form)\n )\n }\n const rhs = renderNameValuePair(dom, kb, box, form)\n\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) params = { style: '' } // non-bottom field types can do this\n const paramStyle = params.style || ''\n const style = textInputStyle + paramStyle\n const field = dom.createElement('input')\n ;(field as any).style = style\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n\n const size = kb.anyJS(form, ns.ui('size')) || textInputSize || 20\n field.setAttribute('size', size)\n\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : '4096')\n\n doc = doc || fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj && obj.value && params.uriPrefix) {\n // eg tel: or mailto:\n field.value = decodeURIComponent(obj.value.replace(params.uriPrefix, '')) // should have no spaces but in case\n .replace(/ /g, '')\n } else if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', style)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = textInputStyleUneditable + paramStyle\n // backgroundColor = textInputBackgroundColorUneditable\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n\n // read-write:\n field.addEventListener(\n 'keyup',\n function (_e) {\n if (params.pattern) {\n field.setAttribute(\n 'style',\n style +\n (field.value.match(params.pattern)\n ? 'color: green;'\n : 'color: red;')\n )\n }\n },\n true\n )\n field.addEventListener(\n 'change',\n function (_e) {\n // i.e. lose focus with changed data\n if (params.pattern && !field.value.match(params.pattern)) return\n field.disabled = true // See if this stops getting two dates from fumbling e.g the chrome datepicker.\n field.setAttribute('style', style + 'color: gray;') // pending\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n let result\n if (params.namedNode) {\n result = kb.sym(field.value)\n } else if (params.uriPrefix) {\n result = encodeURIComponent(field.value.replace(/ /g, ''))\n result = kb.sym(params.uriPrefix + field.value)\n } else {\n if (params.dt) {\n result = new Literal(\n field.value.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n result = new Literal(field.value)\n }\n }\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n\n function updateMany (ds, is: { why: { uri: string } }[], callback) {\n const docs: any[] = []\n is.forEach(st => {\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n ds.forEach(st => {\n /* istanbul ignore next */\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n /* istanbul ignore next */\n if (docs.length === 0) {\n throw new Error('updateMany has no docs to patch')\n }\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (docs.length === 1) {\n return kb.updater.update(ds, is as any, callback)\n }\n // return kb.updater.update(ds, is, callback)\n\n const doc = docs.pop()\n const is1 = is.filter(st => st.why.uri === doc)\n const is2 = is.filter(st => st.why.uri !== doc)\n const ds1 = ds.filter(st => st.why.uri === doc)\n const ds2 = ds.filter(st => st.why.uri !== doc)\n kb.updater.update(ds1, is1 as any, function (uri, ok, body) {\n if (ok) {\n updateMany(ds2, is2, callback)\n } else {\n callback(uri, ok, body)\n }\n })\n }\n\n updateMany(ds, is as any, function (uri, ok, body) {\n // kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n field.disabled = false\n field.setAttribute('style', style)\n } else {\n box.appendChild(errorMessageBlock(dom, body))\n }\n callbackFunction(ok, body)\n })\n },\n true\n )\n return box\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/widgets/forms/comment.ts"],"names":["store","solidLogicSingleton","commentField","dom","container","already","subject","form","_doc","_callbackFunction","kb","contents","any","ns","ui","uri","params","fieldParams","undefined","box","createElement","appendChild","p","element","textContent","style","setAttribute"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,KAAK,GAAGC,gCAAoBD,KAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASE,YAAT,CACLC,GADK,EAELC,SAFK,EAGLC,OAHK,EAILC,OAJK,EAKLC,IALK,EAMLC,IANK,EAOLC,iBAPK,EAQL;AACA,MAAMC,EAAE,GAAGV,KAAX;AACA,MAAIW,QAAa,GAAGD,EAAE,CAACE,GAAH,CAAOL,IAAP,EAAaM,EAAE,CAACC,EAAH,CAAM,UAAN,CAAb,CAApB;;AACA,MAAI,CAACH,QAAL,EAAe;AACbA,IAAAA,QAAQ,GAAG,sCAAX;AACD;;AACD,MAAMI,GAAG,GAAG,yCAAqBR,IAArB,CAAZ;AACA,MAAIS,MAAM,GAAGC,yBAAYF,GAAZ,CAAb;;AACA,MAAIC,MAAM,KAAKE,SAAf,EAA0B;AACxBF,IAAAA,MAAM,GAAG,EAAT;AACD,GAVD,CAUE;;;AAEF,MAAMG,GAAG,GAAGhB,GAAG,CAACiB,aAAJ,CAAkB,KAAlB,CAAZ;AACA,MAAIhB,SAAJ,EAAeA,SAAS,CAACiB,WAAV,CAAsBF,GAAtB;AACf,MAAMG,CAAC,GAAGH,GAAG,CAACE,WAAJ,CAAgBlB,GAAG,CAACiB,aAAJ,CAAkBJ,MAAM,CAACO,OAAP,IAAkB,GAApC,CAAhB,CAAV;AACAD,EAAAA,CAAC,CAACE,WAAF,GAAgBb,QAAhB;AAEA,MAAIc,KAAU,GAAGf,EAAE,CAACE,GAAH,CAAOL,IAAP,EAAaM,EAAE,CAACC,EAAH,CAAM,OAAN,CAAb,CAAjB;;AACA,MAAIW,KAAK,KAAKP,SAAd,EAAyB;AACvBO,IAAAA,KAAK,GAAGT,MAAM,CAACS,KAAP,GAAeT,MAAM,CAACS,KAAtB,GAA8B,EAAtC;AACD;;AACD,MAAIA,KAAJ,EAAWH,CAAC,CAACI,YAAF,CAAe,OAAf,EAAwBD,KAAxB;AAEX,SAAON,GAAP;AACD","sourcesContent":["import { solidLogicSingleton } from 'solid-logic'\nimport * as ns from '../../ns'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/**\n * A [[FieldFunction]] for a simple comment box. It will look for\n * the first (form, ns.ui('contents'), ?) triple it can find in\n * store and use the value of the object of that triple as\n * the comment text.\n *\n * @param dom The DOM\n * @param container If set, the result will be appended to it as a child\n * @param already Unused\n * @param subject Unused\n * @param form RDF node with `ns.ui('contents')` attribute\n * @param _doc Unused\n * @param _callbackFunction Unused\n *\n * @returns a DOM element containing the comment.\n */\nexport function commentField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already: any,\n subject: any,\n form,\n _doc,\n _callbackFunction\n) {\n const kb = store\n let contents: any = kb.any(form, ns.ui('contents'))\n if (!contents) {\n contents = 'Error: No contents in comment field.'\n }\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) {\n params = {}\n } // non-bottom field types can do this\n\n const box = dom.createElement('div')\n if (container) container.appendChild(box)\n const p = box.appendChild(dom.createElement(params.element || 'p'))\n p.textContent = contents\n\n let style: any = kb.any(form, ns.ui('style'))\n if (style === undefined) {\n style = params.style ? params.style : ''\n }\n if (style) p.setAttribute('style', style as any)\n\n return box\n}\n"],"file":"comment.js"}
1
+ {"version":3,"file":"comment.js","names":["store","solidLogicSingleton","commentField","dom","container","already","subject","form","_doc","_callbackFunction","kb","contents","any","ns","ui","uri","mostSpecificClassURI","params","fieldParams","undefined","box","createElement","appendChild","p","element","textContent","style","setAttribute"],"sources":["../../../src/widgets/forms/comment.ts"],"sourcesContent":["import { solidLogicSingleton } from 'solid-logic'\nimport * as ns from '../../ns'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/**\n * A [[FieldFunction]] for a simple comment box. It will look for\n * the first (form, ns.ui('contents'), ?) triple it can find in\n * store and use the value of the object of that triple as\n * the comment text.\n *\n * @param dom The DOM\n * @param container If set, the result will be appended to it as a child\n * @param already Unused\n * @param subject Unused\n * @param form RDF node with `ns.ui('contents')` attribute\n * @param _doc Unused\n * @param _callbackFunction Unused\n *\n * @returns a DOM element containing the comment.\n */\nexport function commentField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already: any,\n subject: any,\n form,\n _doc,\n _callbackFunction\n) {\n const kb = store\n let contents: any = kb.any(form, ns.ui('contents'))\n if (!contents) {\n contents = 'Error: No contents in comment field.'\n }\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) {\n params = {}\n } // non-bottom field types can do this\n\n const box = dom.createElement('div')\n if (container) container.appendChild(box)\n const p = box.appendChild(dom.createElement(params.element || 'p'))\n p.textContent = contents\n\n let style: any = kb.any(form, ns.ui('style'))\n if (style === undefined) {\n style = params.style ? params.style : ''\n }\n if (style) p.setAttribute('style', style as any)\n\n return box\n}\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,KAAK,GAAGC,+BAAA,CAAoBD,KAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASE,YAAT,CACLC,GADK,EAELC,SAFK,EAGLC,OAHK,EAILC,OAJK,EAKLC,IALK,EAMLC,IANK,EAOLC,iBAPK,EAQL;EACA,IAAMC,EAAE,GAAGV,KAAX;EACA,IAAIW,QAAa,GAAGD,EAAE,CAACE,GAAH,CAAOL,IAAP,EAAaM,EAAE,CAACC,EAAH,CAAM,UAAN,CAAb,CAApB;;EACA,IAAI,CAACH,QAAL,EAAe;IACbA,QAAQ,GAAG,sCAAX;EACD;;EACD,IAAMI,GAAG,GAAG,IAAAC,mCAAA,EAAqBT,IAArB,CAAZ;EACA,IAAIU,MAAM,GAAGC,wBAAA,CAAYH,GAAZ,CAAb;;EACA,IAAIE,MAAM,KAAKE,SAAf,EAA0B;IACxBF,MAAM,GAAG,EAAT;EACD,CAVD,CAUE;;;EAEF,IAAMG,GAAG,GAAGjB,GAAG,CAACkB,aAAJ,CAAkB,KAAlB,CAAZ;EACA,IAAIjB,SAAJ,EAAeA,SAAS,CAACkB,WAAV,CAAsBF,GAAtB;EACf,IAAMG,CAAC,GAAGH,GAAG,CAACE,WAAJ,CAAgBnB,GAAG,CAACkB,aAAJ,CAAkBJ,MAAM,CAACO,OAAP,IAAkB,GAApC,CAAhB,CAAV;EACAD,CAAC,CAACE,WAAF,GAAgBd,QAAhB;EAEA,IAAIe,KAAU,GAAGhB,EAAE,CAACE,GAAH,CAAOL,IAAP,EAAaM,EAAE,CAACC,EAAH,CAAM,OAAN,CAAb,CAAjB;;EACA,IAAIY,KAAK,KAAKP,SAAd,EAAyB;IACvBO,KAAK,GAAGT,MAAM,CAACS,KAAP,GAAeT,MAAM,CAACS,KAAtB,GAA8B,EAAtC;EACD;;EACD,IAAIA,KAAJ,EAAWH,CAAC,CAACI,YAAF,CAAe,OAAf,EAAwBD,KAAxB;EAEX,OAAON,GAAP;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/widgets/forms/fieldFunction.ts"],"names":["store","solidLogicSingleton","field","mostSpecificClassURI","x","kb","ft","findTypeURIs","bot","bottomTypeURIs","bots","b","push","fieldFunction","dom","fieldInQuestion","uri","fun","dom2","container","box","appendChild"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AAEA,IAAMA,KAAK,GAAGC,gCAAoBD,KAAlC;AAYO,IAAME,KAA4C,GAAG,EAArD,C,CAAwD;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,SAASC,oBAAT,CAA+BC,CAA/B,EAAgD;AACrD,MAAMC,EAAE,GAAGL,KAAX;AACA,MAAMM,EAAE,GAAGD,EAAE,CAACE,YAAH,CAAgBH,CAAhB,CAAX;AACA,MAAMI,GAAG,GAAGH,EAAE,CAACI,cAAH,CAAkBH,EAAlB,CAAZ,CAHqD,CAGnB;;AAClC,MAAMI,IAAW,GAAG,EAApB;;AACA,OAAK,IAAMC,CAAX,IAAgBH,GAAhB;AAAqBE,IAAAA,IAAI,CAACE,IAAL,CAAUD,CAAV;AAArB,GALqD,CAMrD;;;AACA,SAAOD,IAAI,CAAC,CAAD,CAAX;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASG,aAAT,CAAwBC,GAAxB,EAA+CC,eAA/C,EAAqF;AAC1F,MAAMC,GAAG,GAAGb,oBAAoB,CAACY,eAAD,CAAhC,CAD0F,CACxC;AAClD;;AACA,MAAME,GAAG,GAAGf,KAAK,CAACc,GAAD,CAAjB;AACA,kBACE,yCAAyCD,eAAzC,GAA2D,WAA3D,GAAyEC,GAD3E;;AAGA,MAAI,CAACC,GAAL,EAAU;AACR,WAAO,UAAUC,IAAV,EAA8BC,SAA9B,EAAoE;AACzE,UAAMC,GAAG,GAAG,8BACVF,IADU,EAEV,0BAA0BH,eAA1B,GAA4C,WAA5C,GAA0DC,GAFhD,CAAZ;AAIA,UAAIG,SAAJ,EAAeA,SAAS,CAACE,WAAV,CAAsBD,GAAtB;AAEf,aAAOA,GAAP;AACD,KARD;AASD;;AACD,SAAOH,GAAP;AACD","sourcesContent":["import { Node } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport { debug } from '../../log'\nimport { errorMessageBlock } from '../error'\n\nconst store = solidLogicSingleton.store\n\nexport type FieldFunction = (\n dom: HTMLDocument, // the DOM\n container: HTMLElement | undefined, // if defined, the box will be appended to it\n already: { }, // used to avoid looping in nested forms\n subject: Node, // the thing for which data will be loaded into the form element\n form: Node, // the RDF declaration for what the form should have\n doc: Node, // the online RDF document for data binding (form input values will be read/saved automatically)\n callbackFunction: (ok: boolean, errorMessage: string) => void // this will be called when data changes (TODO: check this with unit tests)\n) => HTMLElement\n\nexport const field: { [classUri: string]: FieldFunction } = {} // Form field functions by URI of field type.\n\n/**\n * Which class of field is this? Relies on http://www.w3.org/2000/01/rdf-schema#subClassOf and\n * https://linkeddata.github.io/rdflib.js/doc/classes/formula.html#bottomtypeuris\n * to find the most specific RDF type if there are multiple.\n *\n * @param x a form field, e.g. `namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')`\n * @returns the URI of the most specific known class, e.g. `http://www.w3.org/ns/ui#SingleLineTextField`\n */\nexport function mostSpecificClassURI (x: Node): string {\n const kb = store\n const ft = kb.findTypeURIs(x as any)\n const bot = kb.bottomTypeURIs(ft) // most specific\n const bots: any[] = []\n for (const b in bot) bots.push(b)\n // if (bots.length > 1) throw \"Didn't expect \"+x+\" to have multiple bottom types: \"+bots\n return bots[0]\n}\n\n/**\n * Returns a function that creates a form widget\n * @param dom unused\n * @param fieldInQuestion the field for which to create a form, e.g. namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')\n */\nexport function fieldFunction (dom: any /* unused */, fieldInQuestion: Node): FieldFunction {\n const uri = mostSpecificClassURI(fieldInQuestion) // What type\n // const uri = field.uri\n const fun = field[uri]\n debug(\n 'paneUtils: Going to implement field ' + fieldInQuestion + ' of type ' + uri\n )\n if (!fun) {\n return function (dom2: HTMLDocument, container?: HTMLElement): HTMLElement {\n const box = errorMessageBlock(\n dom2,\n 'No handler for field ' + fieldInQuestion + ' of type ' + uri\n )\n if (container) container.appendChild(box)\n\n return box\n }\n }\n return fun\n}\n"],"file":"fieldFunction.js"}
1
+ {"version":3,"file":"fieldFunction.js","names":["store","solidLogicSingleton","field","mostSpecificClassURI","x","kb","ft","findTypeURIs","bot","bottomTypeURIs","bots","b","push","fieldFunction","dom","fieldInQuestion","uri","fun","debug","dom2","container","box","errorMessageBlock","appendChild"],"sources":["../../../src/widgets/forms/fieldFunction.ts"],"sourcesContent":["import { Node } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport { debug } from '../../log'\nimport { errorMessageBlock } from '../error'\n\nconst store = solidLogicSingleton.store\n\nexport type FieldFunction = (\n dom: HTMLDocument, // the DOM\n container: HTMLElement | undefined, // if defined, the box will be appended to it\n already: { }, // used to avoid looping in nested forms\n subject: Node, // the thing for which data will be loaded into the form element\n form: Node, // the RDF declaration for what the form should have\n doc: Node, // the online RDF document for data binding (form input values will be read/saved automatically)\n callbackFunction: (ok: boolean, errorMessage: string) => void // this will be called when data changes (TODO: check this with unit tests)\n) => HTMLElement\n\nexport const field: { [classUri: string]: FieldFunction } = {} // Form field functions by URI of field type.\n\n/**\n * Which class of field is this? Relies on http://www.w3.org/2000/01/rdf-schema#subClassOf and\n * https://linkeddata.github.io/rdflib.js/doc/classes/formula.html#bottomtypeuris\n * to find the most specific RDF type if there are multiple.\n *\n * @param x a form field, e.g. `namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')`\n * @returns the URI of the most specific known class, e.g. `http://www.w3.org/ns/ui#SingleLineTextField`\n */\nexport function mostSpecificClassURI (x: Node): string {\n const kb = store\n const ft = kb.findTypeURIs(x as any)\n const bot = kb.bottomTypeURIs(ft) // most specific\n const bots: any[] = []\n for (const b in bot) bots.push(b)\n // if (bots.length > 1) throw \"Didn't expect \"+x+\" to have multiple bottom types: \"+bots\n return bots[0]\n}\n\n/**\n * Returns a function that creates a form widget\n * @param dom unused\n * @param fieldInQuestion the field for which to create a form, e.g. namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')\n */\nexport function fieldFunction (dom: any /* unused */, fieldInQuestion: Node): FieldFunction {\n const uri = mostSpecificClassURI(fieldInQuestion) // What type\n // const uri = field.uri\n const fun = field[uri]\n debug(\n 'paneUtils: Going to implement field ' + fieldInQuestion + ' of type ' + uri\n )\n if (!fun) {\n return function (dom2: HTMLDocument, container?: HTMLElement): HTMLElement {\n const box = errorMessageBlock(\n dom2,\n 'No handler for field ' + fieldInQuestion + ' of type ' + uri\n )\n if (container) container.appendChild(box)\n\n return box\n }\n }\n return fun\n}\n"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AAEA,IAAMA,KAAK,GAAGC,+BAAA,CAAoBD,KAAlC;AAYO,IAAME,KAA4C,GAAG,EAArD,C,CAAwD;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,SAASC,oBAAT,CAA+BC,CAA/B,EAAgD;EACrD,IAAMC,EAAE,GAAGL,KAAX;EACA,IAAMM,EAAE,GAAGD,EAAE,CAACE,YAAH,CAAgBH,CAAhB,CAAX;EACA,IAAMI,GAAG,GAAGH,EAAE,CAACI,cAAH,CAAkBH,EAAlB,CAAZ,CAHqD,CAGnB;;EAClC,IAAMI,IAAW,GAAG,EAApB;;EACA,KAAK,IAAMC,CAAX,IAAgBH,GAAhB;IAAqBE,IAAI,CAACE,IAAL,CAAUD,CAAV;EAArB,CALqD,CAMrD;;;EACA,OAAOD,IAAI,CAAC,CAAD,CAAX;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASG,aAAT,CAAwBC,GAAxB,EAA+CC,eAA/C,EAAqF;EAC1F,IAAMC,GAAG,GAAGb,oBAAoB,CAACY,eAAD,CAAhC,CAD0F,CACxC;EAClD;;EACA,IAAME,GAAG,GAAGf,KAAK,CAACc,GAAD,CAAjB;EACA,IAAAE,UAAA,EACE,yCAAyCH,eAAzC,GAA2D,WAA3D,GAAyEC,GAD3E;;EAGA,IAAI,CAACC,GAAL,EAAU;IACR,OAAO,UAAUE,IAAV,EAA8BC,SAA9B,EAAoE;MACzE,IAAMC,GAAG,GAAG,IAAAC,wBAAA,EACVH,IADU,EAEV,0BAA0BJ,eAA1B,GAA4C,WAA5C,GAA0DC,GAFhD,CAAZ;MAIA,IAAII,SAAJ,EAAeA,SAAS,CAACG,WAAV,CAAsBF,GAAtB;MAEf,OAAOA,GAAP;IACD,CARD;EASD;;EACD,OAAOJ,GAAP;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/widgets/forms/fieldParams.ts"],"names":["fieldParams","ns","ui","uri","size","type","style","dt","pattern","namedNode","uriPrefix","formGroupStyle","element","commentStyle","formHeadingStyle"],"mappings":"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","sourcesContent":["import * as ns from '../../ns'\nimport { commentStyle, formHeadingStyle, formGroupStyle } from '../../style'\n\nexport type FieldParamsObject = {\n size?: number, // input element size attribute\n type?: string, // input element type attribute. Default: 'text' (not for Comment and Heading)\n element?: string, // element type to use (Comment and Heading only)\n style?: string, // style to use\n dt?: string, // xsd data type for the RDF Literal corresponding to the field value. Default: xsd:string\n uriPrefix?: string, // e.g. 'mailto:', will be removed when displaying value to user. Overrides dt.\n namedNode?: boolean, // if true, field value corresponds to the URI of an RDF NamedNode. Overrides dt and uriPrefix.\n pattern?: RegExp // for client-side input validation; field will go red if violated, green if ok\n}\n\n/**\n * The fieldParams object defines various constants\n * for use in various form fields. Depending on the\n * field in questions, different values may be read\n * from here.\n */\nexport const fieldParams: { [ fieldUri: string ]: FieldParamsObject } = {\n /**\n * Text field\n *\n * For possible date popups see e.g. http://www.dynamicdrive.com/dynamicindex7/jasoncalendar.htm\n * or use HTML5: http://www.w3.org/TR/2011/WD-html-markup-20110113/input.date.html\n */\n [ns.ui('ColorField').uri]: {\n size: 9,\n type: 'color',\n style: 'height: 3em;', // around 1.5em is padding\n dt: 'color',\n pattern: /^\\s*#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]([0-9a-f][0-9a-f])?\\s*$/\n }, // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/color\n\n [ns.ui('DateField').uri]: {\n size: 20,\n type: 'date',\n dt: 'date',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?Z?\\s*$/\n },\n\n [ns.ui('DateTimeField').uri]: {\n size: 20,\n type: 'datetime-local', // See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime\n dt: 'dateTime',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?(T[0-2][0-9]:[0-5][0-9](:[0-5][0-9])?)?Z?\\s*$/\n },\n\n [ns.ui('TimeField').uri]: {\n size: 10,\n type: 'time',\n dt: 'time',\n pattern: /^\\s*([0-2]?[0-9]:[0-5][0-9](:[0-5][0-9])?)\\s*$/\n },\n\n [ns.ui('IntegerField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'integer',\n pattern: /^\\s*-?[0-9]+\\s*$/\n },\n\n [ns.ui('DecimalField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'decimal',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?\\s*$/\n },\n\n [ns.ui('FloatField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'float',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?((e|E)-?[0-9]*)?\\s*$/\n },\n\n [ns.ui('SingleLineTextField').uri]: {\n\n },\n [ns.ui('NamedNodeURIField').uri]: {\n namedNode: true\n },\n [ns.ui('TextField').uri]: {\n\n },\n\n [ns.ui('PhoneField').uri]: {\n size: 20,\n uriPrefix: 'tel:',\n pattern: /^\\+?[\\d-]+[\\d]*$/\n },\n\n [ns.ui('EmailField').uri]: {\n size: 30,\n uriPrefix: 'mailto:',\n pattern: /^\\s*.*@.*\\..*\\s*$/ // @@ Get the right regexp here\n },\n\n [ns.ui('Group').uri]: {\n style: formGroupStyle\n },\n\n /**\n * Non-interactive fields\n */\n [ns.ui('Comment').uri]: {\n element: 'p',\n style: commentStyle // was `padding: 0.1em 1.5em; color: ${formHeadingColor}; white-space: pre-wrap;`\n },\n [ns.ui('Heading').uri]: {\n element: 'h3',\n style: formHeadingStyle // was: `font-size: 110%; font-weight: bold; color: ${formHeadingColor}; padding: 0.2em;`\n }\n}\n"],"file":"fieldParams.js"}
1
+ {"version":3,"file":"fieldParams.js","names":["fieldParams","ns","ui","uri","size","type","style","dt","pattern","namedNode","uriPrefix","formGroupStyle","element","commentStyle","formHeadingStyle"],"sources":["../../../src/widgets/forms/fieldParams.ts"],"sourcesContent":["import * as ns from '../../ns'\nimport { commentStyle, formHeadingStyle, formGroupStyle } from '../../style'\n\nexport type FieldParamsObject = {\n size?: number, // input element size attribute\n type?: string, // input element type attribute. Default: 'text' (not for Comment and Heading)\n element?: string, // element type to use (Comment and Heading only)\n style?: string, // style to use\n dt?: string, // xsd data type for the RDF Literal corresponding to the field value. Default: xsd:string\n uriPrefix?: string, // e.g. 'mailto:', will be removed when displaying value to user. Overrides dt.\n namedNode?: boolean, // if true, field value corresponds to the URI of an RDF NamedNode. Overrides dt and uriPrefix.\n pattern?: RegExp // for client-side input validation; field will go red if violated, green if ok\n}\n\n/**\n * The fieldParams object defines various constants\n * for use in various form fields. Depending on the\n * field in questions, different values may be read\n * from here.\n */\nexport const fieldParams: { [ fieldUri: string ]: FieldParamsObject } = {\n /**\n * Text field\n *\n * For possible date popups see e.g. http://www.dynamicdrive.com/dynamicindex7/jasoncalendar.htm\n * or use HTML5: http://www.w3.org/TR/2011/WD-html-markup-20110113/input.date.html\n */\n [ns.ui('ColorField').uri]: {\n size: 9,\n type: 'color',\n style: 'height: 3em;', // around 1.5em is padding\n dt: 'color',\n pattern: /^\\s*#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]([0-9a-f][0-9a-f])?\\s*$/\n }, // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/color\n\n [ns.ui('DateField').uri]: {\n size: 20,\n type: 'date',\n dt: 'date',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?Z?\\s*$/\n },\n\n [ns.ui('DateTimeField').uri]: {\n size: 20,\n type: 'datetime-local', // See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime\n dt: 'dateTime',\n pattern: /^\\s*[0-9][0-9][0-9][0-9](-[0-1]?[0-9]-[0-3]?[0-9])?(T[0-2][0-9]:[0-5][0-9](:[0-5][0-9])?)?Z?\\s*$/\n },\n\n [ns.ui('TimeField').uri]: {\n size: 10,\n type: 'time',\n dt: 'time',\n pattern: /^\\s*([0-2]?[0-9]:[0-5][0-9](:[0-5][0-9])?)\\s*$/\n },\n\n [ns.ui('IntegerField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'integer',\n pattern: /^\\s*-?[0-9]+\\s*$/\n },\n\n [ns.ui('DecimalField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'decimal',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?\\s*$/\n },\n\n [ns.ui('FloatField').uri]: {\n size: 12,\n style: 'text-align: right;',\n dt: 'float',\n pattern: /^\\s*-?[0-9]*(\\.[0-9]*)?((e|E)-?[0-9]*)?\\s*$/\n },\n\n [ns.ui('SingleLineTextField').uri]: {\n\n },\n [ns.ui('NamedNodeURIField').uri]: {\n namedNode: true\n },\n [ns.ui('TextField').uri]: {\n\n },\n\n [ns.ui('PhoneField').uri]: {\n size: 20,\n uriPrefix: 'tel:',\n pattern: /^\\+?[\\d-]+[\\d]*$/\n },\n\n [ns.ui('EmailField').uri]: {\n size: 30,\n uriPrefix: 'mailto:',\n pattern: /^\\s*.*@.*\\..*\\s*$/ // @@ Get the right regexp here\n },\n\n [ns.ui('Group').uri]: {\n style: formGroupStyle\n },\n\n /**\n * Non-interactive fields\n */\n [ns.ui('Comment').uri]: {\n element: 'p',\n style: commentStyle // was `padding: 0.1em 1.5em; color: ${formHeadingColor}; white-space: pre-wrap;`\n },\n [ns.ui('Heading').uri]: {\n element: 'h3',\n style: formHeadingStyle // was: `font-size: 110%; font-weight: bold; color: ${formHeadingColor}; padding: 0.2em;`\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/widgets/forms/formStyle.ts"],"names":["STYLE_URI_PREFIX","setFieldStyle","ele","field","classUri","params","fieldParams","style","store","any","ns","ui","setAttribute","termType","value","sts","statementsMatching","doc","forEach","st","predicate","uri","startsWith","cssAttribute","slice","length","object","err","console","warn","tagName"],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AAEA;;;;;;AAEA,IAAMA,gBAAgB,GAAG,4BAAzB;AAEA;;AAEO,SAASC,aAAT,CAAwBC,GAAxB,EAAyCC,KAAzC,EAAqD;AAC1D,MAAMC,QAAQ,GAAG,yCAAqBD,KAArB,CAAjB;AACA,MAAME,MAAM,GAAGC,yBAAYF,QAAZ,KAAyB,EAAxC;;AAEA,MAAMG,KAAK,GAAGC,kBAAMC,GAAN,CAAUN,KAAV,EAAwBO,EAAE,CAACC,EAAH,CAAM,OAAN,CAAxB,CAAd;;AACA,MAAI,CAACJ,KAAL,EAAY;AACV,QAAIF,MAAM,CAACE,KAAX,EAAkB;AAChBL,MAAAA,GAAG,CAACU,YAAJ,CAAiB,OAAjB,EAA0BP,MAAM,CAACE,KAAjC;AACD;;AACD;AACD;;AACD,MAAIA,KAAK,CAACM,QAAN,KAAmB,SAAvB,EAAkC;AAChC,QAAIN,KAAJ,EAAWL,GAAG,CAACU,YAAJ,CAAiB,OAAjB,EAA0BL,KAAK,CAACO,KAAhC;AACZ,GAFD,MAEO;AACL,QAAMC,GAAG,GAAGP,kBAAMQ,kBAAN,CAAyBT,KAAzB,EAAuC,IAAvC,EAA6C,IAA7C,EAAoDJ,KAAD,CAAec,GAAf,EAAnD,CAAZ;;AACAF,IAAAA,GAAG,CAACG,OAAJ,CAAY,UAAAC,EAAE,EAAI;AAChB,UAAIA,EAAE,CAACC,SAAH,CAAaC,GAAb,IAAoBF,EAAE,CAACC,SAAH,CAAaC,GAAb,CAAiBC,UAAjB,CAA4BtB,gBAA5B,CAAxB,EAAuE;AACrE,YAAMuB,YAAY,GAAGJ,EAAE,CAACC,SAAH,CAAaC,GAAb,CAAiBG,KAAjB,CAAuBxB,gBAAgB,CAACyB,MAAxC,CAArB;;AACA,YAAI;AACFvB,UAAAA,GAAG,CAACK,KAAJ,CAAUgB,YAAV,IAA0BJ,EAAE,CAACO,MAAH,CAAUZ,KAApC;AACD,SAFD,CAEE,OAAOa,GAAP,EAAY;AACZC,UAAAA,OAAO,CAACC,IAAR,sDAA2DN,YAA3D,mBAA+EJ,EAAE,CAACO,MAAH,CAAUZ,KAAzF;AACAc,UAAAA,OAAO,CAACC,IAAR,sDAA0D3B,GAAG,CAAC4B,OAAJ,IAAe,KAAzE;AACD;AACF;AACF,KAVD;AAWD;AACF","sourcesContent":["import * as ns from '../../ns'\nimport { Node } from 'rdflib'\nimport { store } from 'solid-logic'\nimport { fieldParams } from './fieldParams'\n\nimport { mostSpecificClassURI } from './fieldFunction'\n\nconst STYLE_URI_PREFIX = 'https://www.w3.org/ns/css#'\n\n/* eslint-disable no-console */\n\nexport function setFieldStyle (ele:HTMLElement, field:Node) {\n const classUri = mostSpecificClassURI(field)\n const params = fieldParams[classUri] || {}\n\n const style = store.any(field as any, ns.ui('style'))\n if (!style) {\n if (params.style) {\n ele.setAttribute('style', params.style)\n }\n return\n }\n if (style.termType === 'Literal') {\n if (style) ele.setAttribute('style', style.value)\n } else {\n const sts = store.statementsMatching(style as any, null, null, (field as any).doc())\n sts.forEach(st => {\n if (st.predicate.uri && st.predicate.uri.startsWith(STYLE_URI_PREFIX)) {\n const cssAttribute = st.predicate.uri.slice(STYLE_URI_PREFIX.length)\n try {\n ele.style[cssAttribute] = st.object.value\n } catch (err) {\n console.warn(`setFieldStyle: Error setting element style ${cssAttribute} to \"${st.object.value}\"`)\n console.warn(`setFieldStyle: ... Element tagName was \"${ele.tagName || '???'}\"`)\n }\n }\n })\n }\n}\n"],"file":"formStyle.js"}
1
+ {"version":3,"file":"formStyle.js","names":["STYLE_URI_PREFIX","setFieldStyle","ele","field","classUri","mostSpecificClassURI","params","fieldParams","style","store","any","ns","ui","setAttribute","termType","value","sts","statementsMatching","doc","forEach","st","predicate","uri","startsWith","cssAttribute","slice","length","object","err","console","warn","tagName"],"sources":["../../../src/widgets/forms/formStyle.ts"],"sourcesContent":["import * as ns from '../../ns'\nimport { Node } from 'rdflib'\nimport { store } from 'solid-logic'\nimport { fieldParams } from './fieldParams'\n\nimport { mostSpecificClassURI } from './fieldFunction'\n\nconst STYLE_URI_PREFIX = 'https://www.w3.org/ns/css#'\n\n/* eslint-disable no-console */\n\nexport function setFieldStyle (ele:HTMLElement, field:Node) {\n const classUri = mostSpecificClassURI(field)\n const params = fieldParams[classUri] || {}\n\n const style = store.any(field as any, ns.ui('style'))\n if (!style) {\n if (params.style) {\n ele.setAttribute('style', params.style)\n }\n return\n }\n if (style.termType === 'Literal') {\n if (style) ele.setAttribute('style', style.value)\n } else {\n const sts = store.statementsMatching(style as any, null, null, (field as any).doc())\n sts.forEach(st => {\n if (st.predicate.uri && st.predicate.uri.startsWith(STYLE_URI_PREFIX)) {\n const cssAttribute = st.predicate.uri.slice(STYLE_URI_PREFIX.length)\n try {\n ele.style[cssAttribute] = st.object.value\n } catch (err) {\n console.warn(`setFieldStyle: Error setting element style ${cssAttribute} to \"${st.object.value}\"`)\n console.warn(`setFieldStyle: ... Element tagName was \"${ele.tagName || '???'}\"`)\n }\n }\n })\n }\n}\n"],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AAEA;;;;;;AAEA,IAAMA,gBAAgB,GAAG,4BAAzB;AAEA;;AAEO,SAASC,aAAT,CAAwBC,GAAxB,EAAyCC,KAAzC,EAAqD;EAC1D,IAAMC,QAAQ,GAAG,IAAAC,mCAAA,EAAqBF,KAArB,CAAjB;EACA,IAAMG,MAAM,GAAGC,wBAAA,CAAYH,QAAZ,KAAyB,EAAxC;;EAEA,IAAMI,KAAK,GAAGC,iBAAA,CAAMC,GAAN,CAAUP,KAAV,EAAwBQ,EAAE,CAACC,EAAH,CAAM,OAAN,CAAxB,CAAd;;EACA,IAAI,CAACJ,KAAL,EAAY;IACV,IAAIF,MAAM,CAACE,KAAX,EAAkB;MAChBN,GAAG,CAACW,YAAJ,CAAiB,OAAjB,EAA0BP,MAAM,CAACE,KAAjC;IACD;;IACD;EACD;;EACD,IAAIA,KAAK,CAACM,QAAN,KAAmB,SAAvB,EAAkC;IAChC,IAAIN,KAAJ,EAAWN,GAAG,CAACW,YAAJ,CAAiB,OAAjB,EAA0BL,KAAK,CAACO,KAAhC;EACZ,CAFD,MAEO;IACL,IAAMC,GAAG,GAAGP,iBAAA,CAAMQ,kBAAN,CAAyBT,KAAzB,EAAuC,IAAvC,EAA6C,IAA7C,EAAoDL,KAAD,CAAee,GAAf,EAAnD,CAAZ;;IACAF,GAAG,CAACG,OAAJ,CAAY,UAAAC,EAAE,EAAI;MAChB,IAAIA,EAAE,CAACC,SAAH,CAAaC,GAAb,IAAoBF,EAAE,CAACC,SAAH,CAAaC,GAAb,CAAiBC,UAAjB,CAA4BvB,gBAA5B,CAAxB,EAAuE;QACrE,IAAMwB,YAAY,GAAGJ,EAAE,CAACC,SAAH,CAAaC,GAAb,CAAiBG,KAAjB,CAAuBzB,gBAAgB,CAAC0B,MAAxC,CAArB;;QACA,IAAI;UACFxB,GAAG,CAACM,KAAJ,CAAUgB,YAAV,IAA0BJ,EAAE,CAACO,MAAH,CAAUZ,KAApC;QACD,CAFD,CAEE,OAAOa,GAAP,EAAY;UACZC,OAAO,CAACC,IAAR,sDAA2DN,YAA3D,mBAA+EJ,EAAE,CAACO,MAAH,CAAUZ,KAAzF;UACAc,OAAO,CAACC,IAAR,sDAA0D5B,GAAG,CAAC6B,OAAJ,IAAe,KAAzE;QACD;MACF;IACF,CAVD;EAWD;AACF"}
@@ -22,6 +22,12 @@ Object.defineProperty(exports, "field", {
22
22
  return _fieldFunction.field;
23
23
  }
24
24
  });
25
+ Object.defineProperty(exports, "fieldFunction", {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _fieldFunction.fieldFunction;
29
+ }
30
+ });
25
31
  Object.defineProperty(exports, "fieldLabel", {
26
32
  enumerable: true,
27
33
  get: function get() {
@@ -47,6 +53,12 @@ exports.makeSelectForCategory = makeSelectForCategory;
47
53
  exports.makeSelectForChoice = makeSelectForChoice;
48
54
  exports.makeSelectForNestedCategory = makeSelectForNestedCategory;
49
55
  exports.makeSelectForOptions = makeSelectForOptions;
56
+ Object.defineProperty(exports, "mostSpecificClassURI", {
57
+ enumerable: true,
58
+ get: function get() {
59
+ return _fieldFunction.mostSpecificClassURI;
60
+ }
61
+ });
50
62
  exports.newButton = newButton;
51
63
  exports.newThing = newThing;
52
64
  exports.promptForNew = promptForNew;
@@ -1067,8 +1079,7 @@ _fieldFunction.field[ns.ui('Choice').uri] = function (dom, container, already, s
1067
1079
  }
1068
1080
 
1069
1081
  var subForm = kb.any(form, ui('use')); // Optional
1070
-
1071
- var follow = kb.anyJS(form, ui('follow'), null, formDoc); // data doc moves to new subject?
1082
+ // const follow = kb.anyJS(form, ui('follow'), null, formDoc) // data doc moves to new subject?
1072
1083
 
1073
1084
  var opts = {
1074
1085
  form: form,
@@ -1081,7 +1092,7 @@ _fieldFunction.field[ns.ui('Choice').uri] = function (dom, container, already, s
1081
1092
  var possibleProperties;
1082
1093
  possible = kb.each(undefined, ns.rdf('type'), uiFrom, formDoc);
1083
1094
 
1084
- for (var x in kb.findMembersNT(uiFrom)) {
1095
+ for (var x in findMembersNT(kb, uiFrom, dataDoc)) {
1085
1096
  possible.push(kb.fromNT(x));
1086
1097
  } // Use rdfs
1087
1098
 
@@ -1131,14 +1142,15 @@ _fieldFunction.field[ns.ui('Choice').uri] = function (dom, container, already, s
1131
1142
 
1132
1143
  var multiSelect = kb.any(form, ui('multiselect')); // Optional
1133
1144
 
1134
- var selector; // from ui:property
1135
-
1136
- var selectedOptions = kb.each(subject, property, null, dataDoc).map(function (object) {
1137
- return object.value;
1138
- });
1145
+ if (multiSelect) opts.multiSelect = true;
1146
+ var selector;
1139
1147
 
1140
1148
  rhs.refresh = function () {
1141
- // from ui:from + ui:property
1149
+ // from ui:property
1150
+ var selectedOptions = kb.each(subject, property, null, dataDoc).map(function (object) {
1151
+ return object.value;
1152
+ }); // from ui:from + ui:property
1153
+
1142
1154
  var possibleOptions = getSelectorOptions();
1143
1155
  possibleOptions.push(selectedOptions);
1144
1156
  possibleOptions = sortByLabel(possibleOptions);
@@ -1167,7 +1179,31 @@ _fieldFunction.field[ns.ui('Choice').uri] = function (dom, container, already, s
1167
1179
  }
1168
1180
 
1169
1181
  if (event.action === 'ADD_OPTION') {
1170
- selectedOptions.push(event.value);
1182
+ var stringValue = event.value + '';
1183
+
1184
+ if (stringValue.includes('Create new')) {
1185
+ var newObject = newThing(dataDoc);
1186
+ var is = [];
1187
+ is.push($rdf.st(subject, property, kb.sym(newObject), dataDoc));
1188
+ if (uiFrom) is.push($rdf.st(newObject, ns.rdf('type'), kb.sym(uiFrom), dataDoc));
1189
+
1190
+ if (subForm) {
1191
+ addSubFormChoice(dom, rhs, {}, $rdf.sym(newObject), subForm, dataDoc, function (ok, body) {
1192
+ if (ok) {
1193
+ kb.updater.update([], is, function (uri, success, errorBody) {
1194
+ if (!success) rhs.appendChild((0, _error.errorMessageBlock)(dom, 'Error updating select: ' + errorBody));
1195
+ });
1196
+ selectedOptions.push(newObject);
1197
+ if (callbackFunction) callbackFunction(ok, {
1198
+ widget: 'select',
1199
+ event: 'new'
1200
+ });
1201
+ } else {
1202
+ rhs.appendChild((0, _error.errorMessageBlock)(dom, 'Error updating data in field of select: ' + body));
1203
+ }
1204
+ });
1205
+ }
1206
+ } else selectedOptions.push(event.value);
1171
1207
  }
1172
1208
 
1173
1209
  selector.update(selectedOptions);
@@ -1929,7 +1965,7 @@ function makeSelectForChoice(dom, container, kb, subject, predicate, inputPossib
1929
1965
 
1930
1966
  log.debug('makeSelectForChoice: dataDoc=' + dataDoc);
1931
1967
 
1932
- function determineFitstSelectOptionText() {
1968
+ function createDefaultSelectOptionText() {
1933
1969
  var firstSelectOptionText = '--- choice ---';
1934
1970
 
1935
1971
  if (predicate && !(predicate.termType === 'BlankNode')) {
@@ -1943,9 +1979,9 @@ function makeSelectForChoice(dom, container, kb, subject, predicate, inputPossib
1943
1979
  return firstSelectOptionText;
1944
1980
  }
1945
1981
 
1946
- function determinFirstSelectOption() {
1982
+ function createDefaultSelectOption() {
1947
1983
  var option = dom.createElement('option');
1948
- option.appendChild(dom.createTextNode(determineFitstSelectOptionText()));
1984
+ option.appendChild(dom.createTextNode(createDefaultSelectOptionText()));
1949
1985
  option.disabled = true;
1950
1986
  option.value = true;
1951
1987
  option.hidden = true;
@@ -1975,7 +2011,7 @@ function makeSelectForChoice(dom, container, kb, subject, predicate, inputPossib
1975
2011
  select.insertBefore(mint, select.firstChild);
1976
2012
  }
1977
2013
 
1978
- if (select.children.length === 0) select.insertBefore(determinFirstSelectOption(), select.firstChild);
2014
+ if (select.children.length === 0) select.insertBefore(createDefaultSelectOption(), select.firstChild);
1979
2015
 
1980
2016
  select.update = function (newSelectedOptions) {
1981
2017
  selectedOptions = newSelectedOptions;
@@ -1984,7 +2020,7 @@ function makeSelectForChoice(dom, container, kb, subject, predicate, inputPossib
1984
2020
 
1985
2021
  var removeValue = function removeValue(t) {
1986
2022
  if (kb.holds(subject, predicate, t, dataDoc)) {
1987
- ds.push($rdf.st(subject, predicate, t, dataDoc)); // console.log("----value removed " + t)
2023
+ ds.push($rdf.st(subject, predicate, t, dataDoc));
1988
2024
  }
1989
2025
  };
1990
2026
 
@@ -2052,7 +2088,7 @@ function makeSelectForChoice(dom, container, kb, subject, predicate, inputPossib
2052
2088
  if (opt.selected && opt.AJAR_mint) {
2053
2089
  // not sure if this 'if' is used because I cannot find mintClass
2054
2090
  if (options.mintClass) {
2055
- var thisForm = promptForNew(dom, kb, subject, predicate, options.mintClass, null, dataDoc, function (ok, body) {
2091
+ var thisForm = promptForNew(dom, kb, subject, predicate, uiFrom, options.subForm, dataDoc, function (ok, body) {
2056
2092
  if (!ok) {
2057
2093
  callbackFunction(ok, body, {
2058
2094
  change: 'new'
@@ -2081,13 +2117,13 @@ function makeSelectForChoice(dom, container, kb, subject, predicate, inputPossib
2081
2117
  select.currentURI = opt.AJAR_uri;
2082
2118
  }
2083
2119
 
2084
- if (!containsObject(opt.AJAR_uri, selectedOptions)) opt.setAttribute('selected', 'false');
2120
+ if (!containsObject(opt.AJAR_uri, selectedOptions)) opt.removeAttribute('selected');
2085
2121
  if (containsObject(opt.AJAR_uri, selectedOptions)) opt.setAttribute('selected', 'true');
2086
2122
  }
2087
2123
 
2088
2124
  log.info('selectForOptions: data doc = ' + dataDoc);
2089
2125
 
2090
- if (select.currentURI) {
2126
+ if (select.currentURI && options.subForm && !options.multiSelect) {
2091
2127
  addSubFormChoice(dom, container, {}, $rdf.sym(select.currentURI), options.subForm, dataDoc, function (ok, body) {
2092
2128
  if (ok) {
2093
2129
  kb.updater.update([], is, function (uri, success, errorBody) {
@@ -2128,8 +2164,7 @@ function makeSelectForChoice(dom, container, kb, subject, predicate, inputPossib
2128
2164
 
2129
2165
  option.AJAR_uri = uri;
2130
2166
 
2131
- if (c.value === '' + select.currentURI || containsObject(c.value, selectedOptions)) {
2132
- option.selected = true;
2167
+ if (containsObject(c.value, selectedOptions)) {
2133
2168
  option.setAttribute('selected', 'true');
2134
2169
  }
2135
2170
 
@@ -2154,5 +2189,69 @@ function containsObject(obj, list) {
2154
2189
  }
2155
2190
 
2156
2191
  return false;
2192
+ } // This functions replaces the findMembersNT (thisClass) from rdflib until we fix: https://github.com/linkeddata/rdflib.js/issues/565
2193
+
2194
+ /**
2195
+ * For anything which has thisClass (or any subclass) as its type,
2196
+ * or is the object of something which has thisClass (or any subclass) as its range,
2197
+ * or subject of something which has thisClass (or any subclass) as its domain
2198
+ * We don't bother doing subproperty (yet?) as it doesn't seem to be used
2199
+ * much.
2200
+ * Get all the Classes of which we can RDFS-infer the subject is a member
2201
+ * @return a hash of URIs
2202
+ */
2203
+
2204
+
2205
+ function findMembersNT(store, thisClass, quad) {
2206
+ var len2;
2207
+ var len4;
2208
+ var m;
2209
+ var pred;
2210
+ var ref1;
2211
+ var ref2;
2212
+ var ref3;
2213
+ var ref4;
2214
+ var ref5;
2215
+ var st;
2216
+ var u;
2217
+ var seeds = {};
2218
+ seeds[thisClass.toNT()] = true;
2219
+ var members = {};
2220
+ var ref = store.transitiveClosure(seeds, store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#subClassOf'), true);
2221
+
2222
+ for (var t in ref) {
2223
+ ref1 = store.statementsMatching(null, store.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), store.fromNT(t), quad);
2224
+
2225
+ for (var i = 0, len = ref1.length; i < len; i++) {
2226
+ st = ref1[i];
2227
+ members[st.subject.toNT()] = st;
2228
+ }
2229
+
2230
+ ref2 = store.each(null, store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#domain'), store.fromNT(t), quad);
2231
+
2232
+ for (var l = 0, len1 = ref2.length; l < len1; l++) {
2233
+ pred = ref2[l];
2234
+ ref3 = store.statementsMatching(null, pred, null, quad);
2235
+
2236
+ for (m = 0, len2 = ref3.length; m < len2; m++) {
2237
+ st = ref3[m];
2238
+ members[st.subject.toNT()] = st;
2239
+ }
2240
+ }
2241
+
2242
+ ref4 = store.each(null, store.rdfFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#range'), store.fromNT(t), quad);
2243
+
2244
+ for (var q = 0, len3 = ref4.length; q < len3; q++) {
2245
+ pred = ref4[q];
2246
+ ref5 = store.statementsMatching(null, pred, null, quad);
2247
+
2248
+ for (u = 0, len4 = ref5.length; u < len4; u++) {
2249
+ st = ref5[u];
2250
+ members[st.object.toNT()] = st;
2251
+ }
2252
+ }
2253
+ }
2254
+
2255
+ return members;
2157
2256
  }
2158
2257
  //# sourceMappingURL=forms.js.map