@pageboard/html 0.14.11 → 0.14.13
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/elements/fieldsets.js +22 -15
- package/elements/pagination.js +1 -1
- package/package.json +1 -1
- package/ui/fieldset-list.js +3 -0
- package/ui/fieldset.css +1 -0
- package/ui/fieldset.js +8 -1
- package/ui/form.js +1 -1
- package/ui/select.css +3 -0
- package/ui/select.js +1 -0
package/elements/fieldsets.js
CHANGED
|
@@ -5,31 +5,38 @@ exports.fieldset = {
|
|
|
5
5
|
group: 'block',
|
|
6
6
|
context: 'form//',
|
|
7
7
|
properties: {
|
|
8
|
+
plain: {
|
|
9
|
+
title: 'Plain',
|
|
10
|
+
description: 'Without legend or borders',
|
|
11
|
+
type: 'boolean',
|
|
12
|
+
default: false
|
|
13
|
+
},
|
|
8
14
|
name: {
|
|
9
|
-
title: '
|
|
15
|
+
title: 'When input named',
|
|
10
16
|
type: 'string',
|
|
11
17
|
format: 'singleline',
|
|
12
18
|
nullable: true,
|
|
13
19
|
$helper: 'form-element'
|
|
14
20
|
},
|
|
21
|
+
op: {
|
|
22
|
+
title: 'Condition',
|
|
23
|
+
anyOf: [{
|
|
24
|
+
const: 'eq',
|
|
25
|
+
title: 'is equal to'
|
|
26
|
+
}, {
|
|
27
|
+
const: 'neq',
|
|
28
|
+
title: 'is not equal to'
|
|
29
|
+
}],
|
|
30
|
+
default: 'eq'
|
|
31
|
+
},
|
|
15
32
|
value: {
|
|
16
|
-
title: '
|
|
33
|
+
title: 'Value',
|
|
17
34
|
type: 'string',
|
|
18
|
-
format: 'singleline'
|
|
19
|
-
$filter: {
|
|
20
|
-
name: 'element-value',
|
|
21
|
-
using: 'name'
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
plain: {
|
|
25
|
-
title: 'Plain',
|
|
26
|
-
description: 'Without legend or borders',
|
|
27
|
-
type: 'boolean',
|
|
28
|
-
default: false
|
|
35
|
+
format: 'singleline'
|
|
29
36
|
}
|
|
30
37
|
},
|
|
31
38
|
contents: "fieldset_legend block+",
|
|
32
|
-
html: '<fieldset class="[plain]" data-name="[name]" data-value="[value]" is="element-fieldset"></fieldset>',
|
|
39
|
+
html: '<fieldset class="[plain]" data-name="[name]" data-op="[op]" data-value="[value]" is="element-fieldset"></fieldset>',
|
|
33
40
|
scripts: ["../ui/fieldset.js"],
|
|
34
41
|
stylesheets: ['../ui/fieldset.css']
|
|
35
42
|
};
|
|
@@ -42,11 +49,11 @@ exports.fieldset_legend = {
|
|
|
42
49
|
|
|
43
50
|
exports.fieldset_list = {
|
|
44
51
|
title: 'Field List',
|
|
52
|
+
priority: 2, // after template
|
|
45
53
|
menu: "form",
|
|
46
54
|
icon: '<i class="icons"><i class="folder outline icon"></i><i class="corner add icon"></i></i>',
|
|
47
55
|
group: 'block template',
|
|
48
56
|
context: 'form//',
|
|
49
|
-
priority: 0,
|
|
50
57
|
properties: {
|
|
51
58
|
min: {
|
|
52
59
|
title: 'Min items',
|
package/elements/pagination.js
CHANGED
package/package.json
CHANGED
package/ui/fieldset-list.js
CHANGED
|
@@ -6,12 +6,14 @@ class HTMLElementFieldsetList extends Page.Element {
|
|
|
6
6
|
|
|
7
7
|
fill(values) {
|
|
8
8
|
if (this.isContentEditable || this.prefix == null) return;
|
|
9
|
+
const vars = [];
|
|
9
10
|
for (const [key, val] of Object.entries(values)) {
|
|
10
11
|
const parts = this.#prefixed(key);
|
|
11
12
|
if (!parts) continue;
|
|
12
13
|
if (parts.length == 1 && Number.isInteger(Number(parts[0])) && Array.isArray(val)) {
|
|
13
14
|
console.warn("fielset-list should receive flat lists", key, val);
|
|
14
15
|
} else if (parts.length == 0 && Array.isArray(val)) {
|
|
16
|
+
vars.push(key);
|
|
15
17
|
for (let i = 0; i < val.length; i++) {
|
|
16
18
|
values[key + '.' + i] = val[i];
|
|
17
19
|
}
|
|
@@ -21,6 +23,7 @@ class HTMLElementFieldsetList extends Page.Element {
|
|
|
21
23
|
this.#list = this.#listFromValues({ ...values });
|
|
22
24
|
if (this.#defaultList == null) this.save();
|
|
23
25
|
this.#resize();
|
|
26
|
+
return vars;
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
reset() {
|
package/ui/fieldset.css
CHANGED
package/ui/fieldset.js
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
class HTMLElementFieldSet extends Page.create(HTMLFieldSetElement) {
|
|
2
2
|
static defaults = {
|
|
3
3
|
dataName: null,
|
|
4
|
+
dataOp: null,
|
|
4
5
|
dataValue: null
|
|
5
6
|
};
|
|
6
7
|
|
|
8
|
+
#compare(to) {
|
|
9
|
+
const { value } = this.options;
|
|
10
|
+
if (this.options.op == "neq") return value != to;
|
|
11
|
+
else return value == to;
|
|
12
|
+
}
|
|
13
|
+
|
|
7
14
|
fill(query) {
|
|
8
15
|
if (this.isContentEditable || !this.options?.name || !this.form) return;
|
|
9
16
|
if (!query) query = this.form.read(true);
|
|
10
17
|
const val = query[this.options.name];
|
|
11
|
-
const disabled = this.disabled = this.hidden = val
|
|
18
|
+
const disabled = this.disabled = this.hidden = !this.#compare(val);
|
|
12
19
|
for (const node of this.querySelectorAll('[name]')) {
|
|
13
20
|
node.disabled = disabled;
|
|
14
21
|
}
|
package/ui/form.js
CHANGED
|
@@ -194,7 +194,7 @@ class HTMLElementForm extends Page.create(HTMLFormElement) {
|
|
|
194
194
|
// fieldset-list are not custom inputs yet
|
|
195
195
|
const vars = [];
|
|
196
196
|
for (const node of this.querySelectorAll("element-fieldset-list")) {
|
|
197
|
-
node
|
|
197
|
+
if (node.fill) vars.push(...node.fill(query));
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
for (const elem of this.elements) {
|
package/ui/select.css
CHANGED
package/ui/select.js
CHANGED