@teipublisher/pb-components 2.26.0-next-3.12 → 2.26.0-next-3.13

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 (132) 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 +30 -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-progress.html +2 -2
  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 +1937 -1782
  16. package/dist/pb-edit-app.js +167 -107
  17. package/dist/pb-elements.json +45 -45
  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 +923 -756
  23. package/dist/pb-tify.js +2 -2
  24. package/dist/{vaadin-element-mixin-49ab4037.js → vaadin-element-mixin-84fb7d82.js} +178 -163
  25. package/gh-pages.js +5 -3
  26. package/i18n/common/pl.json +2 -2
  27. package/lib/openseadragon.min.js +1 -1
  28. package/package.json +2 -2
  29. package/pb-elements.json +45 -45
  30. package/src/assets/components.css +5 -5
  31. package/src/authority/airtable.js +20 -21
  32. package/src/authority/anton.js +129 -129
  33. package/src/authority/custom.js +23 -21
  34. package/src/authority/geonames.js +38 -32
  35. package/src/authority/gnd.js +47 -42
  36. package/src/authority/kbga.js +137 -134
  37. package/src/authority/metagrid.js +44 -46
  38. package/src/authority/reconciliation.js +66 -67
  39. package/src/authority/registry.js +4 -4
  40. package/src/docs/pb-component-docs.js +2 -2
  41. package/src/docs/pb-component-view.js +5 -5
  42. package/src/docs/pb-components-list.js +2 -2
  43. package/src/docs/pb-demo-snippet.js +2 -2
  44. package/src/dts-client.js +299 -297
  45. package/src/dts-select-endpoint.js +90 -82
  46. package/src/parse-date-service.js +184 -135
  47. package/src/pb-ajax.js +150 -146
  48. package/src/pb-authority-lookup.js +183 -146
  49. package/src/pb-autocomplete.js +292 -280
  50. package/src/pb-blacklab-highlight.js +264 -259
  51. package/src/pb-blacklab-results.js +236 -221
  52. package/src/pb-browse-docs.js +540 -475
  53. package/src/pb-browse.js +68 -65
  54. package/src/pb-clipboard.js +79 -76
  55. package/src/pb-code-editor.js +110 -102
  56. package/src/pb-code-highlight.js +209 -204
  57. package/src/pb-codepen.js +79 -72
  58. package/src/pb-collapse.js +212 -207
  59. package/src/pb-combo-box.js +190 -190
  60. package/src/pb-components-bundle.js +1 -1
  61. package/src/pb-custom-form.js +151 -149
  62. package/src/pb-dialog.js +94 -85
  63. package/src/pb-document.js +89 -90
  64. package/src/pb-download.js +210 -198
  65. package/src/pb-drawer.js +145 -148
  66. package/src/pb-edit-app.js +301 -229
  67. package/src/pb-edit-xml.js +98 -96
  68. package/src/pb-events.js +114 -107
  69. package/src/pb-facs-link.js +104 -102
  70. package/src/pb-facsimile.js +411 -413
  71. package/src/pb-formula.js +151 -153
  72. package/src/pb-geolocation.js +129 -131
  73. package/src/pb-grid-action.js +53 -56
  74. package/src/pb-grid.js +231 -228
  75. package/src/pb-highlight.js +140 -140
  76. package/src/pb-hotkeys.js +40 -42
  77. package/src/pb-i18n.js +101 -104
  78. package/src/pb-image-strip.js +84 -78
  79. package/src/pb-lang.js +132 -128
  80. package/src/pb-leaflet-map.js +488 -485
  81. package/src/pb-link.js +126 -124
  82. package/src/pb-load.js +431 -426
  83. package/src/pb-login.js +291 -248
  84. package/src/pb-manage-odds.js +364 -318
  85. package/src/pb-map-icon.js +89 -89
  86. package/src/pb-map-layer.js +85 -85
  87. package/src/pb-markdown.js +90 -99
  88. package/src/pb-media-query.js +74 -72
  89. package/src/pb-mei.js +306 -295
  90. package/src/pb-message.js +144 -144
  91. package/src/pb-mixin.js +269 -264
  92. package/src/pb-navigation.js +80 -82
  93. package/src/pb-observable.js +38 -38
  94. package/src/pb-odd-editor.js +1053 -955
  95. package/src/pb-odd-elementspec-editor.js +348 -297
  96. package/src/pb-odd-model-editor.js +1061 -901
  97. package/src/pb-odd-parameter-editor.js +200 -178
  98. package/src/pb-odd-rendition-editor.js +136 -124
  99. package/src/pb-page.js +431 -421
  100. package/src/pb-paginate.js +202 -190
  101. package/src/pb-panel.js +191 -179
  102. package/src/pb-popover-themes.js +7 -5
  103. package/src/pb-popover.js +296 -287
  104. package/src/pb-print-preview.js +127 -127
  105. package/src/pb-progress.js +51 -51
  106. package/src/pb-repeat.js +105 -104
  107. package/src/pb-restricted.js +84 -77
  108. package/src/pb-search.js +252 -241
  109. package/src/pb-select-feature.js +127 -120
  110. package/src/pb-select-odd.js +132 -124
  111. package/src/pb-select-template.js +89 -78
  112. package/src/pb-select.js +251 -227
  113. package/src/pb-split-list.js +179 -174
  114. package/src/pb-svg.js +80 -79
  115. package/src/pb-table-column.js +54 -54
  116. package/src/pb-table-grid.js +221 -203
  117. package/src/pb-tabs.js +61 -63
  118. package/src/pb-tify.js +154 -154
  119. package/src/pb-timeline.js +271 -229
  120. package/src/pb-toggle-feature.js +182 -175
  121. package/src/pb-upload.js +184 -174
  122. package/src/pb-version.js +30 -30
  123. package/src/pb-view-annotate.js +132 -98
  124. package/src/pb-view.js +1289 -1270
  125. package/src/pb-zoom.js +75 -59
  126. package/src/polymer-hack.js +1 -1
  127. package/src/search-result-service.js +256 -223
  128. package/src/seed-element.js +13 -20
  129. package/src/settings.js +4 -4
  130. package/src/theming.js +96 -96
  131. package/src/urls.js +289 -289
  132. package/src/utils.js +53 -51
@@ -1,66 +1,66 @@
1
1
  import { LitElement } from 'lit-element';
2
- import { html } from "gridjs";
2
+ import { html } from 'gridjs';
3
3
  import './pb-popover.js';
4
4
 
5
5
  /**
6
6
  * Defines a column within `pb-table-grid`.
7
7
  */
8
8
  export class PbTableColumn extends LitElement {
9
- static get properties() {
10
- return {
11
- /**
12
- * Column heading to display
13
- */
14
- label: {
15
- type: String
16
- },
17
- /**
18
- * Name of the JSON property containing the data
19
- */
20
- property: {
21
- type: String
22
- },
23
- /**
24
- * Should the column support sorting?
25
- */
26
- sort: {
27
- type: Boolean
28
- },
29
- /**
30
- * Optional fixed width of the column (e.g. '200px' or '30%')
31
- */
32
- width: {
33
- type: String
34
- },
35
- ...super.properties
36
- };
37
- }
9
+ static get properties() {
10
+ return {
11
+ /**
12
+ * Column heading to display
13
+ */
14
+ label: {
15
+ type: String,
16
+ },
17
+ /**
18
+ * Name of the JSON property containing the data
19
+ */
20
+ property: {
21
+ type: String,
22
+ },
23
+ /**
24
+ * Should the column support sorting?
25
+ */
26
+ sort: {
27
+ type: Boolean,
28
+ },
29
+ /**
30
+ * Optional fixed width of the column (e.g. '200px' or '30%')
31
+ */
32
+ width: {
33
+ type: String,
34
+ },
35
+ ...super.properties,
36
+ };
37
+ }
38
38
 
39
- constructor() {
40
- super();
41
- this.label = 'no-label';
42
- this.property = null;
43
- this.sort = false;
44
- this.width = null;
45
- }
39
+ constructor() {
40
+ super();
41
+ this.label = 'no-label';
42
+ this.property = null;
43
+ this.sort = false;
44
+ this.width = null;
45
+ }
46
46
 
47
- connectedCallback() {
48
- super.connectedCallback();
49
- }
47
+ connectedCallback() {
48
+ super.connectedCallback();
49
+ }
50
50
 
51
- data() {
52
- const config = {
53
- name: html(`<pb-i18n key="${this.label}">${this.label}</pb-i18n>`),
54
- sort: { enabled: this.sort },
55
- formatter: (cell) => html(cell)
56
- };
57
- if (this.property) {
58
- config.id = this.property;
59
- }
60
- if (this.width) {
61
- config.width = this.width;
62
- }
63
- return config;
51
+ data() {
52
+ const config = {
53
+ name: html(`<pb-i18n key="${this.label}">${this.label}</pb-i18n>`),
54
+ sort: { enabled: this.sort },
55
+ formatter: cell => html(cell),
56
+ };
57
+ if (this.property) {
58
+ config.id = this.property;
59
+ }
60
+ if (this.width) {
61
+ config.width = this.width;
64
62
  }
63
+ return config;
64
+ }
65
65
  }
66
- customElements.define('pb-table-column', PbTableColumn);
66
+ customElements.define('pb-table-column', PbTableColumn);
@@ -1,28 +1,28 @@
1
1
  import { LitElement, html, css } from 'lit-element';
2
- import { Grid } from "gridjs";
2
+ import { Grid } from 'gridjs';
3
3
  import { pbMixin, waitOnce } from './pb-mixin.js';
4
4
  import { resolveURL } from './utils.js';
5
- import { loadStylesheets, importStyles } from "./theming.js";
5
+ import { loadStylesheets, importStyles } from './theming.js';
6
6
  import '@polymer/paper-input/paper-input';
7
7
  import '@polymer/iron-icons';
8
8
  import '@polymer/iron-form';
9
9
  import '@polymer/paper-icon-button';
10
10
  import './pb-table-column.js';
11
- import { registry } from "./urls.js";
11
+ import { registry } from './urls.js';
12
12
 
13
13
  /**
14
14
  * A table grid based on [gridjs](https://gridjs.io/), which loads its data from a server endpoint
15
15
  * specified in `source`. If `source` is a relative URI, it will be resolved relative to the
16
16
  * TEI Publisher endpoint.
17
- *
17
+ *
18
18
  * The JSON data returned by the endpoint should be an object with two properties:
19
- *
19
+ *
20
20
  * * `count`: the overall number of rows available on the server
21
21
  * * `results`: an array containing each record as an object
22
- *
22
+ *
23
23
  * The parameters send to the server are as follows:
24
- *
25
- *
24
+ *
25
+ *
26
26
  * Parameter | Description
27
27
  * ---------|----------
28
28
  * limit | number of records to return for each page
@@ -30,9 +30,9 @@ import { registry } from "./urls.js";
30
30
  * order | the id of the column to sort by
31
31
  * dir | sort direction: either 'asc' or 'desc'
32
32
  * search | an optional search string entered by the user
33
- *
33
+ *
34
34
  * Table columns are configured via nested `<pb-table-column>` elements:
35
- *
35
+ *
36
36
  * ```html
37
37
  * <pb-table-column label="Name" property="name" sort width="33%"></pb-table-column>
38
38
  * <pb-table-column label="Born" property="birth"></pb-table-column>
@@ -40,215 +40,233 @@ import { registry } from "./urls.js";
40
40
  * ```
41
41
  */
42
42
  export class PbTableGrid extends pbMixin(LitElement) {
43
- static get properties() {
44
- return {
45
- /**
46
- * URI of the server-side endpoint to retrieve data from.
47
- * Relative URIs are resolved relative to the configured TEI Publisher endpoint.
48
- */
49
- source: {
50
- type: String
51
- },
52
- /**
53
- * Path to the gridjs theme CSS files.
54
- */
55
- cssPath: {
56
- type: String,
57
- attribute: 'css-path'
58
- },
59
- /**
60
- * If specified, columns (without a fixed width) will be resizable.
61
- */
62
- resizable: {
63
- type: Boolean
64
- },
65
- subforms: {
66
- type: String
67
- },
68
- perPage: {
69
- type: Number,
70
- attribute: 'per-page'
71
- },
72
- height: {
73
- type: String
74
- },
75
- /**
76
- * If specified, enable server-side search.
77
- */
78
- search: {
79
- type: Boolean
80
- },
81
- _params: {
82
- type: Object
83
- },
84
- ...super.properties
85
- };
86
- }
43
+ static get properties() {
44
+ return {
45
+ /**
46
+ * URI of the server-side endpoint to retrieve data from.
47
+ * Relative URIs are resolved relative to the configured TEI Publisher endpoint.
48
+ */
49
+ source: {
50
+ type: String,
51
+ },
52
+ /**
53
+ * Path to the gridjs theme CSS files.
54
+ */
55
+ cssPath: {
56
+ type: String,
57
+ attribute: 'css-path',
58
+ },
59
+ /**
60
+ * If specified, columns (without a fixed width) will be resizable.
61
+ */
62
+ resizable: {
63
+ type: Boolean,
64
+ },
65
+ subforms: {
66
+ type: String,
67
+ },
68
+ perPage: {
69
+ type: Number,
70
+ attribute: 'per-page',
71
+ },
72
+ height: {
73
+ type: String,
74
+ },
75
+ /**
76
+ * If specified, enable server-side search.
77
+ */
78
+ search: {
79
+ type: Boolean,
80
+ },
81
+ _params: {
82
+ type: Object,
83
+ },
84
+ ...super.properties,
85
+ };
86
+ }
87
87
 
88
- constructor() {
89
- super();
90
- this.cssPath = '../css/gridjs';
91
- this._params = {};
92
- this.resizable = false;
93
- this.search = false;
94
- this.perPage = 10;
95
- this.height = null;
96
- this.fixedHeader = false;
97
- }
88
+ constructor() {
89
+ super();
90
+ this.cssPath = '../css/gridjs';
91
+ this._params = {};
92
+ this.resizable = false;
93
+ this.search = false;
94
+ this.perPage = 10;
95
+ this.height = null;
96
+ this.fixedHeader = false;
97
+ }
98
98
 
99
- async connectedCallback() {
100
- super.connectedCallback();
99
+ async connectedCallback() {
100
+ super.connectedCallback();
101
101
 
102
- this.subscribeTo('pb-search-resubmit', (ev) => {
103
- this._submit();
104
- });
102
+ this.subscribeTo('pb-search-resubmit', ev => {
103
+ this._submit();
104
+ });
105
105
 
106
- registry.subscribe(this, (state) => {
107
- this._params = state;
108
- this._submit();
109
- });
106
+ registry.subscribe(this, state => {
107
+ this._params = state;
108
+ this._submit();
109
+ });
110
110
 
111
- this.subscribeTo('pb-i18n-update', ev => {
112
- const needsRefresh = this.language && this.language !== ev.detail.language;
113
- this.language = ev.detail.language;
114
- if (needsRefresh) {
115
- this._submit();
116
- }
117
- }, []);
118
-
119
- if (!this.height) {
120
- const property = getComputedStyle(this).getPropertyValue('--pb-table-grid-height');
121
- if (property) {
122
- this.height = property;
123
- } else {
124
- this.height = 'auto';
125
- }
111
+ this.subscribeTo(
112
+ 'pb-i18n-update',
113
+ ev => {
114
+ const needsRefresh = this.language && this.language !== ev.detail.language;
115
+ this.language = ev.detail.language;
116
+ if (needsRefresh) {
117
+ this._submit();
126
118
  }
119
+ },
120
+ [],
121
+ );
127
122
 
128
- const gridjsTheme = await loadStylesheets([`${resolveURL(this.cssPath)}/mermaid.min.css`]);
129
- const theme = importStyles(this);
130
- const sheets = [...this.shadowRoot.adoptedStyleSheets, gridjsTheme];
131
- if (theme) {
132
- sheets.push(theme);
133
- }
134
- this.shadowRoot.adoptedStyleSheets = sheets;
123
+ if (!this.height) {
124
+ const property = getComputedStyle(this).getPropertyValue('--pb-table-grid-height');
125
+ if (property) {
126
+ this.height = property;
127
+ } else {
128
+ this.height = 'auto';
129
+ }
135
130
  }
136
131
 
137
- firstUpdated() {
138
- const table = this.shadowRoot.getElementById('table');
139
-
140
- const pbColumns = this.querySelectorAll('pb-table-column');
141
- const columns = [];
142
- pbColumns.forEach((column) => columns.push(column.data()));
143
- waitOnce('pb-page-ready', (data) => {
144
- if (data && data.language) {
145
- this.language = data.language;
146
- }
147
- this._params = registry.state;
148
- const url = this.toAbsoluteURL(this.source);
149
- const config = {
150
- height: this.height,
151
- fixedHeader: true,
152
- columns,
153
- resizable: this.resizable,
154
- server: {
155
- url,
156
- then: data => data.results,
157
- total: data => data.count
158
- },
159
- sort: {
160
- multiColumn: false,
161
- enabled: true,
162
- server: {
163
- url: (prev, cols) => {
164
- if (!cols.length) return prev;
165
- const col = cols[0];
166
- return `${prev}${prev.indexOf('?') > -1 ? '&' : '?'}order=${columns[col.index].id}&dir=${col.direction === 1 ? 'asc' : 'desc'}`;
167
- }
168
- }
169
- },
170
- pagination: {
171
- enabled: true,
172
- limit: this.perPage,
173
- server: {
174
- url: (prev, page, limit) => {
175
- const form = this.shadowRoot.getElementById('form');
176
- if (form) {
177
- Object.assign(this._params, form.serializeForm());
178
- }
179
- this._params = this._paramsFromSubforms(this._params);
180
- this._params.limit = limit;
181
- this._params.start = page * limit + 1;
182
- if (this.language) {
183
- this._params.language = this.language;
184
- }
185
- registry.commit(this, this._params);
186
-
187
- // copy params and remove null values
188
- const urlParams = Object.assign({}, this._params);
189
- Object.keys(urlParams).forEach(key => {
190
- if (urlParams[key] === null) {
191
- delete urlParams[key];
192
- }
193
- });
194
- return `${prev}${prev.indexOf('?') > -1 ? '&' : '?'}${new URLSearchParams(urlParams).toString()}`;
195
- }
196
- }
197
- }
198
- };
132
+ const gridjsTheme = await loadStylesheets([`${resolveURL(this.cssPath)}/mermaid.min.css`]);
133
+ const theme = importStyles(this);
134
+ const sheets = [...this.shadowRoot.adoptedStyleSheets, gridjsTheme];
135
+ if (theme) {
136
+ sheets.push(theme);
137
+ }
138
+ this.shadowRoot.adoptedStyleSheets = sheets;
139
+ }
199
140
 
200
- this.grid = new Grid(config);
201
- this.grid.on('load', () => {
202
- this.emitTo('pb-results-received', {
203
- "params": this._params
204
- });
205
- });
141
+ firstUpdated() {
142
+ const table = this.shadowRoot.getElementById('table');
143
+
144
+ const pbColumns = this.querySelectorAll('pb-table-column');
145
+ const columns = [];
146
+ pbColumns.forEach(column => columns.push(column.data()));
147
+ waitOnce('pb-page-ready', data => {
148
+ if (data && data.language) {
149
+ this.language = data.language;
150
+ }
151
+ this._params = registry.state;
152
+ const url = this.toAbsoluteURL(this.source);
153
+ const config = {
154
+ height: this.height,
155
+ fixedHeader: true,
156
+ columns,
157
+ resizable: this.resizable,
158
+ server: {
159
+ url,
160
+ then: data => data.results,
161
+ total: data => data.count,
162
+ },
163
+ sort: {
164
+ multiColumn: false,
165
+ enabled: true,
166
+ server: {
167
+ url: (prev, cols) => {
168
+ if (!cols.length) return prev;
169
+ const col = cols[0];
170
+ return `${prev}${prev.indexOf('?') > -1 ? '&' : '?'}order=${
171
+ columns[col.index].id
172
+ }&dir=${col.direction === 1 ? 'asc' : 'desc'}`;
173
+ },
174
+ },
175
+ },
176
+ pagination: {
177
+ enabled: true,
178
+ limit: this.perPage,
179
+ server: {
180
+ url: (prev, page, limit) => {
181
+ const form = this.shadowRoot.getElementById('form');
182
+ if (form) {
183
+ Object.assign(this._params, form.serializeForm());
184
+ }
185
+ this._params = this._paramsFromSubforms(this._params);
186
+ this._params.limit = limit;
187
+ this._params.start = page * limit + 1;
188
+ if (this.language) {
189
+ this._params.language = this.language;
190
+ }
191
+ registry.commit(this, this._params);
192
+
193
+ // copy params and remove null values
194
+ const urlParams = { ...this._params };
195
+ Object.keys(urlParams).forEach(key => {
196
+ if (urlParams[key] === null) {
197
+ delete urlParams[key];
198
+ }
199
+ });
200
+ return `${prev}${prev.indexOf('?') > -1 ? '&' : '?'}${new URLSearchParams(
201
+ urlParams,
202
+ ).toString()}`;
203
+ },
204
+ },
205
+ },
206
+ };
206
207
 
207
- this.grid.render(table);
208
+ this.grid = new Grid(config);
209
+ this.grid.on('load', () => {
210
+ this.emitTo('pb-results-received', {
211
+ params: this._params,
208
212
  });
209
- }
213
+ });
210
214
 
211
- _submit() {
212
- this.grid.forceRender();
213
- }
215
+ this.grid.render(table);
216
+ });
217
+ }
214
218
 
215
- _paramsFromSubforms(params) {
216
- if (this.subforms) {
217
- document.querySelectorAll(this.subforms).forEach((form) => {
218
- if (form.serializeForm) {
219
- Object.assign(params, form.serializeForm());
220
- }
221
- });
219
+ _submit() {
220
+ this.grid.forceRender();
221
+ }
222
+
223
+ _paramsFromSubforms(params) {
224
+ if (this.subforms) {
225
+ document.querySelectorAll(this.subforms).forEach(form => {
226
+ if (form.serializeForm) {
227
+ Object.assign(params, form.serializeForm());
222
228
  }
223
- return params;
229
+ });
224
230
  }
231
+ return params;
232
+ }
225
233
 
226
- render() {
227
- return html`
228
- ${
229
- this.search ? html`
230
- <iron-form id="form">
231
- <form action="">
232
- <paper-input id="search" name="search" label="Search" value="${this._params.search || ''}" @keyup="${(e) => e.keyCode == 13 ? this._submit() : null}">
233
- <paper-icon-button icon="search" @click="${this._submit}" slot="suffix"></paper-icon-button>
234
- </paper-input>
235
- </form>
236
- </iron-form>
237
- ` : null
238
- }
239
- <div id="table"></div>
240
- `;
241
- }
234
+ render() {
235
+ return html`
236
+ ${this.search
237
+ ? html`
238
+ <iron-form id="form">
239
+ <form action="">
240
+ <paper-input
241
+ id="search"
242
+ name="search"
243
+ label="Search"
244
+ value="${this._params.search || ''}"
245
+ @keyup="${e => (e.keyCode == 13 ? this._submit() : null)}"
246
+ >
247
+ <paper-icon-button
248
+ icon="search"
249
+ @click="${this._submit}"
250
+ slot="suffix"
251
+ ></paper-icon-button>
252
+ </paper-input>
253
+ </form>
254
+ </iron-form>
255
+ `
256
+ : null}
257
+ <div id="table"></div>
258
+ `;
259
+ }
242
260
 
243
- static get styles() {
244
- return css`
245
- :host {
246
- display: block;
247
- }
248
- button {
249
- border: 0;
250
- }
251
- `;
252
- }
261
+ static get styles() {
262
+ return css`
263
+ :host {
264
+ display: block;
265
+ }
266
+ button {
267
+ border: 0;
268
+ }
269
+ `;
270
+ }
253
271
  }
254
- customElements.define('pb-table-grid', PbTableGrid);
272
+ customElements.define('pb-table-grid', PbTableGrid);