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.
- package/dist/main.js +7839 -8316
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.js +0 -1
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.js.map +1 -1
- package/lib/acl/styles.js.map +1 -1
- package/lib/acl/types.js.map +1 -1
- package/lib/chat/bookmarks.js +2 -4
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.js.map +1 -1
- package/lib/create/index.js.map +1 -1
- package/lib/create/types.js.map +1 -1
- package/lib/debug.js.map +1 -1
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.js.map +1 -1
- package/lib/header/empty-profile.js.map +1 -1
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.js.map +1 -1
- package/lib/iconBase.js +3 -2
- package/lib/iconBase.js.map +1 -1
- package/lib/icons/solid_logo.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/jss/index.js.map +1 -1
- package/lib/log.js.map +1 -1
- package/lib/login/login.d.ts +9 -8
- package/lib/login/login.d.ts.map +1 -1
- package/lib/login/login.js +290 -342
- package/lib/login/login.js.map +1 -1
- package/lib/matrix/index.js.map +1 -1
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/matrix/types.js.map +1 -1
- package/lib/media/index.js.map +1 -1
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js.map +1 -1
- package/lib/noun_Camera_1618446_000000.js.map +1 -1
- package/lib/ns.js.map +1 -1
- package/lib/pad.js.map +1 -1
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js.map +1 -1
- package/lib/signup/config-default.js.map +1 -1
- package/lib/signup/signup.js.map +1 -1
- package/lib/stories/decorators.js.map +1 -1
- package/lib/style.js.map +1 -1
- package/lib/style_multiSelect.js.map +1 -1
- package/lib/table.js.map +1 -1
- package/lib/tabs.d.ts.map +1 -1
- package/lib/tabs.js +21 -18
- package/lib/tabs.js.map +1 -1
- package/lib/typings.d.js.map +1 -1
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.d.ts +9 -9
- package/lib/versionInfo.js +14 -14
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.js.map +1 -1
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js.map +1 -1
- package/lib/widgets/error.d.ts +0 -12
- package/lib/widgets/error.d.ts.map +1 -1
- package/lib/widgets/error.js +5 -0
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.js.map +1 -1
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +119 -20
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js.map +1 -1
- package/lib/widgets/multiSelect.js.map +1 -1
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/lib/widgets/widgetHelpers.js.map +1 -1
- 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,"
|
|
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,"
|
|
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,"
|
|
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,"
|
|
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"}
|
package/lib/widgets/forms.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
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
|
|
1982
|
+
function createDefaultSelectOption() {
|
|
1947
1983
|
var option = dom.createElement('option');
|
|
1948
|
-
option.appendChild(dom.createTextNode(
|
|
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(
|
|
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));
|
|
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.
|
|
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.
|
|
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 (
|
|
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
|