html-form-field 0.1.0 → 0.2.0
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/html-form-field.cjs
CHANGED
|
@@ -236,16 +236,12 @@ class FormBridgeImpl {
|
|
|
236
236
|
|
|
237
237
|
const nodeList = getNodeList(options);
|
|
238
238
|
updateEventListener(nodeList, _onChange);
|
|
239
|
-
|
|
239
|
+
this._items = formItemList(this, nodeList);
|
|
240
240
|
|
|
241
241
|
const defaults = options.defaults;
|
|
242
242
|
if (defaults) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
if (this.setValue(v)) break
|
|
246
|
-
}
|
|
247
|
-
} else {
|
|
248
|
-
this.setValue(defaults);
|
|
243
|
+
for (const v of defaults) {
|
|
244
|
+
if (this.setValue(v)) break
|
|
249
245
|
}
|
|
250
246
|
}
|
|
251
247
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var formField=function(e){"use strict";const t=e=>{const t=e.options.onWrite;t&&t(e)},s={option:!0,radio:!0,checkbox:!0},n=(e,t)=>e.tagName===t,i=(e,t)=>{const s=[];for(const i of t)if(n(i,"SELECT"))for(const t of i.options)s.push(new c(e,t));else s.push(new r(e,i));return s};class o{constructor(e,t){this.field=e,this.node=t}get value(){return this.node.value}set value(e){this.setValue(e),t(this.field)}setValue(e){this.node.value=e}get checked(){return this.getChecked()}set checked(e){this.checked!==e&&(this.setChecked(e),t(this.field))}get disabled(){return this.node.disabled}set disabled(e){this.node.disabled=e}}class r extends o{constructor(e,t){super(e,t),this.checkable=s[t.type]}getChecked(){return this.node.checked}setChecked(e){this.node.checked=e}get label(){const e=this.node,t=e.closest("label"),s=t&&t.querySelectorAll(e.tagName);if(s&&1===s.length){const e=o(t);if(e)return e}const n=e.labels;for(const e of n){const t=o(e);if(t)return t}const i=o(e);if(i)return i;function o(e){const t=e.innerText||e.textContent;if(t)return t.trim()}}}class c extends o{constructor(e,t){super(e,t),this.checkable=!0}getChecked(){return this.node.selected}setChecked(e){this.node.selected=e}get label(){const e=this.node,t=e.label||e.textContent;if(t)return t.trim()}}const l=e=>"string"==typeof e,h=e=>null==e?"":l(e)?e:String(e),a=(e,t)=>null==e?[]:Array.isArray(e)?e.map(h):h(e).split(t),u=({form:e,name:t})=>{const s=JSON.stringify(t);if(!t)throw new Error(`Invalid name=${s}`);const n=`input[name=${s}], textarea[name=${s}], button[name=${s}], select[name=${s}]`,i=e.querySelectorAll(n);if(!i.length){if("function"==typeof e.matches&&e.matches(n))return[e];throw new Error(`Not found: name=${s}`)}return i},d=(e,t)=>{for(const s of e)s.removeEventListener("change",t),s.addEventListener("change",t)},f=e=>{const t=e.options.onWrite;t&&t(e)};class m{constructor(e={}){this.options=e;const t=this.name=e.name;((e,t,s)=>{if(!e)return;delete e[t],Object.defineProperty(e,t,{get:()=>s.value,set:e=>{s.value=e},enumerable:!0,configurable:!0})})(e.bindTo,t,this);const s=this._onChange=()=>{f(this),(e=>{const t=e.options.onChange;t&&t(e)})(this)},n=u(e);d(n,s)
|
|
1
|
+
var formField=function(e){"use strict";const t=e=>{const t=e.options.onWrite;t&&t(e)},s={option:!0,radio:!0,checkbox:!0},n=(e,t)=>e.tagName===t,i=(e,t)=>{const s=[];for(const i of t)if(n(i,"SELECT"))for(const t of i.options)s.push(new c(e,t));else s.push(new r(e,i));return s};class o{constructor(e,t){this.field=e,this.node=t}get value(){return this.node.value}set value(e){this.setValue(e),t(this.field)}setValue(e){this.node.value=e}get checked(){return this.getChecked()}set checked(e){this.checked!==e&&(this.setChecked(e),t(this.field))}get disabled(){return this.node.disabled}set disabled(e){this.node.disabled=e}}class r extends o{constructor(e,t){super(e,t),this.checkable=s[t.type]}getChecked(){return this.node.checked}setChecked(e){this.node.checked=e}get label(){const e=this.node,t=e.closest("label"),s=t&&t.querySelectorAll(e.tagName);if(s&&1===s.length){const e=o(t);if(e)return e}const n=e.labels;for(const e of n){const t=o(e);if(t)return t}const i=o(e);if(i)return i;function o(e){const t=e.innerText||e.textContent;if(t)return t.trim()}}}class c extends o{constructor(e,t){super(e,t),this.checkable=!0}getChecked(){return this.node.selected}setChecked(e){this.node.selected=e}get label(){const e=this.node,t=e.label||e.textContent;if(t)return t.trim()}}const l=e=>"string"==typeof e,h=e=>null==e?"":l(e)?e:String(e),a=(e,t)=>null==e?[]:Array.isArray(e)?e.map(h):h(e).split(t),u=({form:e,name:t})=>{const s=JSON.stringify(t);if(!t)throw new Error(`Invalid name=${s}`);const n=`input[name=${s}], textarea[name=${s}], button[name=${s}], select[name=${s}]`,i=e.querySelectorAll(n);if(!i.length){if("function"==typeof e.matches&&e.matches(n))return[e];throw new Error(`Not found: name=${s}`)}return i},d=(e,t)=>{for(const s of e)s.removeEventListener("change",t),s.addEventListener("change",t)},f=e=>{const t=e.options.onWrite;t&&t(e)};class m{constructor(e={}){this.options=e;const t=this.name=e.name;((e,t,s)=>{if(!e)return;delete e[t],Object.defineProperty(e,t,{get:()=>s.value,set:e=>{s.value=e},enumerable:!0,configurable:!0})})(e.bindTo,t,this);const s=this._onChange=()=>{f(this),(e=>{const t=e.options.onChange;t&&t(e)})(this)},n=u(e);d(n,s),this._items=i(this,n);const o=e.defaults;if(o)for(const e of o)if(this.setValue(e))break}get value(){const e=this.current().map(e=>e.value);if(e.length>1){const t=this.options.delim||",";return e.join(t)}return e[0]}set value(e){this.setValue(e),f(this)}setValue(e){const t=this.items();1===t.length&&!t[0].checkable&&l(e)&&(e=[e]);const s=this.options.delim||",",n=a(e,s);let i=0,o=0;for(const e of t)if(e.checkable){const t=n.includes(e.value);t&&o++,e.checked!==t&&e.setChecked(t)}else{const t=n[i++],s=null==t;e.setValue(s?"":t),s||o++}return!!o}current(){return this.items().filter(e=>!e.disabled&&(!e.checkable||e.checked))}reload(){const e=u(this.options),t=this._onChange;d(e,t),this._items=i(this,e)}items(){return this._items}toggle(e,t){let s;const n=this.options.delim||",",i=a(e,n);for(const e of this.items())i.includes(e.value)&&(s=null!=t?t:!e.checked,e.checked=s);return s}has(e){return!!this.current().find(t=>t.value===e)}itemAt(e){return this.items().at(e)}itemOf(e){return this.items().find(t=>t.value===e)}}return e.formField=e=>new m(e),"undefined"!=typeof module&&(module.exports=e),e.formField}({});
|
package/dist/html-form-field.mjs
CHANGED
|
@@ -234,16 +234,12 @@ class FormBridgeImpl {
|
|
|
234
234
|
|
|
235
235
|
const nodeList = getNodeList(options);
|
|
236
236
|
updateEventListener(nodeList, _onChange);
|
|
237
|
-
|
|
237
|
+
this._items = formItemList(this, nodeList);
|
|
238
238
|
|
|
239
239
|
const defaults = options.defaults;
|
|
240
240
|
if (defaults) {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
if (this.setValue(v)) break
|
|
244
|
-
}
|
|
245
|
-
} else {
|
|
246
|
-
this.setValue(defaults);
|
|
241
|
+
for (const v of defaults) {
|
|
242
|
+
if (this.setValue(v)) break
|
|
247
243
|
}
|
|
248
244
|
}
|
|
249
245
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "html-form-field",
|
|
3
3
|
"description": "Unified interface for HTML form fields with synchronized binding to object properties",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"author": "Kawanet",
|
|
6
6
|
"c8": {
|
|
7
7
|
"reporter": [
|
|
@@ -15,18 +15,18 @@
|
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@rollup/plugin-alias": "^5.1.1",
|
|
18
|
-
"@rollup/plugin-multi-entry": "^7.
|
|
18
|
+
"@rollup/plugin-multi-entry": "^7.1.0",
|
|
19
19
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
20
20
|
"@rollup/plugin-sucrase": "^5.0.2",
|
|
21
21
|
"@rollup/plugin-terser": "^0.4.4",
|
|
22
22
|
"@types/jsdom": "^27.0.0",
|
|
23
|
-
"@types/node": "^24.
|
|
23
|
+
"@types/node": "^24.9.1",
|
|
24
24
|
"c8": "^10.1.3",
|
|
25
25
|
"chai": "^6.2.0",
|
|
26
26
|
"html-ele": "^0.0.1",
|
|
27
|
-
"jsdom": "^27.0.
|
|
27
|
+
"jsdom": "^27.0.1",
|
|
28
28
|
"mocha": "^11.7.4",
|
|
29
|
-
"rollup": "^4.52.
|
|
29
|
+
"rollup": "^4.52.5",
|
|
30
30
|
"terser": "^5.44.0",
|
|
31
31
|
"typescript": "^5.9.3"
|
|
32
32
|
},
|
package/src/form-field.ts
CHANGED
|
@@ -92,16 +92,12 @@ class FormBridgeImpl<T = any> implements FormField<T> {
|
|
|
92
92
|
|
|
93
93
|
const nodeList = getNodeList(options)
|
|
94
94
|
updateEventListener(nodeList, _onChange)
|
|
95
|
-
|
|
95
|
+
this._items = formItemList(this, nodeList)
|
|
96
96
|
|
|
97
97
|
const defaults = options.defaults
|
|
98
98
|
if (defaults) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if (this.setValue(v)) break
|
|
102
|
-
}
|
|
103
|
-
} else {
|
|
104
|
-
this.setValue(defaults)
|
|
99
|
+
for (const v of defaults) {
|
|
100
|
+
if (this.setValue(v)) break
|
|
105
101
|
}
|
|
106
102
|
}
|
|
107
103
|
}
|