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

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 (136) 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 +43 -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-grid.html +19 -6
  9. package/dist/demo/pb-leaflet-map.html +1 -1
  10. package/dist/demo/pb-progress.html +2 -2
  11. package/dist/demo/pb-repeat.html +1 -3
  12. package/dist/demo/pb-view3.html +1 -1
  13. package/dist/{iron-form-277f9d42.js → iron-form-78b43d38.js} +1 -1
  14. package/dist/{paper-checkbox-4f410b1f.js → paper-checkbox-d16f23be.js} +44 -44
  15. package/dist/{paper-icon-button-0fb125c4.js → paper-icon-button-2cd9e0b4.js} +3 -3
  16. package/dist/{paper-listbox-c2468542.js → paper-listbox-2ad5c882.js} +7 -7
  17. package/dist/pb-code-editor.js +25 -20
  18. package/dist/pb-component-docs.js +58 -54
  19. package/dist/pb-components-bundle.js +2057 -2351
  20. package/dist/pb-edit-app.js +167 -107
  21. package/dist/pb-elements.json +45 -45
  22. package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
  23. package/dist/pb-leaflet-map.js +23 -23
  24. package/dist/pb-mei.js +56 -41
  25. package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
  26. package/dist/pb-odd-editor.js +923 -756
  27. package/dist/pb-tify.js +2 -2
  28. package/dist/{vaadin-element-mixin-49ab4037.js → vaadin-element-mixin-c200b196.js} +179 -164
  29. package/gh-pages.js +5 -3
  30. package/i18n/common/pl.json +2 -2
  31. package/lib/openseadragon.min.js +1 -1
  32. package/package.json +2 -2
  33. package/pb-elements.json +45 -45
  34. package/src/assets/components.css +5 -5
  35. package/src/authority/airtable.js +20 -21
  36. package/src/authority/anton.js +129 -129
  37. package/src/authority/custom.js +23 -21
  38. package/src/authority/geonames.js +38 -32
  39. package/src/authority/gnd.js +47 -42
  40. package/src/authority/kbga.js +137 -134
  41. package/src/authority/metagrid.js +44 -46
  42. package/src/authority/reconciliation.js +66 -67
  43. package/src/authority/registry.js +4 -4
  44. package/src/docs/pb-component-docs.js +2 -2
  45. package/src/docs/pb-component-view.js +5 -5
  46. package/src/docs/pb-components-list.js +2 -2
  47. package/src/docs/pb-demo-snippet.js +2 -2
  48. package/src/dts-client.js +299 -297
  49. package/src/dts-select-endpoint.js +90 -82
  50. package/src/parse-date-service.js +184 -135
  51. package/src/pb-ajax.js +150 -146
  52. package/src/pb-authority-lookup.js +183 -146
  53. package/src/pb-autocomplete.js +292 -280
  54. package/src/pb-blacklab-highlight.js +264 -259
  55. package/src/pb-blacklab-results.js +236 -221
  56. package/src/pb-browse-docs.js +540 -475
  57. package/src/pb-browse.js +68 -65
  58. package/src/pb-clipboard.js +79 -76
  59. package/src/pb-code-editor.js +110 -102
  60. package/src/pb-code-highlight.js +209 -204
  61. package/src/pb-codepen.js +79 -72
  62. package/src/pb-collapse.js +212 -207
  63. package/src/pb-combo-box.js +190 -190
  64. package/src/pb-components-bundle.js +1 -1
  65. package/src/pb-custom-form.js +151 -149
  66. package/src/pb-dialog.js +94 -85
  67. package/src/pb-document.js +89 -90
  68. package/src/pb-download.js +210 -198
  69. package/src/pb-drawer.js +145 -148
  70. package/src/pb-edit-app.js +301 -229
  71. package/src/pb-edit-xml.js +98 -96
  72. package/src/pb-events.js +114 -107
  73. package/src/pb-facs-link.js +104 -102
  74. package/src/pb-facsimile.js +419 -414
  75. package/src/pb-formula.js +151 -153
  76. package/src/pb-geolocation.js +129 -131
  77. package/src/pb-grid-action.js +53 -56
  78. package/src/pb-grid.js +231 -228
  79. package/src/pb-highlight.js +140 -140
  80. package/src/pb-hotkeys.js +40 -42
  81. package/src/pb-i18n.js +101 -104
  82. package/src/pb-image-strip.js +84 -78
  83. package/src/pb-lang.js +132 -128
  84. package/src/pb-leaflet-map.js +488 -485
  85. package/src/pb-link.js +126 -124
  86. package/src/pb-load.js +431 -426
  87. package/src/pb-login.js +291 -248
  88. package/src/pb-manage-odds.js +364 -318
  89. package/src/pb-map-icon.js +89 -89
  90. package/src/pb-map-layer.js +85 -85
  91. package/src/pb-markdown.js +90 -99
  92. package/src/pb-media-query.js +74 -72
  93. package/src/pb-mei.js +306 -295
  94. package/src/pb-message.js +144 -144
  95. package/src/pb-mixin.js +269 -264
  96. package/src/pb-navigation.js +80 -82
  97. package/src/pb-observable.js +38 -38
  98. package/src/pb-odd-editor.js +1053 -955
  99. package/src/pb-odd-elementspec-editor.js +348 -297
  100. package/src/pb-odd-model-editor.js +1061 -901
  101. package/src/pb-odd-parameter-editor.js +200 -178
  102. package/src/pb-odd-rendition-editor.js +136 -124
  103. package/src/pb-page.js +431 -421
  104. package/src/pb-paginate.js +202 -190
  105. package/src/pb-panel.js +198 -182
  106. package/src/pb-popover-themes.js +7 -5
  107. package/src/pb-popover.js +296 -287
  108. package/src/pb-print-preview.js +127 -127
  109. package/src/pb-progress.js +51 -51
  110. package/src/pb-repeat.js +105 -104
  111. package/src/pb-restricted.js +84 -77
  112. package/src/pb-search.js +252 -241
  113. package/src/pb-select-feature.js +127 -120
  114. package/src/pb-select-odd.js +132 -124
  115. package/src/pb-select-template.js +89 -78
  116. package/src/pb-select.js +251 -227
  117. package/src/pb-split-list.js +179 -174
  118. package/src/pb-svg.js +80 -79
  119. package/src/pb-table-column.js +54 -54
  120. package/src/pb-table-grid.js +221 -203
  121. package/src/pb-tabs.js +61 -63
  122. package/src/pb-tify.js +154 -154
  123. package/src/pb-timeline.js +271 -229
  124. package/src/pb-toggle-feature.js +182 -175
  125. package/src/pb-upload.js +184 -174
  126. package/src/pb-version.js +30 -30
  127. package/src/pb-view-annotate.js +132 -98
  128. package/src/pb-view.js +1290 -1270
  129. package/src/pb-zoom.js +75 -59
  130. package/src/polymer-hack.js +1 -1
  131. package/src/search-result-service.js +256 -223
  132. package/src/seed-element.js +13 -20
  133. package/src/settings.js +4 -4
  134. package/src/theming.js +96 -96
  135. package/src/urls.js +289 -289
  136. package/src/utils.js +53 -51
package/src/pb-login.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { LitElement, html, css } from 'lit-element';
2
2
  import { pbMixin, waitOnce } from './pb-mixin.js';
3
- import { translate } from "./pb-i18n.js";
4
- import { registry } from "./urls.js";
3
+ import { translate } from './pb-i18n.js';
4
+ import { registry } from './urls.js';
5
5
  import '@polymer/iron-ajax';
6
6
  import { minVersion } from './utils.js';
7
7
  import './pb-dialog.js';
@@ -18,166 +18,209 @@ import { themableMixin } from './theming.js';
18
18
  * @csspart group-invalid - Text displayed if login is invalid concerning group
19
19
  */
20
20
  export class PbLogin extends themableMixin(pbMixin(LitElement)) {
21
- static get properties() {
22
- return {
23
- ...super.properties,
24
- /** True if user is currently logged in */
25
- loggedIn: {
26
- type: Boolean,
27
- attribute: 'logged-in',
28
- reflect: true
29
- },
30
- /**
31
- * The currently logged in user.
32
- */
33
- user: {
34
- type: String
35
- },
36
- password: {
37
- type: String
38
- },
39
- /**
40
- * If set, only users being members of the specified group are
41
- * allowed to log in.
42
- * Multiple groups can be defined separating items by space and/or comma.
43
- */
44
- group: {
45
- type: String
46
- },
47
- /**
48
- * Array of groups the current user is a member of.
49
- */
50
- groups: {
51
- type: Array
52
- },
53
- /**
54
- * If set to true, automatically show login dialog if user is not logged in
55
- */
56
- auto: {
57
- type: Boolean
58
- },
59
- /**
60
- * Label to show if not logged in
61
- */
62
- loginLabel: {
63
- type: String,
64
- reflect: true,
65
- attribute: 'login-label'
66
- },
67
- /**
68
- * Label to show before user name if logged in
69
- */
70
- logoutLabel: {
71
- type: String,
72
- reflect: true,
73
- attribute: 'logout-label'
74
- },
75
- loginIcon: {
76
- type: String,
77
- attribute: 'login-icon'
78
- },
79
- logoutIcon: {
80
- type: String,
81
- attribute: 'logout-icon'
82
- },
83
- _invalid: {
84
- type: Boolean
85
- },
86
- _hasFocus: {
87
- type: Boolean
88
- }
89
- };
90
- }
21
+ static get properties() {
22
+ return {
23
+ ...super.properties,
24
+ /** True if user is currently logged in */
25
+ loggedIn: {
26
+ type: Boolean,
27
+ attribute: 'logged-in',
28
+ reflect: true,
29
+ },
30
+ /**
31
+ * The currently logged in user.
32
+ */
33
+ user: {
34
+ type: String,
35
+ },
36
+ password: {
37
+ type: String,
38
+ },
39
+ /**
40
+ * If set, only users being members of the specified group are
41
+ * allowed to log in.
42
+ * Multiple groups can be defined separating items by space and/or comma.
43
+ */
44
+ group: {
45
+ type: String,
46
+ },
47
+ /**
48
+ * Array of groups the current user is a member of.
49
+ */
50
+ groups: {
51
+ type: Array,
52
+ },
53
+ /**
54
+ * If set to true, automatically show login dialog if user is not logged in
55
+ */
56
+ auto: {
57
+ type: Boolean,
58
+ },
59
+ /**
60
+ * Label to show if not logged in
61
+ */
62
+ loginLabel: {
63
+ type: String,
64
+ reflect: true,
65
+ attribute: 'login-label',
66
+ },
67
+ /**
68
+ * Label to show before user name if logged in
69
+ */
70
+ logoutLabel: {
71
+ type: String,
72
+ reflect: true,
73
+ attribute: 'logout-label',
74
+ },
75
+ loginIcon: {
76
+ type: String,
77
+ attribute: 'login-icon',
78
+ },
79
+ logoutIcon: {
80
+ type: String,
81
+ attribute: 'logout-icon',
82
+ },
83
+ _invalid: {
84
+ type: Boolean,
85
+ },
86
+ _hasFocus: {
87
+ type: Boolean,
88
+ },
89
+ };
90
+ }
91
91
 
92
- constructor() {
93
- super();
94
- this.loggedIn = false;
95
- this.loginLabel = 'login.login';
96
- this.logoutLabel = 'login.as';
97
- this.user = '';
98
- this.groups = [];
99
- this.loginIcon = 'account-circle';
100
- this.logoutIcon = 'supervisor-account';
101
- this._hasFocus = true;
102
- }
92
+ constructor() {
93
+ super();
94
+ this.loggedIn = false;
95
+ this.loginLabel = 'login.login';
96
+ this.logoutLabel = 'login.as';
97
+ this.user = '';
98
+ this.groups = [];
99
+ this.loginIcon = 'account-circle';
100
+ this.logoutIcon = 'supervisor-account';
101
+ this._hasFocus = true;
102
+ }
103
103
 
104
- firstUpdated() {
105
- super.firstUpdated();
106
- this._checkLogin = this.shadowRoot.getElementById('checkLogin');
107
- this._loginDialog = this.shadowRoot.querySelector('pb-dialog');
104
+ firstUpdated() {
105
+ super.firstUpdated();
106
+ this._checkLogin = this.shadowRoot.getElementById('checkLogin');
107
+ this._loginDialog = this.shadowRoot.querySelector('pb-dialog');
108
108
 
109
- this.renderRoot.querySelector('form').addEventListener('submit', (e) => {
110
- e.preventDefault();
111
- this._confirmLogin();
112
- });
109
+ this.renderRoot.querySelector('form').addEventListener('submit', e => {
110
+ e.preventDefault();
111
+ this._confirmLogin();
112
+ });
113
113
 
114
- window.addEventListener('blur', () => {
115
- this._hasFocus = false;
116
- });
117
- window.addEventListener('focus', () => {
118
- if (!this._hasFocus) {
119
- this._hasFocus = true;
120
- this._checkLogin.body = null;
121
- this._checkLogin.generateRequest();
122
- }
123
- });
124
- waitOnce('pb-page-ready', (detail) => {
125
- if (minVersion(detail.apiVersion, '1.0.0')) {
126
- this._checkLogin.url = `${detail.endpoint}/api/login/`;
127
- } else {
128
- this._checkLogin.url = `${detail.endpoint}/login`;
129
- }
130
- this._checkLogin.body = {
131
- user: this.user,
132
- password: this.password
133
- };
134
- this._checkLogin.generateRequest();
135
- });
136
- this.addEventListener('keyup', event => {
137
- if (event.keyCode === 13) {
138
- event.preventDefault();
139
- this._confirmLogin();
140
- }
141
- });
142
- }
114
+ window.addEventListener('blur', () => {
115
+ this._hasFocus = false;
116
+ });
117
+ window.addEventListener('focus', () => {
118
+ if (!this._hasFocus) {
119
+ this._hasFocus = true;
120
+ this._checkLogin.body = null;
121
+ this._checkLogin.generateRequest();
122
+ }
123
+ });
124
+ waitOnce('pb-page-ready', detail => {
125
+ if (minVersion(detail.apiVersion, '1.0.0')) {
126
+ this._checkLogin.url = `${detail.endpoint}/api/login/`;
127
+ } else {
128
+ this._checkLogin.url = `${detail.endpoint}/login`;
129
+ }
130
+ this._checkLogin.body = {
131
+ user: this.user,
132
+ password: this.password,
133
+ };
134
+ this._checkLogin.generateRequest();
135
+ });
136
+ this.addEventListener('keyup', event => {
137
+ if (event.keyCode === 13) {
138
+ event.preventDefault();
139
+ this._confirmLogin();
140
+ }
141
+ });
142
+ }
143
143
 
144
- render() {
145
- return html`
146
- <a href="#" @click="${this._show}" title="${this.user ? this.user : this.loginLabel}" part="trigger">
144
+ render() {
145
+ return html`
146
+ <a href="#" @click="${this._show}" title="${
147
+ this.user ? this.user : this.loginLabel
148
+ }" part="trigger">
147
149
  ${
148
- this.loggedIn ?
149
- html`
150
- <slot name="icon-logout" part="icon">
151
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-check" viewBox="0 0 16 16" part="icon">
152
- <path d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"/>
153
- <path d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"/>
154
- </svg>
155
- </slot>
156
- ` :
157
- html`
158
- <slot name="icon-login">
159
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person" viewBox="0 0 16 16" part="icon">
160
- <path d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/>
161
- </svg>
162
- </slot>
163
- `
150
+ this.loggedIn
151
+ ? html`
152
+ <slot name="icon-logout" part="icon">
153
+ <svg
154
+ xmlns="http://www.w3.org/2000/svg"
155
+ width="16"
156
+ height="16"
157
+ fill="currentColor"
158
+ class="bi bi-person-check"
159
+ viewBox="0 0 16 16"
160
+ part="icon"
161
+ >
162
+ <path
163
+ d="M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4"
164
+ />
165
+ <path
166
+ d="M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z"
167
+ />
168
+ </svg>
169
+ </slot>
170
+ `
171
+ : html`
172
+ <slot name="icon-login">
173
+ <svg
174
+ xmlns="http://www.w3.org/2000/svg"
175
+ width="16"
176
+ height="16"
177
+ fill="currentColor"
178
+ class="bi bi-person"
179
+ viewBox="0 0 16 16"
180
+ part="icon"
181
+ >
182
+ <path
183
+ d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"
184
+ />
185
+ </svg>
186
+ </slot>
187
+ `
164
188
  }
165
- <span class="label" part="label">${translate(this.loggedIn ? this.logoutLabel : this.loginLabel, { user: this.user })}</span>
189
+ <span class="label" part="label">${translate(
190
+ this.loggedIn ? this.logoutLabel : this.loginLabel,
191
+ { user: this.user },
192
+ )}</span>
166
193
  </a>
167
194
 
168
195
  <form action="login">
169
196
  <pb-dialog ?modal="${this.auto}">
170
197
  <div slot="title">${translate('login.login')}</div>
171
198
  <label>
172
- ${ translate('login.user') }
173
- <input name="user" value="${this.user}" autofocus placeholder="${translate('login.user')}"></input>
199
+ ${translate('login.user')}
200
+ <input name="user" .value="${this.user}" autofocus placeholder="${translate(
201
+ 'login.user',
202
+ )}"></input>
174
203
  </label>
175
204
  <label>
176
- ${ translate('login.password') }
177
- <input name="password" type="password" placeholder="${translate('login.password')}"></input>
205
+ ${translate('login.password')}
206
+ <input name="password" type="password" placeholder="${translate(
207
+ 'login.password',
208
+ )}"></input>
178
209
  </label>
179
210
  <slot name="information"></slot>
180
- ${ this._invalid ? html`<p id="message" part="message-invalid">${translate('login.invalid')}<span part="group-invalid">${this.group ? html` (${translate('login.requiredGroup', { group: this.group })})` : null}</span>.</p>` : null }
211
+ ${
212
+ this._invalid
213
+ ? html`<p id="message" part="message-invalid">
214
+ ${translate('login.invalid')}<span part="group-invalid"
215
+ >${this.group
216
+ ? html` (${translate('login.requiredGroup', {
217
+ group: this.group,
218
+ })})`
219
+ : null}</span
220
+ >.
221
+ </p>`
222
+ : null
223
+ }
181
224
  <button autofocus slot="footer">${translate('login.login')}</button>
182
225
  </pb-dialog>
183
226
  </form>
@@ -187,122 +230,122 @@ export class PbLogin extends themableMixin(pbMixin(LitElement)) {
187
230
  method="post"
188
231
  content-type="application/x-www-form-urlencoded"></iron-ajax>
189
232
  `;
190
- }
233
+ }
191
234
 
192
- _show(ev) {
193
- ev.preventDefault();
194
- if (this.loggedIn) {
195
- this._checkLogin.body = {
196
- logout: this.user
197
- };
198
- this._checkLogin.generateRequest();
199
- } else {
200
- this._loginDialog.openDialog();
201
- }
235
+ _show(ev) {
236
+ ev.preventDefault();
237
+ if (this.loggedIn) {
238
+ this._checkLogin.body = {
239
+ logout: this.user,
240
+ };
241
+ this._checkLogin.generateRequest();
242
+ } else {
243
+ this._loginDialog.openDialog();
202
244
  }
245
+ }
203
246
 
204
- _confirmLogin() {
205
- this.user = this.renderRoot.querySelector('input[name="user"]').value;
206
- this.password = this.renderRoot.querySelector('input[name="password"]').value;
207
- this._checkLogin.body = {
208
- user: this.user,
209
- password: this.password
210
- };
211
- this._checkLogin.generateRequest();
212
- }
247
+ _confirmLogin() {
248
+ this.user = this.renderRoot.querySelector('input[name="user"]').value;
249
+ this.password = this.renderRoot.querySelector('input[name="password"]').value;
250
+ this._checkLogin.body = {
251
+ user: this.user,
252
+ password: this.password,
253
+ };
254
+ this._checkLogin.generateRequest();
255
+ }
213
256
 
214
- _handleResponse() {
215
- const resp = this._checkLogin.lastResponse;
216
- if (resp.user && this._checkGroup(resp)) {
217
- resp.userChanged = !this.loggedIn || this.user !== resp.user;
218
- this.loggedIn = true;
219
- this.user = resp.user;
220
- this.groups = resp.groups;
221
- this._invalid = false;
222
- this._loginDialog.closeDialog();
223
- } else {
224
- resp.userChanged = this.loggedIn;
225
- this.loggedIn = false;
226
- this.password = null;
227
- if (this._loginDialog.open) {
228
- this._invalid = true;
229
- } else if (this.auto) {
230
- this._loginDialog.openDialog();
231
- }
232
- }
233
- this.emitTo('pb-login', resp);
234
-
235
- if (this.loggedIn) {
236
- registry.currentUser = {
237
- user: this.user,
238
- groups: this.groups
239
- }
240
- } else {
241
- registry.currentUser = null;
242
- }
257
+ _handleResponse() {
258
+ const resp = this._checkLogin.lastResponse;
259
+ if (resp.user && this._checkGroup(resp)) {
260
+ resp.userChanged = !this.loggedIn || this.user !== resp.user;
261
+ this.loggedIn = true;
262
+ this.user = resp.user;
263
+ this.groups = resp.groups;
264
+ this._invalid = false;
265
+ this._loginDialog.closeDialog();
266
+ } else {
267
+ resp.userChanged = this.loggedIn;
268
+ this.loggedIn = false;
269
+ this.password = null;
270
+ if (this._loginDialog.open) {
271
+ this._invalid = true;
272
+ } else if (this.auto) {
273
+ this._loginDialog.openDialog();
274
+ }
243
275
  }
276
+ this.emitTo('pb-login', resp);
244
277
 
245
- _handleError() {
246
- this.loggedIn = false;
247
- this.password = null;
278
+ if (this.loggedIn) {
279
+ registry.currentUser = {
280
+ user: this.user,
281
+ groups: this.groups,
282
+ };
283
+ } else {
284
+ registry.currentUser = null;
285
+ }
286
+ }
248
287
 
249
- const resp = {
250
- userChanged: this.loggedIn,
251
- user: null
252
- };
253
- if (this._loginDialog.open) {
254
- this._invalid = true;
255
- } else if (this.auto) {
256
- this._loginDialog.openDialog();
257
- }
288
+ _handleError() {
289
+ this.loggedIn = false;
290
+ this.password = null;
258
291
 
259
- registry.currentUser = null;
260
- this.emitTo('pb-login', resp);
292
+ const resp = {
293
+ userChanged: this.loggedIn,
294
+ user: null,
295
+ };
296
+ if (this._loginDialog.open) {
297
+ this._invalid = true;
298
+ } else if (this.auto) {
299
+ this._loginDialog.openDialog();
261
300
  }
262
301
 
263
- /**
264
- *
265
- * @param {Array<String>} arr array containg string values (name of groups)
266
- * @param {String} val value to check if it's in the array
267
- * @returns true if the checked values is in the array
268
- */
269
- _isItemInArray(arr, val) {
270
- return arr.some((arrVal) => val === arrVal);
271
- }
302
+ registry.currentUser = null;
303
+ this.emitTo('pb-login', resp);
304
+ }
272
305
 
273
- /**
274
- *
275
- * @param {object} info object returned by login function;
276
- * contains groups the user is a member of
277
- * @returns true if user is member of one of defined groups
278
- */
279
- _checkGroup(info) {
280
- if (this.group) {
281
- let groupArray = this.group.split(/[\s+,]+/);
282
- let exists = false;
283
- if(info.groups)
284
- groupArray.forEach(async (oneItem) => {
285
- exists = this._isItemInArray(info.groups, oneItem) || exists;
286
- });
287
- return exists;
288
- }
289
- return true;
290
- }
306
+ /**
307
+ *
308
+ * @param {Array<String>} arr array containg string values (name of groups)
309
+ * @param {String} val value to check if it's in the array
310
+ * @returns true if the checked values is in the array
311
+ */
312
+ _isItemInArray(arr, val) {
313
+ return arr.some(arrVal => val === arrVal);
314
+ }
291
315
 
292
- static get styles() {
293
- return css`
294
- #message {
295
- color: var(--pb-login-message-invalid-color, var(--pb-error-color, #f44336));
296
- }
297
- `;
316
+ /**
317
+ *
318
+ * @param {object} info object returned by login function;
319
+ * contains groups the user is a member of
320
+ * @returns true if user is member of one of defined groups
321
+ */
322
+ _checkGroup(info) {
323
+ if (this.group) {
324
+ const groupArray = this.group.split(/[\s+,]+/);
325
+ let exists = false;
326
+ if (info.groups)
327
+ groupArray.forEach(async oneItem => {
328
+ exists = this._isItemInArray(info.groups, oneItem) || exists;
329
+ });
330
+ return exists;
298
331
  }
332
+ return true;
333
+ }
334
+
335
+ static get styles() {
336
+ return css`
337
+ #message {
338
+ color: var(--pb-login-message-invalid-color, var(--pb-error-color, #f44336));
339
+ }
340
+ `;
341
+ }
299
342
 
300
- /**
301
- * Fired on successful login.
302
- *
303
- * @event pb-login
304
- * @param {String} user logged in user
305
- * @param {Array<String>} groups groups the user is a member of
306
- */
343
+ /**
344
+ * Fired on successful login.
345
+ *
346
+ * @event pb-login
347
+ * @param {String} user logged in user
348
+ * @param {Array<String>} groups groups the user is a member of
349
+ */
307
350
  }
308
351
  customElements.define('pb-login', PbLogin);