solid-ui 3.0.6 → 3.1.1-test.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 (243) hide show
  1. package/README.md +146 -2
  2. package/dist/acl/access-groups.js +1 -1
  3. package/dist/components/button/index.d.ts +1 -0
  4. package/dist/components/button/index.esm.js +546 -0
  5. package/dist/components/button/index.esm.js.map +1 -0
  6. package/dist/components/button/index.esm.min.js +268 -0
  7. package/dist/components/button/index.esm.min.js.map +1 -0
  8. package/dist/components/button/index.js +428 -0
  9. package/dist/components/button/index.js.map +1 -0
  10. package/dist/components/button/index.min.js +257 -0
  11. package/dist/components/button/index.min.js.map +1 -0
  12. package/dist/components/combobox/index.d.ts +1 -0
  13. package/dist/components/combobox/index.esm.js +953 -0
  14. package/dist/components/combobox/index.esm.js.map +1 -0
  15. package/dist/components/combobox/index.esm.min.js +339 -0
  16. package/dist/components/combobox/index.esm.min.js.map +1 -0
  17. package/dist/components/combobox/index.js +782 -0
  18. package/dist/components/combobox/index.js.map +1 -0
  19. package/dist/components/combobox/index.min.js +328 -0
  20. package/dist/components/combobox/index.min.js.map +1 -0
  21. package/dist/components/footer/index.d.ts +1 -0
  22. package/dist/components/footer/index.esm.js +24406 -0
  23. package/dist/components/footer/index.esm.js.map +1 -0
  24. package/dist/components/footer/index.esm.min.js +137 -0
  25. package/dist/components/footer/index.esm.min.js.map +1 -0
  26. package/dist/components/footer/index.js +23303 -0
  27. package/dist/components/footer/index.js.map +1 -0
  28. package/dist/components/footer/index.min.js +125 -0
  29. package/dist/components/footer/index.min.js.map +1 -0
  30. package/dist/components/header/index.d.ts +1 -0
  31. package/dist/components/header/index.esm.js +1936 -0
  32. package/dist/components/header/index.esm.js.map +1 -0
  33. package/dist/components/header/index.esm.min.js +1125 -0
  34. package/dist/components/header/index.esm.min.js.map +1 -0
  35. package/dist/components/header/index.js +1897 -0
  36. package/dist/components/header/index.js.map +1 -0
  37. package/dist/components/header/index.min.js +1126 -0
  38. package/dist/components/header/index.min.js.map +1 -0
  39. package/dist/components/loginButton/index.d.ts +1 -0
  40. package/dist/components/loginButton/index.esm.js +761 -0
  41. package/dist/components/loginButton/index.esm.js.map +1 -0
  42. package/dist/components/loginButton/index.esm.min.js +444 -0
  43. package/dist/components/loginButton/index.esm.min.js.map +1 -0
  44. package/dist/components/loginButton/index.js +743 -0
  45. package/dist/components/loginButton/index.js.map +1 -0
  46. package/dist/components/loginButton/index.min.js +444 -0
  47. package/dist/components/loginButton/index.min.js.map +1 -0
  48. package/dist/components/photoCapture/index.d.ts +1 -0
  49. package/dist/components/photoCapture/index.esm.js +966 -0
  50. package/dist/components/photoCapture/index.esm.js.map +1 -0
  51. package/dist/components/photoCapture/index.esm.min.js +304 -0
  52. package/dist/components/photoCapture/index.esm.min.js.map +1 -0
  53. package/dist/components/photoCapture/index.js +848 -0
  54. package/dist/components/photoCapture/index.js.map +1 -0
  55. package/dist/components/photoCapture/index.min.js +293 -0
  56. package/dist/components/photoCapture/index.min.js.map +1 -0
  57. package/dist/components/select/index.d.ts +1 -0
  58. package/dist/components/select/index.esm.js +939 -0
  59. package/dist/components/select/index.esm.js.map +1 -0
  60. package/dist/components/select/index.esm.min.js +370 -0
  61. package/dist/components/select/index.esm.min.js.map +1 -0
  62. package/dist/components/select/index.js +771 -0
  63. package/dist/components/select/index.js.map +1 -0
  64. package/dist/components/select/index.min.js +359 -0
  65. package/dist/components/select/index.min.js.map +1 -0
  66. package/dist/components/signupButton/index.d.ts +1 -0
  67. package/dist/components/signupButton/index.esm.js +270 -0
  68. package/dist/components/signupButton/index.esm.js.map +1 -0
  69. package/dist/components/signupButton/index.esm.min.js +82 -0
  70. package/dist/components/signupButton/index.esm.min.js.map +1 -0
  71. package/dist/components/signupButton/index.js +264 -0
  72. package/dist/components/signupButton/index.js.map +1 -0
  73. package/dist/components/signupButton/index.min.js +82 -0
  74. package/dist/components/signupButton/index.min.js.map +1 -0
  75. package/dist/footer/index.d.ts.map +1 -1
  76. package/dist/footer/index.js +8 -4
  77. package/dist/footer/index.js.map +1 -1
  78. package/dist/icons/v2/icons-svg/contactIcons.d.ts +3 -0
  79. package/dist/icons/v2/icons-svg/contactIcons.d.ts.map +1 -0
  80. package/dist/icons/v2/icons-svg/contactIcons.js +27 -0
  81. package/dist/icons/v2/icons-svg/contactIcons.js.map +1 -0
  82. package/dist/icons/v2/icons-svg/headerIcons.d.ts +18 -0
  83. package/dist/icons/v2/icons-svg/headerIcons.d.ts.map +1 -0
  84. package/dist/icons/v2/icons-svg/headerIcons.js +245 -0
  85. package/dist/icons/v2/icons-svg/headerIcons.js.map +1 -0
  86. package/dist/icons/v2/icons-svg/pngIcons.d.ts +3 -0
  87. package/dist/icons/v2/icons-svg/pngIcons.d.ts.map +1 -0
  88. package/dist/icons/v2/icons-svg/pngIcons.js +4 -0
  89. package/dist/icons/v2/icons-svg/pngIcons.js.map +1 -0
  90. package/dist/icons/v2/icons-svg/profileIcons.d.ts +23 -0
  91. package/dist/icons/v2/icons-svg/profileIcons.d.ts.map +1 -0
  92. package/dist/icons/v2/icons-svg/profileIcons.js +317 -0
  93. package/dist/icons/v2/icons-svg/profileIcons.js.map +1 -0
  94. package/dist/login/login.d.ts.map +1 -1
  95. package/dist/login/login.js +12 -2
  96. package/dist/login/login.js.map +1 -1
  97. package/dist/matrix/matrix.js.map +1 -1
  98. package/dist/pad.d.ts.map +1 -1
  99. package/dist/pad.js +13 -13
  100. package/dist/pad.js.map +1 -1
  101. package/dist/solid-ui.esm.js +9627 -12206
  102. package/dist/solid-ui.esm.js.map +1 -1
  103. package/dist/solid-ui.esm.min.js +15 -14
  104. package/dist/solid-ui.esm.min.js.map +1 -1
  105. package/dist/solid-ui.js +12621 -14833
  106. package/dist/solid-ui.js.map +1 -1
  107. package/dist/solid-ui.min.js +23 -22
  108. package/dist/solid-ui.min.js.map +1 -1
  109. package/dist/tabs.js +2 -2
  110. package/dist/tabs.js.map +1 -1
  111. package/dist/utils/headerFooterHelpers.d.ts.map +1 -1
  112. package/dist/utils/headerFooterHelpers.js +11 -2
  113. package/dist/utils/headerFooterHelpers.js.map +1 -1
  114. package/dist/v2/components/actions/button/Button.d.ts +97 -0
  115. package/dist/v2/components/actions/button/Button.d.ts.map +1 -0
  116. package/dist/v2/components/actions/button/Button.js +325 -0
  117. package/dist/v2/components/actions/button/Button.js.map +1 -0
  118. package/dist/v2/components/actions/button/Button.test.d.ts +2 -0
  119. package/dist/v2/components/actions/button/Button.test.d.ts.map +1 -0
  120. package/dist/v2/components/actions/button/Button.test.js +117 -0
  121. package/dist/v2/components/actions/button/Button.test.js.map +1 -0
  122. package/dist/v2/components/actions/button/index.d.ts +8 -0
  123. package/dist/v2/components/actions/button/index.d.ts.map +1 -0
  124. package/dist/v2/components/actions/button/index.js +7 -0
  125. package/dist/v2/components/actions/button/index.js.map +1 -0
  126. package/dist/v2/components/auth/loginButton/LoginButton.d.ts +62 -0
  127. package/dist/v2/components/auth/loginButton/LoginButton.d.ts.map +1 -0
  128. package/dist/v2/components/auth/loginButton/LoginButton.js +539 -0
  129. package/dist/v2/components/auth/loginButton/LoginButton.js.map +1 -0
  130. package/dist/v2/components/auth/loginButton/LoginButton.test.d.ts +2 -0
  131. package/dist/v2/components/auth/loginButton/LoginButton.test.d.ts.map +1 -0
  132. package/dist/v2/components/auth/loginButton/LoginButton.test.js +53 -0
  133. package/dist/v2/components/auth/loginButton/LoginButton.test.js.map +1 -0
  134. package/dist/v2/components/auth/loginButton/downArrow.d.ts +2 -0
  135. package/dist/v2/components/auth/loginButton/downArrow.d.ts.map +1 -0
  136. package/dist/v2/components/auth/loginButton/downArrow.js +10 -0
  137. package/dist/v2/components/auth/loginButton/downArrow.js.map +1 -0
  138. package/dist/v2/components/auth/loginButton/index.d.ts +3 -0
  139. package/dist/v2/components/auth/loginButton/index.d.ts.map +1 -0
  140. package/dist/v2/components/auth/loginButton/index.js +7 -0
  141. package/dist/v2/components/auth/loginButton/index.js.map +1 -0
  142. package/dist/v2/components/auth/signupButton/SignupButton.d.ts +36 -0
  143. package/dist/v2/components/auth/signupButton/SignupButton.d.ts.map +1 -0
  144. package/dist/v2/components/auth/signupButton/SignupButton.js +84 -0
  145. package/dist/v2/components/auth/signupButton/SignupButton.js.map +1 -0
  146. package/dist/v2/components/auth/signupButton/SignupButton.test.d.ts +2 -0
  147. package/dist/v2/components/auth/signupButton/SignupButton.test.d.ts.map +1 -0
  148. package/dist/v2/components/auth/signupButton/SignupButton.test.js +49 -0
  149. package/dist/v2/components/auth/signupButton/SignupButton.test.js.map +1 -0
  150. package/dist/v2/components/auth/signupButton/index.d.ts +3 -0
  151. package/dist/v2/components/auth/signupButton/index.d.ts.map +1 -0
  152. package/dist/v2/components/auth/signupButton/index.js +7 -0
  153. package/dist/v2/components/auth/signupButton/index.js.map +1 -0
  154. package/dist/v2/components/forms/combobox/Combobox.d.ts +82 -0
  155. package/dist/v2/components/forms/combobox/Combobox.d.ts.map +1 -0
  156. package/dist/v2/components/forms/combobox/Combobox.js +506 -0
  157. package/dist/v2/components/forms/combobox/Combobox.js.map +1 -0
  158. package/dist/v2/components/forms/combobox/Combobox.test.d.ts +2 -0
  159. package/dist/v2/components/forms/combobox/Combobox.test.d.ts.map +1 -0
  160. package/dist/v2/components/forms/combobox/Combobox.test.js +201 -0
  161. package/dist/v2/components/forms/combobox/Combobox.test.js.map +1 -0
  162. package/dist/v2/components/forms/combobox/comboboxTypes.d.ts +6 -0
  163. package/dist/v2/components/forms/combobox/comboboxTypes.d.ts.map +1 -0
  164. package/dist/v2/components/forms/combobox/comboboxTypes.js +2 -0
  165. package/dist/v2/components/forms/combobox/comboboxTypes.js.map +1 -0
  166. package/dist/v2/components/forms/combobox/index.d.ts +3 -0
  167. package/dist/v2/components/forms/combobox/index.d.ts.map +1 -0
  168. package/dist/v2/components/forms/combobox/index.js +7 -0
  169. package/dist/v2/components/forms/combobox/index.js.map +1 -0
  170. package/dist/v2/components/forms/select/Select.d.ts +68 -0
  171. package/dist/v2/components/forms/select/Select.d.ts.map +1 -0
  172. package/dist/v2/components/forms/select/Select.js +499 -0
  173. package/dist/v2/components/forms/select/Select.js.map +1 -0
  174. package/dist/v2/components/forms/select/Select.test.d.ts +2 -0
  175. package/dist/v2/components/forms/select/Select.test.d.ts.map +1 -0
  176. package/dist/v2/components/forms/select/Select.test.js +168 -0
  177. package/dist/v2/components/forms/select/Select.test.js.map +1 -0
  178. package/dist/v2/components/forms/select/index.d.ts +3 -0
  179. package/dist/v2/components/forms/select/index.d.ts.map +1 -0
  180. package/dist/v2/components/forms/select/index.js +7 -0
  181. package/dist/v2/components/forms/select/index.js.map +1 -0
  182. package/dist/v2/components/forms/shared/downArrow.d.ts +2 -0
  183. package/dist/v2/components/forms/shared/downArrow.d.ts.map +1 -0
  184. package/dist/v2/components/forms/shared/downArrow.js +10 -0
  185. package/dist/v2/components/forms/shared/downArrow.js.map +1 -0
  186. package/dist/v2/components/forms/shared/keyboard.d.ts +7 -0
  187. package/dist/v2/components/forms/shared/keyboard.d.ts.map +1 -0
  188. package/dist/v2/components/forms/shared/keyboard.js +56 -0
  189. package/dist/v2/components/forms/shared/keyboard.js.map +1 -0
  190. package/dist/v2/components/forms/shared/listboxStyles.d.ts +2 -0
  191. package/dist/v2/components/forms/shared/listboxStyles.d.ts.map +1 -0
  192. package/dist/v2/components/forms/shared/listboxStyles.js +96 -0
  193. package/dist/v2/components/forms/shared/listboxStyles.js.map +1 -0
  194. package/dist/v2/components/forms/shared/listboxTemplate.d.ts +11 -0
  195. package/dist/v2/components/forms/shared/listboxTemplate.d.ts.map +1 -0
  196. package/dist/v2/components/forms/shared/listboxTemplate.js +37 -0
  197. package/dist/v2/components/forms/shared/listboxTemplate.js.map +1 -0
  198. package/dist/v2/components/forms/shared/optionTypes.d.ts +6 -0
  199. package/dist/v2/components/forms/shared/optionTypes.d.ts.map +1 -0
  200. package/dist/v2/components/forms/shared/optionTypes.js +2 -0
  201. package/dist/v2/components/forms/shared/optionTypes.js.map +1 -0
  202. package/dist/v2/components/layout/footer/Footer.d.ts +60 -0
  203. package/dist/v2/components/layout/footer/Footer.d.ts.map +1 -0
  204. package/dist/v2/components/layout/footer/Footer.js +148 -0
  205. package/dist/v2/components/layout/footer/Footer.js.map +1 -0
  206. package/dist/v2/components/layout/footer/Footer.test.d.ts +2 -0
  207. package/dist/v2/components/layout/footer/Footer.test.d.ts.map +1 -0
  208. package/dist/v2/components/layout/footer/Footer.test.js +53 -0
  209. package/dist/v2/components/layout/footer/Footer.test.js.map +1 -0
  210. package/dist/v2/components/layout/footer/index.d.ts +3 -0
  211. package/dist/v2/components/layout/footer/index.d.ts.map +1 -0
  212. package/dist/v2/components/layout/footer/index.js +7 -0
  213. package/dist/v2/components/layout/footer/index.js.map +1 -0
  214. package/dist/v2/components/layout/header/Header.d.ts +155 -0
  215. package/dist/v2/components/layout/header/Header.d.ts.map +1 -0
  216. package/dist/v2/components/layout/header/Header.js +845 -0
  217. package/dist/v2/components/layout/header/Header.js.map +1 -0
  218. package/dist/v2/components/layout/header/header.test.d.ts +2 -0
  219. package/dist/v2/components/layout/header/header.test.d.ts.map +1 -0
  220. package/dist/v2/components/layout/header/header.test.js +242 -0
  221. package/dist/v2/components/layout/header/header.test.js.map +1 -0
  222. package/dist/v2/components/layout/header/index.d.ts +4 -0
  223. package/dist/v2/components/layout/header/index.d.ts.map +1 -0
  224. package/dist/v2/components/layout/header/index.js +7 -0
  225. package/dist/v2/components/layout/header/index.js.map +1 -0
  226. package/dist/v2/components/media/photoCapture/PhotoCapture.d.ts +200 -0
  227. package/dist/v2/components/media/photoCapture/PhotoCapture.d.ts.map +1 -0
  228. package/dist/v2/components/media/photoCapture/PhotoCapture.js +723 -0
  229. package/dist/v2/components/media/photoCapture/PhotoCapture.js.map +1 -0
  230. package/dist/v2/components/media/photoCapture/PhotoCapture.test.d.ts +2 -0
  231. package/dist/v2/components/media/photoCapture/PhotoCapture.test.d.ts.map +1 -0
  232. package/dist/v2/components/media/photoCapture/PhotoCapture.test.js +157 -0
  233. package/dist/v2/components/media/photoCapture/PhotoCapture.test.js.map +1 -0
  234. package/dist/v2/components/media/photoCapture/index.d.ts +3 -0
  235. package/dist/v2/components/media/photoCapture/index.d.ts.map +1 -0
  236. package/dist/v2/components/media/photoCapture/index.js +7 -0
  237. package/dist/v2/components/media/photoCapture/index.js.map +1 -0
  238. package/dist/versionInfo.js +15 -15
  239. package/dist/widgets/buttons.d.ts +10 -3
  240. package/dist/widgets/buttons.d.ts.map +1 -1
  241. package/dist/widgets/buttons.js +81 -7
  242. package/dist/widgets/buttons.js.map +1 -1
  243. package/package.json +139 -46
@@ -0,0 +1,539 @@
1
+ import { LitElement, html, css } from 'lit';
2
+ import { authSession, authn, getSuggestedIssuers, offlineTestID, solidLogicSingleton } from 'solid-logic';
3
+ import { phoneIcon as downArrowIcon } from './downArrow';
4
+ export class LoginButton extends LitElement {
5
+ constructor() {
6
+ super();
7
+ this._issuerInputId = `issuer-url-input-${Math.random().toString(36).slice(2, 10)}`;
8
+ this._errorMsg = '';
9
+ this.label = 'Log In';
10
+ this.theme = 'light';
11
+ this.issuerUrl = '';
12
+ this.icon = '';
13
+ this.layout = 'desktop';
14
+ this._popupOpen = false;
15
+ this._issuerInputValue = '';
16
+ this._dropdownOpen = false;
17
+ }
18
+ connectedCallback() {
19
+ super.connectedCallback();
20
+ }
21
+ disconnectedCallback() {
22
+ super.disconnectedCallback();
23
+ }
24
+ _openPopup() {
25
+ const offline = offlineTestID();
26
+ if (offline) {
27
+ this._loginComplete(offline.uri);
28
+ return;
29
+ }
30
+ this._issuerInputValue = (typeof localStorage !== 'undefined' && localStorage.getItem('loginIssuer')) || this.issuerUrl || '';
31
+ this._errorMsg = '';
32
+ this._popupOpen = true;
33
+ }
34
+ _closePopup() {
35
+ this._popupOpen = false;
36
+ }
37
+ updated() {
38
+ var _a;
39
+ const dialog = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('dialog');
40
+ if (!dialog)
41
+ return;
42
+ if (this._popupOpen && !dialog.open) {
43
+ dialog.showModal();
44
+ }
45
+ else if (!this._popupOpen && dialog.open) {
46
+ dialog.close();
47
+ }
48
+ }
49
+ async _loginToIssuer(issuerUri) {
50
+ if (!issuerUri)
51
+ return;
52
+ try {
53
+ // clear authorization metadata from store
54
+ ;
55
+ solidLogicSingleton.store.updater.flagAuthorizationMetadata();
56
+ const preLoginRedirectHash = new URL(window.location.href).hash;
57
+ if (preLoginRedirectHash) {
58
+ window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash);
59
+ }
60
+ window.localStorage.setItem('loginIssuer', issuerUri);
61
+ const locationUrl = new URL(window.location.href);
62
+ locationUrl.hash = '';
63
+ await authSession.login({
64
+ redirectUrl: locationUrl.href,
65
+ oidcIssuer: issuerUri
66
+ });
67
+ }
68
+ catch (err) {
69
+ this._errorMsg = err.message || String(err);
70
+ this.requestUpdate();
71
+ }
72
+ }
73
+ _loginComplete(webIdUri) {
74
+ authn.saveUser(webIdUri);
75
+ this.dispatchEvent(new CustomEvent('login-success', {
76
+ detail: { webId: webIdUri },
77
+ bubbles: true,
78
+ composed: true
79
+ }));
80
+ }
81
+ _handleGoClick() {
82
+ this._dropdownOpen = false;
83
+ this._loginToIssuer(this._issuerInputValue);
84
+ }
85
+ _toggleDropdown() {
86
+ this._dropdownOpen = !this._dropdownOpen;
87
+ }
88
+ _selectIssuerFromDropdown(uri) {
89
+ this._issuerInputValue = uri;
90
+ this._dropdownOpen = false;
91
+ }
92
+ _handleInputChange(e) {
93
+ this._issuerInputValue = e.target.value;
94
+ }
95
+ _handleInputKeydown(e) {
96
+ if (e.key === 'Enter') {
97
+ this._loginToIssuer(this._issuerInputValue);
98
+ }
99
+ if (e.key === 'Escape') {
100
+ this._closePopup();
101
+ }
102
+ }
103
+ _renderPopup() {
104
+ const suggestedIssuers = getSuggestedIssuers();
105
+ return html `
106
+ <div class="popup-box">
107
+ <div class="popup-top-menu">
108
+ <span class="popup-title">Select an identity provider</span>
109
+ <button class="popup-close" type="button" aria-label="Close" @click="${() => this._closePopup()}">&#x2715;</button>
110
+ </div>
111
+
112
+ <div class="issuer-text-section">
113
+ <label class="issuer-text-label" for="${this._issuerInputId}">Solid Identity Provider</label>
114
+ <div class="issuer-text-row">
115
+ <div class="issuer-input-wrapper">
116
+ <div class="issuer-input-field-row">
117
+ <input
118
+ id="${this._issuerInputId}"
119
+ class="issuer-text-input"
120
+ type="text"
121
+ placeholder="https://example.com"
122
+ .value="${this._issuerInputValue}"
123
+ @input="${this._handleInputChange}"
124
+ @keydown="${this._handleInputKeydown}"
125
+ autocomplete="url"
126
+ />
127
+ ${suggestedIssuers.length
128
+ ? html `
129
+ <button
130
+ class="issuer-dropdown-toggle"
131
+ type="button"
132
+ aria-label="Show identity provider suggestions"
133
+ aria-expanded="${this._dropdownOpen}"
134
+ @click="${() => this._toggleDropdown()}"
135
+ >${downArrowIcon}</button>
136
+ `
137
+ : ''}
138
+ </div>
139
+ ${this._dropdownOpen && suggestedIssuers.length
140
+ ? html `
141
+ <div class="issuer-dropdown-list" role="listbox">
142
+ ${suggestedIssuers.map(issuerInfo => html `
143
+ <button
144
+ class="issuer-dropdown-item"
145
+ type="button"
146
+ role="option"
147
+ @click="${() => this._selectIssuerFromDropdown(issuerInfo.uri)}"
148
+ >${issuerInfo.name}</button>
149
+ `)}
150
+ </div>
151
+ `
152
+ : ''}
153
+ </div>
154
+ </div>
155
+ ${this._errorMsg ? html `<div class="error-msg">${this._errorMsg}</div>` : ''}
156
+ </div>
157
+ <hr class="popup-footer-hr" />
158
+ <div class="popup-footer">
159
+ <button class="popup-cancel-button" type="button" @click="${() => this._closePopup()}">Cancel</button>
160
+ <button
161
+ class="popup-login-button"
162
+ type="button"
163
+ ?disabled="${!this._issuerInputValue}"
164
+ @click="${() => this._handleGoClick()}"
165
+ >Log In</button>
166
+ </div>
167
+ </div>
168
+ `;
169
+ }
170
+ render() {
171
+ return html `
172
+ <button
173
+ class="login-button"
174
+ type="button"
175
+ part="login-button"
176
+ @click="${() => this._openPopup()}"
177
+ >
178
+ ${this.icon ? html `<img class="login-button-icon" src="${this.icon}" alt="" aria-hidden="true" part="login-button-icon" />` : ''}
179
+ <slot>${this.label}</slot>
180
+ </button>
181
+
182
+ <dialog
183
+ class="popup-dialog"
184
+ role="dialog"
185
+ aria-modal="true"
186
+ aria-label="Select an identity provider"
187
+ @cancel="${(e) => { e.preventDefault(); this._closePopup(); }}"
188
+ @click="${(e) => { if (e.target === e.currentTarget)
189
+ this._closePopup(); }}"
190
+ >
191
+ ${this._popupOpen ? this._renderPopup() : ''}
192
+ </dialog>
193
+ `;
194
+ }
195
+ }
196
+ LoginButton.properties = {
197
+ label: { type: String, reflect: true },
198
+ theme: { type: String, reflect: true },
199
+ issuerUrl: { type: String, attribute: 'issuer-url', reflect: true },
200
+ icon: { type: String, reflect: true },
201
+ layout: { type: String, reflect: true },
202
+ _popupOpen: { state: true },
203
+ _issuerInputValue: { state: true },
204
+ _dropdownOpen: { state: true }
205
+ };
206
+ LoginButton.styles = css `
207
+ :host { /* default theme */
208
+ display: inline-block;
209
+ position: relative;
210
+ z-index: 400;
211
+ --login-button-background: var(--lavender-900, #7c4cff);
212
+ --login-button-text: var(--color-header-text, #ffffff);
213
+ --popup-background: var(--color-background, #F8F9FB);
214
+ --popup-text: var(--color-text, #1A1A1A);
215
+ --popup-border: var(--color-border, #E5E7EB);
216
+ --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));
217
+ --popup-overlay-background: rgba(0, 0, 0, 0.6);
218
+ --issuer-input-background: var(--color-background, #F8F9FB);
219
+ --issuer-input-text: var(--color-text, #1A1A1A);
220
+ --issuer-input-border: var(--color-text, #1A1A1A);
221
+ --issuer-button-background: var(--color-background, #F8F9FB);
222
+ --issuer-button-text: var(--color-text, #1A1A1A);
223
+ --issuer-button-border: var(--color-border, #E5E7EB);
224
+ --issuer-button-hover-background: var(--lavender-900, #7c4cff);
225
+ --issuer-label-color: var(--grey-purple-700, #1A1A1A);
226
+ --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;
227
+ --error-text-color: var(--color-error, #B00020);
228
+ }
229
+
230
+ :host([theme='dark']) {
231
+ display: inline-block;
232
+ position: relative;
233
+ z-index: 900;
234
+ --login-button-background: var(--lavender-900, #7c4cff);
235
+ --login-button-text: var(--color-header-text, #ffffff);
236
+ --popup-background: var(--color-background, #F8F9FB);
237
+ --popup-text: var(--color-text, #1A1A1A);
238
+ --popup-border: var(--color-border, #E5E7EB);
239
+ --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));
240
+ --popup-overlay-background: rgba(0, 0, 0, 0.6);
241
+ --issuer-input-background: var(--color-background, #F8F9FB);
242
+ --issuer-input-text: var(--color-text, #1A1A1A);
243
+ --issuer-input-border: var(--color-text, #1A1A1A);
244
+ --issuer-button-background: var(--color-background, #F8F9FB);
245
+ --issuer-button-text: var(--color-text, #1A1A1A);
246
+ --issuer-button-border: var(--color-text, #1A1A1A);
247
+ --issuer-button-hover-background: var(--lavender-900, #7c4cff);
248
+ --issuer-label-color: var(--grey-purple-700, #1A1A1A);
249
+ --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;
250
+ --error-text-color: var(--color-error, #B00020);
251
+ }
252
+
253
+ .login-button {
254
+ display: flex;
255
+ height: 35px;
256
+ padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);
257
+ align-items: center;
258
+ gap: var(--spacing-xxs, 0.3125rem);
259
+ border-radius: var(--border-radius-base, 0.3125rem);
260
+ background: var(--login-button-background);
261
+ border: none;
262
+ color: var(--login-button-text);
263
+ cursor: pointer;
264
+ font: inherit;
265
+ line-height: 1;
266
+ white-space: nowrap;
267
+ text-decoration: none;
268
+ box-sizing: border-box;
269
+ transition: transform 0.2s ease;
270
+ }
271
+
272
+ .login-button-icon {
273
+ width: 16px;
274
+ height: 16px;
275
+ display: inline-block;
276
+ object-fit: contain;
277
+ }
278
+
279
+ .login-button:active {
280
+ transform: translateY(1px);
281
+ }
282
+
283
+ .popup-dialog {
284
+ border: none;
285
+ padding: 0;
286
+ background: transparent;
287
+ outline: none;
288
+ overflow: visible;
289
+ width: min(30rem, calc(100vw - 2rem));
290
+ max-width: calc(100vw - 2rem);
291
+ max-height: calc(100dvh - 2rem);
292
+ }
293
+
294
+ .popup-dialog::backdrop {
295
+ background: var(--popup-overlay-background, rgba(0, 0, 0, 0.6));
296
+ }
297
+
298
+ .popup-box {
299
+ background: var(--popup-background);
300
+ color: var(--popup-text);
301
+ box-shadow: var(--popup-shadow);
302
+ border: 1px solid var(--popup-border);
303
+ border-radius: var(--border-radius-md, 0.5rem);
304
+ width: min(30rem, calc(100vw - 2rem));
305
+ min-width: min(30rem, calc(100vw - 2rem));
306
+ max-width: calc(100vw - 2rem);
307
+ max-height: calc(100dvh - 2rem);
308
+ overflow: auto;
309
+ z-index: 1001;
310
+ }
311
+
312
+ .popup-top-menu {
313
+ border-bottom: 1px solid #DDD;
314
+ display: flex;
315
+ flex-direction: row;
316
+ align-items: center;
317
+ justify-content: space-between;
318
+ padding-bottom: 8px;
319
+ margin-bottom: 8px;
320
+ padding: 1rem;
321
+ background: var(--gray-200, #E5E7EB);
322
+ }
323
+
324
+ .popup-title {
325
+ font-weight: 800;
326
+ }
327
+
328
+ .popup-close {
329
+ background: transparent;
330
+ border: none;
331
+ cursor: pointer;
332
+ font-size: 1.25rem;
333
+ line-height: 1;
334
+ padding: 0 0.25rem;
335
+ }
336
+
337
+ .issuer-text-section {
338
+ display: flex;
339
+ flex-direction: column;
340
+ padding: 1rem 1rem 1.75rem;
341
+ }
342
+
343
+ .issuer-text-label {
344
+ color: var(--issuer-label-color);
345
+ margin-bottom: 6px;
346
+ }
347
+
348
+ .issuer-text-row {
349
+ display: flex;
350
+ flex-direction: row;
351
+ gap: 6px;
352
+ align-items: flex-start;
353
+ }
354
+
355
+ .issuer-input-wrapper {
356
+ flex: 1;
357
+ display: flex;
358
+ flex-direction: column;
359
+ min-width: 0;
360
+ position: relative;
361
+ }
362
+
363
+ .issuer-input-field-row {
364
+ display: flex;
365
+ flex-direction: row;
366
+ position: relative;
367
+ }
368
+
369
+ .issuer-text-input {
370
+ flex: 1;
371
+ padding: 0.375rem 2.75rem 0.375rem 0.5rem;
372
+ border: 1px solid var(--issuer-input-border);
373
+ border-radius: var(--border-radius-base, 0.3125rem);
374
+ background: var(--issuer-input-background);
375
+ color: var(--issuer-input-text);
376
+ font: inherit;
377
+ min-width: 0;
378
+ }
379
+
380
+ .issuer-text-input::placeholder {
381
+ color: var(--issuer-placeholder-color);
382
+ }
383
+
384
+ .issuer-dropdown-toggle {
385
+ position: absolute;
386
+ right: 6px;
387
+ top: 50%;
388
+ transform: translateY(-50%);
389
+ width: 26px;
390
+ height: 26px;
391
+ padding: 0;
392
+ border: none;
393
+ background: transparent;
394
+ cursor: pointer;
395
+ display: flex;
396
+ align-items: center;
397
+ justify-content: center;
398
+ flex-shrink: 0;
399
+ border-radius: var(--border-radius-base, 0.3125rem);
400
+ }
401
+
402
+ .issuer-dropdown-toggle:hover {
403
+ background: var(--color-header-menu-item-hover, #e6dcff);
404
+ }
405
+
406
+ .issuer-dropdown-toggle svg {
407
+ width: 14px;
408
+ height: 14px;
409
+ display: block;
410
+ }
411
+
412
+ .issuer-dropdown-list {
413
+ position: absolute;
414
+ top: calc(100% + 6px);
415
+ left: 0;
416
+ right: 0;
417
+ border: 1px solid var(--color-border, #E5E7EB);
418
+ border-top: none;
419
+ border-radius: 0 0 var(--border-radius-base, 0.3125rem) var(--border-radius-base, 0.3125rem);
420
+ background: var(--issuer-input-background);
421
+ overflow: visible;
422
+ z-index: 10;
423
+ box-shadow: 0 4px 12px rgba(124, 77, 255, 0.12);
424
+ }
425
+
426
+ .issuer-dropdown-item {
427
+ display: block;
428
+ width: 100%;
429
+ padding: 0.625rem 0.75rem;
430
+ border: none;
431
+ border-bottom: 1px solid var(--color-border, #E5E7EB);
432
+ background: transparent;
433
+ color: var(--issuer-button-text);
434
+ cursor: pointer;
435
+ font: inherit;
436
+ text-align: left;
437
+ box-sizing: border-box;
438
+ }
439
+
440
+ .issuer-dropdown-item:last-child {
441
+ border-bottom: none;
442
+ }
443
+
444
+ .issuer-dropdown-item:hover {
445
+ background: var(--color-header-menu-item-hover, #e6dcff);
446
+ border-radius: var(--border-radius-base-md, 0.5rem);
447
+ }
448
+
449
+ .popup-footer {
450
+ display: flex;
451
+ flex-direction: row;
452
+ justify-content: center;
453
+ gap: 8px;
454
+ padding: 0.75rem 1rem 1rem;
455
+ }
456
+
457
+ .popup-footer-hr {
458
+ margin: 0;
459
+ border: none;
460
+ border-top: 1px solid var(--popup-border, #E5E7EB);
461
+ }
462
+
463
+ .popup-cancel-button {
464
+ padding: 0.5rem 1.25rem;
465
+ border: 1px solid #C0BFC7;
466
+ border-radius: var(--border-radius-base, 0.3125rem);
467
+ background: var(--popup-background);
468
+ color: #314158;
469
+ cursor: pointer;
470
+ font: inherit;
471
+ }
472
+
473
+ .popup-cancel-button:hover {
474
+ background: #D1D5DB;
475
+ }
476
+
477
+ .popup-login-button {
478
+ padding: 0.5rem 1.25rem;
479
+ border: none;
480
+ border-radius: var(--border-radius-base, 0.3125rem);
481
+ background: var(--lavender-900, #7c4cff);
482
+ color: #ffffff;
483
+ cursor: pointer;
484
+ font: inherit;
485
+ }
486
+
487
+ .popup-login-button:hover {
488
+ background: #6a3de8;
489
+ }
490
+
491
+ .popup-login-button:disabled {
492
+ opacity: 0.5;
493
+ cursor: not-allowed;
494
+ }
495
+
496
+ .error-msg {
497
+ color: var(--error-text-color);
498
+ font-size: 0.875rem;
499
+ margin-top: 8px;
500
+ }
501
+
502
+ @media (max-width: 40rem) {
503
+ .popup-dialog {
504
+ width: calc(100vw - 1rem);
505
+ max-width: calc(100vw - 1rem);
506
+ max-height: calc(100dvh - 1rem);
507
+ }
508
+
509
+ .popup-box {
510
+ width: calc(100vw - 1rem);
511
+ min-width: 0;
512
+ max-width: calc(100vw - 1rem);
513
+ max-height: calc(100dvh - 1rem);
514
+ border-radius: var(--border-radius-base, 0.3125rem);
515
+ }
516
+
517
+ .popup-top-menu,
518
+ .issuer-text-section,
519
+ .popup-footer {
520
+ padding-left: 0.75rem;
521
+ padding-right: 0.75rem;
522
+ }
523
+
524
+ .popup-footer {
525
+ flex-wrap: wrap;
526
+ gap: 0.625rem;
527
+ }
528
+
529
+ .popup-footer > button {
530
+ flex: 1 1 100%;
531
+ }
532
+
533
+ .issuer-text-row,
534
+ .issuer-input-field-row {
535
+ width: 100%;
536
+ }
537
+ }
538
+ `;
539
+ //# sourceMappingURL=LoginButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginButton.js","sourceRoot":"","sources":["../../../../../src/v2/components/auth/loginButton/LoginButton.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import './index';
2
+ //# sourceMappingURL=LoginButton.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginButton.test.d.ts","sourceRoot":"","sources":["../../../../../src/v2/components/auth/loginButton/LoginButton.test.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,CAAA"}
@@ -0,0 +1,53 @@
1
+ import { LoginButton } from './LoginButton';
2
+ import './index';
3
+ jest.mock('solid-logic', () => ({
4
+ authSession: { login: jest.fn() },
5
+ authn: { saveUser: jest.fn() },
6
+ getSuggestedIssuers: jest.fn(() => []),
7
+ offlineTestID: jest.fn(() => false),
8
+ solidLogicSingleton: { store: { updater: { flagAuthorizationMetadata: jest.fn() } } }
9
+ }));
10
+ describe('SolidUILoginButton', () => {
11
+ beforeEach(() => {
12
+ document.body.innerHTML = '';
13
+ Object.defineProperty(window, 'open', {
14
+ configurable: true,
15
+ writable: true,
16
+ value: jest.fn()
17
+ });
18
+ HTMLDialogElement.prototype.showModal = jest.fn();
19
+ HTMLDialogElement.prototype.close = jest.fn();
20
+ localStorage.clear();
21
+ });
22
+ it('is defined as a custom element', () => {
23
+ expect(customElements.get('solid-ui-login-button')).toBe(LoginButton);
24
+ });
25
+ it('renders the login button and opens a popup with an associated label and input', async () => {
26
+ var _a, _b, _c, _d;
27
+ const loginButton = new LoginButton();
28
+ document.body.appendChild(loginButton);
29
+ await loginButton.updateComplete;
30
+ const button = (_a = loginButton.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('button.login-button');
31
+ expect(button).not.toBeNull();
32
+ expect((_b = button.textContent) === null || _b === void 0 ? void 0 : _b.trim()).toBe('Log In');
33
+ button.click();
34
+ await loginButton.updateComplete;
35
+ const label = (_c = loginButton.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('label.issuer-text-label');
36
+ const input = (_d = loginButton.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('input.issuer-text-input');
37
+ expect(label).not.toBeNull();
38
+ expect(input).not.toBeNull();
39
+ expect(label === null || label === void 0 ? void 0 : label.getAttribute('for')).toBe(input === null || input === void 0 ? void 0 : input.id);
40
+ expect(input === null || input === void 0 ? void 0 : input.id).toBeTruthy();
41
+ });
42
+ it('renders an icon when the icon property is set', async () => {
43
+ var _a;
44
+ const loginButton = new LoginButton();
45
+ loginButton.icon = 'https://example.com/login-icon.svg';
46
+ document.body.appendChild(loginButton);
47
+ await loginButton.updateComplete;
48
+ const icon = (_a = loginButton.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('img.login-button-icon');
49
+ expect(icon).not.toBeNull();
50
+ expect(icon.src).toContain('https://example.com/login-icon.svg');
51
+ });
52
+ });
53
+ //# sourceMappingURL=LoginButton.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginButton.test.js","sourceRoot":"","sources":["../../../../../src/v2/components/auth/loginButton/LoginButton.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const phoneIcon: import("lit-html").TemplateResult<1>;
2
+ //# sourceMappingURL=downArrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downArrow.d.ts","sourceRoot":"","sources":["../../../../../src/v2/components/auth/loginButton/downArrow.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,sCAOrB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { html } from 'lit-html';
2
+ export const phoneIcon = html `
3
+ <svg xmlns="http://www.w3.org/2000/svg"
4
+ viewBox="0 0 12 7"
5
+ fill="none"
6
+ >
7
+ <path d="M0.679688 0.678955L5.50729 5.50656L10.3349 0.678955" stroke="#6A7282" stroke-width="1.35776" stroke-linecap="round" stroke-linejoin="round"/>
8
+ </svg>
9
+ `;
10
+ //# sourceMappingURL=downArrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downArrow.js","sourceRoot":"","sources":["../../../../../src/v2/components/auth/loginButton/downArrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAA;;;;;;;CAO5B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { LoginButton } from './LoginButton';
2
+ export { LoginButton };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/v2/components/auth/loginButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { LoginButton } from './LoginButton';
2
+ export { LoginButton };
3
+ const LOGIN_BUTTON_TAG_NAME = 'solid-ui-login-button';
4
+ if (!customElements.get(LOGIN_BUTTON_TAG_NAME)) {
5
+ customElements.define(LOGIN_BUTTON_TAG_NAME, LoginButton);
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/v2/components/auth/loginButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AAErD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC/C,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAA;AAC3D,CAAC"}