@pageboard/html 0.12.12 → 0.12.14
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/embed.js +2 -2
- package/elements/form.js +1 -1
- package/elements/inputs.js +17 -10
- package/elements/layout.js +14 -0
- package/package.json +1 -1
- package/ui/embed.js +0 -1
- package/ui/form.js +3 -13
- package/ui/image.js +2 -2
- package/ui/input_radio.css +15 -0
- package/ui/layout.css +11 -2
- package/ui/layout.js +2 -2
- package/ui/tab-helper.js +14 -7
- package/ui/tab.css +6 -0
package/elements/embed.js
CHANGED
|
@@ -40,8 +40,8 @@ exports.embed = {
|
|
|
40
40
|
};
|
|
41
41
|
},
|
|
42
42
|
tag: 'iframe,element-embed',
|
|
43
|
-
html: `<element-embed data-src="[url
|
|
44
|
-
<a aria-hidden="true" class="linkable" href="[$loc
|
|
43
|
+
html: `<element-embed data-src="[url|url:query:query]" id="[id]">
|
|
44
|
+
<a aria-hidden="true" class="linkable" href="[$loc|as:url|set:hash:[id]]">[linkable|prune:*]#</a>
|
|
45
45
|
<iframe loading="lazy" allowfullscreen frameborder="0" scrolling="no"></iframe>
|
|
46
46
|
</element-embed>`,
|
|
47
47
|
scripts: [
|
package/elements/form.js
CHANGED
|
@@ -47,7 +47,7 @@ exports.query_form = {
|
|
|
47
47
|
contents: 'block+',
|
|
48
48
|
tag: 'form[method="get"]',
|
|
49
49
|
html: `<form is="element-form" method="get" name="[name]"
|
|
50
|
-
action="[redirection|
|
|
50
|
+
action="[redirection.url][redirection.parameters|as:query]"
|
|
51
51
|
autocomplete="off" class="ui form"></form>`,
|
|
52
52
|
stylesheets: [
|
|
53
53
|
'../lib/components/form.css',
|
package/elements/inputs.js
CHANGED
|
@@ -346,18 +346,13 @@ exports.input_radio = {
|
|
|
346
346
|
format: "singleline",
|
|
347
347
|
$helper: 'element-property'
|
|
348
348
|
},
|
|
349
|
-
checked: {
|
|
350
|
-
title: "Checked",
|
|
351
|
-
type: "boolean",
|
|
352
|
-
default: false
|
|
353
|
-
},
|
|
354
349
|
value: {
|
|
355
350
|
title: "Value",
|
|
356
351
|
type: "string",
|
|
357
352
|
format: "singleline"
|
|
358
353
|
},
|
|
359
|
-
|
|
360
|
-
title: "
|
|
354
|
+
checked: {
|
|
355
|
+
title: "Checked",
|
|
361
356
|
type: "boolean",
|
|
362
357
|
default: false
|
|
363
358
|
},
|
|
@@ -365,14 +360,25 @@ exports.input_radio = {
|
|
|
365
360
|
title: 'Required',
|
|
366
361
|
type: 'boolean',
|
|
367
362
|
default: false
|
|
363
|
+
},
|
|
364
|
+
disabled: {
|
|
365
|
+
title: "Disabled",
|
|
366
|
+
type: "boolean",
|
|
367
|
+
default: false
|
|
368
|
+
},
|
|
369
|
+
button: {
|
|
370
|
+
title: 'Button',
|
|
371
|
+
description:'hide radio toggle opacity',
|
|
372
|
+
type: "boolean",
|
|
373
|
+
default: false
|
|
368
374
|
}
|
|
369
375
|
},
|
|
370
376
|
contents: {
|
|
371
377
|
id: 'label',
|
|
372
378
|
nodes: 'inline*'
|
|
373
379
|
},
|
|
374
|
-
html: `<div class="field">
|
|
375
|
-
<div class="ui radio checkbox">
|
|
380
|
+
html: `<div class="field [button]">
|
|
381
|
+
<div class="ui radio [button|alt::checkbox]">
|
|
376
382
|
<input type="radio" disabled="[disabled]" required="[required]"
|
|
377
383
|
name="[name]" value="[value|or:]" checked="[checked]"
|
|
378
384
|
id="for-[name][value|pre:-]" />
|
|
@@ -380,7 +386,8 @@ exports.input_radio = {
|
|
|
380
386
|
</div>
|
|
381
387
|
</div>`,
|
|
382
388
|
stylesheets: [
|
|
383
|
-
'../lib/components/checkbox.css'
|
|
389
|
+
'../lib/components/checkbox.css',
|
|
390
|
+
'../ui/input_radio.css'
|
|
384
391
|
]
|
|
385
392
|
};
|
|
386
393
|
|
package/elements/layout.js
CHANGED
|
@@ -58,6 +58,19 @@ exports.layout = {
|
|
|
58
58
|
title: "Row"
|
|
59
59
|
}]
|
|
60
60
|
},
|
|
61
|
+
wrap: {
|
|
62
|
+
title: 'Wrap',
|
|
63
|
+
anyOf: [{
|
|
64
|
+
type: 'null',
|
|
65
|
+
title: 'No wrap'
|
|
66
|
+
}, {
|
|
67
|
+
const: 'wrap',
|
|
68
|
+
title: 'Wrap'
|
|
69
|
+
}, {
|
|
70
|
+
const: 'wrap-reverse',
|
|
71
|
+
title: 'Reverse'
|
|
72
|
+
}]
|
|
73
|
+
},
|
|
61
74
|
width: {
|
|
62
75
|
title: 'Width',
|
|
63
76
|
anyOf: [{
|
|
@@ -293,6 +306,7 @@ exports.layout = {
|
|
|
293
306
|
[width|switch:full:fullwidth:contained:ui container]
|
|
294
307
|
[horizontal]
|
|
295
308
|
[vertical]
|
|
309
|
+
[wrap]
|
|
296
310
|
[direction]
|
|
297
311
|
[background.invert|alt:inverted]"
|
|
298
312
|
is="element-layout"
|
package/package.json
CHANGED
package/ui/embed.js
CHANGED
package/ui/form.js
CHANGED
|
@@ -41,17 +41,7 @@ class HTMLElementForm extends Page.create(HTMLFormElement) {
|
|
|
41
41
|
if (val == null) {
|
|
42
42
|
form.reset();
|
|
43
43
|
} else if (typeof val == "object") {
|
|
44
|
-
|
|
45
|
-
if (val.id && val.data) {
|
|
46
|
-
// old way
|
|
47
|
-
values = { ...val.data };
|
|
48
|
-
for (const key of Object.keys(val)) {
|
|
49
|
-
if (key != "data") values['$' + key] = val[key];
|
|
50
|
-
}
|
|
51
|
-
} else {
|
|
52
|
-
// new way
|
|
53
|
-
}
|
|
54
|
-
form.fill(this.linearizeValues(values), state.scope);
|
|
44
|
+
form.fill(this.linearizeValues(val), state.scope);
|
|
55
45
|
form.save();
|
|
56
46
|
}
|
|
57
47
|
}
|
|
@@ -208,7 +198,7 @@ class HTMLElementForm extends Page.create(HTMLFormElement) {
|
|
|
208
198
|
fill(query, scope) {
|
|
209
199
|
// fieldset-list are not custom inputs yet
|
|
210
200
|
for (const node of this.querySelectorAll("element-fieldset-list")) {
|
|
211
|
-
node.fill(query, scope);
|
|
201
|
+
node.fill?.(query, scope);
|
|
212
202
|
}
|
|
213
203
|
const vars = [];
|
|
214
204
|
for (const elem of this.elements) {
|
|
@@ -223,7 +213,7 @@ class HTMLElementForm extends Page.create(HTMLFormElement) {
|
|
|
223
213
|
}
|
|
224
214
|
}
|
|
225
215
|
for (const node of this.querySelectorAll('fieldset[is="element-fieldset"]')) {
|
|
226
|
-
node.fill(query, scope);
|
|
216
|
+
node.fill?.(query, scope);
|
|
227
217
|
}
|
|
228
218
|
return vars;
|
|
229
219
|
}
|
package/ui/image.js
CHANGED
|
@@ -162,7 +162,7 @@ const HTMLElementImageConstructor = Superclass => class extends Superclass {
|
|
|
162
162
|
const curSrc = loc.toString();
|
|
163
163
|
if (curSrc != this.currentSrc) {
|
|
164
164
|
this.classList.add('loading');
|
|
165
|
-
this.#defer?.
|
|
165
|
+
this.#defer?.resolve();
|
|
166
166
|
this.#defer = new Deferred();
|
|
167
167
|
img.setAttribute('src', curSrc);
|
|
168
168
|
return this.#defer;
|
|
@@ -183,7 +183,7 @@ const HTMLElementImageConstructor = Superclass => class extends Superclass {
|
|
|
183
183
|
this.image.removeAttribute('src');
|
|
184
184
|
}
|
|
185
185
|
close() {
|
|
186
|
-
this.#defer?.
|
|
186
|
+
this.#defer?.resolve();
|
|
187
187
|
}
|
|
188
188
|
};
|
|
189
189
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
.field.button > .radio > input {
|
|
2
|
+
display:none;
|
|
3
|
+
}
|
|
4
|
+
.field.button > .radio > input + label {
|
|
5
|
+
opacity:0.7;
|
|
6
|
+
padding: 0.5em;
|
|
7
|
+
display: block;
|
|
8
|
+
position: relative;
|
|
9
|
+
}
|
|
10
|
+
.field.button > .radio > input + label:hover {
|
|
11
|
+
opacity:1;
|
|
12
|
+
}
|
|
13
|
+
.field.button > .radio > input:checked + label {
|
|
14
|
+
opacity:1;
|
|
15
|
+
}
|
package/ui/layout.css
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
.layout
|
|
2
|
-
|
|
1
|
+
.layout {
|
|
2
|
+
display:flex;
|
|
3
3
|
flex: 0 0 auto;
|
|
4
|
+
}
|
|
5
|
+
.ui.container.layout {
|
|
4
6
|
display:flex;
|
|
7
|
+
flex: 1 0 auto;
|
|
8
|
+
}
|
|
9
|
+
.layout.wrap {
|
|
10
|
+
flex-wrap:wrap;
|
|
11
|
+
}
|
|
12
|
+
.layout.wrap-reverse {
|
|
13
|
+
flex-wrap:wrap-reverse;
|
|
5
14
|
}
|
|
6
15
|
.layout.column {
|
|
7
16
|
flex-direction: column;
|
package/ui/layout.js
CHANGED
|
@@ -56,7 +56,7 @@ class HTMLElementLayout extends Page.create(HTMLDivElement) {
|
|
|
56
56
|
} catch(e) {
|
|
57
57
|
// pass
|
|
58
58
|
}
|
|
59
|
-
this.#defer?.
|
|
59
|
+
this.#defer?.resolve();
|
|
60
60
|
this.#defer = new Deferred();
|
|
61
61
|
const img = new Image();
|
|
62
62
|
img.addEventListener('load', this.#defer.resolve);
|
|
@@ -67,7 +67,7 @@ class HTMLElementLayout extends Page.create(HTMLDivElement) {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
close() {
|
|
70
|
-
this.#defer?.
|
|
70
|
+
this.#defer?.resolve();
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
package/ui/tab-helper.js
CHANGED
|
@@ -11,19 +11,26 @@ Page.extend('element-tabs', class TabsHelper {
|
|
|
11
11
|
if (this.observer) this.observer.disconnect();
|
|
12
12
|
}
|
|
13
13
|
mutate(record, state) {
|
|
14
|
-
const items = this
|
|
15
|
-
const tabs = this.tabs;
|
|
14
|
+
const { items, tabs } = this;
|
|
16
15
|
if (!items || !tabs) return;
|
|
16
|
+
const { editor } = state.scope;
|
|
17
|
+
if (!editor) return;
|
|
18
|
+
const { utils } = editor;
|
|
19
|
+
const { tr } = editor.state;
|
|
17
20
|
for (const node of record.addedNodes) {
|
|
18
|
-
tabs.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
const cur = tabs.children[items.children.indexOf(node) - 1];
|
|
22
|
+
if (!cur) continue;
|
|
23
|
+
const sel = utils.selectDomTr(tr, cur);
|
|
24
|
+
utils.insertTr(tr, editor.render({ type: 'tab' }), sel);
|
|
21
25
|
}
|
|
22
26
|
for (let i = 0; i < record.removedNodes.length; i++) {
|
|
23
27
|
const pos = record.target.childNodes.indexOf(record.previousSibling) + 1 + i;
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
28
|
+
const cur = tabs.childNodes[pos];
|
|
29
|
+
if (!cur) continue;
|
|
30
|
+
const sel = utils.selectDomTr(tr, cur);
|
|
31
|
+
utils.deleteTr(tr, sel);
|
|
26
32
|
}
|
|
33
|
+
editor.dispatch(tr);
|
|
27
34
|
}
|
|
28
35
|
handleClick(e, state) {
|
|
29
36
|
const item = e.target.closest('[block-type="tab_item"]');
|
package/ui/tab.css
CHANGED
|
@@ -8,6 +8,12 @@ element-tabs {
|
|
|
8
8
|
overflow:hidden;
|
|
9
9
|
margin:0;
|
|
10
10
|
}
|
|
11
|
+
element-tabs > .ui.tabular.menu {
|
|
12
|
+
flex-wrap:wrap;
|
|
13
|
+
}
|
|
14
|
+
element-tabs > .ui.tabular.menu::after {
|
|
15
|
+
content:none;
|
|
16
|
+
}
|
|
11
17
|
element-tabs > .ui.tabular.menu + div[block-content="tabs"] > .segment {
|
|
12
18
|
border-top: none;
|
|
13
19
|
margin:0 0 1rem;
|