@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
package/src/pb-zoom.js CHANGED
@@ -1,58 +1,140 @@
1
- import { LitElement, html } from 'lit-element';
1
+ import { LitElement, css, html } from 'lit-element';
2
2
  import { pbMixin } from './pb-mixin';
3
- import '@polymer/iron-icons';
4
- import '@polymer/paper-icon-button';
3
+ import { translate } from './pb-i18n';
4
+ import { themableMixin } from './theming';
5
5
 
6
6
  /**
7
- * Zoom button to enlarge/shrink the font for the views. This component does not
8
- * implement any functionality itself, but just emits a `pb-zoom` event.
7
+ * Zoom button to enlarge/shrink the font for the views. This component manages
8
+ * the global zoom level by setting CSS custom properties on the document root.
9
9
  *
10
10
  * @fires pb-zoom - sends an event for e.g. pb-views to react to
11
+ * @cssprop --pb-zoom-factor - the zoom factor, e.g. 1.0 for normal size, 1.5 for 150%, 0.5 for 50%
12
+ * @cssprop --pb-min-zoom - the minimum zoom factor, e.g. 0.5 for 50%
13
+ * @cssprop --pb-max-zoom - the maximum zoom factor, e.g. 3.0 for 300%
11
14
  */
12
- export class PbZoom extends pbMixin(LitElement) {
13
- static get properties() {
14
- return {
15
- ...super.properties,
16
- /**
17
- * The icon to use
18
- */
19
- icon: {
20
- type: String
21
- },
22
- /**
23
- * Either 'in' or 'out'
24
- */
25
- direction: {
26
- type: String
27
- }
28
- };
29
- }
15
+ export class PbZoom extends themableMixin(pbMixin(LitElement)) {
16
+ static get properties() {
17
+ return {
18
+ ...super.properties,
19
+ /**
20
+ * Either 'in' or 'out'
21
+ */
22
+ direction: {
23
+ type: String,
24
+ },
25
+ /**
26
+ * The current zoom factor
27
+ */
28
+ zoomFactor: {
29
+ type: Number,
30
+ reflect: true,
31
+ attribute: 'zoom-factor'
32
+ },
33
+ };
34
+ }
30
35
 
31
- constructor() {
32
- super();
33
- this.icon = "icons:zoom-in";
34
- this.direction = 'in';
35
- }
36
+ constructor() {
37
+ super();
38
+ this.direction = 'in';
39
+ this.zoomFactor = 1.0;
40
+ }
36
41
 
37
- connectedCallback() {
38
- super.connectedCallback();
39
- }
42
+ connectedCallback() {
43
+ super.connectedCallback();
44
+ this._loadZoomPreference();
45
+ }
40
46
 
41
- _handleClick() {
42
- this.emitTo('pb-zoom', { direction: this.direction });
43
- }
47
+ _handleClick() {
48
+ this.emitTo('pb-zoom', { direction: this.direction });
49
+ this.zoom(this.direction);
50
+ }
44
51
 
45
- render() {
46
- return html`
47
- <paper-icon-button icon="${this.icon}" @click="${this._handleClick}"></paper-icon-button>
48
- `;
52
+ /**
53
+ * Zoom the displayed content by increasing or decreasing font size.
54
+ * Sets the zoom factor on the document root so it applies globally.
55
+ *
56
+ * @param {string} direction either `in` or `out`
57
+ */
58
+ zoom(direction) {
59
+ const currentZoom = parseFloat(
60
+ getComputedStyle(document.documentElement).getPropertyValue('--pb-zoom-factor') || '1'
61
+ );
62
+ const step = 0.1;
63
+ const minZoom = 0.5;
64
+ const maxZoom = 2.0;
65
+
66
+ let newZoom = direction === 'in'
67
+ ? Math.min(currentZoom + step, maxZoom)
68
+ : Math.max(currentZoom - step, minZoom);
69
+
70
+ document.documentElement.style.setProperty('--pb-zoom-factor', newZoom.toString());
71
+ this.zoomFactor = newZoom;
72
+
73
+ // Store user preference
74
+ localStorage.setItem('pb-zoom-preference', newZoom.toString());
75
+ }
76
+
77
+ /**
78
+ * Load the user's saved zoom preference from localStorage and apply it globally.
79
+ */
80
+ _loadZoomPreference() {
81
+ const savedZoom = localStorage.getItem('pb-zoom-preference');
82
+ if (savedZoom) {
83
+ const zoomValue = parseFloat(savedZoom);
84
+ if (!isNaN(zoomValue)) {
85
+ document.documentElement.style.setProperty('--pb-zoom-factor', zoomValue.toString());
86
+ this.zoomFactor = zoomValue;
87
+ }
49
88
  }
89
+ }
90
+
91
+ render() {
92
+ return html`
93
+ <a
94
+ href="#"
95
+ @click="${this._handleClick}"
96
+ title="${this.direction === 'in'
97
+ ? translate('toolbar.zoom.in')
98
+ : translate('toolbar.zoom.out')} (current zoom: ${this.zoomFactor.toFixed(1)})"
99
+ >
100
+ <slot name="icon">
101
+ ${this.direction === 'in'
102
+ ? html`
103
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
104
+ <path
105
+ d="M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748ZM10 10V7H12V10H15V12H12V15H10V12H7V10H10Z"
106
+ ></path>
107
+ </svg>
108
+ `
109
+ : html`
110
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
111
+ <path
112
+ d="M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748ZM7 10H15V12H7V10Z"
113
+ ></path>
114
+ </svg>
115
+ `}
116
+ </slot>
117
+ </a>
118
+ `;
119
+ }
120
+
121
+ static get styles() {
122
+ return css`
123
+ a {
124
+ color: inherit;
125
+ text-decoration: none;
126
+ }
127
+ a:hover {
128
+ color: inherit;
129
+ }
130
+ `;
131
+ }
50
132
 
51
- /**
52
- * Fired when the user clicks the element.
53
- *
54
- * @event pb-zoom
55
- * @param {String} direction: either 'in' or 'out'
56
- */
133
+ /**
134
+ * Fired when the user clicks the element.
135
+ *
136
+ * @event pb-zoom
137
+ * @param {String} direction: either 'in' or 'out'
138
+ */
57
139
  }
58
- customElements.define('pb-zoom', PbZoom);
140
+ customElements.define('pb-zoom', PbZoom);
@@ -3,4 +3,4 @@
3
3
  */
4
4
  window.polymerSkipLoadingFontRoboto = true;
5
5
 
6
- export {};
6
+ export {};