@teipublisher/pb-components 2.25.5 → 2.25.7

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.
Files changed (130) hide show
  1. package/.github/workflows/main.yml +3 -3
  2. package/.github/workflows/node.js.yml +3 -3
  3. package/.github/workflows/release.js.yml +3 -3
  4. package/CHANGELOG.md +15 -0
  5. package/Dockerfile +78 -70
  6. package/css/components.css +5 -5
  7. package/dist/demo/pb-drawer2.html +1 -1
  8. package/dist/demo/pb-facsimile.html +2 -2
  9. package/dist/demo/pb-leaflet-map.html +1 -1
  10. package/dist/demo/pb-repeat.html +1 -3
  11. package/dist/demo/pb-view3.html +1 -1
  12. package/dist/{paper-icon-button-0fb125c4.js → paper-icon-button-72125e67.js} +1 -1
  13. package/dist/pb-code-editor.js +25 -20
  14. package/dist/pb-component-docs.js +58 -54
  15. package/dist/pb-components-bundle.js +1827 -1520
  16. package/dist/pb-edit-app.js +167 -107
  17. package/dist/pb-elements.json +54 -54
  18. package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
  19. package/dist/pb-leaflet-map.js +23 -23
  20. package/dist/pb-mei.js +56 -41
  21. package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
  22. package/dist/pb-odd-editor.js +925 -758
  23. package/dist/pb-tify.js +2 -2
  24. package/dist/{vaadin-element-mixin-859a0132.js → vaadin-element-mixin-ad07ba25.js} +88 -61
  25. package/gh-pages.js +5 -3
  26. package/lib/openseadragon.min.js +6 -6
  27. package/package.json +3 -2
  28. package/pb-elements.json +54 -54
  29. package/src/assets/components.css +5 -5
  30. package/src/authority/airtable.js +20 -21
  31. package/src/authority/anton.js +129 -129
  32. package/src/authority/custom.js +23 -21
  33. package/src/authority/geonames.js +38 -32
  34. package/src/authority/gnd.js +47 -42
  35. package/src/authority/kbga.js +137 -134
  36. package/src/authority/metagrid.js +44 -46
  37. package/src/authority/reconciliation.js +66 -67
  38. package/src/authority/registry.js +4 -4
  39. package/src/docs/pb-component-docs.js +2 -2
  40. package/src/docs/pb-component-view.js +5 -5
  41. package/src/docs/pb-components-list.js +2 -2
  42. package/src/docs/pb-demo-snippet.js +2 -2
  43. package/src/dts-client.js +299 -297
  44. package/src/dts-select-endpoint.js +90 -82
  45. package/src/parse-date-service.js +184 -135
  46. package/src/pb-ajax.js +171 -167
  47. package/src/pb-authority-lookup.js +96 -81
  48. package/src/pb-autocomplete.js +292 -280
  49. package/src/pb-blacklab-highlight.js +264 -259
  50. package/src/pb-blacklab-results.js +236 -221
  51. package/src/pb-browse-docs.js +540 -475
  52. package/src/pb-browse.js +68 -65
  53. package/src/pb-clipboard.js +79 -76
  54. package/src/pb-code-editor.js +110 -102
  55. package/src/pb-code-highlight.js +209 -204
  56. package/src/pb-codepen.js +79 -72
  57. package/src/pb-collapse.js +149 -146
  58. package/src/pb-combo-box.js +190 -190
  59. package/src/pb-components-bundle.js +1 -1
  60. package/src/pb-custom-form.js +150 -149
  61. package/src/pb-document.js +89 -90
  62. package/src/pb-download.js +208 -195
  63. package/src/pb-drawer.js +145 -148
  64. package/src/pb-edit-app.js +301 -229
  65. package/src/pb-edit-xml.js +99 -96
  66. package/src/pb-events.js +114 -107
  67. package/src/pb-facs-link.js +104 -102
  68. package/src/pb-facsimile.js +444 -410
  69. package/src/pb-formula.js +151 -153
  70. package/src/pb-geolocation.js +129 -131
  71. package/src/pb-grid-action.js +53 -56
  72. package/src/pb-grid.js +231 -228
  73. package/src/pb-highlight.js +140 -140
  74. package/src/pb-hotkeys.js +40 -42
  75. package/src/pb-i18n.js +101 -104
  76. package/src/pb-image-strip.js +84 -78
  77. package/src/pb-lang.js +83 -70
  78. package/src/pb-leaflet-map.js +488 -485
  79. package/src/pb-link.js +126 -124
  80. package/src/pb-load.js +431 -426
  81. package/src/pb-login.js +275 -254
  82. package/src/pb-manage-odds.js +364 -318
  83. package/src/pb-map-icon.js +89 -89
  84. package/src/pb-map-layer.js +85 -85
  85. package/src/pb-markdown.js +90 -99
  86. package/src/pb-media-query.js +74 -72
  87. package/src/pb-mei.js +306 -295
  88. package/src/pb-message.js +143 -130
  89. package/src/pb-mixin.js +269 -264
  90. package/src/pb-navigation.js +80 -82
  91. package/src/pb-observable.js +38 -38
  92. package/src/pb-odd-editor.js +1056 -958
  93. package/src/pb-odd-elementspec-editor.js +348 -297
  94. package/src/pb-odd-model-editor.js +1058 -898
  95. package/src/pb-odd-parameter-editor.js +200 -178
  96. package/src/pb-odd-rendition-editor.js +136 -124
  97. package/src/pb-page.js +432 -422
  98. package/src/pb-paginate.js +202 -190
  99. package/src/pb-panel.js +191 -179
  100. package/src/pb-popover-themes.js +7 -5
  101. package/src/pb-popover.js +296 -287
  102. package/src/pb-print-preview.js +127 -127
  103. package/src/pb-progress.js +49 -49
  104. package/src/pb-repeat.js +105 -104
  105. package/src/pb-restricted.js +84 -77
  106. package/src/pb-search.js +238 -221
  107. package/src/pb-select-feature.js +127 -120
  108. package/src/pb-select-odd.js +132 -124
  109. package/src/pb-select-template.js +89 -78
  110. package/src/pb-select.js +251 -227
  111. package/src/pb-split-list.js +179 -174
  112. package/src/pb-svg.js +80 -79
  113. package/src/pb-table-column.js +54 -54
  114. package/src/pb-table-grid.js +221 -203
  115. package/src/pb-tabs.js +61 -63
  116. package/src/pb-tify.js +154 -154
  117. package/src/pb-timeline.js +271 -229
  118. package/src/pb-toggle-feature.js +198 -185
  119. package/src/pb-upload.js +184 -174
  120. package/src/pb-version.js +30 -30
  121. package/src/pb-view-annotate.js +132 -98
  122. package/src/pb-view.js +1282 -1263
  123. package/src/pb-zoom.js +40 -40
  124. package/src/polymer-hack.js +1 -1
  125. package/src/search-result-service.js +256 -223
  126. package/src/seed-element.js +13 -20
  127. package/src/settings.js +4 -4
  128. package/src/theming.js +91 -91
  129. package/src/urls.js +289 -289
  130. package/src/utils.js +53 -51
@@ -1,29 +1,29 @@
1
1
  import { LitElement, html } from 'lit-element';
2
2
  import '@polymer/paper-checkbox';
3
3
  import { pbMixin, waitOnce } from './pb-mixin.js';
4
- import { registry } from "./urls.js";
4
+ import { registry } from './urls.js';
5
5
 
6
6
  /**
7
7
  * @param {{ selector: any; command: string; state: boolean; }} newConfig
8
8
  * @param {any[]} configs
9
9
  */
10
- export function addSelector(newConfig, configs) {
11
- const idx = configs.findIndex((item) => item.selector === newConfig.selector);
12
- if (idx > -1) {
13
- configs[idx] = newConfig;
14
- } else {
15
- configs.push(newConfig);
16
- }
10
+ export function addSelector(newConfig, configs) {
11
+ const idx = configs.findIndex(item => item.selector === newConfig.selector);
12
+ if (idx > -1) {
13
+ configs[idx] = newConfig;
14
+ } else {
15
+ configs.push(newConfig);
16
+ }
17
17
  }
18
18
 
19
19
  /**
20
20
  * Enable or disable a particular display feature by setting a predefined or custom parameter.
21
21
  * Toggling display features can be done server-side or client-side.
22
- *
22
+ *
23
23
  * It is important that `pb-toggle-feature` emits and subscribes to the same channel as the target `pb-view`.
24
- *
24
+ *
25
25
  * # Server side toggling
26
- *
26
+ *
27
27
  * You may set the following view parameters which correspond to the properties supported by `pb-view`:
28
28
  *
29
29
  * | Parameter | Description |
@@ -64,22 +64,22 @@ import { registry } from "./urls.js";
64
64
  * ```
65
65
  *
66
66
  * # Client side toggling
67
- *
67
+ *
68
68
  * The component can also be used to toggle features client-side, i.e. without requiring a server-roundtrip.
69
69
  * To enable this, the `selector` property should be set to a CSS3 selector targetting the HTML elements
70
70
  * to toggle. In `on` state, the selected elements will be assigned a class `.toggled`.
71
- *
71
+ *
72
72
  * ```html
73
73
  * <pb-toggle-feature name="normalized" selector=".choice,.choice-alternate,br">Normalized View</pb-toggle-feature>
74
74
  * ```
75
- *
75
+ *
76
76
  * Note that the name attribute is still required: it is used to determine if the feature is in on or off state by
77
77
  * looking at request parameters.
78
- *
78
+ *
79
79
  * Instead of toggling the class, you can also completely disable the elements selected - provided that they are
80
80
  * publisher components implementing the corresponding `command` method of `pb-mixin`. To disable elements instead of
81
81
  * toggling, set the `action` property to *disable*.
82
- *
82
+ *
83
83
  * ```html
84
84
  * <pb-toggle-feature name="plain" selector=".tei-foreign,pb-highlight,pb-popover" action="disable" default="off">Plain Reading View</pb-toggle-feature>
85
85
  * ```
@@ -89,192 +89,205 @@ import { registry } from "./urls.js";
89
89
  * @fires pb-update - When received, sets the features passed from the event
90
90
  */
91
91
  export class PbToggleFeature extends pbMixin(LitElement) {
92
+ static get properties() {
93
+ return {
94
+ ...super.properties,
95
+ /**
96
+ * The name of the feature (required). This will correspond to the name of the custom parameter
97
+ * passed to the ODD.
98
+ */
99
+ name: {
100
+ type: String,
101
+ },
102
+ /**
103
+ * (optional) CSS selector: selects the elements to toggle client side (sets or unsets a
104
+ * CSS class `.toggled`). Setting this property will not trigger a reload as everything is
105
+ * handled by javascript.
106
+ */
107
+ selector: {
108
+ type: String,
109
+ },
110
+ /**
111
+ * In combination with a selector specifies the action to be taken, currently one of
112
+ * `toggle` (default) or `disable`.
113
+ */
114
+ action: {
115
+ type: String,
116
+ },
117
+ /**
118
+ * Value to set the parameter to when the feature is enabled.
119
+ */
120
+ on: {
121
+ type: String,
122
+ },
123
+ /**
124
+ * Value to set the parameter to when the feature is disabled.
125
+ */
126
+ off: {
127
+ type: String,
128
+ },
129
+ /**
130
+ * The default setting: either 'on' or 'off'
131
+ */
132
+ default: {
133
+ type: String,
134
+ },
135
+ /**
136
+ * Additional properties to set on the pb-view if toggle is in 'on' state.
137
+ * Possible properties are 'view', 'odd' and 'columnSeparator'.
138
+ */
139
+ propertiesOn: {
140
+ type: Object,
141
+ attribute: 'properties-on',
142
+ },
143
+ /**
144
+ * Additional properties to set on the pb-view if toggle is in 'off' state.
145
+ * Possible properties are 'view', 'odd' and 'columnSeparator'.
146
+ */
147
+ propertiesOff: {
148
+ type: Object,
149
+ attribute: 'properties-off',
150
+ },
151
+ checked: {
152
+ type: Boolean,
153
+ },
154
+ /**
155
+ * If set to false (the default), `pb-toggle-feature` will pass its properties to the
156
+ * connected view before this loads content for the first time. If true,
157
+ * `pb-toggle-feature` will initialize its state depending on the setting of the view.
158
+ * This only makes sense for the special properties 'view' and 'odd' though.
159
+ */
160
+ initFromView: {
161
+ type: Boolean,
162
+ attribute: 'init-from-view',
163
+ },
164
+ /**
165
+ * If set, toggle the state of elements which reside
166
+ * in the surrounding HTML context below `pb-page`
167
+ * (means: elements which are not inside a `pb-view` or `pb-load`).
168
+ */
169
+ global: {
170
+ type: Boolean,
171
+ },
172
+ };
173
+ }
92
174
 
93
- static get properties() {
94
- return {
95
- ...super.properties,
96
- /**
97
- * The name of the feature (required). This will correspond to the name of the custom parameter
98
- * passed to the ODD.
99
- */
100
- name: {
101
- type: String
102
- },
103
- /**
104
- * (optional) CSS selector: selects the elements to toggle client side (sets or unsets a
105
- * CSS class `.toggled`). Setting this property will not trigger a reload as everything is
106
- * handled by javascript.
107
- */
108
- selector: {
109
- type: String
110
- },
111
- /**
112
- * In combination with a selector specifies the action to be taken, currently one of
113
- * `toggle` (default) or `disable`.
114
- */
115
- action: {
116
- type: String
117
- },
118
- /**
119
- * Value to set the parameter to when the feature is enabled.
120
- */
121
- on: {
122
- type: String
123
- },
124
- /**
125
- * Value to set the parameter to when the feature is disabled.
126
- */
127
- off: {
128
- type: String
129
- },
130
- /**
131
- * The default setting: either 'on' or 'off'
132
- */
133
- default: {
134
- type: String
135
- },
136
- /**
137
- * Additional properties to set on the pb-view if toggle is in 'on' state.
138
- * Possible properties are 'view', 'odd' and 'columnSeparator'.
139
- */
140
- propertiesOn: {
141
- type: Object,
142
- attribute: 'properties-on'
143
- },
144
- /**
145
- * Additional properties to set on the pb-view if toggle is in 'off' state.
146
- * Possible properties are 'view', 'odd' and 'columnSeparator'.
147
- */
148
- propertiesOff: {
149
- type: Object,
150
- attribute: 'properties-off'
151
- },
152
- checked: {
153
- type: Boolean
154
- },
155
- /**
156
- * If set to false (the default), `pb-toggle-feature` will pass its properties to the
157
- * connected view before this loads content for the first time. If true,
158
- * `pb-toggle-feature` will initialize its state depending on the setting of the view.
159
- * This only makes sense for the special properties 'view' and 'odd' though.
160
- */
161
- initFromView: {
162
- type: Boolean,
163
- attribute: 'init-from-view'
164
- },
165
- /**
166
- * If set, toggle the state of elements which reside
167
- * in the surrounding HTML context below `pb-page`
168
- * (means: elements which are not inside a `pb-view` or `pb-load`).
169
- */
170
- global: {
171
- type: Boolean
172
- }
173
- };
174
- }
175
+ constructor() {
176
+ super();
177
+ this.default = 'on';
178
+ this.on = 'on';
179
+ this.off = 'off';
180
+ this.action = 'toggle';
181
+ this.propertiesOn = {};
182
+ this.propertiesOff = {};
183
+ this.initFromView = false;
184
+ this.global = false;
185
+ }
175
186
 
176
- constructor() {
177
- super();
178
- this.default = 'on';
179
- this.on = 'on';
180
- this.off = 'off';
181
- this.action = 'toggle';
182
- this.propertiesOn = {};
183
- this.propertiesOff = {};
184
- this.initFromView = false;
185
- this.global = false;
186
- }
187
+ render() {
188
+ return html`
189
+ <paper-checkbox
190
+ id="checkbox"
191
+ @change="${this._changed}"
192
+ .checked="${this.checked}"
193
+ .disabled="${this.disabled}"
194
+ ><slot></slot
195
+ ></paper-checkbox>
196
+ `;
197
+ }
187
198
 
188
- render() {
189
- return html`
190
- <paper-checkbox id="checkbox" @change="${this._changed}" .checked="${this.checked}" .disabled="${this.disabled}"><slot></slot></paper-checkbox>
191
- `;
192
- }
199
+ connectedCallback() {
200
+ super.connectedCallback();
193
201
 
194
- connectedCallback() {
195
- super.connectedCallback();
202
+ registry.subscribe(this, state => {
203
+ const param = state[this.name];
204
+ this._setChecked(param);
205
+ });
196
206
 
197
- registry.subscribe(this, (state) => {
198
- const param = state[this.name];
199
- this._setChecked(param);
200
- });
207
+ const param = registry.state[this.name];
208
+ this._setChecked(param);
201
209
 
202
- const param = registry.state[this.name];
203
- this._setChecked(param);
204
-
205
- const newState = {};
206
- newState[this.name] = this.checked ? this.on : this.off;
207
- registry.replace(this, newState);
208
- this._saveState();
210
+ const newState = {};
211
+ newState[this.name] = this.checked ? this.on : this.off;
212
+ registry.replace(this, newState);
213
+ this._saveState();
209
214
 
210
- this.signalReady();
215
+ this.signalReady();
211
216
 
212
- waitOnce('pb-page-ready', () => {
213
- if (this.global) {
214
- this.dispatchEvent(new CustomEvent('pb-global-toggle', { detail: {
215
- selector: this.selector,
216
- command: this.action,
217
- state: this.checked
218
- }, bubbles: true, composed: true }));
219
- } else if (this.selector) {
220
- this.emitTo('pb-toggle', {refresh: false});
221
- }
222
- });
223
- }
217
+ waitOnce('pb-page-ready', () => {
218
+ if (this.global) {
219
+ this.dispatchEvent(
220
+ new CustomEvent('pb-global-toggle', {
221
+ detail: {
222
+ selector: this.selector,
223
+ command: this.action,
224
+ state: this.checked,
225
+ },
226
+ bubbles: true,
227
+ composed: true,
228
+ }),
229
+ );
230
+ } else if (this.selector) {
231
+ this.emitTo('pb-toggle', { refresh: false });
232
+ }
233
+ });
234
+ }
224
235
 
225
- _setChecked(param) {
226
- if (typeof param !== 'undefined') {
227
- this.checked = param === this.on;
228
- } else {
229
- this.checked = this.default === this.on;
230
- }
236
+ _setChecked(param) {
237
+ if (typeof param !== 'undefined') {
238
+ this.checked = param === this.on;
239
+ } else {
240
+ this.checked = this.default === this.on;
231
241
  }
242
+ }
232
243
 
233
- attributeChangedCallback(name, oldVal, newVal) {
234
- super.attributeChangedCallback(name, oldVal, newVal);
235
- switch (name) {
236
- case this.on:
237
- this.propertiesOn[this.name] = newVal;
238
- break;
239
- case this.off:
240
- this.propertiesOff[this.name] = newVal;
241
- break;
242
- default:
243
- break;
244
- }
244
+ attributeChangedCallback(name, oldVal, newVal) {
245
+ super.attributeChangedCallback(name, oldVal, newVal);
246
+ switch (name) {
247
+ case this.on:
248
+ this.propertiesOn[this.name] = newVal;
249
+ break;
250
+ case this.off:
251
+ this.propertiesOff[this.name] = newVal;
252
+ break;
253
+ default:
254
+ break;
245
255
  }
256
+ }
246
257
 
247
- _changed() {
248
- this.checked = this.shadowRoot.getElementById('checkbox').checked;
258
+ _changed() {
259
+ this.checked = this.shadowRoot.getElementById('checkbox').checked;
249
260
 
250
- this._saveState();
251
- if (!this.global) {
252
- this.emitTo('pb-toggle', {refresh: !this.selector});
253
- } else {
254
- const state = {};
255
- state[this.name] = this.checked ? this.on : this.off;
256
- registry.commit(this, state);
257
- }
261
+ this._saveState();
262
+ if (!this.global) {
263
+ this.emitTo('pb-toggle', { refresh: !this.selector });
264
+ } else {
265
+ const state = {};
266
+ state[this.name] = this.checked ? this.on : this.off;
267
+ registry.commit(this, state);
258
268
  }
269
+ }
259
270
 
260
- _saveState() {
261
- const state = registry.getState(this);
262
- state[this.name] = this.checked ? this.on : this.off;
263
- Object.assign(state, this.checked ? this.propertiesOn : this.propertiesOff);
264
- if (this.selector) {
265
- const config = {
266
- selector: this.selector,
267
- command: this.action,
268
- state: this.checked
269
- };
270
- if (this.global) {
271
- this.dispatchEvent(new CustomEvent('pb-global-toggle', { detail: config, bubbles: true, composed: true }));
272
- } else {
273
- state.selectors = state.selectors || [];
274
- addSelector(config, state.selectors);
275
- }
276
- }
271
+ _saveState() {
272
+ const state = registry.getState(this);
273
+ state[this.name] = this.checked ? this.on : this.off;
274
+ Object.assign(state, this.checked ? this.propertiesOn : this.propertiesOff);
275
+ if (this.selector) {
276
+ const config = {
277
+ selector: this.selector,
278
+ command: this.action,
279
+ state: this.checked,
280
+ };
281
+ if (this.global) {
282
+ this.dispatchEvent(
283
+ new CustomEvent('pb-global-toggle', { detail: config, bubbles: true, composed: true }),
284
+ );
285
+ } else {
286
+ state.selectors = state.selectors || [];
287
+ addSelector(config, state.selectors);
288
+ }
277
289
  }
290
+ }
278
291
  }
279
292
 
280
293
  customElements.define('pb-toggle-feature', PbToggleFeature);