@teipublisher/pb-components 2.26.1-next.2 → 3.0.0

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 (154) 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 +4 -4
  4. package/.releaserc.json +2 -2
  5. package/CHANGELOG.md +267 -9
  6. package/Dockerfile +78 -70
  7. package/css/components.css +5 -5
  8. package/css/leaflet/images/layers.png +0 -0
  9. package/dist/demo/components.css +46 -1
  10. package/dist/demo/pb-browse-docs2.html +1 -1
  11. package/dist/demo/pb-dialog.html +3 -5
  12. package/dist/demo/pb-drawer2.html +1 -1
  13. package/dist/demo/pb-facsimile.html +2 -2
  14. package/dist/demo/pb-grid.html +19 -6
  15. package/dist/demo/pb-leaflet-map.html +1 -1
  16. package/dist/demo/pb-login.html +0 -2
  17. package/dist/demo/pb-message.html +1 -2
  18. package/dist/demo/pb-progress.html +2 -2
  19. package/dist/demo/pb-repeat.html +1 -3
  20. package/dist/demo/pb-search.html +7 -4
  21. package/dist/demo/pb-search3.html +1 -1
  22. package/dist/demo/pb-search4.html +2 -2
  23. package/dist/demo/pb-view3.html +1 -1
  24. package/dist/{iron-form-3b8dcaa7.js → iron-form-dfb3e3b1.js} +95 -95
  25. package/dist/paper-checkbox-645e1077.js +200 -0
  26. package/dist/{paper-icon-button-b1d31571.js → paper-icon-button-984162bd.js} +1 -1
  27. package/dist/{paper-checkbox-515a5284.js → paper-inky-focus-behavior-fa16796b.js} +58 -247
  28. package/dist/{paper-listbox-a3b7175c.js → paper-listbox-5f5d1cec.js} +152 -162
  29. package/dist/pb-code-editor.js +25 -20
  30. package/dist/pb-component-docs.js +68 -64
  31. package/dist/pb-components-bundle.js +1983 -2293
  32. package/dist/pb-edit-app.js +167 -107
  33. package/dist/pb-elements.json +176 -120
  34. package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
  35. package/dist/pb-leaflet-map.js +23 -23
  36. package/dist/pb-mei.js +56 -41
  37. package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
  38. package/dist/pb-odd-editor.js +1023 -782
  39. package/dist/pb-tify.js +2 -2
  40. package/dist/vaadin-element-mixin-beb74ffd.js +545 -0
  41. package/gh-pages.js +5 -3
  42. package/i18n/common/en.json +6 -0
  43. package/i18n/common/pl.json +2 -2
  44. package/lib/openseadragon.min.js +6 -6
  45. package/package.json +3 -3
  46. package/pb-elements.json +176 -120
  47. package/src/assets/components.css +5 -5
  48. package/src/authority/airtable.js +20 -21
  49. package/src/authority/anton.js +129 -129
  50. package/src/authority/custom.js +23 -21
  51. package/src/authority/geonames.js +38 -32
  52. package/src/authority/gnd.js +50 -42
  53. package/src/authority/kbga.js +137 -134
  54. package/src/authority/metagrid.js +44 -46
  55. package/src/authority/reconciliation.js +66 -67
  56. package/src/authority/registry.js +4 -4
  57. package/src/docs/pb-component-docs.js +2 -2
  58. package/src/docs/pb-component-view.js +5 -5
  59. package/src/docs/pb-components-list.js +2 -2
  60. package/src/docs/pb-demo-snippet.js +2 -2
  61. package/src/dts-client.js +299 -297
  62. package/src/dts-select-endpoint.js +90 -82
  63. package/src/parse-date-service.js +184 -135
  64. package/src/pb-ajax.js +158 -171
  65. package/src/pb-authority-lookup.js +191 -156
  66. package/src/pb-autocomplete.js +292 -280
  67. package/src/pb-blacklab-highlight.js +264 -259
  68. package/src/pb-blacklab-results.js +236 -221
  69. package/src/pb-browse-docs.js +540 -475
  70. package/src/pb-browse.js +68 -65
  71. package/src/pb-clipboard.js +79 -76
  72. package/src/pb-code-editor.js +110 -102
  73. package/src/pb-code-highlight.js +209 -204
  74. package/src/pb-codepen.js +79 -72
  75. package/src/pb-collapse.js +211 -151
  76. package/src/pb-combo-box.js +190 -190
  77. package/src/pb-components-bundle.js +1 -1
  78. package/src/pb-components.js +1 -0
  79. package/src/pb-custom-form.js +173 -153
  80. package/src/pb-dialog.js +98 -62
  81. package/src/pb-document.js +89 -90
  82. package/src/pb-download.js +212 -196
  83. package/src/pb-drawer.js +145 -148
  84. package/src/pb-edit-app.js +301 -229
  85. package/src/pb-edit-xml.js +100 -97
  86. package/src/pb-events.js +114 -107
  87. package/src/pb-facs-link.js +104 -102
  88. package/src/pb-facsimile.js +474 -410
  89. package/src/pb-formula.js +151 -153
  90. package/src/pb-geolocation.js +129 -131
  91. package/src/pb-grid-action.js +53 -56
  92. package/src/pb-grid.js +231 -228
  93. package/src/pb-highlight.js +140 -140
  94. package/src/pb-hotkeys.js +40 -42
  95. package/src/pb-i18n.js +101 -104
  96. package/src/pb-image-strip.js +84 -78
  97. package/src/pb-lang.js +142 -57
  98. package/src/pb-leaflet-map.js +488 -485
  99. package/src/pb-link.js +126 -124
  100. package/src/pb-load.js +431 -429
  101. package/src/pb-login.js +299 -244
  102. package/src/pb-manage-odds.js +352 -336
  103. package/src/pb-map-icon.js +89 -89
  104. package/src/pb-map-layer.js +85 -85
  105. package/src/pb-markdown.js +90 -99
  106. package/src/pb-media-query.js +74 -72
  107. package/src/pb-mei.js +306 -295
  108. package/src/pb-message.js +139 -97
  109. package/src/pb-mixin.js +269 -264
  110. package/src/pb-navigation.js +80 -95
  111. package/src/pb-observable.js +38 -38
  112. package/src/pb-odd-editor.js +1054 -958
  113. package/src/pb-odd-elementspec-editor.js +349 -298
  114. package/src/pb-odd-model-editor.js +1075 -909
  115. package/src/pb-odd-parameter-editor.js +200 -178
  116. package/src/pb-odd-rendition-editor.js +136 -124
  117. package/src/pb-page.js +431 -422
  118. package/src/pb-paginate.js +228 -179
  119. package/src/pb-panel.js +198 -182
  120. package/src/pb-popover-themes.js +15 -8
  121. package/src/pb-popover.js +296 -287
  122. package/src/pb-print-preview.js +127 -127
  123. package/src/pb-progress.js +51 -51
  124. package/src/pb-repeat.js +105 -104
  125. package/src/pb-restricted.js +84 -77
  126. package/src/pb-search.js +256 -228
  127. package/src/pb-select-feature.js +127 -120
  128. package/src/pb-select-odd.js +132 -124
  129. package/src/pb-select-template.js +89 -78
  130. package/src/pb-select.js +251 -227
  131. package/src/pb-split-list.js +179 -174
  132. package/src/pb-svg.js +80 -79
  133. package/src/pb-table-column.js +54 -54
  134. package/src/pb-table-grid.js +221 -203
  135. package/src/pb-tabs.js +61 -63
  136. package/src/pb-tify.js +154 -154
  137. package/src/pb-timeline.js +382 -249
  138. package/src/pb-toggle-feature.js +195 -187
  139. package/src/pb-upload.js +184 -174
  140. package/src/pb-version.js +30 -30
  141. package/src/pb-view-annotate.js +135 -98
  142. package/src/pb-view.js +1282 -1270
  143. package/src/pb-zoom.js +127 -45
  144. package/src/polymer-hack.js +1 -1
  145. package/src/search-result-service.js +256 -223
  146. package/src/seed-element.js +13 -20
  147. package/src/settings.js +4 -4
  148. package/src/theming.js +98 -91
  149. package/src/urls.js +289 -289
  150. package/src/utils.js +53 -51
  151. package/css/pb-styles.css +0 -51
  152. package/dist/vaadin-element-mixin-6e4cee3a.js +0 -527
  153. package/src/assets/pb-styles.css +0 -51
  154. package/src/pb-light-dom.js +0 -40
@@ -1,10 +1,8 @@
1
- import {LitElement, html, css} from 'lit-element';
2
- import {pbMixin} from './pb-mixin.js';
3
- import {themableMixin} from "./theming.js";
1
+ import { LitElement, html, css } from 'lit-element';
2
+ import { pbMixin } from './pb-mixin.js';
3
+ import { themableMixin } from './theming.js';
4
4
  import '@polymer/iron-icon';
5
5
  import '@polymer/iron-icons';
6
- import '@polymer/iron-collapse';
7
-
8
6
 
9
7
  /**
10
8
  * A collapsible block: in collapsed state it only shows a header and expands if clicked.
@@ -27,169 +25,231 @@ import '@polymer/iron-collapse';
27
25
  *
28
26
  * @slot collapse-trigger - trigger toggling collapsed content on/off
29
27
  * @slot collapse-content - content to be collapsed
30
- * @cssprop [--pb-collapse-icon-padding=0 4px 0 0] - padding in px for the "caret-down" icon left to the collapsible item
28
+ * @cssprop [--pb-collapse-icon-padding=.5rem] - padding left or right of the "caret" icon left to the collapsible item
29
+ * @cssprop [--pb-collapse-icon-size=.75rem] - size of the "caret" icon left to the collapsible item
30
+ * @cssprop [--pb-collapse-icon-image] - image of the "caret" icon left to the collapsible item
31
31
  * @fires pb-collapse-open - Fires opening the collapsed section
32
32
  */
33
33
  export class PbCollapse extends themableMixin(pbMixin(LitElement)) {
34
- static get properties() {
35
- return {
36
- ...super.properties,
37
- /**
38
- * @deprecated
39
- * Corresponds to the iron-collapse's horizontal property.
40
- */
41
- horizontal: {
42
- type: Boolean
43
- },
44
- /**
45
- * Corresponds to the iron-collapse's noAnimation property.
46
- *
47
- */
48
- noAnimation: {
49
- type: Boolean,
50
- attribute: 'no-animation'
51
- },
52
- /**
53
- * Whether currently expanded.
54
- *
55
- */
56
- opened: {
57
- type: Boolean
58
- },
59
- /**
60
- * By default, an open collapse is closed if another pb-collapse is expanded on the same event channel.
61
- * Set to true to keep multiple pb-collapse open at the same time.
62
- */
63
- toggles: {
64
- type: Boolean
65
- },
66
- /**
67
- * The iron-icon when collapsed. Value must be one of the icons defined by iron-icons
68
- */
69
- expandIcon: {
70
- type: String,
71
- attribute: 'expand-icon'
72
- },
73
- /**
74
- * The icon when expanded.
75
- */
76
- collapseIcon: {
77
- type: String,
78
- attribute: 'collapse-icon'
79
- },
80
- /**
81
- * Whether to hide the expand/collapse icon.
82
- */
83
- noIcons: {
84
- type: Boolean,
85
- attribute: 'no-icons'
86
- }
87
- };
88
- }
34
+ static get properties() {
35
+ return {
36
+ ...super.properties,
37
+ /**
38
+ * Whether to disable animations.
39
+ *
40
+ */
41
+ noAnimation: {
42
+ type: Boolean,
43
+ attribute: 'no-animation',
44
+ },
45
+ /**
46
+ * Whether currently expanded.
47
+ *
48
+ */
49
+ opened: {
50
+ type: Boolean,
51
+ },
52
+ /**
53
+ * By default, an open collapse is closed if another pb-collapse is expanded on the same event channel.
54
+ * Set to true to keep multiple pb-collapse open at the same time.
55
+ */
56
+ toggles: {
57
+ type: Boolean,
58
+ },
59
+ };
60
+ }
89
61
 
90
- constructor() {
91
- super();
92
- this.horizontal = false;
93
- this.noAnimation = false;
94
- this.opened = false;
95
- this.expandIcon = 'icons:expand-more';
96
- this.collapseIcon = 'icons:expand-less';
97
- this.noIcons = false;
98
- this.toggles = false;
99
- }
62
+ constructor() {
63
+ super();
64
+ this.horizontal = false;
65
+ this.noAnimation = false;
66
+ this.opened = false;
67
+ this.expandIcon = 'icons:expand-more';
68
+ this.collapseIcon = 'icons:expand-less';
69
+ this.noIcons = false;
70
+ this.toggles = false;
71
+ }
100
72
 
101
- connectedCallback() {
102
- super.connectedCallback();
103
- this.addEventListener('pb-collapse-open', () => {
104
- this.open();
105
- });
106
- if (this.toggles) {
107
- this.subscribeTo('pb-collapse-open', (ev) => {
108
- if (!ev.detail || ev.detail._source === this) {
109
- return;
110
- }
111
- for (const collapse of this.querySelectorAll('pb-collapse')) {
112
- if (collapse === ev.detail._source) {
113
- return;
114
- }
115
- }
116
- this.close();
117
- });
73
+ connectedCallback() {
74
+ super.connectedCallback();
75
+ this.addEventListener('pb-collapse-open', () => {
76
+ this.open();
77
+ });
78
+ if (this.toggles) {
79
+ this.subscribeTo('pb-collapse-open', ev => {
80
+ if (!ev.detail || ev.detail._source === this) {
81
+ return;
118
82
  }
119
- }
120
-
121
- /**
122
- * opens the collapsible section
123
- */
124
- open() {
125
- if (this.opened) {
83
+ for (const collapse of this.querySelectorAll('pb-collapse')) {
84
+ if (collapse === ev.detail._source) {
126
85
  return;
86
+ }
127
87
  }
128
- this.opened = true;
129
-
130
- this.emitTo('pb-collapse-open', this);
88
+ this.close();
89
+ });
131
90
  }
91
+ }
132
92
 
133
- /**
134
- * closes the collapsible section
135
- */
136
- close() {
137
- if (this.opened) {
138
- this.opened = false;
139
- }
93
+ updated(changedProperties) {
94
+ super.updated(changedProperties);
95
+ if (changedProperties.has('opened')) {
96
+ const details = this.shadowRoot.querySelector('details');
97
+ if (details) {
98
+ details.open = this.opened;
99
+ }
140
100
  }
101
+ }
141
102
 
142
- /**
143
- * toggles the collapsible state
144
- */
145
- toggle() {
146
- this.opened = !this.opened;
147
- if (this.opened) {
148
- this.emitTo('pb-collapse-open', this.data);
149
- }
103
+ /**
104
+ * opens the collapsible section
105
+ */
106
+ open() {
107
+ if (this.opened) {
108
+ return;
150
109
  }
110
+ this.opened = true;
111
+
112
+ this.emitTo('pb-collapse-open', this);
113
+ }
151
114
 
152
- render() {
153
- return html`
154
- <div id="trigger" @click="${this.toggle}" class="collapse-trigger">
155
- ${
156
- !this.noIcons ?
157
- html`<iron-icon icon="${this.opened ? this.collapseIcon : this.expandIcon}"></iron-icon>` :
158
- null
159
- }
160
- <slot id="collapseTrigger" name="collapse-trigger"></slot>
161
- </div>
162
- <iron-collapse id="collapse" horizontal="${this.horizontal}" no-animation="${this.noAnimation}" .opened="${this.opened}">
163
- <slot name="collapse-content"></slot>
164
- </iron-collapse>
165
- `;
115
+ /**
116
+ * closes the collapsible section
117
+ */
118
+ close() {
119
+ if (this.opened) {
120
+ this.opened = false;
166
121
  }
122
+ }
167
123
 
168
- static get styles() {
169
- return css`
170
- :host {
171
- display: block;
172
- position: relative;
173
- }
174
-
175
- #trigger {
176
- display: grid;
177
- align-items:center;
178
- grid-template-columns:min-content auto;
179
- }
180
-
181
- iron-icon {
182
- padding: var(--pb-collapse-icon-padding, 0 4px 0 0);
183
- }
184
-
185
- :host(.icon-right) iron-icon {
186
- position: absolute;
187
- right: 0;
188
- }
189
-
190
- `;
124
+ /**
125
+ * toggles the collapsible state
126
+ */
127
+ toggle() {
128
+ this.opened = !this.opened;
129
+ if (this.opened) {
130
+ this.emitTo('pb-collapse-open', this.data);
191
131
  }
132
+ }
133
+
134
+ _handleToggle(e) {
135
+ e.preventDefault();
136
+ this.toggle();
137
+ }
138
+
139
+ render() {
140
+ return html`
141
+ <details ?open="${this.opened}" class="${this.horizontal ? 'horizontal' : ''}">
142
+ <summary @click="${this._handleToggle}" class="collapse-trigger">
143
+ <slot id="collapseTrigger" name="collapse-trigger"></slot>
144
+ </summary>
145
+ <div class="collapse-content ${this.noAnimation ? 'no-animation' : ''}">
146
+ <slot name="collapse-content"></slot>
147
+ </div>
148
+ </details>
149
+ `;
150
+ }
151
+
152
+ static get styles() {
153
+ return css`
154
+ :host {
155
+ display: block;
156
+ position: relative;
157
+ }
158
+
159
+ details {
160
+ display: block;
161
+ }
162
+
163
+ summary {
164
+ display: inline-flex;
165
+ align-items: center;
166
+ cursor: pointer;
167
+ list-style: none;
168
+ outline: none;
169
+ cursor: pointer;
170
+ user-select: none;
171
+ gap: var(--pb-collapse-icon-padding, 0.5rem);
172
+ }
173
+
174
+ :host(:not(.icon-right)) summary::before {
175
+ display: block;
176
+ content: '';
177
+ background-image: var(
178
+ --pb-collapse-icon-image,
179
+ url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-chevron-down' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E")
180
+ );
181
+ transform: none;
182
+ height: var(--pb-collapse-icon-size, 0.75rem);
183
+ width: var(--pb-collapse-icon-size, 0.75rem);
184
+ background-size: var(--pb-collapse-icon-size, 0.75rem) auto;
185
+ background-position: left center;
186
+ background-repeat: no-repeat;
187
+ }
188
+
189
+ :host(.icon-right) summary::after {
190
+ display: block;
191
+ content: '';
192
+ background-image: var(
193
+ --pb-collapse-icon-image,
194
+ url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-chevron-down' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E")
195
+ );
196
+ transform: none;
197
+ height: var(--pb-collapse-icon-size, 0.75rem);
198
+ width: var(--pb-collapse-icon-size, 0.75rem);
199
+ background-size: var(--pb-collapse-icon-size, 0.75rem) auto;
200
+ background-position: right center;
201
+ background-repeat: no-repeat;
202
+ }
203
+
204
+ .dropdown-button[open] > summary::after {
205
+ transform: rotate(180deg);
206
+ }
207
+
208
+ .collapse-content {
209
+ overflow: hidden;
210
+ transition: max-height 0.3s ease-in-out, opacity 0.3s ease-in-out;
211
+ }
212
+
213
+ .collapse-content.no-animation {
214
+ transition: none;
215
+ }
216
+
217
+ details[open] .collapse-content {
218
+ animation: slideDown 0.3s ease-in-out;
219
+ }
220
+
221
+ details:not([open]) .collapse-content {
222
+ animation: slideUp 0.3s ease-in-out;
223
+ }
224
+
225
+ .horizontal .collapse-content {
226
+ transition: max-width 0.3s ease-in-out, opacity 0.3s ease-in-out;
227
+ }
228
+
229
+ @keyframes slideDown {
230
+ from {
231
+ opacity: 0;
232
+ max-height: 0;
233
+ }
234
+ to {
235
+ opacity: 1;
236
+ max-height: 1000px;
237
+ }
238
+ }
239
+
240
+ @keyframes slideUp {
241
+ from {
242
+ opacity: 1;
243
+ max-height: 1000px;
244
+ }
245
+ to {
246
+ opacity: 0;
247
+ max-height: 0;
248
+ }
249
+ }
250
+ `;
251
+ }
192
252
  }
193
253
  if (!customElements.get('pb-collapse')) {
194
- customElements.define('pb-collapse', PbCollapse);
254
+ customElements.define('pb-collapse', PbCollapse);
195
255
  }