@teipublisher/pb-components 2.25.5 → 2.25.6
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/.github/workflows/main.yml +3 -3
- package/.github/workflows/node.js.yml +3 -3
- package/.github/workflows/release.js.yml +3 -3
- package/CHANGELOG.md +8 -0
- package/Dockerfile +78 -70
- package/css/components.css +5 -5
- package/dist/demo/pb-drawer2.html +1 -1
- package/dist/demo/pb-leaflet-map.html +1 -1
- package/dist/demo/pb-repeat.html +1 -3
- package/dist/demo/pb-view3.html +1 -1
- package/dist/{paper-icon-button-0fb125c4.js → paper-icon-button-72125e67.js} +1 -1
- package/dist/pb-code-editor.js +25 -20
- package/dist/pb-component-docs.js +58 -54
- package/dist/pb-components-bundle.js +1827 -1520
- package/dist/pb-edit-app.js +167 -107
- package/dist/pb-elements.json +54 -54
- package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
- package/dist/pb-leaflet-map.js +23 -23
- package/dist/pb-mei.js +56 -41
- package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
- package/dist/pb-odd-editor.js +925 -758
- package/dist/pb-tify.js +2 -2
- package/dist/{vaadin-element-mixin-859a0132.js → vaadin-element-mixin-ad07ba25.js} +88 -61
- package/gh-pages.js +5 -3
- package/package.json +2 -2
- package/pb-elements.json +54 -54
- package/src/assets/components.css +5 -5
- package/src/authority/airtable.js +20 -21
- package/src/authority/anton.js +129 -129
- package/src/authority/custom.js +23 -21
- package/src/authority/geonames.js +38 -32
- package/src/authority/gnd.js +47 -42
- package/src/authority/kbga.js +137 -134
- package/src/authority/metagrid.js +44 -46
- package/src/authority/reconciliation.js +66 -67
- package/src/authority/registry.js +4 -4
- package/src/docs/pb-component-docs.js +2 -2
- package/src/docs/pb-component-view.js +5 -5
- package/src/docs/pb-components-list.js +2 -2
- package/src/docs/pb-demo-snippet.js +2 -2
- package/src/dts-client.js +299 -297
- package/src/dts-select-endpoint.js +90 -82
- package/src/parse-date-service.js +184 -135
- package/src/pb-ajax.js +171 -167
- package/src/pb-authority-lookup.js +96 -81
- package/src/pb-autocomplete.js +292 -280
- package/src/pb-blacklab-highlight.js +264 -259
- package/src/pb-blacklab-results.js +236 -221
- package/src/pb-browse-docs.js +540 -475
- package/src/pb-browse.js +68 -65
- package/src/pb-clipboard.js +79 -76
- package/src/pb-code-editor.js +110 -102
- package/src/pb-code-highlight.js +209 -204
- package/src/pb-codepen.js +79 -72
- package/src/pb-collapse.js +149 -146
- package/src/pb-combo-box.js +190 -190
- package/src/pb-components-bundle.js +1 -1
- package/src/pb-custom-form.js +150 -149
- package/src/pb-document.js +89 -90
- package/src/pb-download.js +208 -195
- package/src/pb-drawer.js +145 -148
- package/src/pb-edit-app.js +301 -229
- package/src/pb-edit-xml.js +99 -96
- package/src/pb-events.js +114 -107
- package/src/pb-facs-link.js +104 -102
- package/src/pb-facsimile.js +411 -413
- package/src/pb-formula.js +151 -153
- package/src/pb-geolocation.js +129 -131
- package/src/pb-grid-action.js +53 -56
- package/src/pb-grid.js +231 -228
- package/src/pb-highlight.js +140 -140
- package/src/pb-hotkeys.js +40 -42
- package/src/pb-i18n.js +101 -104
- package/src/pb-image-strip.js +84 -78
- package/src/pb-lang.js +83 -70
- package/src/pb-leaflet-map.js +488 -485
- package/src/pb-link.js +126 -124
- package/src/pb-load.js +431 -426
- package/src/pb-login.js +275 -254
- package/src/pb-manage-odds.js +364 -318
- package/src/pb-map-icon.js +89 -89
- package/src/pb-map-layer.js +85 -85
- package/src/pb-markdown.js +90 -99
- package/src/pb-media-query.js +74 -72
- package/src/pb-mei.js +306 -295
- package/src/pb-message.js +143 -130
- package/src/pb-mixin.js +269 -264
- package/src/pb-navigation.js +80 -82
- package/src/pb-observable.js +38 -38
- package/src/pb-odd-editor.js +1056 -958
- package/src/pb-odd-elementspec-editor.js +348 -297
- package/src/pb-odd-model-editor.js +1058 -898
- package/src/pb-odd-parameter-editor.js +200 -178
- package/src/pb-odd-rendition-editor.js +136 -124
- package/src/pb-page.js +432 -422
- package/src/pb-paginate.js +202 -190
- package/src/pb-panel.js +191 -179
- package/src/pb-popover-themes.js +7 -5
- package/src/pb-popover.js +296 -287
- package/src/pb-print-preview.js +127 -127
- package/src/pb-progress.js +49 -49
- package/src/pb-repeat.js +105 -104
- package/src/pb-restricted.js +84 -77
- package/src/pb-search.js +238 -221
- package/src/pb-select-feature.js +127 -120
- package/src/pb-select-odd.js +132 -124
- package/src/pb-select-template.js +89 -78
- package/src/pb-select.js +251 -227
- package/src/pb-split-list.js +179 -174
- package/src/pb-svg.js +80 -79
- package/src/pb-table-column.js +54 -54
- package/src/pb-table-grid.js +221 -203
- package/src/pb-tabs.js +61 -63
- package/src/pb-tify.js +154 -154
- package/src/pb-timeline.js +271 -229
- package/src/pb-toggle-feature.js +198 -185
- package/src/pb-upload.js +184 -174
- package/src/pb-version.js +30 -30
- package/src/pb-view-annotate.js +132 -98
- package/src/pb-view.js +1282 -1263
- package/src/pb-zoom.js +40 -40
- package/src/polymer-hack.js +1 -1
- package/src/search-result-service.js +256 -223
- package/src/seed-element.js +13 -20
- package/src/settings.js +4 -4
- package/src/theming.js +91 -91
- package/src/urls.js +289 -289
- package/src/utils.js +53 -51
package/src/pb-custom-form.js
CHANGED
|
@@ -19,159 +19,160 @@ import { PbLoad } from './pb-load.js';
|
|
|
19
19
|
* @fires pb-submit - Fired when the form is submitted
|
|
20
20
|
*/
|
|
21
21
|
export class PbCustomForm extends PbLoad {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
22
|
+
firstUpdated() {
|
|
23
|
+
this.shadowRoot.getElementById('ironform').addEventListener('iron-form-presubmit', ev => {
|
|
24
|
+
ev.preventDefault();
|
|
25
|
+
this._submit();
|
|
26
|
+
});
|
|
27
|
+
this.addEventListener('click', e => {
|
|
28
|
+
if (e.target.slot === 'searchButtonTop') {
|
|
29
|
+
this.submit();
|
|
30
|
+
}
|
|
31
|
+
if (e.target.slot === 'searchButtonBottom') {
|
|
32
|
+
this.submit();
|
|
33
|
+
}
|
|
34
|
+
if (e.target.slot === 'resetButton') {
|
|
35
|
+
this._reset();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
this._submissionHandlers();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
render() {
|
|
43
|
+
return html`
|
|
44
|
+
<iron-form id="ironform">
|
|
45
|
+
<form action="" accept="text/html" method="GET">
|
|
46
|
+
<slot name="searchButtonTop"></slot>
|
|
47
|
+
<slot></slot>
|
|
48
|
+
<slot name="searchButtonBottom"></slot>
|
|
49
|
+
<slot name="resetButton"></slot>
|
|
50
|
+
</form>
|
|
51
|
+
</iron-form>
|
|
52
|
+
|
|
53
|
+
<iron-ajax
|
|
54
|
+
id="loadContent"
|
|
55
|
+
verbose
|
|
56
|
+
handle-as="text"
|
|
57
|
+
method="get"
|
|
58
|
+
with-credentials
|
|
59
|
+
@response="${this._handleContent}"
|
|
60
|
+
@error="${this._handleError}"
|
|
61
|
+
></iron-ajax>
|
|
62
|
+
<paper-dialog id="errorDialog">
|
|
63
|
+
<h2>Error</h2>
|
|
64
|
+
<paper-dialog-scrollable></paper-dialog-scrollable>
|
|
65
|
+
<div class="buttons">
|
|
66
|
+
<paper-button dialog-confirm="dialog-confirm" autofocus="autofocus"> Close </paper-button>
|
|
67
|
+
</div>
|
|
68
|
+
</paper-dialog>
|
|
69
|
+
`;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static get styles() {
|
|
73
|
+
return css`
|
|
74
|
+
:host {
|
|
75
|
+
display: block;
|
|
76
|
+
}
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
submit() {
|
|
81
|
+
this.shadowRoot.getElementById('ironform').submit();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
_submit() {
|
|
85
|
+
const json = this.serializeForm();
|
|
86
|
+
this.emitTo('pb-search-resubmit', { params: json });
|
|
87
|
+
this.emitTo('pb-submit', { params: json });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
_reset() {
|
|
91
|
+
this.shadowRoot.getElementById('ironform').reset();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* serialize custom form to object with name value pairs
|
|
96
|
+
* empty, unselected and undifined inputs will be returned
|
|
97
|
+
* as null while disabled elements will still be omitted
|
|
98
|
+
* this allows url parameters to be reset in the URL
|
|
99
|
+
* as IronForm.serializeform will omit names without a value
|
|
100
|
+
* @returns {Object} name value pairs
|
|
101
|
+
*/
|
|
102
|
+
serializeForm() {
|
|
103
|
+
const elements = this.shadowRoot.getElementById('ironform')._getSubmittableElements();
|
|
104
|
+
const initial = {};
|
|
105
|
+
for (const element of elements) {
|
|
106
|
+
initial[element.name] = null;
|
|
41
107
|
}
|
|
108
|
+
return Object.assign(initial, this.shadowRoot.getElementById('ironform').serializeForm());
|
|
109
|
+
}
|
|
42
110
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<form action="" accept="text/html" method="GET">
|
|
47
|
-
<slot name="searchButtonTop"></slot>
|
|
48
|
-
<slot></slot>
|
|
49
|
-
<slot name="searchButtonBottom"></slot>
|
|
50
|
-
<slot name="resetButton"></slot>
|
|
51
|
-
</form>
|
|
52
|
-
</iron-form>
|
|
53
|
-
|
|
54
|
-
<iron-ajax
|
|
55
|
-
id="loadContent"
|
|
56
|
-
verbose
|
|
57
|
-
handle-as="text"
|
|
58
|
-
method="get"
|
|
59
|
-
with-credentials
|
|
60
|
-
@response="${this._handleContent}"
|
|
61
|
-
@error="${this._handleError}"></iron-ajax>
|
|
62
|
-
<paper-dialog id="errorDialog">
|
|
63
|
-
<h2>Error</h2>
|
|
64
|
-
<paper-dialog-scrollable></paper-dialog-scrollable>
|
|
65
|
-
<div class="buttons">
|
|
66
|
-
<paper-button dialog-confirm="dialog-confirm" autofocus="autofocus">
|
|
67
|
-
Close
|
|
68
|
-
</paper-button>
|
|
69
|
-
</div>
|
|
70
|
-
</paper-dialog>
|
|
71
|
-
`;
|
|
72
|
-
}
|
|
111
|
+
_parseHeaders(xhr) {
|
|
112
|
+
// overwrite to avoid `pb-results-received` event being sent
|
|
113
|
+
}
|
|
73
114
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
:host {
|
|
77
|
-
display: block;
|
|
78
|
-
}
|
|
79
|
-
`;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
submit() {
|
|
83
|
-
this.shadowRoot.getElementById('ironform').submit();
|
|
84
|
-
}
|
|
115
|
+
_onLoad(content) {
|
|
116
|
+
super._onLoad(content);
|
|
85
117
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
this.emitTo('pb-search-resubmit', { params: json });
|
|
89
|
-
this.emitTo('pb-submit', { params: json});
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
_reset(){
|
|
93
|
-
this.shadowRoot.getElementById('ironform').reset();
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* serialize custom form to object with name value pairs
|
|
98
|
-
* empty, unselected and undifined inputs will be returned
|
|
99
|
-
* as null while disabled elements will still be omitted
|
|
100
|
-
* this allows url parameters to be reset in the URL
|
|
101
|
-
* as IronForm.serializeform will omit names without a value
|
|
102
|
-
* @returns {Object} name value pairs
|
|
103
|
-
*/
|
|
104
|
-
serializeForm() {
|
|
105
|
-
const elements = this.shadowRoot.getElementById('ironform')._getSubmittableElements()
|
|
106
|
-
const initial = {}
|
|
107
|
-
for (const element of elements) {
|
|
108
|
-
initial[element.name] = null;
|
|
109
|
-
}
|
|
110
|
-
return Object.assign(
|
|
111
|
-
initial,
|
|
112
|
-
this.shadowRoot.getElementById('ironform').serializeForm()
|
|
113
|
-
);
|
|
114
|
-
}
|
|
118
|
+
this.dispatchEvent(new CustomEvent('pb-custom-form-loaded', { detail: content }));
|
|
119
|
+
}
|
|
115
120
|
|
|
116
|
-
|
|
117
|
-
|
|
121
|
+
_submissionHandlers() {
|
|
122
|
+
if (!this.autoSubmit) {
|
|
123
|
+
return;
|
|
118
124
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
* Fired when form is submitted
|
|
172
|
-
*
|
|
173
|
-
* @event pb-search-resubmit
|
|
174
|
-
* @param {object} params: serialized form parameters as json object
|
|
175
|
-
*/
|
|
125
|
+
this.querySelectorAll(this.autoSubmit).forEach(control => {
|
|
126
|
+
const name = control.nodeName.toLowerCase();
|
|
127
|
+
let event = 'change';
|
|
128
|
+
if (
|
|
129
|
+
control instanceof HTMLButtonElement ||
|
|
130
|
+
name === 'paper-icon-button' ||
|
|
131
|
+
name === 'paper-button' ||
|
|
132
|
+
(name === 'input' &&
|
|
133
|
+
(control.type === 'button' || control.type === 'submit' || control.type === 'reset'))
|
|
134
|
+
) {
|
|
135
|
+
event = 'click';
|
|
136
|
+
} else if (
|
|
137
|
+
name === 'paper-input' ||
|
|
138
|
+
(control instanceof HTMLInputElement && control.type === 'text')
|
|
139
|
+
) {
|
|
140
|
+
event = 'keyup';
|
|
141
|
+
} else if (name === 'paper-dropdown-menu') {
|
|
142
|
+
event = 'value-changed';
|
|
143
|
+
}
|
|
144
|
+
control.addEventListener(event, this._submit.bind(this));
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
static get properties() {
|
|
149
|
+
return {
|
|
150
|
+
/**
|
|
151
|
+
* Register event handlers on all descendant elements matching the given CSS selector and submit the form
|
|
152
|
+
* automatically if any of those changes. For button-like controls,
|
|
153
|
+
* a submit is triggered on click, for text input on keyUp, and for
|
|
154
|
+
* all other form components on change.
|
|
155
|
+
*/
|
|
156
|
+
autoSubmit: {
|
|
157
|
+
type: String,
|
|
158
|
+
attribute: 'auto-submit',
|
|
159
|
+
},
|
|
160
|
+
...super.properties,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Fired before the element updates its content
|
|
166
|
+
*
|
|
167
|
+
* @event pb-custom-form-loaded
|
|
168
|
+
* @param {string} the loaded content
|
|
169
|
+
*/
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Fired when form is submitted
|
|
173
|
+
*
|
|
174
|
+
* @event pb-search-resubmit
|
|
175
|
+
* @param {object} params: serialized form parameters as json object
|
|
176
|
+
*/
|
|
176
177
|
}
|
|
177
|
-
customElements.define('pb-custom-form', PbCustomForm);
|
|
178
|
+
customElements.define('pb-custom-form', PbCustomForm);
|
package/src/pb-document.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LitElement } from 'lit-element';
|
|
2
2
|
import { pbMixin } from './pb-mixin.js';
|
|
3
|
-
import { registry } from
|
|
3
|
+
import { registry } from './urls.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Represents a Publisher document. It has no visual presentation but holds meta-data
|
|
@@ -11,108 +11,107 @@ import { registry } from "./urls.js";
|
|
|
11
11
|
* @fires pb-document - Fires update event
|
|
12
12
|
*/
|
|
13
13
|
class PbDocument extends pbMixin(LitElement) {
|
|
14
|
+
static get properties() {
|
|
15
|
+
return {
|
|
16
|
+
...super.properties,
|
|
17
|
+
/**
|
|
18
|
+
* The path to the document to be loaded. Should be relative to `root`.
|
|
19
|
+
*/
|
|
20
|
+
path: {
|
|
21
|
+
type: String,
|
|
22
|
+
reflect: true,
|
|
23
|
+
},
|
|
24
|
+
/**
|
|
25
|
+
* The root collection which will be used to resolve relative paths
|
|
26
|
+
* specified in `path`.
|
|
27
|
+
*/
|
|
28
|
+
rootPath: {
|
|
29
|
+
type: String,
|
|
30
|
+
attribute: 'root-path',
|
|
31
|
+
},
|
|
32
|
+
/**
|
|
33
|
+
* The odd file which should be used to render this document by default. Might be
|
|
34
|
+
* overwritten in a `pb-view`. The odd should be specified by its name without path
|
|
35
|
+
* or the `.odd` suffix.
|
|
36
|
+
*/
|
|
37
|
+
odd: {
|
|
38
|
+
type: String,
|
|
39
|
+
reflect: true,
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* The default view to be used for displaying this document. Can be either `page`, `div` or `simple`.
|
|
43
|
+
* Might be overwritten in a `pb-view`.
|
|
44
|
+
*
|
|
45
|
+
* Value | Displayed content
|
|
46
|
+
* ------|------------------
|
|
47
|
+
* `page` | content is displayed page by page as determined by tei:pb
|
|
48
|
+
* `div` | content is displayed by divisions
|
|
49
|
+
* `single` | do not paginate but display entire content at once
|
|
50
|
+
*/
|
|
51
|
+
view: {
|
|
52
|
+
type: String,
|
|
53
|
+
reflect: true,
|
|
54
|
+
},
|
|
55
|
+
disableHistory: {
|
|
56
|
+
type: Boolean,
|
|
57
|
+
attribute: 'disable-history',
|
|
58
|
+
},
|
|
59
|
+
sourceView: {
|
|
60
|
+
type: String,
|
|
61
|
+
attribute: 'source-view',
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
14
65
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
path: {
|
|
22
|
-
type: String,
|
|
23
|
-
reflect: true
|
|
24
|
-
},
|
|
25
|
-
/**
|
|
26
|
-
* The root collection which will be used to resolve relative paths
|
|
27
|
-
* specified in `path`.
|
|
28
|
-
*/
|
|
29
|
-
rootPath: {
|
|
30
|
-
type: String,
|
|
31
|
-
attribute: 'root-path'
|
|
32
|
-
},
|
|
33
|
-
/**
|
|
34
|
-
* The odd file which should be used to render this document by default. Might be
|
|
35
|
-
* overwritten in a `pb-view`. The odd should be specified by its name without path
|
|
36
|
-
* or the `.odd` suffix.
|
|
37
|
-
*/
|
|
38
|
-
odd: {
|
|
39
|
-
type: String,
|
|
40
|
-
reflect: true
|
|
41
|
-
},
|
|
42
|
-
/**
|
|
43
|
-
* The default view to be used for displaying this document. Can be either `page`, `div` or `simple`.
|
|
44
|
-
* Might be overwritten in a `pb-view`.
|
|
45
|
-
*
|
|
46
|
-
* Value | Displayed content
|
|
47
|
-
* ------|------------------
|
|
48
|
-
* `page` | content is displayed page by page as determined by tei:pb
|
|
49
|
-
* `div` | content is displayed by divisions
|
|
50
|
-
* `single` | do not paginate but display entire content at once
|
|
51
|
-
*/
|
|
52
|
-
view: {
|
|
53
|
-
type: String,
|
|
54
|
-
reflect: true
|
|
55
|
-
},
|
|
56
|
-
disableHistory: {
|
|
57
|
-
type: Boolean,
|
|
58
|
-
attribute: 'disable-history'
|
|
59
|
-
},
|
|
60
|
-
sourceView: {
|
|
61
|
-
type: String,
|
|
62
|
-
attribute: 'source-view'
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
constructor() {
|
|
68
|
-
super();
|
|
69
|
-
this.path = null;
|
|
70
|
-
this.rootPath = '';
|
|
71
|
-
this.disableHistory = false;
|
|
72
|
-
}
|
|
66
|
+
constructor() {
|
|
67
|
+
super();
|
|
68
|
+
this.path = null;
|
|
69
|
+
this.rootPath = '';
|
|
70
|
+
this.disableHistory = false;
|
|
71
|
+
}
|
|
73
72
|
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
connectedCallback() {
|
|
74
|
+
super.connectedCallback();
|
|
76
75
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
76
|
+
if (!this.disableHistory) {
|
|
77
|
+
// if path is unset, use path taken from the URL
|
|
78
|
+
if (registry.state.path && !this.path) {
|
|
79
|
+
this.path = registry.state.path;
|
|
80
|
+
}
|
|
81
|
+
this.view = registry.state.view || this.view;
|
|
82
|
+
this.odd = registry.state.odd || this.odd;
|
|
85
83
|
}
|
|
84
|
+
}
|
|
86
85
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
86
|
+
attributeChangedCallback(name, oldVal, newVal) {
|
|
87
|
+
super.attributeChangedCallback(name, oldVal, newVal);
|
|
88
|
+
if (oldVal) {
|
|
89
|
+
console.log('<pb-document> Emit update event');
|
|
90
|
+
this.emitTo('pb-document', this);
|
|
93
91
|
}
|
|
92
|
+
}
|
|
94
93
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Returns the name of the document without path.
|
|
96
|
+
*
|
|
97
|
+
* @returns {string} Name of the document
|
|
98
|
+
*/
|
|
99
|
+
getFileName() {
|
|
100
|
+
return this.path.replace(/^.*?([^\/]+)$/, '$1');
|
|
101
|
+
}
|
|
103
102
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
getCollection() {
|
|
104
|
+
return this.path.replace(/^(.*?)\/[^\/]+$/, '$1');
|
|
105
|
+
}
|
|
107
106
|
|
|
108
|
-
|
|
107
|
+
/**
|
|
109
108
|
* Returns the full path to the document.
|
|
110
109
|
|
|
111
110
|
* @returns {string} Full path to the document
|
|
112
111
|
*/
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
getFullPath() {
|
|
113
|
+
return `${this.rootPath}/${this.path}`;
|
|
114
|
+
}
|
|
116
115
|
}
|
|
117
116
|
|
|
118
117
|
customElements.define('pb-document', PbDocument);
|