@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.
Files changed (128) 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 +8 -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-leaflet-map.html +1 -1
  9. package/dist/demo/pb-repeat.html +1 -3
  10. package/dist/demo/pb-view3.html +1 -1
  11. package/dist/{paper-icon-button-0fb125c4.js → paper-icon-button-72125e67.js} +1 -1
  12. package/dist/pb-code-editor.js +25 -20
  13. package/dist/pb-component-docs.js +58 -54
  14. package/dist/pb-components-bundle.js +1827 -1520
  15. package/dist/pb-edit-app.js +167 -107
  16. package/dist/pb-elements.json +54 -54
  17. package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
  18. package/dist/pb-leaflet-map.js +23 -23
  19. package/dist/pb-mei.js +56 -41
  20. package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
  21. package/dist/pb-odd-editor.js +925 -758
  22. package/dist/pb-tify.js +2 -2
  23. package/dist/{vaadin-element-mixin-859a0132.js → vaadin-element-mixin-ad07ba25.js} +88 -61
  24. package/gh-pages.js +5 -3
  25. package/package.json +2 -2
  26. package/pb-elements.json +54 -54
  27. package/src/assets/components.css +5 -5
  28. package/src/authority/airtable.js +20 -21
  29. package/src/authority/anton.js +129 -129
  30. package/src/authority/custom.js +23 -21
  31. package/src/authority/geonames.js +38 -32
  32. package/src/authority/gnd.js +47 -42
  33. package/src/authority/kbga.js +137 -134
  34. package/src/authority/metagrid.js +44 -46
  35. package/src/authority/reconciliation.js +66 -67
  36. package/src/authority/registry.js +4 -4
  37. package/src/docs/pb-component-docs.js +2 -2
  38. package/src/docs/pb-component-view.js +5 -5
  39. package/src/docs/pb-components-list.js +2 -2
  40. package/src/docs/pb-demo-snippet.js +2 -2
  41. package/src/dts-client.js +299 -297
  42. package/src/dts-select-endpoint.js +90 -82
  43. package/src/parse-date-service.js +184 -135
  44. package/src/pb-ajax.js +171 -167
  45. package/src/pb-authority-lookup.js +96 -81
  46. package/src/pb-autocomplete.js +292 -280
  47. package/src/pb-blacklab-highlight.js +264 -259
  48. package/src/pb-blacklab-results.js +236 -221
  49. package/src/pb-browse-docs.js +540 -475
  50. package/src/pb-browse.js +68 -65
  51. package/src/pb-clipboard.js +79 -76
  52. package/src/pb-code-editor.js +110 -102
  53. package/src/pb-code-highlight.js +209 -204
  54. package/src/pb-codepen.js +79 -72
  55. package/src/pb-collapse.js +149 -146
  56. package/src/pb-combo-box.js +190 -190
  57. package/src/pb-components-bundle.js +1 -1
  58. package/src/pb-custom-form.js +150 -149
  59. package/src/pb-document.js +89 -90
  60. package/src/pb-download.js +208 -195
  61. package/src/pb-drawer.js +145 -148
  62. package/src/pb-edit-app.js +301 -229
  63. package/src/pb-edit-xml.js +99 -96
  64. package/src/pb-events.js +114 -107
  65. package/src/pb-facs-link.js +104 -102
  66. package/src/pb-facsimile.js +411 -413
  67. package/src/pb-formula.js +151 -153
  68. package/src/pb-geolocation.js +129 -131
  69. package/src/pb-grid-action.js +53 -56
  70. package/src/pb-grid.js +231 -228
  71. package/src/pb-highlight.js +140 -140
  72. package/src/pb-hotkeys.js +40 -42
  73. package/src/pb-i18n.js +101 -104
  74. package/src/pb-image-strip.js +84 -78
  75. package/src/pb-lang.js +83 -70
  76. package/src/pb-leaflet-map.js +488 -485
  77. package/src/pb-link.js +126 -124
  78. package/src/pb-load.js +431 -426
  79. package/src/pb-login.js +275 -254
  80. package/src/pb-manage-odds.js +364 -318
  81. package/src/pb-map-icon.js +89 -89
  82. package/src/pb-map-layer.js +85 -85
  83. package/src/pb-markdown.js +90 -99
  84. package/src/pb-media-query.js +74 -72
  85. package/src/pb-mei.js +306 -295
  86. package/src/pb-message.js +143 -130
  87. package/src/pb-mixin.js +269 -264
  88. package/src/pb-navigation.js +80 -82
  89. package/src/pb-observable.js +38 -38
  90. package/src/pb-odd-editor.js +1056 -958
  91. package/src/pb-odd-elementspec-editor.js +348 -297
  92. package/src/pb-odd-model-editor.js +1058 -898
  93. package/src/pb-odd-parameter-editor.js +200 -178
  94. package/src/pb-odd-rendition-editor.js +136 -124
  95. package/src/pb-page.js +432 -422
  96. package/src/pb-paginate.js +202 -190
  97. package/src/pb-panel.js +191 -179
  98. package/src/pb-popover-themes.js +7 -5
  99. package/src/pb-popover.js +296 -287
  100. package/src/pb-print-preview.js +127 -127
  101. package/src/pb-progress.js +49 -49
  102. package/src/pb-repeat.js +105 -104
  103. package/src/pb-restricted.js +84 -77
  104. package/src/pb-search.js +238 -221
  105. package/src/pb-select-feature.js +127 -120
  106. package/src/pb-select-odd.js +132 -124
  107. package/src/pb-select-template.js +89 -78
  108. package/src/pb-select.js +251 -227
  109. package/src/pb-split-list.js +179 -174
  110. package/src/pb-svg.js +80 -79
  111. package/src/pb-table-column.js +54 -54
  112. package/src/pb-table-grid.js +221 -203
  113. package/src/pb-tabs.js +61 -63
  114. package/src/pb-tify.js +154 -154
  115. package/src/pb-timeline.js +271 -229
  116. package/src/pb-toggle-feature.js +198 -185
  117. package/src/pb-upload.js +184 -174
  118. package/src/pb-version.js +30 -30
  119. package/src/pb-view-annotate.js +132 -98
  120. package/src/pb-view.js +1282 -1263
  121. package/src/pb-zoom.js +40 -40
  122. package/src/polymer-hack.js +1 -1
  123. package/src/search-result-service.js +256 -223
  124. package/src/seed-element.js +13 -20
  125. package/src/settings.js +4 -4
  126. package/src/theming.js +91 -91
  127. package/src/urls.js +289 -289
  128. 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);