@api-client/ui 0.0.3 → 0.0.5

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 (595) hide show
  1. package/demo/amf/api-annotation.html +1 -0
  2. package/demo/amf/api-channel.html +1 -0
  3. package/demo/amf/api-console.html +1 -0
  4. package/demo/amf/api-documentation-document.html +1 -0
  5. package/demo/amf/api-documentation.html +1 -0
  6. package/demo/amf/api-editor.html +1 -0
  7. package/demo/amf/api-navigation.html +1 -0
  8. package/demo/amf/api-operation.html +1 -0
  9. package/demo/amf/api-payload.html +1 -0
  10. package/demo/amf/api-request.html +1 -0
  11. package/demo/amf/api-resource.html +1 -0
  12. package/demo/amf/api-schema-documentation.html +1 -0
  13. package/demo/amf/api-security-documentation.html +1 -0
  14. package/demo/amf/api-server-picker.html +1 -0
  15. package/demo/amf/api-summary.html +1 -0
  16. package/demo/amf/bare-components.html +2 -0
  17. package/demo/amf/index.html +2 -0
  18. package/demo/amf/oauth-authorize.html +2 -0
  19. package/demo/amf/request-editor.html +1 -0
  20. package/demo/elements/authorization/api-key.html +1 -0
  21. package/demo/elements/authorization/basic.html +1 -0
  22. package/demo/elements/authorization/bearer.html +1 -0
  23. package/demo/elements/authorization/cc.html +1 -0
  24. package/demo/elements/authorization/index.html +2 -0
  25. package/demo/elements/authorization/ntlm.html +1 -0
  26. package/demo/elements/authorization/oauth-error.html +2 -0
  27. package/demo/elements/authorization/oauth-popup.html +2 -0
  28. package/demo/elements/authorization/oauth2.html +1 -0
  29. package/demo/elements/authorization/oidc.html +1 -0
  30. package/demo/elements/authorization/redirect.html +3 -1
  31. package/demo/elements/context-menu/basic.html +2 -1
  32. package/demo/elements/context-menu/custom-data.html +2 -1
  33. package/demo/elements/context-menu/enabled-state.html +2 -1
  34. package/demo/elements/context-menu/icons.html +2 -1
  35. package/demo/elements/context-menu/index.html +2 -0
  36. package/demo/elements/context-menu/nested.html +2 -1
  37. package/demo/elements/context-menu/no-execute.html +2 -1
  38. package/demo/elements/context-menu/radio-menu.html +2 -1
  39. package/demo/elements/context-menu/separators.html +2 -1
  40. package/demo/elements/environment/environment-editor.html +1 -0
  41. package/demo/elements/environment/index.html +1 -0
  42. package/demo/elements/environment/server-editor.html +1 -1
  43. package/demo/elements/environment/variables-editor.html +1 -1
  44. package/demo/elements/har/har-viewer.html +1 -0
  45. package/demo/elements/highlight/index.html +1 -0
  46. package/demo/elements/highlight/marked-highlight.html +1 -0
  47. package/demo/elements/highlight/prism-highlight.html +1 -0
  48. package/demo/elements/http/body-editor.html +1 -0
  49. package/demo/elements/http/headers.html +1 -0
  50. package/demo/elements/http/http-assertions.html +1 -0
  51. package/demo/elements/http/request-editor.html +1 -0
  52. package/demo/elements/http/request-log.html +1 -0
  53. package/demo/elements/http/url-editing.html +1 -0
  54. package/demo/elements/icons/index.html +1 -0
  55. package/demo/elements/project/project-run-report.html +1 -0
  56. package/demo/elements/project/request-editor.html +1 -0
  57. package/demo/elements/ui/buttons/api-button.html +2 -1
  58. package/demo/elements/ui/buttons/api-icon-button.html +2 -1
  59. package/demo/elements/ui/buttons/segmented-buttons.html +2 -1
  60. package/demo/elements/ui/chip/api-chip.html +2 -1
  61. package/demo/elements/ui/collapse/ui-collapse.html +2 -1
  62. package/demo/elements/ui/dialog/ui-dialog.html +2 -1
  63. package/demo/elements/ui/inputs/api-checkbox.html +2 -1
  64. package/demo/elements/ui/inputs/api-input.html +2 -1
  65. package/demo/elements/ui/inputs/api-radio.html +2 -1
  66. package/demo/elements/ui/inputs/api-switch.html +2 -1
  67. package/demo/elements/ui/list/dropdown-list.html +2 -1
  68. package/demo/elements/ui/list/list.html +2 -1
  69. package/demo/elements/ui/notification/snack.html +2 -1
  70. package/demo/elements/ui/progress/ui-progress.html +2 -1
  71. package/demo/elements/ui/tabs/tabs.html +2 -1
  72. package/dist/amf/lib/AmfParameters.js +0 -4
  73. package/dist/amf/lib/AmfParameters.js.map +1 -1
  74. package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
  75. package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
  76. package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
  77. package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
  78. package/dist/amf/store/AmfGraphStore.js +0 -2
  79. package/dist/amf/store/AmfGraphStore.js.map +1 -1
  80. package/dist/amf/store/AmfStore.js +0 -7
  81. package/dist/amf/store/AmfStore.js.map +1 -1
  82. package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
  83. package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
  84. package/dist/bindings/base/PlatformBindings.js +6 -10
  85. package/dist/bindings/base/PlatformBindings.js.map +1 -1
  86. package/dist/bindings/base/ProxyBindings.js +9 -6
  87. package/dist/bindings/base/ProxyBindings.js.map +1 -1
  88. package/dist/bindings/base/SharedWorkerThread.js +4 -1
  89. package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
  90. package/dist/bindings/base/StoreBindings.js +162 -170
  91. package/dist/bindings/base/StoreBindings.js.map +1 -1
  92. package/dist/bindings/web/WebConfigurationBindings.js +22 -24
  93. package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
  94. package/dist/bindings/web/WebFileBindings.js +7 -4
  95. package/dist/bindings/web/WebFileBindings.js.map +1 -1
  96. package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
  97. package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
  98. package/dist/bindings/web/WebNavigationBindings.js +4 -1
  99. package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
  100. package/dist/bindings/web/WebProxyBindings.js +5 -6
  101. package/dist/bindings/web/WebProxyBindings.js.map +1 -1
  102. package/dist/bindings/web/WebStoreBindings.js +39 -44
  103. package/dist/bindings/web/WebStoreBindings.js.map +1 -1
  104. package/dist/contextual-menu/ContextualMenu.js +10 -19
  105. package/dist/contextual-menu/ContextualMenu.js.map +1 -1
  106. package/dist/contextual-menu/ContextualMenuElement.js +4 -32
  107. package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
  108. package/dist/contextual-menu/MenuItem.js +0 -12
  109. package/dist/contextual-menu/MenuItem.js.map +1 -1
  110. package/dist/define/amf/api-annotation-document.js +1 -1
  111. package/dist/define/amf/api-annotation-document.js.map +1 -1
  112. package/dist/define/amf/api-authorization-editor.js +1 -1
  113. package/dist/define/amf/api-authorization-editor.js.map +1 -1
  114. package/dist/define/amf/api-channel-document.js +1 -1
  115. package/dist/define/amf/api-channel-document.js.map +1 -1
  116. package/dist/define/amf/api-documentation-document.js +1 -1
  117. package/dist/define/amf/api-documentation-document.js.map +1 -1
  118. package/dist/define/amf/api-documentation.js +1 -1
  119. package/dist/define/amf/api-documentation.js.map +1 -1
  120. package/dist/define/amf/api-navigation.js +1 -1
  121. package/dist/define/amf/api-navigation.js.map +1 -1
  122. package/dist/define/amf/api-operation-document.js +1 -1
  123. package/dist/define/amf/api-operation-document.js.map +1 -1
  124. package/dist/define/amf/api-parameter-document.js +1 -1
  125. package/dist/define/amf/api-parameter-document.js.map +1 -1
  126. package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
  127. package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
  128. package/dist/define/amf/api-payload-document.js +1 -1
  129. package/dist/define/amf/api-payload-document.js.map +1 -1
  130. package/dist/define/amf/api-request-document.js +1 -1
  131. package/dist/define/amf/api-request-document.js.map +1 -1
  132. package/dist/define/amf/api-request-editor.js +1 -1
  133. package/dist/define/amf/api-request-editor.js.map +1 -1
  134. package/dist/define/amf/api-request.js +1 -1
  135. package/dist/define/amf/api-request.js.map +1 -1
  136. package/dist/define/amf/api-resource-document.js +1 -1
  137. package/dist/define/amf/api-resource-document.js.map +1 -1
  138. package/dist/define/amf/api-response-document.js +1 -1
  139. package/dist/define/amf/api-response-document.js.map +1 -1
  140. package/dist/define/amf/api-schema-document.js +1 -1
  141. package/dist/define/amf/api-schema-document.js.map +1 -1
  142. package/dist/define/amf/api-security-document.js +1 -1
  143. package/dist/define/amf/api-security-document.js.map +1 -1
  144. package/dist/define/amf/api-security-requirement-document.js +1 -1
  145. package/dist/define/amf/api-security-requirement-document.js.map +1 -1
  146. package/dist/define/amf/api-server-picker.js +1 -1
  147. package/dist/define/amf/api-server-picker.js.map +1 -1
  148. package/dist/define/amf/api-summary.js +1 -1
  149. package/dist/define/amf/api-summary.js.map +1 -1
  150. package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
  151. package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
  152. package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
  153. package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
  154. package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
  155. package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
  156. package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
  157. package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
  158. package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
  159. package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
  160. package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
  161. package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
  162. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
  163. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
  164. package/dist/define/authorization/apikey-authorization.js +1 -1
  165. package/dist/define/authorization/apikey-authorization.js.map +1 -1
  166. package/dist/define/authorization/basic-authorization.js +1 -1
  167. package/dist/define/authorization/basic-authorization.js.map +1 -1
  168. package/dist/define/authorization/bearer-authorization.js +1 -1
  169. package/dist/define/authorization/bearer-authorization.js.map +1 -1
  170. package/dist/define/authorization/cc-authorization.js +1 -1
  171. package/dist/define/authorization/cc-authorization.js.map +1 -1
  172. package/dist/define/authorization/ntlm-authorization.js +1 -1
  173. package/dist/define/authorization/ntlm-authorization.js.map +1 -1
  174. package/dist/define/authorization/oauth2-authorization.js +1 -1
  175. package/dist/define/authorization/oauth2-authorization.js.map +1 -1
  176. package/dist/define/authorization/oidc-authorization.js +1 -1
  177. package/dist/define/authorization/oidc-authorization.js.map +1 -1
  178. package/dist/define/contextual-menu/contextual-menu.js +1 -1
  179. package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
  180. package/dist/define/dialog/confirm-delete-dialog.js +1 -1
  181. package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
  182. package/dist/define/dialog/rename-dialog.js +1 -1
  183. package/dist/define/dialog/rename-dialog.js.map +1 -1
  184. package/dist/define/files/share-file.js +1 -1
  185. package/dist/define/files/share-file.js.map +1 -1
  186. package/dist/define/har/har-viewer.js +1 -1
  187. package/dist/define/har/har-viewer.js.map +1 -1
  188. package/dist/define/highlight/marked-highlight.js +1 -1
  189. package/dist/define/highlight/marked-highlight.js.map +1 -1
  190. package/dist/define/highlight/prism-highlight.js +1 -1
  191. package/dist/define/highlight/prism-highlight.js.map +1 -1
  192. package/dist/define/http/http-assertions.js +1 -1
  193. package/dist/define/http/http-assertions.js.map +1 -1
  194. package/dist/define/http/http-body-editor.js +1 -1
  195. package/dist/define/http/http-body-editor.js.map +1 -1
  196. package/dist/define/http/http-body-multipart-editor.js +1 -1
  197. package/dist/define/http/http-body-multipart-editor.js.map +1 -1
  198. package/dist/define/http/http-body-text-editor.js +1 -1
  199. package/dist/define/http/http-body-text-editor.js.map +1 -1
  200. package/dist/define/http/http-body-urlencoded-editor.js +1 -1
  201. package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
  202. package/dist/define/http/http-headers-form.js +1 -1
  203. package/dist/define/http/http-headers-form.js.map +1 -1
  204. package/dist/define/http/http-log-body.js +1 -1
  205. package/dist/define/http/http-log-body.js.map +1 -1
  206. package/dist/define/http/http-log-headers.js +1 -1
  207. package/dist/define/http/http-log-headers.js.map +1 -1
  208. package/dist/define/http/http-log-timings.js +1 -1
  209. package/dist/define/http/http-log-timings.js.map +1 -1
  210. package/dist/define/http/http-request-config.js +1 -1
  211. package/dist/define/http/http-request-config.js.map +1 -1
  212. package/dist/define/http/http-request-editor.js +1 -1
  213. package/dist/define/http/http-request-editor.js.map +1 -1
  214. package/dist/define/http/http-request-log.js +1 -1
  215. package/dist/define/http/http-request-log.js.map +1 -1
  216. package/dist/define/http/http-snippets.js +1 -1
  217. package/dist/define/http/http-snippets.js.map +1 -1
  218. package/dist/define/http/http-url-input.js +1 -1
  219. package/dist/define/http/http-url-input.js.map +1 -1
  220. package/dist/define/http/http-url-params-form.js +1 -1
  221. package/dist/define/http/http-url-params-form.js.map +1 -1
  222. package/dist/define/http-project/http-project-request-history.js +1 -1
  223. package/dist/define/http-project/http-project-request-history.js.map +1 -1
  224. package/dist/define/http-project/http-project-request.js +2 -2
  225. package/dist/define/http-project/http-project-request.js.map +1 -1
  226. package/dist/define/http-project/project-navigation.js +1 -1
  227. package/dist/define/http-project/project-navigation.js.map +1 -1
  228. package/dist/define/http-project/project-run-report.js +1 -1
  229. package/dist/define/http-project/project-run-report.js.map +1 -1
  230. package/dist/define/http-project/project-runner.js +2 -2
  231. package/dist/define/http-project/project-runner.js.map +1 -1
  232. package/dist/define/layout/split-view.js +1 -1
  233. package/dist/define/layout/split-view.js.map +1 -1
  234. package/dist/define/schema-design/schema-design-navigation.js +1 -1
  235. package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
  236. package/dist/define/schema-design/schema-namespace-selector.js +1 -1
  237. package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
  238. package/dist/define/ui/ui-button.js +1 -1
  239. package/dist/define/ui/ui-button.js.map +1 -1
  240. package/dist/define/ui/ui-chip.js +1 -1
  241. package/dist/define/ui/ui-chip.js.map +1 -1
  242. package/dist/define/ui/ui-collapse.js +1 -1
  243. package/dist/define/ui/ui-collapse.js.map +1 -1
  244. package/dist/define/ui/ui-dialog.js +1 -1
  245. package/dist/define/ui/ui-dialog.js.map +1 -1
  246. package/dist/define/ui/ui-dropdown-list.js +1 -1
  247. package/dist/define/ui/ui-dropdown-list.js.map +1 -1
  248. package/dist/define/ui/ui-icon-button.js +1 -1
  249. package/dist/define/ui/ui-icon-button.js.map +1 -1
  250. package/dist/define/ui/ui-icon.js +1 -1
  251. package/dist/define/ui/ui-icon.js.map +1 -1
  252. package/dist/define/ui/ui-list-item.js +1 -1
  253. package/dist/define/ui/ui-list-item.js.map +1 -1
  254. package/dist/define/ui/ui-list.js +1 -1
  255. package/dist/define/ui/ui-list.js.map +1 -1
  256. package/dist/define/ui/ui-listbox.js +1 -1
  257. package/dist/define/ui/ui-listbox.js.map +1 -1
  258. package/dist/define/ui/ui-progress.js +1 -1
  259. package/dist/define/ui/ui-progress.js.map +1 -1
  260. package/dist/define/ui/ui-segmented-button-set.js +1 -1
  261. package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
  262. package/dist/define/ui/ui-segmented-button.js +1 -1
  263. package/dist/define/ui/ui-segmented-button.js.map +1 -1
  264. package/dist/define/ui/ui-snackbar.js +1 -1
  265. package/dist/define/ui/ui-snackbar.js.map +1 -1
  266. package/dist/define/ui/ui-tab.js +1 -1
  267. package/dist/define/ui/ui-tab.js.map +1 -1
  268. package/dist/define/ui/ui-tabs.js +1 -1
  269. package/dist/define/ui/ui-tabs.js.map +1 -1
  270. package/dist/directives/data-attr.js +0 -1
  271. package/dist/directives/data-attr.js.map +1 -1
  272. package/dist/elements/ApiElement.js +0 -7
  273. package/dist/elements/ApiElement.js.map +1 -1
  274. package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
  275. package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
  276. package/dist/elements/amf/ApiAuthorizationEditor.element.js +0 -32
  277. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  278. package/dist/elements/amf/ApiDocumentation.element.js +0 -91
  279. package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
  280. package/dist/elements/amf/ApiDocumentationBase.js +0 -9
  281. package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
  282. package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
  283. package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
  284. package/dist/elements/amf/ApiNavigation.element.js +0 -97
  285. package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
  286. package/dist/elements/amf/ApiOperationDocument.element.js +0 -76
  287. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  288. package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
  289. package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
  290. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
  291. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
  292. package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
  293. package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
  294. package/dist/elements/amf/ApiRequest.element.js +0 -78
  295. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  296. package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
  297. package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
  298. package/dist/elements/amf/ApiRequestEditor.element.js +0 -118
  299. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  300. package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
  301. package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
  302. package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
  303. package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
  304. package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
  305. package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
  306. package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
  307. package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
  308. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
  309. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
  310. package/dist/elements/amf/ApiServerPicker.element.js +2 -65
  311. package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
  312. package/dist/elements/amf/ApiSummary.element.js +0 -26
  313. package/dist/elements/amf/ApiSummary.element.js.map +1 -1
  314. package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
  315. package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
  316. package/dist/elements/amf/authorization/AmfBasic.js +0 -4
  317. package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
  318. package/dist/elements/amf/authorization/AmfBearer.js +0 -4
  319. package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
  320. package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
  321. package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
  322. package/dist/elements/amf/authorization/AmfOidc.js +0 -4
  323. package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
  324. package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
  325. package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
  326. package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
  327. package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
  328. package/dist/elements/authorization/OAuth2Authorize.js +0 -14
  329. package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
  330. package/dist/elements/authorization/OidcAuthorize.js +0 -14
  331. package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
  332. package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
  333. package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  334. package/dist/elements/authorization/ui/Authorization.js +18 -32
  335. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  336. package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
  337. package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
  338. package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
  339. package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  340. package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
  341. package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  342. package/dist/elements/code/HttpSnippets.js +9 -8
  343. package/dist/elements/code/HttpSnippets.js.map +1 -1
  344. package/dist/elements/dialog/ConfirmDelete.js +0 -12
  345. package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
  346. package/dist/elements/dialog/Rename.js +0 -6
  347. package/dist/elements/dialog/Rename.js.map +1 -1
  348. package/dist/elements/environment/EnvironmentEditor.js +8 -11
  349. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  350. package/dist/elements/environment/ServerEditor.js +7 -45
  351. package/dist/elements/environment/ServerEditor.js.map +1 -1
  352. package/dist/elements/environment/VariablesEditor.js +7 -12
  353. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  354. package/dist/elements/files/ShareFile.js +19 -57
  355. package/dist/elements/files/ShareFile.js.map +1 -1
  356. package/dist/elements/har/HarViewer.js +6 -7
  357. package/dist/elements/har/HarViewer.js.map +1 -1
  358. package/dist/elements/highlight/MarkedHighlight.js +4 -56
  359. package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
  360. package/dist/elements/highlight/PrismHighlight.js +9 -18
  361. package/dist/elements/highlight/PrismHighlight.js.map +1 -1
  362. package/dist/elements/highlight/PrismHighlighter.js +4 -6
  363. package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
  364. package/dist/elements/http/BodyEditor.js +21 -33
  365. package/dist/elements/http/BodyEditor.js.map +1 -1
  366. package/dist/elements/http/BodyMultipartEditor.js +17 -18
  367. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  368. package/dist/elements/http/BodyTextEditor.js +2 -15
  369. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  370. package/dist/elements/http/BodyUrlEncodedEditor.js +20 -21
  371. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  372. package/dist/elements/http/HeadersForm.js +16 -17
  373. package/dist/elements/http/HeadersForm.js.map +1 -1
  374. package/dist/elements/http/HttpAssertions.js +8 -6
  375. package/dist/elements/http/HttpAssertions.js.map +1 -1
  376. package/dist/elements/http/LogBody.js +10 -21
  377. package/dist/elements/http/LogBody.js.map +1 -1
  378. package/dist/elements/http/LogHeaders.js +4 -23
  379. package/dist/elements/http/LogHeaders.js.map +1 -1
  380. package/dist/elements/http/LogTimings.js +11 -13
  381. package/dist/elements/http/LogTimings.js.map +1 -1
  382. package/dist/elements/http/RequestConfigElement.js +7 -4
  383. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  384. package/dist/elements/http/RequestEditor.js +54 -88
  385. package/dist/elements/http/RequestEditor.js.map +1 -1
  386. package/dist/elements/http/RequestLog.js +9 -14
  387. package/dist/elements/http/RequestLog.js.map +1 -1
  388. package/dist/elements/http/UrlInput.js +15 -25
  389. package/dist/elements/http/UrlInput.js.map +1 -1
  390. package/dist/elements/http/UrlParamsForm.js +16 -13
  391. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  392. package/dist/elements/layout/LayoutManager.js +16 -24
  393. package/dist/elements/layout/LayoutManager.js.map +1 -1
  394. package/dist/elements/layout/LayoutPanelElement.js +17 -23
  395. package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
  396. package/dist/elements/layout/SplitItem.js +4 -12
  397. package/dist/elements/layout/SplitItem.js.map +1 -1
  398. package/dist/elements/layout/SplitLayout.js +18 -24
  399. package/dist/elements/layout/SplitLayout.js.map +1 -1
  400. package/dist/elements/layout/SplitPanel.js +10 -16
  401. package/dist/elements/layout/SplitPanel.js.map +1 -1
  402. package/dist/elements/layout/SplitView.js +17 -26
  403. package/dist/elements/layout/SplitView.js.map +1 -1
  404. package/dist/elements/navigation/AppNavigationElement.js +8 -47
  405. package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
  406. package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
  407. package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
  408. package/dist/elements/project/HttpProjectRequest.js +0 -38
  409. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  410. package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
  411. package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
  412. package/dist/elements/project/ProjectNavigation.js +0 -4
  413. package/dist/elements/project/ProjectNavigation.js.map +1 -1
  414. package/dist/elements/project/ProjectRunReport.js +4 -15
  415. package/dist/elements/project/ProjectRunReport.js.map +1 -1
  416. package/dist/elements/project/ProjectRunner.js +2 -47
  417. package/dist/elements/project/ProjectRunner.js.map +1 -1
  418. package/dist/elements/schema-design/AssociationFormElement.js +0 -13
  419. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  420. package/dist/elements/schema-design/DataEntityEditorElement.js +0 -22
  421. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  422. package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
  423. package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
  424. package/dist/elements/schema-design/DataSchemaDocument.js +0 -36
  425. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  426. package/dist/elements/schema-design/EntityFormElement.js +0 -18
  427. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  428. package/dist/elements/schema-design/PropertyFormElement.js +0 -12
  429. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  430. package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
  431. package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
  432. package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
  433. package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
  434. package/dist/elements/user/UserAvatarElement.js +0 -9
  435. package/dist/elements/user/UserAvatarElement.js.map +1 -1
  436. package/dist/events/http-client/models/CertificatesEvents.js +2 -2
  437. package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
  438. package/dist/http-client/idb/Base.js +5 -10
  439. package/dist/http-client/idb/Base.js.map +1 -1
  440. package/dist/http-client/idb/LegacyMockedStore.js +0 -1
  441. package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
  442. package/dist/http-client/idb/MockedStore.js +3 -1
  443. package/dist/http-client/idb/MockedStore.js.map +1 -1
  444. package/dist/http-client/store/DataImportProcessor.js +0 -3
  445. package/dist/http-client/store/DataImportProcessor.js.map +1 -1
  446. package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
  447. package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
  448. package/dist/http-client/store/IdbThread.js +23 -20
  449. package/dist/http-client/store/IdbThread.js.map +1 -1
  450. package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
  451. package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
  452. package/dist/http-client/store/idb/IdbStore.js +0 -2
  453. package/dist/http-client/store/idb/IdbStore.js.map +1 -1
  454. package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
  455. package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
  456. package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
  457. package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
  458. package/dist/lib/chart/HttpHistoryChart.js +7 -8
  459. package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
  460. package/dist/mixins/FileDropMixin.js +0 -1
  461. package/dist/mixins/FileDropMixin.js.map +1 -1
  462. package/dist/mixins/RenderableMixin.js +11 -15
  463. package/dist/mixins/RenderableMixin.js.map +1 -1
  464. package/dist/pages/ApplicationScreen.js +34 -55
  465. package/dist/pages/ApplicationScreen.js.map +1 -1
  466. package/dist/pages/api-client/ApiClient.screen.js +11 -20
  467. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  468. package/dist/pages/api-client/Authenticate.screen.js +4 -6
  469. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  470. package/dist/pages/api-client/StoreConfig.screen.js +21 -37
  471. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  472. package/dist/pages/api-client/Telemetry.screen.js +1 -2
  473. package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
  474. package/dist/pages/api-client/pages/Files.page.js +6 -27
  475. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  476. package/dist/pages/api-client/pages/Settings.page.js +2 -4
  477. package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
  478. package/dist/pages/api-client/pages/Trash.page.js +2 -13
  479. package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
  480. package/dist/pages/demo/DemoPage.d.ts.map +1 -1
  481. package/dist/pages/demo/DemoPage.js +25 -24
  482. package/dist/pages/demo/DemoPage.js.map +1 -1
  483. package/dist/pages/http-project/HttpProject.screen.js +25 -35
  484. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  485. package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
  486. package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
  487. package/dist/store/HttpStore.js +0 -3
  488. package/dist/store/HttpStore.js.map +1 -1
  489. package/dist/store/UserCache.js +5 -5
  490. package/dist/store/UserCache.js.map +1 -1
  491. package/dist/ui/UiElement.js +4 -5
  492. package/dist/ui/UiElement.js.map +1 -1
  493. package/dist/ui/button/SegmentedButton.js +9 -11
  494. package/dist/ui/button/SegmentedButton.js.map +1 -1
  495. package/dist/ui/button/SegmentedButtonsSet.js +6 -7
  496. package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
  497. package/dist/ui/button/UiButton.js +17 -39
  498. package/dist/ui/button/UiButton.js.map +1 -1
  499. package/dist/ui/button/UiIconButton.js +9 -35
  500. package/dist/ui/button/UiIconButton.js.map +1 -1
  501. package/dist/ui/chip/UiChip.js +9 -49
  502. package/dist/ui/chip/UiChip.js.map +1 -1
  503. package/dist/ui/collapse/UiCollapse.js +15 -20
  504. package/dist/ui/collapse/UiCollapse.js.map +1 -1
  505. package/dist/ui/controllers/ActionController.js +143 -144
  506. package/dist/ui/controllers/ActionController.js.map +1 -1
  507. package/dist/ui/controllers/RadioSelectionController.js +0 -1
  508. package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
  509. package/dist/ui/date/DateTime.js +3 -3
  510. package/dist/ui/date/DateTime.js.map +1 -1
  511. package/dist/ui/dialog/UiDialog.d.ts +1 -1
  512. package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
  513. package/dist/ui/dialog/UiDialog.js +19 -41
  514. package/dist/ui/dialog/UiDialog.js.map +1 -1
  515. package/dist/ui/effects/ripple.js +20 -18
  516. package/dist/ui/effects/ripple.js.map +1 -1
  517. package/dist/ui/effects/rippleDirective.js +6 -7
  518. package/dist/ui/effects/rippleDirective.js.map +1 -1
  519. package/dist/ui/icons/UiIcon.js +4 -3
  520. package/dist/ui/icons/UiIcon.js.map +1 -1
  521. package/dist/ui/input/CheckboxElement.js +12 -10
  522. package/dist/ui/input/CheckboxElement.js.map +1 -1
  523. package/dist/ui/input/CheckedElement.js +2 -13
  524. package/dist/ui/input/CheckedElement.js.map +1 -1
  525. package/dist/ui/input/Input.js +169 -234
  526. package/dist/ui/input/Input.js.map +1 -1
  527. package/dist/ui/input/RadioElement.js +13 -11
  528. package/dist/ui/input/RadioElement.js.map +1 -1
  529. package/dist/ui/input/SwitchElement.js +0 -18
  530. package/dist/ui/input/SwitchElement.js.map +1 -1
  531. package/dist/ui/input/TextAreaElement.js +0 -15
  532. package/dist/ui/input/TextAreaElement.js.map +1 -1
  533. package/dist/ui/list/DividerElement.js +5 -10
  534. package/dist/ui/list/DividerElement.js.map +1 -1
  535. package/dist/ui/list/UiDropdownList.js +7 -48
  536. package/dist/ui/list/UiDropdownList.js.map +1 -1
  537. package/dist/ui/list/UiList.js +3 -15
  538. package/dist/ui/list/UiList.js.map +1 -1
  539. package/dist/ui/list/UiListItem.js +4 -17
  540. package/dist/ui/list/UiListItem.js.map +1 -1
  541. package/dist/ui/list/UiListbox.js +0 -1
  542. package/dist/ui/list/UiListbox.js.map +1 -1
  543. package/dist/ui/notification/SnackNotifications.js +1 -2
  544. package/dist/ui/notification/SnackNotifications.js.map +1 -1
  545. package/dist/ui/notification/Snackbar.js +27 -51
  546. package/dist/ui/notification/Snackbar.js.map +1 -1
  547. package/dist/ui/progress/Range.js +24 -23
  548. package/dist/ui/progress/Range.js.map +1 -1
  549. package/dist/ui/progress/UiProgress.js +0 -11
  550. package/dist/ui/progress/UiProgress.js.map +1 -1
  551. package/dist/ui/table/DataTable.js +7 -12
  552. package/dist/ui/table/DataTable.js.map +1 -1
  553. package/dist/ui/tabs/UiTab.js +24 -25
  554. package/dist/ui/tabs/UiTab.js.map +1 -1
  555. package/dist/ui/tabs/UiTabs.js +21 -35
  556. package/dist/ui/tabs/UiTabs.js.map +1 -1
  557. package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
  558. package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
  559. package/dist/visualization/lib/AssociationAnchors.js +16 -28
  560. package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
  561. package/dist/visualization/lib/Point.js +0 -2
  562. package/dist/visualization/lib/Point.js.map +1 -1
  563. package/dist/visualization/lib/SelectionManager.js +10 -11
  564. package/dist/visualization/lib/SelectionManager.js.map +1 -1
  565. package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
  566. package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
  567. package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
  568. package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
  569. package/dist/visualization/lib/WorkspaceEdges.js +17 -19
  570. package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
  571. package/dist/visualization/lib/WorkspaceGestures.js +0 -3
  572. package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
  573. package/dist/visualization/lib/WorkspaceSizing.js +4 -6
  574. package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
  575. package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
  576. package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
  577. package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
  578. package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
  579. package/dist/visualization/lib/tips/TipArtist.js +0 -3
  580. package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
  581. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
  582. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
  583. package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
  584. package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
  585. package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
  586. package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
  587. package/package.json +3 -2
  588. package/src/pages/demo/DemoPage.ts +12 -11
  589. package/src/ui/dialog/UiDialog.ts +6 -4
  590. package/test/ui/dialog/UiDialog.test.ts +236 -0
  591. package/tsconfig.json +2 -2
  592. package/demo/themes/default.css +0 -0
  593. package/demo/themes/m3/theme.dark.css +0 -40
  594. package/demo/themes/m3/theme.light.css +0 -40
  595. package/demo/themes/m3/tokens.css +0 -291
@@ -1 +1 @@
1
- {"version":3,"file":"HttpStore.js","sourceRoot":"","sources":["../../src/store/HttpStore.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { StoreSdk, RouteBuilder } from '@api-client/core/build/browser.js';\nimport { IConfigEnvironment } from '../lib/config/Config.js';\n\nexport interface ISessionInitInfo {\n /**\n * The user access token to the store.\n */\n token: string;\n /**\n * When the token expires, if ever.\n */\n expires?: number;\n /**\n * Whether a new token was generated or the stored token is valid.\n */\n new: boolean;\n}\n\n/**\n * The client (web) side store.\n */\nexport class HttpStore {\n sdk: StoreSdk;\n\n url: string;\n\n env?: IConfigEnvironment;\n\n /**\n * @deprecated Use the `constructor(env: IConfigEnvironment)` constructor.\n * @param env The store environment to use.\n */\n static fromEnvironment(env: IConfigEnvironment): HttpStore {\n const { location } = env;\n const store = new HttpStore(location);\n store.env = env;\n return store;\n }\n\n /**\n * @deprecated Use the `constructor(env: IConfigEnvironment)` constructor.\n * @param url The store URL.\n */\n constructor(url: string);\n\n constructor(env: IConfigEnvironment);\n\n constructor(envOrUrl: string | IConfigEnvironment) {\n if (!envOrUrl) {\n throw new Error(`Expected an argument.`);\n }\n if (typeof envOrUrl === 'string') {\n if (envOrUrl.endsWith('/')) {\n envOrUrl = envOrUrl.substring(0, envOrUrl.length - 1);\n }\n this.url = envOrUrl;\n this.sdk = new StoreSdk(envOrUrl);\n } else {\n this.env = envOrUrl;\n const { location } = envOrUrl;\n this.url = location;\n this.sdk = new StoreSdk(location);\n }\n }\n\n /**\n * Checks whether the environment has the token and whether this token \n * can make requests to the store.\n * \n * @param env Optional environment. By default is uses the one defined on the class.\n */\n async isAuthenticated(env = this.env): Promise<boolean> {\n if (!env) {\n throw new Error(`The environment either has to be set on the HttpStore class or passed as an argument.`);\n }\n const { token } = env;\n if (!token) {\n return false;\n }\n try {\n const meUri = this.sdk.getUrl(RouteBuilder.usersMe()).toString();\n const user = await this.sdk.http.get(meUri, { token });\n const ok = user.status === 200;\n if (ok) {\n env.authenticated = true;\n this.sdk.token = token;\n }\n return user.status === 200;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Creates a session in the store and authenticates the user when needed.\n * @param env Optional environment to authenticate if should be different than the current\n * @param force Forces logging in even when the token is valid.\n */\n async getStoreSessionToken(env = this.env, force = false): Promise<ISessionInitInfo> {\n if (!env) {\n throw new Error(`The environment either has to be set on the HttpStore class or passed as an argument.`);\n }\n const meUri = this.sdk.getUrl(RouteBuilder.usersMe()).toString();\n const result: ISessionInitInfo = {\n token: env.token || '',\n expires: env.tokenExpires,\n new: false,\n };\n \n if (!force && result.token) {\n const user = await this.sdk.http.get(meUri, { token: result.token });\n if (user.status === 200) {\n env.authenticated = true;\n this.sdk.token = result.token;\n return result;\n }\n }\n\n result.token = '';\n delete result.expires;\n result.new = true;\n\n const info = await this.sdk.auth.createSession();\n result.token = info.token;\n this.sdk.token = info.token;\n env.token = info.token;\n env.authenticated = false;\n if (info.expires) {\n env.tokenExpires = info.expires * 1000;\n }\n\n const user = await this.sdk.http.get(meUri, { token: result.token });\n \n if (user.status === 200) {\n env.authenticated = true;\n } else {\n await this.authenticateStore();\n env.authenticated = true;\n }\n return result;\n }\n\n /**\n * Authenticates the user in the store.\n * Note, it opens the browser to the login endpoint.\n */\n async authenticateStore(): Promise<void> {\n const loginEndpoint = this.sdk.getUrl('/auth/login').toString();\n const result = await this.sdk.http.post(loginEndpoint);\n if (result.status !== 204) {\n throw new Error(`Unable to create the authorization session on the store. Invalid status code: ${result.status}.`);\n }\n const location = result.headers.get('location');\n if (!location) {\n throw new Error(`Unable to create the authorization session on the store. The location header is missing.`);\n }\n const authEndpoint = this.sdk.getUrl(location).toString();\n const handle = window.open(authEndpoint);\n if (!handle) {\n throw new Error(`Unable to open an auth window.`);\n }\n await this.sdk.auth.listenAuth('/events');\n handle.close();\n }\n}\n"]}
1
+ {"version":3,"file":"HttpStore.js","sourceRoot":"","sources":["../../src/store/HttpStore.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { StoreSdk, RouteBuilder } from '@api-client/core/build/browser.js';\nimport { IConfigEnvironment } from '../lib/config/Config.js';\n\nexport interface ISessionInitInfo {\n /**\n * The user access token to the store.\n */\n token: string;\n /**\n * When the token expires, if ever.\n */\n expires?: number;\n /**\n * Whether a new token was generated or the stored token is valid.\n */\n new: boolean;\n}\n\n/**\n * The client (web) side store.\n */\nexport class HttpStore {\n sdk: StoreSdk;\n\n url: string;\n\n env?: IConfigEnvironment;\n\n /**\n * @deprecated Use the `constructor(env: IConfigEnvironment)` constructor.\n * @param env The store environment to use.\n */\n static fromEnvironment(env: IConfigEnvironment): HttpStore {\n const { location } = env;\n const store = new HttpStore(location);\n store.env = env;\n return store;\n }\n\n /**\n * @deprecated Use the `constructor(env: IConfigEnvironment)` constructor.\n * @param url The store URL.\n */\n constructor(url: string);\n\n constructor(env: IConfigEnvironment);\n\n constructor(envOrUrl: string | IConfigEnvironment) {\n if (!envOrUrl) {\n throw new Error(`Expected an argument.`);\n }\n if (typeof envOrUrl === 'string') {\n if (envOrUrl.endsWith('/')) {\n envOrUrl = envOrUrl.substring(0, envOrUrl.length - 1);\n }\n this.url = envOrUrl;\n this.sdk = new StoreSdk(envOrUrl);\n } else {\n this.env = envOrUrl;\n const { location } = envOrUrl;\n this.url = location;\n this.sdk = new StoreSdk(location);\n }\n }\n\n /**\n * Checks whether the environment has the token and whether this token \n * can make requests to the store.\n * \n * @param env Optional environment. By default is uses the one defined on the class.\n */\n async isAuthenticated(env = this.env): Promise<boolean> {\n if (!env) {\n throw new Error(`The environment either has to be set on the HttpStore class or passed as an argument.`);\n }\n const { token } = env;\n if (!token) {\n return false;\n }\n try {\n const meUri = this.sdk.getUrl(RouteBuilder.usersMe()).toString();\n const user = await this.sdk.http.get(meUri, { token });\n const ok = user.status === 200;\n if (ok) {\n env.authenticated = true;\n this.sdk.token = token;\n }\n return user.status === 200;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Creates a session in the store and authenticates the user when needed.\n * @param env Optional environment to authenticate if should be different than the current\n * @param force Forces logging in even when the token is valid.\n */\n async getStoreSessionToken(env = this.env, force = false): Promise<ISessionInitInfo> {\n if (!env) {\n throw new Error(`The environment either has to be set on the HttpStore class or passed as an argument.`);\n }\n const meUri = this.sdk.getUrl(RouteBuilder.usersMe()).toString();\n const result: ISessionInitInfo = {\n token: env.token || '',\n expires: env.tokenExpires,\n new: false,\n };\n \n if (!force && result.token) {\n const user = await this.sdk.http.get(meUri, { token: result.token });\n if (user.status === 200) {\n env.authenticated = true;\n this.sdk.token = result.token;\n return result;\n }\n }\n\n result.token = '';\n delete result.expires;\n result.new = true;\n\n const info = await this.sdk.auth.createSession();\n result.token = info.token;\n this.sdk.token = info.token;\n env.token = info.token;\n env.authenticated = false;\n if (info.expires) {\n env.tokenExpires = info.expires * 1000;\n }\n\n const user = await this.sdk.http.get(meUri, { token: result.token });\n \n if (user.status === 200) {\n env.authenticated = true;\n } else {\n await this.authenticateStore();\n env.authenticated = true;\n }\n return result;\n }\n\n /**\n * Authenticates the user in the store.\n * Note, it opens the browser to the login endpoint.\n */\n async authenticateStore(): Promise<void> {\n const loginEndpoint = this.sdk.getUrl('/auth/login').toString();\n const result = await this.sdk.http.post(loginEndpoint);\n if (result.status !== 204) {\n throw new Error(`Unable to create the authorization session on the store. Invalid status code: ${result.status}.`);\n }\n const location = result.headers.get('location');\n if (!location) {\n throw new Error(`Unable to create the authorization session on the store. The location header is missing.`);\n }\n const authEndpoint = this.sdk.getUrl(location).toString();\n const handle = window.open(authEndpoint);\n if (!handle) {\n throw new Error(`Unable to open an auth window.`);\n }\n await this.sdk.auth.listenAuth('/events');\n handle.close();\n }\n}\n"]}
@@ -5,12 +5,12 @@ import { ConfigBroadcastChannel } from "../lib/config/Config.js";
5
5
  * of requests to the backend requesting a user info.
6
6
  */
7
7
  class UserCache {
8
- cached = new Map();
9
- /**
10
- * Application configuration broadcast channel.
11
- */
12
- configBroadcast = new BroadcastChannel(ConfigBroadcastChannel);
13
8
  constructor() {
9
+ this.cached = new Map();
10
+ /**
11
+ * Application configuration broadcast channel.
12
+ */
13
+ this.configBroadcast = new BroadcastChannel(ConfigBroadcastChannel);
14
14
  this.configBroadcast.addEventListener('message', this.handleConfigBroadcast.bind(this));
15
15
  }
16
16
  async getUser(key) {
@@ -1 +1 @@
1
- {"version":3,"file":"UserCache.js","sourceRoot":"","sources":["../../src/store/UserCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAElF;;;GAGG;AACH,MAAM,SAAS;IACH,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IAExD;;OAEG;IACO,eAAe,GAAG,IAAI,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;IAEzE;QACE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC;SACjB;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,GAAW;QACrC,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,CAAC,EAAE;YACV,OAAO;SACR;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,qBAAqB,CAAC,CAAe;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAuB,CAAC;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,KAAK,wBAAwB,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;SACzB;aAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAgC,CAAC;YACpD,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;aACzB;SACF;IACH,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;AACjC,eAAe,QAAQ,CAAC","sourcesContent":["import { IUser } from \"@api-client/core/build/browser.js\";\nimport { AddConfigEnvironmentInit } from \"../bindings/base/ConfigurationBindings.js\";\nimport { Events } from \"../events/Events.js\";\nimport { ConfigBroadcast, ConfigBroadcastChannel } from \"../lib/config/Config.js\";\n\n/**\n * A class that caches user info in memory so the application reduces the number\n * of requests to the backend requesting a user info.\n */\nclass UserCache {\n protected cached = new Map<string, IUser | undefined>();\n\n /**\n * Application configuration broadcast channel.\n */\n protected configBroadcast = new BroadcastChannel(ConfigBroadcastChannel);\n\n constructor() {\n this.configBroadcast.addEventListener('message', this.handleConfigBroadcast.bind(this))\n }\n\n async getUser(key: string): Promise<IUser | undefined> {\n const existing = this.cached.get(key);\n if (existing) {\n return existing;\n }\n const read = await this.requestUser(key);\n this.cached.set(key, read);\n return read;\n }\n\n protected async requestUser(key: string): Promise<IUser | undefined> {\n try {\n const result = await Events.Store.User.read(key);\n return result;\n } catch (e) {\n // ....\n }\n return undefined;\n }\n\n protected handleConfigBroadcast(e: MessageEvent): void {\n const event = e.data as ConfigBroadcast;\n const { path } = event;\n if (path === 'environment.setDefault') {\n this.cached = new Map();\n } else if (path === 'environment.add') {\n const init = event.init as AddConfigEnvironmentInit;\n if (init.asDefault) {\n this.cached = new Map();\n }\n }\n }\n}\n\nconst instance = new UserCache();\nexport default instance;\n"]}
1
+ {"version":3,"file":"UserCache.js","sourceRoot":"","sources":["../../src/store/UserCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAElF;;;GAGG;AACH,MAAM,SAAS;IAQb;QAPU,WAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QAExD;;WAEG;QACO,oBAAe,GAAG,IAAI,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;QAGvE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC;SACjB;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,GAAW;QACrC,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,CAAC,EAAE;YACV,OAAO;SACR;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,qBAAqB,CAAC,CAAe;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAuB,CAAC;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,KAAK,wBAAwB,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;SACzB;aAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAgC,CAAC;YACpD,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;aACzB;SACF;IACH,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;AACjC,eAAe,QAAQ,CAAC","sourcesContent":["import { IUser } from \"@api-client/core/build/browser.js\";\nimport { AddConfigEnvironmentInit } from \"../bindings/base/ConfigurationBindings.js\";\nimport { Events } from \"../events/Events.js\";\nimport { ConfigBroadcast, ConfigBroadcastChannel } from \"../lib/config/Config.js\";\n\n/**\n * A class that caches user info in memory so the application reduces the number\n * of requests to the backend requesting a user info.\n */\nclass UserCache {\n protected cached = new Map<string, IUser | undefined>();\n\n /**\n * Application configuration broadcast channel.\n */\n protected configBroadcast = new BroadcastChannel(ConfigBroadcastChannel);\n\n constructor() {\n this.configBroadcast.addEventListener('message', this.handleConfigBroadcast.bind(this))\n }\n\n async getUser(key: string): Promise<IUser | undefined> {\n const existing = this.cached.get(key);\n if (existing) {\n return existing;\n }\n const read = await this.requestUser(key);\n this.cached.set(key, read);\n return read;\n }\n\n protected async requestUser(key: string): Promise<IUser | undefined> {\n try {\n const result = await Events.Store.User.read(key);\n return result;\n } catch (e) {\n // ....\n }\n return undefined;\n }\n\n protected handleConfigBroadcast(e: MessageEvent): void {\n const event = e.data as ConfigBroadcast;\n const { path } = event;\n if (path === 'environment.setDefault') {\n this.cached = new Map();\n } else if (path === 'environment.add') {\n const init = event.init as AddConfigEnvironmentInit;\n if (init.asDefault) {\n this.cached = new Map();\n }\n }\n }\n}\n\nconst instance = new UserCache();\nexport default instance;\n"]}
@@ -15,11 +15,10 @@ import { ActionController } from "./controllers/ActionController.js";
15
15
  * @fires action - An event dispatched when the UI element was activated (pointer, keyboard).
16
16
  */
17
17
  export class UiElement extends LitElement {
18
- actionController = new ActionController(this);
19
- /**
20
- * Indicates the component is in the pressed state.
21
- */
22
- pressed;
18
+ constructor() {
19
+ super(...arguments);
20
+ this.actionController = new ActionController(this);
21
+ }
23
22
  /**
24
23
  * Hook method called when we've confirmed that the gesture is intended to be
25
24
  * a press. Subclasses should change the visual state of the control to
@@ -1 +1 @@
1
- {"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../src/ui/UiElement.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD;;;;GAIG;;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAA0D,MAAM,mCAAmC,CAAC;AAE7H;;;;;GAKG;AACH,MAAM,OAAgB,SAAU,SAAQ,UAAU;IAOtC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAExD;;OAEG;IACgB,OAAO,CAAW;IAErC;;;;;;;;OAQG;IACH,UAAU,CAAC,OAAyB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,EAAkB;QAChD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE;gBAC3C,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC,CAAC;SACL;IACH,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,CAAe;QAC/B,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,CAAe;QAC7B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,CAAe;QACjC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,CAAe;QAChC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAa;QACvB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,CAAgB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAgB;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACF;AAzGU;IAAR,KAAK,EAAE;0CAA6B","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { LitElement } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport { ActionController, ActionControllerHost, BeginPressConfig, EndPressConfig } from \"./controllers/ActionController.js\";\n\n/**\n * The base class for all API Client's base UI elements.\n * Only contains logic to be applied to **all** UI elements.\n * \n * @fires action - An event dispatched when the UI element was activated (pointer, keyboard).\n */\nexport abstract class UiElement extends LitElement implements ActionControllerHost {\n /**\n * ActionController needs to know if the component is disabled, so subclasses\n * must implement a `disabled` property.\n */\n abstract disabled: boolean;\n\n protected actionController = new ActionController(this);\n\n /**\n * Indicates the component is in the pressed state.\n */\n @state() protected pressed?: boolean;\n\n /**\n * Hook method called when we've confirmed that the gesture is intended to be\n * a press. Subclasses should change the visual state of the control to\n * 'active' at this point, and possibly fire an event. Subclasses should\n * override this method if more needs to be done.\n *\n * @param options `positionEvent` is the Event that is considered the\n * beginning of the press. Null if this was a keyboard interaction.\n */\n beginPress(options: BeginPressConfig): void { \n this.pressed = true;\n }\n\n /**\n * Hook method called when the control goes from a pressed to unpressed\n * state.\n *\n * @param options If `cancelled` is true, means the user canceled the action.\n * Subclasses which trigger events on endPress() should check the value\n * of this flag, and modify their behavior accordingly.\n */\n endPress({ cancelled, actionData }: EndPressConfig): void {\n this.pressed = false;\n if (!cancelled) {\n this.dispatchEvent(new CustomEvent('action', {\n detail: actionData,\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerdown=\"${this.handlePointerDown}\"`\n */\n handlePointerDown(e: PointerEvent): void {\n this.actionController.pointerDown(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerup=\"${this.handlePointerUp}\"`\n */\n handlePointerUp(e: PointerEvent): void {\n this.actionController.pointerUp(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointercancel=\"${this.handlePointerCancel}\"`\n */\n handlePointerCancel(e: PointerEvent): void {\n this.actionController.pointerCancel(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerleave=\"${this.handlePointerleave}\"`\n */\n handlePointerLeave(e: PointerEvent): void {\n this.actionController.pointerLeave(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@click=\"${this.handleClick}\"`\n */\n handleClick(e: MouseEvent): void {\n this.actionController.click(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@contextmenu=\"${this.handleContextMenu}\"`\n */\n handleContextMenu(): void {\n this.actionController.contextMenu();\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@keydown=\"${this.handleKeyDown}\"`\n */\n handleKeyDown(e: KeyboardEvent): void {\n this.actionController.keyDown(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@keyup=\"${this.handleKeyUp}\"`\n */\n handleKeyUp(e: KeyboardEvent): void {\n this.actionController.keyUp(e);\n }\n}\n"]}
1
+ {"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../src/ui/UiElement.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD;;;;GAIG;;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAA0D,MAAM,mCAAmC,CAAC;AAE7H;;;;;GAKG;AACH,MAAM,OAAgB,SAAU,SAAQ,UAAU;IAAlD;;QAOY,qBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IA8G1D,CAAC;IAvGC;;;;;;;;OAQG;IACH,UAAU,CAAC,OAAyB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,EAAkB;QAChD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE;gBAC3C,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC,CAAC;SACL;IACH,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,CAAe;QAC/B,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,CAAe;QAC7B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,CAAe;QACjC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,CAAe;QAChC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAa;QACvB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,CAAgB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAgB;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACF;AAzGU;IAAR,KAAK,EAAE;0CAA6B","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { LitElement } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport { ActionController, ActionControllerHost, BeginPressConfig, EndPressConfig } from \"./controllers/ActionController.js\";\n\n/**\n * The base class for all API Client's base UI elements.\n * Only contains logic to be applied to **all** UI elements.\n * \n * @fires action - An event dispatched when the UI element was activated (pointer, keyboard).\n */\nexport abstract class UiElement extends LitElement implements ActionControllerHost {\n /**\n * ActionController needs to know if the component is disabled, so subclasses\n * must implement a `disabled` property.\n */\n abstract disabled: boolean;\n\n protected actionController = new ActionController(this);\n\n /**\n * Indicates the component is in the pressed state.\n */\n @state() protected pressed?: boolean;\n\n /**\n * Hook method called when we've confirmed that the gesture is intended to be\n * a press. Subclasses should change the visual state of the control to\n * 'active' at this point, and possibly fire an event. Subclasses should\n * override this method if more needs to be done.\n *\n * @param options `positionEvent` is the Event that is considered the\n * beginning of the press. Null if this was a keyboard interaction.\n */\n beginPress(options: BeginPressConfig): void { \n this.pressed = true;\n }\n\n /**\n * Hook method called when the control goes from a pressed to unpressed\n * state.\n *\n * @param options If `cancelled` is true, means the user canceled the action.\n * Subclasses which trigger events on endPress() should check the value\n * of this flag, and modify their behavior accordingly.\n */\n endPress({ cancelled, actionData }: EndPressConfig): void {\n this.pressed = false;\n if (!cancelled) {\n this.dispatchEvent(new CustomEvent('action', {\n detail: actionData,\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerdown=\"${this.handlePointerDown}\"`\n */\n handlePointerDown(e: PointerEvent): void {\n this.actionController.pointerDown(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerup=\"${this.handlePointerUp}\"`\n */\n handlePointerUp(e: PointerEvent): void {\n this.actionController.pointerUp(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointercancel=\"${this.handlePointerCancel}\"`\n */\n handlePointerCancel(e: PointerEvent): void {\n this.actionController.pointerCancel(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerleave=\"${this.handlePointerleave}\"`\n */\n handlePointerLeave(e: PointerEvent): void {\n this.actionController.pointerLeave(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@click=\"${this.handleClick}\"`\n */\n handleClick(e: MouseEvent): void {\n this.actionController.click(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@contextmenu=\"${this.handleContextMenu}\"`\n */\n handleContextMenu(): void {\n this.actionController.contextMenu();\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@keydown=\"${this.handleKeyDown}\"`\n */\n handleKeyDown(e: KeyboardEvent): void {\n this.actionController.keyDown(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@keyup=\"${this.handleKeyUp}\"`\n */\n handleKeyUp(e: KeyboardEvent): void {\n this.actionController.keyUp(e);\n }\n}\n"]}
@@ -12,15 +12,17 @@ import { check } from "../icons/Icons.js";
12
12
  * @slot icon - A slot to render an icon.
13
13
  */
14
14
  export default class SegmentedButton extends Button {
15
- ripple;
16
- /**
17
- * Whether the button is selected.
18
- * @attribute
19
- */
20
- selected = false;
21
- leadingIcons;
22
15
  constructor() {
23
16
  super();
17
+ /**
18
+ * Whether the button is selected.
19
+ * @attribute
20
+ */
21
+ this.selected = false;
22
+ this.renderRipple = () => {
23
+ const { disabled } = this;
24
+ return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
25
+ };
24
26
  this.addEventListener('pointerenter', this.handlePointerEnter.bind(this));
25
27
  }
26
28
  beginPress(options) {
@@ -92,10 +94,6 @@ export default class SegmentedButton extends Button {
92
94
  });
93
95
  return html `<span class="${iconClasses}" role="presentation">${check}</span>`;
94
96
  }
95
- renderRipple = () => {
96
- const { disabled } = this;
97
- return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
98
- };
99
97
  }
100
98
  __decorate([
101
99
  query('ui-ripple')
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedButton.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButton.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAa,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,MAAM;IAC7B,MAAM,CAAY;IAEtC;;;OAGG;IAC0B,QAAQ,GAAG,KAAK,CAAC;IAEoB,YAAY,CAAiB;IAE/F;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEQ,UAAU,CAAC,OAAyB;QAC3C,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAEQ,QAAQ,CAAC,OAAuB;QACvC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SAC7E;IACH,CAAC;IAES,kBAAkB,CAAC,CAAe;QAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAEQ,kBAAkB,CAAC,CAAe;QACzC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAES,oBAAoB;QAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEkB,MAAM;QACvB,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QACnD,MAAM,cAAc,GAAG,QAAQ,CAAC;YAC9B,OAAO,EAAE,IAAI;YACb,OAAO;YACP,QAAQ;SACT,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;kBACG,cAAc,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE;;UAEjB,IAAI,CAAC,cAAc,EAAE;;;;KAI1B,CAAC;IACJ,CAAC;IAES,cAAc;QACtB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,OAAO,GAAc;YACzB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM;SAClD,CAAA;QACD,OAAO,IAAI,CAAA;kBACG,QAAQ,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,aAAa,EAAE;;KAEvB,CAAC;IACJ,CAAC;IAES,iBAAiB;QACzB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,OAAO,GAAc;YACzB,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAClC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;SACxB,CAAA;QACD,OAAO,IAAI,CAAA;kBACG,QAAQ,CAAC,OAAO,CAAC,oCAAoC,IAAI,CAAC,oBAAoB;KAC3F,CAAC;IACJ,CAAC;IAES,aAAa;QACrB,MAAM,WAAW,GAAG,QAAQ,CAAC;YAC3B,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,OAAO,IAAI,CAAA,gBAAgB,WAAW,yBAAyB,KAAK,SAAS,CAAC;IAChF,CAAC;IAES,YAAY,GAAG,GAAmB,EAAE;QAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAA,wCAAwC,QAAQ,gBAAgB,CAAC;IAC9E,CAAC,CAAC;CACH;AAnGqB;IAAnB,KAAK,CAAC,WAAW,CAAC;+CAAmB;AAMT;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDAAkB;AAEU;IAAvD,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qDAAwC","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, query, queryAssignedElements } from \"lit/decorators.js\";\nimport { ClassInfo, classMap } from \"lit/directives/class-map.js\";\nimport { Button } from \"./Button.js\";\nimport UiRipple from \"../effects/ripple.js\";\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport { ripple } from \"../effects/rippleDirective.js\";\nimport '../../define/ui/ui-ripple.js';\nimport { check } from \"../icons/Icons.js\";\n\n/**\n * @fires trigger - When a button is triggered.\n * @slot - Default slot for the label\n * @slot icon - A slot to render an icon.\n */\nexport default class SegmentedButton extends Button {\n @query('ui-ripple') ripple!: UiRipple;\n\n /**\n * Whether the button is selected.\n * @attribute\n */\n @property({ type: Boolean }) selected = false;\n\n @queryAssignedElements({ flatten: true, slot: 'icon' }) protected leadingIcons!: HTMLElement[];\n\n constructor() {\n super();\n this.addEventListener('pointerenter', this.handlePointerEnter.bind(this));\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.ripple.beginPress(options.positionEvent);\n }\n\n override endPress(options: EndPressConfig): void {\n super.endPress(options);\n this.ripple.endPress();\n\n if (!options.cancelled) {\n this.dispatchEvent(new Event('trigger', { bubbles: true, composed: true }));\n }\n }\n\n protected handlePointerEnter(e: PointerEvent): void {\n this.ripple.beginHover(e);\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e);\n this.ripple.endHover();\n }\n\n protected handleIconSlotChange(): void {\n this.requestUpdate();\n }\n\n protected override render(): TemplateResult {\n const { pressed = false, selected = false } = this;\n const surfaceClasses = classMap({\n surface: true,\n pressed,\n selected,\n });\n\n return html`\n <div class=\"${surfaceClasses}\" ${ripple(() => this.ripple)}>\n ${this.renderRipple()}\n <div class=\"content\">\n ${this.leadingContent()} \n <slot></slot>\n </div>\n </div>\n `;\n }\n\n protected leadingContent(): TemplateResult {\n const { leadingIcons } = this;\n const classes: ClassInfo = {\n 'leading': true,\n visible: !!this.selected || !!leadingIcons.length,\n }\n return html`\n <div class=\"${classMap(classes)}\">\n ${this.renderLeadingIcon()}\n ${this.renderChecked()}\n </div>\n `;\n }\n\n protected renderLeadingIcon(): TemplateResult {\n const { leadingIcons } = this;\n const classes: ClassInfo = {\n 'leading-icon': true,\n 'with-icon': !!leadingIcons.length,\n hidden: !!this.selected,\n }\n return html`\n <div class=\"${classMap(classes)}\"><slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot></div>\n `;\n }\n\n protected renderChecked(): TemplateResult {\n const iconClasses = classMap({\n 'check-mark': true,\n checked: !!this.selected,\n });\n return html`<span class=\"${iconClasses}\" role=\"presentation\">${check}</span>`;\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this;\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`;\n };\n}\n"]}
1
+ {"version":3,"file":"SegmentedButton.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, query, queryAssignedElements } from \"lit/decorators.js\";\nimport { ClassInfo, classMap } from \"lit/directives/class-map.js\";\nimport { Button } from \"./Button.js\";\nimport UiRipple from \"../effects/ripple.js\";\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport { ripple } from \"../effects/rippleDirective.js\";\nimport '../../define/ui/ui-ripple.js';\nimport { check } from \"../icons/Icons.js\";\n\n/**\n * @fires trigger - When a button is triggered.\n * @slot - Default slot for the label\n * @slot icon - A slot to render an icon.\n */\nexport default class SegmentedButton extends Button {\n @query('ui-ripple') ripple!: UiRipple;\n\n /**\n * Whether the button is selected.\n * @attribute\n */\n @property({ type: Boolean }) selected = false;\n\n @queryAssignedElements({ flatten: true, slot: 'icon' }) protected leadingIcons!: HTMLElement[];\n\n constructor() {\n super();\n this.addEventListener('pointerenter', this.handlePointerEnter.bind(this));\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.ripple.beginPress(options.positionEvent);\n }\n\n override endPress(options: EndPressConfig): void {\n super.endPress(options);\n this.ripple.endPress();\n\n if (!options.cancelled) {\n this.dispatchEvent(new Event('trigger', { bubbles: true, composed: true }));\n }\n }\n\n protected handlePointerEnter(e: PointerEvent): void {\n this.ripple.beginHover(e);\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e);\n this.ripple.endHover();\n }\n\n protected handleIconSlotChange(): void {\n this.requestUpdate();\n }\n\n protected override render(): TemplateResult {\n const { pressed = false, selected = false } = this;\n const surfaceClasses = classMap({\n surface: true,\n pressed,\n selected,\n });\n\n return html`\n <div class=\"${surfaceClasses}\" ${ripple(() => this.ripple)}>\n ${this.renderRipple()}\n <div class=\"content\">\n ${this.leadingContent()} \n <slot></slot>\n </div>\n </div>\n `;\n }\n\n protected leadingContent(): TemplateResult {\n const { leadingIcons } = this;\n const classes: ClassInfo = {\n 'leading': true,\n visible: !!this.selected || !!leadingIcons.length,\n }\n return html`\n <div class=\"${classMap(classes)}\">\n ${this.renderLeadingIcon()}\n ${this.renderChecked()}\n </div>\n `;\n }\n\n protected renderLeadingIcon(): TemplateResult {\n const { leadingIcons } = this;\n const classes: ClassInfo = {\n 'leading-icon': true,\n 'with-icon': !!leadingIcons.length,\n hidden: !!this.selected,\n }\n return html`\n <div class=\"${classMap(classes)}\"><slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot></div>\n `;\n }\n\n protected renderChecked(): TemplateResult {\n const iconClasses = classMap({\n 'check-mark': true,\n checked: !!this.selected,\n });\n return html`<span class=\"${iconClasses}\" role=\"presentation\">${check}</span>`;\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this;\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`;\n };\n}\n"]}
@@ -6,15 +6,14 @@ import { UiElement } from "../UiElement.js";
6
6
  * @fires select - When button's selection change.
7
7
  */
8
8
  export default class SegmentedButtonsSet extends UiElement {
9
- disabled = false;
10
- /**
11
- * Whether multiple buttons can be selected at once.
12
- * @attribute
13
- */
14
- multiselect = false;
15
- buttons;
16
9
  constructor() {
17
10
  super();
11
+ this.disabled = false;
12
+ /**
13
+ * Whether multiple buttons can be selected at once.
14
+ * @attribute
15
+ */
16
+ this.multiselect = false;
18
17
  this.addEventListener('trigger', this.handleButtonTrigger.bind(this));
19
18
  }
20
19
  connectedCallback() {
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedButtonsSet.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButtonsSet.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, queryAssignedElements } from \"lit/decorators.js\";\nimport { UiElement } from \"../UiElement.js\";\nimport SegmentedButton from \"./SegmentedButton.js\";\n\n/**\n * @fires select - When button's selection change.\n */\nexport default class SegmentedButtonsSet extends UiElement {\n disabled = false;\n\n /**\n * Whether multiple buttons can be selected at once.\n * @attribute\n */\n @property({ type: Boolean }) multiselect = false;\n\n @queryAssignedElements({ flatten: true }) buttons!: SegmentedButton[];\n\n constructor() {\n super();\n this.addEventListener('trigger', this.handleButtonTrigger.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'group');\n }\n\n isButtonDisabled(index: number): boolean {\n if (this.isOutOfBounds(index)) return false;\n return this.buttons[index].disabled;\n }\n\n setButtonDisabled(index: number, disabled: boolean): void {\n if (this.isOutOfBounds(index)) return;\n this.buttons[index].disabled = disabled;\n }\n\n isButtonSelected(index: number): boolean {\n if (this.isOutOfBounds(index)) return false;\n return this.buttons[index].selected;\n }\n\n setButtonSelected(index: number, selected: boolean): void {\n // Ignore out-of-index values.\n if (this.isOutOfBounds(index)) return;\n // Ignore disabled buttons.\n if (this.isButtonDisabled(index)) return;\n\n if (this.multiselect) {\n this.buttons[index].selected = selected;\n this.dispatchSelected(index);\n return;\n }\n\n // Single-select segmented buttons are not unselectable.\n if (!selected) return;\n\n this.buttons[index].selected = true;\n this.dispatchSelected(index);\n // Deselect all other buttons for single-select.\n for (let i = 0; i < this.buttons.length; i++) {\n if (i === index) continue;\n this.buttons[i].selected = false;\n }\n }\n\n private handleButtonTrigger(e: Event): void {\n const index = this.buttons.indexOf(e.target as SegmentedButton);\n this.toggleSelection(index);\n }\n\n private toggleSelection(index: number): void {\n this.setButtonSelected(index, !this.buttons[index].selected);\n }\n\n private isOutOfBounds(index: number): boolean {\n return index < 0 || index >= this.buttons.length;\n }\n\n private dispatchSelected(index: number): void {\n this.dispatchEvent(new CustomEvent('select', {\n detail: {\n button: this.buttons[index],\n selected: this.buttons[index].selected,\n index,\n },\n bubbles: true,\n composed: true\n }));\n }\n\n override render(): TemplateResult {\n return html`<slot></slot>`;\n }\n}\n"]}
1
+ {"version":3,"file":"SegmentedButtonsSet.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButtonsSet.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, queryAssignedElements } from \"lit/decorators.js\";\nimport { UiElement } from \"../UiElement.js\";\nimport SegmentedButton from \"./SegmentedButton.js\";\n\n/**\n * @fires select - When button's selection change.\n */\nexport default class SegmentedButtonsSet extends UiElement {\n disabled = false;\n\n /**\n * Whether multiple buttons can be selected at once.\n * @attribute\n */\n @property({ type: Boolean }) multiselect = false;\n\n @queryAssignedElements({ flatten: true }) buttons!: SegmentedButton[];\n\n constructor() {\n super();\n this.addEventListener('trigger', this.handleButtonTrigger.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'group');\n }\n\n isButtonDisabled(index: number): boolean {\n if (this.isOutOfBounds(index)) return false;\n return this.buttons[index].disabled;\n }\n\n setButtonDisabled(index: number, disabled: boolean): void {\n if (this.isOutOfBounds(index)) return;\n this.buttons[index].disabled = disabled;\n }\n\n isButtonSelected(index: number): boolean {\n if (this.isOutOfBounds(index)) return false;\n return this.buttons[index].selected;\n }\n\n setButtonSelected(index: number, selected: boolean): void {\n // Ignore out-of-index values.\n if (this.isOutOfBounds(index)) return;\n // Ignore disabled buttons.\n if (this.isButtonDisabled(index)) return;\n\n if (this.multiselect) {\n this.buttons[index].selected = selected;\n this.dispatchSelected(index);\n return;\n }\n\n // Single-select segmented buttons are not unselectable.\n if (!selected) return;\n\n this.buttons[index].selected = true;\n this.dispatchSelected(index);\n // Deselect all other buttons for single-select.\n for (let i = 0; i < this.buttons.length; i++) {\n if (i === index) continue;\n this.buttons[i].selected = false;\n }\n }\n\n private handleButtonTrigger(e: Event): void {\n const index = this.buttons.indexOf(e.target as SegmentedButton);\n this.toggleSelection(index);\n }\n\n private toggleSelection(index: number): void {\n this.setButtonSelected(index, !this.buttons[index].selected);\n }\n\n private isOutOfBounds(index: number): boolean {\n return index < 0 || index >= this.buttons.length;\n }\n\n private dispatchSelected(index: number): void {\n this.dispatchEvent(new CustomEvent('select', {\n detail: {\n button: this.buttons[index],\n selected: this.buttons[index].selected,\n index,\n },\n bubbles: true,\n composed: true\n }));\n }\n\n override render(): TemplateResult {\n return html`<slot></slot>`;\n }\n}\n"]}
@@ -29,27 +29,10 @@ export default class UiButton extends Button {
29
29
  static get formAssociated() {
30
30
  return true;
31
31
  }
32
- #_internals = this.attachInternals();
32
+ #_internals;
33
33
  get form() {
34
34
  return this.#_internals && this.#_internals.form;
35
35
  }
36
- /**
37
- * The type of the rendered button according to Material 3 spec.
38
- *
39
- * @default {ButtonType.filled}
40
- * @attribute
41
- */
42
- type;
43
- /**
44
- * Determines when the element has an icon in the "icon" slot.
45
- */
46
- _hasIcon;
47
- /**
48
- * The name of the button, submitted as a pair with the button's value as part of the form data,
49
- * when that button is used to submit the form.
50
- * @attribute
51
- */
52
- name;
53
36
  #_value;
54
37
  /**
55
38
  * Defines the value associated with the button's name when it's submitted with the form data.
@@ -66,25 +49,24 @@ export default class UiButton extends Button {
66
49
  this.#_value = value;
67
50
  this.#_internals?.setFormValue(value || null);
68
51
  }
69
- /**
70
- * Whether to render the icon at the inline end of the label rather than the
71
- * inline start.
72
- * @attribute
73
- */
74
- trailingIcon = false;
75
- ripple;
76
- showRipple = false;
77
- /**
78
- * Whether the button is a submit button for a form.
79
- * @attribute
80
- */
81
- submit;
82
- getRipple = () => {
83
- this.showRipple = true;
84
- return this.ripple;
85
- };
86
52
  constructor() {
87
53
  super();
54
+ this.#_internals = this.attachInternals();
55
+ /**
56
+ * Whether to render the icon at the inline end of the label rather than the
57
+ * inline start.
58
+ * @attribute
59
+ */
60
+ this.trailingIcon = false;
61
+ this.showRipple = false;
62
+ this.getRipple = () => {
63
+ this.showRipple = true;
64
+ return this.ripple;
65
+ };
66
+ this.renderRipple = () => {
67
+ const { disabled } = this;
68
+ return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
69
+ };
88
70
  this.type = ButtonType.filled;
89
71
  this._hasIcon = false;
90
72
  }
@@ -174,10 +156,6 @@ export default class UiButton extends Button {
174
156
  _iconTemplate() {
175
157
  return html `<slot name="icon" @slotchange="${this._iconSlotChange}"></slot>`;
176
158
  }
177
- renderRipple = () => {
178
- const { disabled } = this;
179
- return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
180
- };
181
159
  }
182
160
  __decorate([
183
161
  property({ type: String, reflect: true, })
@@ -1 +1 @@
1
- {"version":3,"file":"UiButton.js","sourceRoot":"","sources":["../../../src/ui/button/UiButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, queryAsync, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { when } from 'lit/directives/when.js';\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport { Button } from \"./Button.js\";\nimport { ripple } from '../effects/rippleDirective.js';\nimport UiRipple from \"../effects/ripple.js\";\nimport '../../define/ui/ui-ripple.js';\n\n/**\n * The type of the button rendered.\n */\nexport enum ButtonType {\n 'elevated' = 'elevated',\n 'filled' = 'filled',\n 'tonal' = 'tonal',\n 'outlined' = 'outlined',\n 'text' = 'text',\n}\n\n/**\n * A material design button.\n * \n * Note, this control is form associated.\n * \n * @slot icon - A slot for the icon element\n * @slot - The default slot for the label\n */\nexport default class UiButton extends Button {\n static get formAssociated(): boolean {\n return true;\n }\n\n #_internals = this.attachInternals();\n\n get form(): HTMLFormElement | null {\n return this.#_internals && this.#_internals.form;\n }\n\n /**\n * The type of the rendered button according to Material 3 spec.\n * \n * @default {ButtonType.filled}\n * @attribute\n */\n @property({ type: String, reflect: true, }) type: ButtonType;\n\n /**\n * Determines when the element has an icon in the \"icon\" slot.\n */\n @state() protected _hasIcon: boolean;\n\n /**\n * The name of the button, submitted as a pair with the button's value as part of the form data, \n * when that button is used to submit the form.\n * @attribute\n */\n @property({ type: String }) name?: string;\n\n #_value?: string;\n\n /**\n * Defines the value associated with the button's name when it's submitted with the form data. \n * This value is passed to the server in params when the form is submitted using this button.\n * @attribute\n */\n @property({ type: String })\n get value(): string | undefined {\n return this.#_value;\n }\n\n set value(value: string | undefined) {\n if (this.#_value === value) {\n return;\n }\n this.#_value = value;\n this.#_internals?.setFormValue(value || null);\n }\n\n /**\n * Whether to render the icon at the inline end of the label rather than the\n * inline start.\n * @attribute\n */\n @property({ type: Boolean, attribute: 'trailingicon', reflect: true }) trailingIcon = false;\n\n @queryAsync('ui-ripple') protected ripple!: Promise<UiRipple | null>;\n\n @state() protected showRipple = false;\n\n /**\n * Whether the button is a submit button for a form.\n * @attribute\n */\n @property({ type: Boolean, reflect: true, }) submit?: boolean;\n\n protected readonly getRipple = (): Promise<UiRipple | null> => {\n this.showRipple = true;\n return this.ripple;\n };\n\n constructor() {\n super();\n\n this.type = ButtonType.filled;\n this._hasIcon = false;\n }\n\n protected async pressRipple(): Promise<void> {\n const element = await this.getRipple();\n if (element && !element.isPressed) {\n element.beginPress();\n }\n }\n\n protected async endRipple(): Promise<void> {\n const element = await this.getRipple();\n element?.endPress();\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.pressRipple();\n }\n\n override endPress(config: EndPressConfig): void {\n super.endPress(config);\n this.endRipple();\n const { cancelled, reason } = config;\n if (cancelled) {\n return;\n }\n if (!reason || reason === 'enter' || reason === 'space') {\n this._submitHandler();\n }\n if (reason === 'enter' || reason === 'space') {\n this.click();\n }\n }\n\n protected _submitHandler(): void {\n const { form, name, value, submit, disabled } = this;\n if (!form || !submit || disabled) {\n return;\n }\n let button: HTMLButtonElement | undefined;\n if (name || value) {\n button = document.createElement('button');\n if (name) {\n button.name = name;\n }\n if (value) {\n button.value = value;\n }\n button.type = 'submit';\n button.hidden = true;\n form.append(button);\n }\n try {\n form.requestSubmit(button);\n } catch (_) {\n // ...\n }\n if (button) {\n form.removeChild(button);\n }\n }\n\n /**\n * Sets the `_hasIcon` state property when the \"icon\" slot change event is dispatched.\n */\n protected _iconSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasIcon = !!slot.assignedNodes().length;\n }\n\n protected override render(): TemplateResult {\n const { pressed = false, trailingIcon = false } = this;\n const containerClasses = classMap({\n surface: true,\n withIcon: this._hasIcon,\n pressed,\n });\n return html`\n <div class=\"${containerClasses}\" ${ripple(this.getRipple)}>\n <div class=\"container\"></div>\n <div class=\"state\"></div>\n ${when(this.showRipple, this.renderRipple)}\n <div class=\"content\">\n ${trailingIcon ? '' : this._iconTemplate()}\n <slot></slot>\n ${trailingIcon ? this._iconTemplate() : ''}\n </div>\n </div>\n `;\n }\n\n protected _iconTemplate(): TemplateResult {\n return html`<slot name=\"icon\" @slotchange=\"${this._iconSlotChange}\"></slot>`;\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this;\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`;\n };\n}\n"]}
1
+ {"version":3,"file":"UiButton.js","sourceRoot":"","sources":["../../../src/ui/button/UiButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, queryAsync, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { when } from 'lit/directives/when.js';\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport { Button } from \"./Button.js\";\nimport { ripple } from '../effects/rippleDirective.js';\nimport UiRipple from \"../effects/ripple.js\";\nimport '../../define/ui/ui-ripple.js';\n\n/**\n * The type of the button rendered.\n */\nexport enum ButtonType {\n 'elevated' = 'elevated',\n 'filled' = 'filled',\n 'tonal' = 'tonal',\n 'outlined' = 'outlined',\n 'text' = 'text',\n}\n\n/**\n * A material design button.\n * \n * Note, this control is form associated.\n * \n * @slot icon - A slot for the icon element\n * @slot - The default slot for the label\n */\nexport default class UiButton extends Button {\n static get formAssociated(): boolean {\n return true;\n }\n\n #_internals = this.attachInternals();\n\n get form(): HTMLFormElement | null {\n return this.#_internals && this.#_internals.form;\n }\n\n /**\n * The type of the rendered button according to Material 3 spec.\n * \n * @default {ButtonType.filled}\n * @attribute\n */\n @property({ type: String, reflect: true, }) type: ButtonType;\n\n /**\n * Determines when the element has an icon in the \"icon\" slot.\n */\n @state() protected _hasIcon: boolean;\n\n /**\n * The name of the button, submitted as a pair with the button's value as part of the form data, \n * when that button is used to submit the form.\n * @attribute\n */\n @property({ type: String }) name?: string;\n\n #_value?: string;\n\n /**\n * Defines the value associated with the button's name when it's submitted with the form data. \n * This value is passed to the server in params when the form is submitted using this button.\n * @attribute\n */\n @property({ type: String })\n get value(): string | undefined {\n return this.#_value;\n }\n\n set value(value: string | undefined) {\n if (this.#_value === value) {\n return;\n }\n this.#_value = value;\n this.#_internals?.setFormValue(value || null);\n }\n\n /**\n * Whether to render the icon at the inline end of the label rather than the\n * inline start.\n * @attribute\n */\n @property({ type: Boolean, attribute: 'trailingicon', reflect: true }) trailingIcon = false;\n\n @queryAsync('ui-ripple') protected ripple!: Promise<UiRipple | null>;\n\n @state() protected showRipple = false;\n\n /**\n * Whether the button is a submit button for a form.\n * @attribute\n */\n @property({ type: Boolean, reflect: true, }) submit?: boolean;\n\n protected readonly getRipple = (): Promise<UiRipple | null> => {\n this.showRipple = true;\n return this.ripple;\n };\n\n constructor() {\n super();\n\n this.type = ButtonType.filled;\n this._hasIcon = false;\n }\n\n protected async pressRipple(): Promise<void> {\n const element = await this.getRipple();\n if (element && !element.isPressed) {\n element.beginPress();\n }\n }\n\n protected async endRipple(): Promise<void> {\n const element = await this.getRipple();\n element?.endPress();\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.pressRipple();\n }\n\n override endPress(config: EndPressConfig): void {\n super.endPress(config);\n this.endRipple();\n const { cancelled, reason } = config;\n if (cancelled) {\n return;\n }\n if (!reason || reason === 'enter' || reason === 'space') {\n this._submitHandler();\n }\n if (reason === 'enter' || reason === 'space') {\n this.click();\n }\n }\n\n protected _submitHandler(): void {\n const { form, name, value, submit, disabled } = this;\n if (!form || !submit || disabled) {\n return;\n }\n let button: HTMLButtonElement | undefined;\n if (name || value) {\n button = document.createElement('button');\n if (name) {\n button.name = name;\n }\n if (value) {\n button.value = value;\n }\n button.type = 'submit';\n button.hidden = true;\n form.append(button);\n }\n try {\n form.requestSubmit(button);\n } catch (_) {\n // ...\n }\n if (button) {\n form.removeChild(button);\n }\n }\n\n /**\n * Sets the `_hasIcon` state property when the \"icon\" slot change event is dispatched.\n */\n protected _iconSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasIcon = !!slot.assignedNodes().length;\n }\n\n protected override render(): TemplateResult {\n const { pressed = false, trailingIcon = false } = this;\n const containerClasses = classMap({\n surface: true,\n withIcon: this._hasIcon,\n pressed,\n });\n return html`\n <div class=\"${containerClasses}\" ${ripple(this.getRipple)}>\n <div class=\"container\"></div>\n <div class=\"state\"></div>\n ${when(this.showRipple, this.renderRipple)}\n <div class=\"content\">\n ${trailingIcon ? '' : this._iconTemplate()}\n <slot></slot>\n ${trailingIcon ? this._iconTemplate() : ''}\n </div>\n </div>\n `;\n }\n\n protected _iconTemplate(): TemplateResult {\n return html`<slot name=\"icon\" @slotchange=\"${this._iconSlotChange}\"></slot>`;\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this;\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`;\n };\n}\n"]}
@@ -20,39 +20,17 @@ export var IconButtonType;
20
20
  * @fires active - An event dispatched when the `active` state has changed. This only happens when the button is `toggle`.
21
21
  */
22
22
  export default class UiIconButton extends Button {
23
- /**
24
- * The type of the rendered button according to Material 3 spec.
25
- *
26
- * @default {ButtonType.filled}
27
- * @attribute
28
- */
29
- type;
30
- /**
31
- * Whether the button can be toggled.
32
- * A toggle button behaves different as it gets the `aria-pressed` attribute
33
- * which changes depending on the pressed state.
34
- * A toggle button is activated until it is clicked/pressed again.
35
- * A toggle button dispatched `active` event when the press state change.
36
- * The host can check the `active` property to know the state.
37
- *
38
- * @attribute
39
- */
40
- toggle;
41
- /**
42
- * A flag that determines whether the button is activated (pressed when `toggle` is set).
43
- * It is `undefined` and makes no effect when `toggle` is not set.
44
- *
45
- * @attribute
46
- */
47
- active;
48
- ripple;
49
- showRipple = false;
50
- getRipple = () => {
51
- this.showRipple = true;
52
- return this.ripple;
53
- };
54
23
  constructor() {
55
24
  super();
25
+ this.showRipple = false;
26
+ this.getRipple = () => {
27
+ this.showRipple = true;
28
+ return this.ripple;
29
+ };
30
+ this.renderRipple = () => {
31
+ const { disabled } = this;
32
+ return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
33
+ };
56
34
  this.type = IconButtonType.standard;
57
35
  }
58
36
  update(changedProperties) {
@@ -112,10 +90,6 @@ export default class UiIconButton extends Button {
112
90
  </div>
113
91
  `;
114
92
  }
115
- renderRipple = () => {
116
- const { disabled } = this;
117
- return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
118
- };
119
93
  }
120
94
  __decorate([
121
95
  property({ type: String, reflect: true, })
@@ -1 +1 @@
1
- {"version":3,"file":"UiIconButton.js","sourceRoot":"","sources":["../../../src/ui/button/UiIconButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from \"lit\";\nimport { property, queryAsync, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { when } from 'lit/directives/when.js';\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport UiRipple from \"../effects/ripple.js\";\nimport { Button } from \"./Button.js\";\nimport { ripple } from \"../effects/rippleDirective.js\";\nimport '../../define/ui/ui-ripple.js';\n\n/**\n * The type of the icon button rendered.\n */\nexport enum IconButtonType {\n 'filled' = 'filled', \n 'tonal' = 'tonal', \n 'outlined' = 'outlined', \n 'standard' = 'standard',\n}\n\n/**\n * @fires active - An event dispatched when the `active` state has changed. This only happens when the button is `toggle`.\n */\nexport default class UiIconButton extends Button {\n /**\n * The type of the rendered button according to Material 3 spec.\n * \n * @default {ButtonType.filled}\n * @attribute\n */\n @property({ type: String, reflect: true, }) type: IconButtonType;\n\n /**\n * Whether the button can be toggled.\n * A toggle button behaves different as it gets the `aria-pressed` attribute \n * which changes depending on the pressed state.\n * A toggle button is activated until it is clicked/pressed again.\n * A toggle button dispatched `active` event when the press state change. \n * The host can check the `active` property to know the state.\n * \n * @attribute\n */\n @property({ type: Boolean, reflect: true, }) toggle?: boolean;\n\n /**\n * A flag that determines whether the button is activated (pressed when `toggle` is set).\n * It is `undefined` and makes no effect when `toggle` is not set.\n * \n * @attribute\n */\n @property({ type: Boolean, reflect: true, }) active?: boolean;\n\n @queryAsync('ui-ripple') protected ripple!: Promise<UiRipple | null>;\n\n @state() protected showRipple = false;\n\n protected readonly getRipple = (): Promise<UiRipple | null> => {\n this.showRipple = true;\n return this.ripple;\n };\n\n constructor() {\n super();\n\n this.type = IconButtonType.standard;\n }\n\n protected override update(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('active')) {\n this.setAttribute('aria-pressed', String(this.active));\n }\n super.update(changedProperties);\n }\n\n protected async pressRipple(): Promise<void> {\n const element = await this.getRipple();\n if (element && !element.isPressed) {\n element.beginPress();\n }\n }\n\n protected async endRipple(): Promise<void> {\n const element = await this.getRipple();\n element?.endPress();\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.pressRipple();\n }\n\n override endPress(config: EndPressConfig): void {\n super.endPress(config);\n this.endRipple();\n const { cancelled, reason } = config;\n if (cancelled) {\n return;\n }\n if (!reason || reason === 'enter' || reason === 'space') {\n if (this.toggle) {\n this.active = !this.active;\n // note, only dispatch events when user interacting with the UI.\n this.dispatchEvent(new Event('active'));\n }\n }\n if (reason === 'enter' || reason === 'space') {\n if (!this.toggle) {\n this.click();\n }\n }\n }\n\n protected override render(): TemplateResult {\n const { pressed=false } = this;\n const containerClasses = classMap({\n surface: true,\n pressed,\n });\n return html`\n <div class=\"${containerClasses}\" ${ripple(this.getRipple)}>\n <div class=\"container\"></div>\n <div class=\"state\"></div>\n ${when(this.showRipple, this.renderRipple)}\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this;\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`;\n };\n}\n"]}
1
+ {"version":3,"file":"UiIconButton.js","sourceRoot":"","sources":["../../../src/ui/button/UiIconButton.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,8BAA8B,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;AACzB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,MAAM;IAsC9C;QACE,KAAK,EAAE,CAAC;QARS,eAAU,GAAG,KAAK,CAAC;QAEnB,cAAS,GAAG,GAA6B,EAAE;YAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC,CAAC;QAuEQ,iBAAY,GAAG,GAAmB,EAAE;YAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;YAC1B,OAAO,IAAI,CAAA,wCAAwC,QAAQ,gBAAgB,CAAC;QAC9E,CAAC,CAAC;QArEA,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC;IACtC,CAAC;IAEkB,MAAM,CAAC,iBAAuC;QAC/D,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACxD;QACD,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC;IAES,KAAK,CAAC,WAAW;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACjC,OAAO,CAAC,UAAU,EAAE,CAAC;SACtB;IACH,CAAC;IAES,KAAK,CAAC,SAAS;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAEQ,UAAU,CAAC,OAAyB;QAC3C,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEQ,QAAQ,CAAC,MAAsB;QACtC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACrC,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE;YACvD,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3B,gEAAgE;gBAChE,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;aACzC;SACF;QACD,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;IACH,CAAC;IAEkB,MAAM;QACvB,MAAM,EAAE,OAAO,GAAC,KAAK,EAAE,GAAG,IAAI,CAAC;QAC/B,MAAM,gBAAgB,GAAG,QAAQ,CAAC;YAChC,OAAO,EAAE,IAAI;YACb,OAAO;SACR,CAAC,CAAC;QACH,OAAO,IAAI,CAAA;kBACG,gBAAgB,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;;;QAGrD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;;;;;KAK3C,CAAC;IACJ,CAAC;CAMF;AAxG6C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC;0CAAsB;AAYpB;IAA5C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC;4CAAkB;AAQjB;IAA5C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC;4CAAkB;AAErC;IAAxB,UAAU,CAAC,WAAW,CAAC;4CAA6C;AAE5D;IAAR,KAAK,EAAE;gDAA8B","sourcesContent":["import { html, PropertyValues, TemplateResult } from \"lit\";\nimport { property, queryAsync, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { when } from 'lit/directives/when.js';\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport UiRipple from \"../effects/ripple.js\";\nimport { Button } from \"./Button.js\";\nimport { ripple } from \"../effects/rippleDirective.js\";\nimport '../../define/ui/ui-ripple.js';\n\n/**\n * The type of the icon button rendered.\n */\nexport enum IconButtonType {\n 'filled' = 'filled', \n 'tonal' = 'tonal', \n 'outlined' = 'outlined', \n 'standard' = 'standard',\n}\n\n/**\n * @fires active - An event dispatched when the `active` state has changed. This only happens when the button is `toggle`.\n */\nexport default class UiIconButton extends Button {\n /**\n * The type of the rendered button according to Material 3 spec.\n * \n * @default {ButtonType.filled}\n * @attribute\n */\n @property({ type: String, reflect: true, }) type: IconButtonType;\n\n /**\n * Whether the button can be toggled.\n * A toggle button behaves different as it gets the `aria-pressed` attribute \n * which changes depending on the pressed state.\n * A toggle button is activated until it is clicked/pressed again.\n * A toggle button dispatched `active` event when the press state change. \n * The host can check the `active` property to know the state.\n * \n * @attribute\n */\n @property({ type: Boolean, reflect: true, }) toggle?: boolean;\n\n /**\n * A flag that determines whether the button is activated (pressed when `toggle` is set).\n * It is `undefined` and makes no effect when `toggle` is not set.\n * \n * @attribute\n */\n @property({ type: Boolean, reflect: true, }) active?: boolean;\n\n @queryAsync('ui-ripple') protected ripple!: Promise<UiRipple | null>;\n\n @state() protected showRipple = false;\n\n protected readonly getRipple = (): Promise<UiRipple | null> => {\n this.showRipple = true;\n return this.ripple;\n };\n\n constructor() {\n super();\n\n this.type = IconButtonType.standard;\n }\n\n protected override update(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('active')) {\n this.setAttribute('aria-pressed', String(this.active));\n }\n super.update(changedProperties);\n }\n\n protected async pressRipple(): Promise<void> {\n const element = await this.getRipple();\n if (element && !element.isPressed) {\n element.beginPress();\n }\n }\n\n protected async endRipple(): Promise<void> {\n const element = await this.getRipple();\n element?.endPress();\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.pressRipple();\n }\n\n override endPress(config: EndPressConfig): void {\n super.endPress(config);\n this.endRipple();\n const { cancelled, reason } = config;\n if (cancelled) {\n return;\n }\n if (!reason || reason === 'enter' || reason === 'space') {\n if (this.toggle) {\n this.active = !this.active;\n // note, only dispatch events when user interacting with the UI.\n this.dispatchEvent(new Event('active'));\n }\n }\n if (reason === 'enter' || reason === 'space') {\n if (!this.toggle) {\n this.click();\n }\n }\n }\n\n protected override render(): TemplateResult {\n const { pressed=false } = this;\n const containerClasses = classMap({\n surface: true,\n pressed,\n });\n return html`\n <div class=\"${containerClasses}\" ${ripple(this.getRipple)}>\n <div class=\"container\"></div>\n <div class=\"state\"></div>\n ${when(this.showRipple, this.renderRipple)}\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this;\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`;\n };\n}\n"]}
@@ -35,49 +35,17 @@ export default class UiChip extends UiElement {
35
35
  setDisabled(this, value);
36
36
  this.requestUpdate('disabled', old);
37
37
  }
38
- /**
39
- * The type of the rendered chip.
40
- * @attribute
41
- *
42
- * @see https://m3.material.io/components/chips/guidelines
43
- */
44
- type;
45
- /**
46
- * Whether the chip should be rendered as elevated.
47
- * @attribute
48
- */
49
- elevated;
50
- /**
51
- * Whether the chip renders the "close" icon at the end.
52
- * @attribute
53
- */
54
- closable;
55
- /**
56
- * Whether the chip is currently checked.
57
- * Note, this controls the presentation layer only. It has no meaning when it comes to forms and inputs.
58
- * @attribute
59
- */
60
- checked;
61
- /**
62
- * The ID attribute of the list element that is rendered after activating the chip.
63
- * When this is set the chip renders the dropdown icon at the end and sets `aria-*`
64
- * attributes informing the assistive technology that this chip controls a list.
65
- *
66
- * @attribute
67
- */
68
- list;
69
- ripple;
70
- showRipple = false;
71
- /**
72
- * Determines when the element has an icon in the "icon" slot.
73
- */
74
- hasIcon;
75
- /**
76
- * Determines when the element has an image in the "avatar" slot.
77
- */
78
- hasAvatar;
79
38
  constructor() {
80
39
  super();
40
+ this.showRipple = false;
41
+ this.getRipple = () => {
42
+ this.showRipple = true;
43
+ return this.ripple;
44
+ };
45
+ this.renderRipple = () => {
46
+ const { disabled } = this;
47
+ return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
48
+ };
81
49
  this.disabled = false;
82
50
  this.type = ChipType.assist;
83
51
  this.hasIcon = false;
@@ -136,10 +104,6 @@ export default class UiChip extends UiElement {
136
104
  const element = await this.getRipple();
137
105
  element?.endFocus();
138
106
  }
139
- getRipple = () => {
140
- this.showRipple = true;
141
- return this.ripple;
142
- };
143
107
  endPress(info) {
144
108
  super.endPress(info);
145
109
  this.endRipple();
@@ -255,10 +219,6 @@ export default class UiChip extends UiElement {
255
219
  }
256
220
  return nothing;
257
221
  }
258
- renderRipple = () => {
259
- const { disabled } = this;
260
- return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
261
- };
262
222
  }
263
223
  __decorate([
264
224
  property({ type: Boolean, reflect: true })