solid-ui 2.4.18-c89d416d → 2.4.18-d0dfe92f
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/lib/acl/access-groups.d.ts +5 -4
- package/lib/acl/access-groups.d.ts.map +1 -1
- package/lib/acl/access-groups.js +1 -0
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.d.ts +2 -2
- package/lib/acl/acl-control.d.ts.map +1 -1
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.d.ts +5 -5
- package/lib/acl/acl.d.ts.map +1 -1
- package/lib/acl/acl.js.map +1 -1
- package/lib/footer/index.d.ts +4 -4
- package/lib/footer/index.d.ts.map +1 -1
- package/lib/footer/index.js.map +1 -1
- package/lib/login/login.d.ts +4 -1
- package/lib/login/login.d.ts.map +1 -1
- package/lib/login/login.js +226 -133
- package/lib/login/login.js.map +1 -1
- package/lib/style.js +3 -3
- package/lib/style.js.map +1 -1
- package/lib/tabs.d.ts +1 -1
- package/lib/tabs.d.ts.map +1 -1
- package/lib/tabs.js +11 -3
- package/lib/tabs.js.map +1 -1
- package/lib/utils/headerFooterHelpers.d.ts +2 -3
- package/lib/utils/headerFooterHelpers.d.ts.map +1 -1
- package/lib/utils/headerFooterHelpers.js +63 -33
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/versionInfo.js +2 -2
- package/lib/versionInfo.js.map +1 -1
- package/lib/webpack-bundle.js +364 -207
- package/lib/webpack-bundle.js.map +1 -1
- package/lib/widgets/forms/basic.d.ts +1 -1
- package/lib/widgets/forms/basic.d.ts.map +1 -1
- package/lib/widgets/forms/basic.js +8 -6
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms.js +51 -28
- package/lib/widgets/forms.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BlankNode, NamedNode, Node, Store, Variable } from 'rdflib';
|
|
2
|
-
export declare function renderNameValuePair(dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode): HTMLElement;
|
|
2
|
+
export declare function renderNameValuePair(dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode, label?: string): HTMLElement;
|
|
3
3
|
/**
|
|
4
4
|
* Create an anchor element with a label as the anchor text.
|
|
5
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../src/widgets/forms/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAW,SAAS,EAAE,IAAI,EAAM,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAajF,wBAAgB,mBAAmB,CAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../src/widgets/forms/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAW,SAAS,EAAE,IAAI,EAAM,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAajF,wBAAgB,mBAAmB,CAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAE,WAAW,CAoBhI;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,eAAe,EAAE,IAAI,GAAG,WAAW,GAAG,IAAI,CAYzH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAczJ;AAED;;;;;;;;;;;;;;;GAeG;AAEH,wBAAgB,UAAU,CACxB,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,OAAO,KAAA,EACP,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EACzC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,gBAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,GAC9D,WAAW,CA8Jb"}
|
|
@@ -34,8 +34,8 @@ var store = _solidLogic.solidLogicSingleton.store;
|
|
|
34
34
|
/* Style and create a name, value pair
|
|
35
35
|
*/
|
|
36
36
|
|
|
37
|
-
function renderNameValuePair(dom, kb, box, form) {
|
|
38
|
-
|
|
37
|
+
function renderNameValuePair(dom, kb, box, form, label) {
|
|
38
|
+
// const property = kb.any(form, ns.ui('property'))
|
|
39
39
|
box.style.display = 'flex';
|
|
40
40
|
box.style.flexDirection = 'row';
|
|
41
41
|
var lhs = box.appendChild(dom.createElement('div'));
|
|
@@ -45,12 +45,14 @@ function renderNameValuePair(dom, kb, box, form) {
|
|
|
45
45
|
lhs.setAttribute('style', _style.formFieldNameBoxStyle);
|
|
46
46
|
rhs.setAttribute('class', 'formFieldValue');
|
|
47
47
|
|
|
48
|
-
if (
|
|
48
|
+
if (label) {
|
|
49
|
+
lhs.appendChild(dom.createTextNode(label));
|
|
50
|
+
} else if (kb.any(form, ns.ui('property'))) {
|
|
49
51
|
// Assume more space for error on right
|
|
50
|
-
|
|
51
|
-
lhs.appendChild(dom.createTextNode('???'));
|
|
52
|
+
lhs.appendChild(fieldLabel(dom, kb.any(form, ns.ui('property')), form));
|
|
52
53
|
} else {
|
|
53
|
-
|
|
54
|
+
rhs.appendChild((0, _error.errorMessageBlock)(dom, 'No property or label given for form field: ' + form));
|
|
55
|
+
lhs.appendChild(dom.createTextNode('???'));
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
return rhs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/widgets/forms/basic.ts"],"names":["store","solidLogicSingleton","renderNameValuePair","dom","kb","box","form","property","any","ns","ui","style","display","flexDirection","lhs","appendChild","createElement","width","formFieldNameBoxWidth","rhs","setAttribute","formFieldNameBoxStyle","createTextNode","fieldLabel","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):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 (!property) { // Assume more space for error on right\n rhs.appendChild(errorMessageBlock(dom, 'No property given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\n } else {\n lhs.appendChild(fieldLabel(dom, property as NamedNode, form))\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,"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"}
|
package/lib/widgets/forms.js
CHANGED
|
@@ -8,6 +8,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
10
|
exports.appendForm = appendForm;
|
|
11
|
+
Object.defineProperty(exports, "basicField", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function get() {
|
|
14
|
+
return _basic.basicField;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
11
17
|
exports.buildCheckboxForm = buildCheckboxForm;
|
|
12
18
|
exports.editFormButton = editFormButton;
|
|
13
19
|
Object.defineProperty(exports, "field", {
|
|
@@ -16,14 +22,24 @@ Object.defineProperty(exports, "field", {
|
|
|
16
22
|
return _fieldFunction.field;
|
|
17
23
|
}
|
|
18
24
|
});
|
|
19
|
-
exports
|
|
25
|
+
Object.defineProperty(exports, "fieldLabel", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function get() {
|
|
28
|
+
return _basic.fieldLabel;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
20
31
|
Object.defineProperty(exports, "fieldParams", {
|
|
21
32
|
enumerable: true,
|
|
22
33
|
get: function get() {
|
|
23
34
|
return _fieldParams.fieldParams;
|
|
24
35
|
}
|
|
25
36
|
});
|
|
26
|
-
exports
|
|
37
|
+
Object.defineProperty(exports, "fieldStore", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _basic.fieldStore;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
27
43
|
exports.findClosest = findClosest;
|
|
28
44
|
exports.formsFor = formsFor;
|
|
29
45
|
exports.makeDescription = makeDescription;
|
|
@@ -34,6 +50,12 @@ exports.newButton = newButton;
|
|
|
34
50
|
exports.newThing = newThing;
|
|
35
51
|
exports.promptForNew = promptForNew;
|
|
36
52
|
exports.propertiesForClass = propertiesForClass;
|
|
53
|
+
Object.defineProperty(exports, "renderNameValuePair", {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
get: function get() {
|
|
56
|
+
return _basic.renderNameValuePair;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
37
59
|
exports.sortByLabel = sortByLabel;
|
|
38
60
|
exports.sortBySequence = sortBySequence;
|
|
39
61
|
|
|
@@ -906,8 +928,8 @@ _fieldFunction.field[ns.ui('MultiLineTextField').uri] = function (dom, container
|
|
|
906
928
|
var left = box.appendChild(dom.createElement('div'));
|
|
907
929
|
left.style.width = style.formFieldNameBoxWidth;
|
|
908
930
|
var right = box.appendChild(dom.createElement('div'));
|
|
909
|
-
left.appendChild(fieldLabel(dom, property, form));
|
|
910
|
-
dataDoc = fieldStore(subject, property, dataDoc);
|
|
931
|
+
left.appendChild((0, _basic.fieldLabel)(dom, property, form));
|
|
932
|
+
dataDoc = (0, _basic.fieldStore)(subject, property, dataDoc);
|
|
911
933
|
var text = kb.anyJS(subject, property, null, dataDoc) || '';
|
|
912
934
|
var editable = kb.updater.editable(dataDoc.uri);
|
|
913
935
|
var suppressEmptyUneditable = form && kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc);
|
|
@@ -941,7 +963,7 @@ function booleanField(dom, container, already, subject, form, dataDoc, callbackF
|
|
|
941
963
|
var lab = kb.any(form, ui('label'));
|
|
942
964
|
if (!lab) lab = utils.label(property, true); // Init capital
|
|
943
965
|
|
|
944
|
-
dataDoc = fieldStore(subject, property, dataDoc);
|
|
966
|
+
dataDoc = (0, _basic.fieldStore)(subject, property, dataDoc);
|
|
945
967
|
var state = kb.any(subject, property);
|
|
946
968
|
|
|
947
969
|
if (state === undefined) {
|
|
@@ -1024,7 +1046,7 @@ _fieldFunction.field[ns.ui('Choice').uri] = function (dom, container, already, s
|
|
|
1024
1046
|
return box.appendChild((0, _error.errorMessageBlock)(dom, 'No property for Choice: ' + form));
|
|
1025
1047
|
}
|
|
1026
1048
|
|
|
1027
|
-
lhs.appendChild(fieldLabel(dom, property, form));
|
|
1049
|
+
lhs.appendChild((0, _basic.fieldLabel)(dom, property, form));
|
|
1028
1050
|
var from = kb.any(form, ui('from'));
|
|
1029
1051
|
|
|
1030
1052
|
if (!from) {
|
|
@@ -1741,7 +1763,7 @@ function makeSelectForNestedCategory(dom, kb, subject, category, dataDoc, callba
|
|
|
1741
1763
|
|
|
1742
1764
|
function buildCheckboxForm(dom, kb, lab, del, ins, form, dataDoc, tristate) {
|
|
1743
1765
|
var box = dom.createElement('div');
|
|
1744
|
-
var rhs = (0, _basic.renderNameValuePair)(dom, kb, box, form);
|
|
1766
|
+
var rhs = (0, _basic.renderNameValuePair)(dom, kb, box, form, lab);
|
|
1745
1767
|
var editable = kb.updater.editable(dataDoc.uri);
|
|
1746
1768
|
var input = dom.createElement('button');
|
|
1747
1769
|
var colorCarrier = input;
|
|
@@ -1840,33 +1862,34 @@ function buildCheckboxForm(dom, kb, lab, del, ins, form, dataDoc, tristate) {
|
|
|
1840
1862
|
input.addEventListener('click', boxHandler, false);
|
|
1841
1863
|
return box;
|
|
1842
1864
|
}
|
|
1843
|
-
|
|
1844
|
-
function fieldLabel(dom, property, form) {
|
|
1845
|
-
|
|
1846
|
-
if (!lab) lab = utils.label(property, true)
|
|
1847
|
-
|
|
1865
|
+
/*
|
|
1866
|
+
export function fieldLabel (dom, property, form) {
|
|
1867
|
+
let lab = kb.any(form, ns.ui('label'))
|
|
1868
|
+
if (!lab) lab = utils.label(property, true) // Init capital
|
|
1848
1869
|
if (property === undefined) {
|
|
1849
|
-
return dom.createTextNode('@@Internal error: undefined property')
|
|
1870
|
+
return dom.createTextNode('@@Internal error: undefined property')
|
|
1850
1871
|
}
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
anchor.
|
|
1855
|
-
|
|
1856
|
-
anchor.textContent = lab;
|
|
1857
|
-
return anchor;
|
|
1872
|
+
const anchor = dom.createElement('a')
|
|
1873
|
+
if (property.uri) anchor.setAttribute('href', property.uri)
|
|
1874
|
+
anchor.setAttribute('style', style.fieldLabelStyle) // Not too blue and no underline
|
|
1875
|
+
anchor.textContent = lab
|
|
1876
|
+
return anchor
|
|
1858
1877
|
}
|
|
1859
1878
|
|
|
1860
|
-
function fieldStore(subject, predicate, def) {
|
|
1861
|
-
|
|
1862
|
-
if (sts.length === 0) return def
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1879
|
+
export function fieldStore (subject, predicate, def) {
|
|
1880
|
+
const sts = kb.statementsMatching(subject, predicate)
|
|
1881
|
+
if (sts.length === 0) return def // can used default as no data yet
|
|
1882
|
+
if (
|
|
1883
|
+
sts.length > 0 &&
|
|
1884
|
+
sts[0].why.uri &&
|
|
1885
|
+
kb.updater.editable(sts[0].why.uri)
|
|
1886
|
+
) {
|
|
1887
|
+
return kb.sym(sts[0].why.uri)
|
|
1866
1888
|
}
|
|
1867
|
-
|
|
1868
|
-
return def;
|
|
1889
|
+
return def
|
|
1869
1890
|
}
|
|
1891
|
+
*/
|
|
1892
|
+
|
|
1870
1893
|
/** Mint local ID using timestamp
|
|
1871
1894
|
* @param {NamedNode} doc - the document in which the ID is to be generated
|
|
1872
1895
|
*/
|