@api-client/ui 0.0.12 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/demo/elements/authorization/cc.ts +56 -27
  2. package/dist/bindings/base/FileBindings.d.ts +4 -0
  3. package/dist/bindings/base/FileBindings.d.ts.map +1 -1
  4. package/dist/bindings/base/FileBindings.js +21 -1
  5. package/dist/bindings/base/FileBindings.js.map +1 -1
  6. package/dist/bindings/base/StoreBindings.d.ts +1 -17
  7. package/dist/bindings/base/StoreBindings.d.ts.map +1 -1
  8. package/dist/bindings/base/StoreBindings.js +0 -59
  9. package/dist/bindings/base/StoreBindings.js.map +1 -1
  10. package/dist/bindings/web/WebFileBindings.js +1 -1
  11. package/dist/bindings/web/WebFileBindings.js.map +1 -1
  12. package/dist/define/http/certificate-add.d.ts +9 -0
  13. package/dist/define/http/certificate-add.d.ts.map +1 -0
  14. package/dist/define/http/certificate-add.js +10 -0
  15. package/dist/define/http/certificate-add.js.map +1 -0
  16. package/dist/define/http/http-body-editor.d.ts.map +1 -1
  17. package/dist/define/http/http-body-editor.js +1 -1
  18. package/dist/define/http/http-body-editor.js.map +1 -1
  19. package/dist/define/ui/ui-segmented-button-set.d.ts +1 -1
  20. package/dist/define/ui/ui-segmented-button-set.d.ts.map +1 -1
  21. package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
  22. package/dist/elements/authorization/ui/CC.styles.d.ts.map +1 -1
  23. package/dist/elements/authorization/ui/CC.styles.js +4 -9
  24. package/dist/elements/authorization/ui/CC.styles.js.map +1 -1
  25. package/dist/elements/authorization/ui/CcAuthorization.d.ts +14 -29
  26. package/dist/elements/authorization/ui/CcAuthorization.d.ts.map +1 -1
  27. package/dist/elements/authorization/ui/CcAuthorization.js +67 -158
  28. package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
  29. package/dist/elements/http/BodyEditor.js +5 -5
  30. package/dist/elements/http/BodyEditor.js.map +1 -1
  31. package/dist/elements/http/BodyEditor.styles.d.ts +1 -1
  32. package/dist/elements/http/BodyEditor.styles.d.ts.map +1 -1
  33. package/dist/elements/http/BodyEditor.styles.js +5 -19
  34. package/dist/elements/http/BodyEditor.styles.js.map +1 -1
  35. package/dist/elements/http/CertificateAdd.element.d.ts +91 -0
  36. package/dist/elements/http/CertificateAdd.element.d.ts.map +1 -0
  37. package/dist/elements/http/CertificateAdd.element.js +389 -0
  38. package/dist/elements/http/CertificateAdd.element.js.map +1 -0
  39. package/dist/elements/http/CertificateAdd.styles.d.ts +3 -0
  40. package/dist/elements/http/CertificateAdd.styles.d.ts.map +1 -0
  41. package/dist/elements/http/CertificateAdd.styles.js +61 -0
  42. package/dist/elements/http/CertificateAdd.styles.js.map +1 -0
  43. package/dist/elements/project/ProjectRunReport.d.ts +2 -1
  44. package/dist/elements/project/ProjectRunReport.d.ts.map +1 -1
  45. package/dist/elements/project/ProjectRunReport.js.map +1 -1
  46. package/dist/elements/store/FilePicker.styles.d.ts.map +1 -1
  47. package/dist/elements/store/FilePicker.styles.js +1 -0
  48. package/dist/elements/store/FilePicker.styles.js.map +1 -1
  49. package/dist/elements/store/FilesLib.d.ts +2 -2
  50. package/dist/elements/store/FilesLib.d.ts.map +1 -1
  51. package/dist/elements/store/FilesLib.js.map +1 -1
  52. package/dist/events/EventTypes.d.ts +6 -7
  53. package/dist/events/EventTypes.d.ts.map +1 -1
  54. package/dist/events/EventTypes.js +7 -7
  55. package/dist/events/EventTypes.js.map +1 -1
  56. package/dist/events/Events.d.ts +6 -1
  57. package/dist/events/Events.d.ts.map +1 -1
  58. package/dist/events/Events.js +2 -0
  59. package/dist/events/Events.js.map +1 -1
  60. package/dist/events/FilesystemEvents.d.ts +8 -0
  61. package/dist/events/FilesystemEvents.d.ts.map +1 -0
  62. package/dist/events/FilesystemEvents.js +59 -0
  63. package/dist/events/FilesystemEvents.js.map +1 -0
  64. package/dist/events/HttpClientEvents.d.ts +0 -2
  65. package/dist/events/HttpClientEvents.d.ts.map +1 -1
  66. package/dist/events/HttpClientEvents.js +0 -2
  67. package/dist/events/HttpClientEvents.js.map +1 -1
  68. package/dist/http-client/idb/Arc18DataUpgrade.d.ts +0 -8
  69. package/dist/http-client/idb/Arc18DataUpgrade.d.ts.map +1 -1
  70. package/dist/http-client/idb/Arc18DataUpgrade.js +11 -206
  71. package/dist/http-client/idb/Arc18DataUpgrade.js.map +1 -1
  72. package/dist/http-client/store/Cursor.js +2 -2
  73. package/dist/http-client/store/Cursor.js.map +1 -1
  74. package/dist/http-client/store/HttpClientIdbDatabase.d.ts.map +1 -1
  75. package/dist/http-client/store/HttpClientIdbDatabase.js +2 -6
  76. package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
  77. package/dist/http-client/store/State.d.ts +1 -3
  78. package/dist/http-client/store/State.d.ts.map +1 -1
  79. package/dist/http-client/store/State.js.map +1 -1
  80. package/dist/http-client/store/StoreBroadcast.d.ts +0 -5
  81. package/dist/http-client/store/StoreBroadcast.d.ts.map +1 -1
  82. package/dist/http-client/store/StoreBroadcast.js +0 -7
  83. package/dist/http-client/store/StoreBroadcast.js.map +1 -1
  84. package/dist/http-client/store/idb/IdbStore.d.ts +1 -10
  85. package/dist/http-client/store/idb/IdbStore.d.ts.map +1 -1
  86. package/dist/http-client/store/idb/IdbStore.js +0 -48
  87. package/dist/http-client/store/idb/IdbStore.js.map +1 -1
  88. package/dist/http-client/store/types.d.ts +2 -56
  89. package/dist/http-client/store/types.d.ts.map +1 -1
  90. package/dist/http-client/store/types.js.map +1 -1
  91. package/dist/index.d.ts +1 -0
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +2 -0
  94. package/dist/index.js.map +1 -1
  95. package/dist/lib/files/FileUtils.d.ts +9 -0
  96. package/dist/lib/files/FileUtils.d.ts.map +1 -0
  97. package/dist/lib/files/FileUtils.js +13 -0
  98. package/dist/lib/files/FileUtils.js.map +1 -0
  99. package/dist/mixins/RouteMixin.d.ts +4 -0
  100. package/dist/mixins/RouteMixin.d.ts.map +1 -1
  101. package/dist/mixins/RouteMixin.js +1 -0
  102. package/dist/mixins/RouteMixin.js.map +1 -1
  103. package/dist/pages/api-client/ApiClient.screen.d.ts +8 -4
  104. package/dist/pages/api-client/ApiClient.screen.d.ts.map +1 -1
  105. package/dist/pages/api-client/ApiClient.screen.js +25 -4
  106. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  107. package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
  108. package/dist/pages/api-client/ApiClient.styles.js +0 -12
  109. package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
  110. package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
  111. package/dist/pages/api-client/pages/Files.page.js +13 -0
  112. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  113. package/dist/pages/api-client/pages/Trash.page.d.ts.map +1 -1
  114. package/dist/pages/api-client/pages/Trash.page.js +3 -11
  115. package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
  116. package/dist/ui/button/SegmentedButtonsSet.d.ts +14 -0
  117. package/dist/ui/button/SegmentedButtonsSet.d.ts.map +1 -1
  118. package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
  119. package/dist/ui/list/UiDropdownList.js +1 -1
  120. package/dist/ui/list/UiDropdownList.js.map +1 -1
  121. package/dist/ui/notification/SnackNotifications.d.ts +1 -0
  122. package/dist/ui/notification/SnackNotifications.d.ts.map +1 -1
  123. package/dist/ui/notification/SnackNotifications.js +7 -0
  124. package/dist/ui/notification/SnackNotifications.js.map +1 -1
  125. package/package.json +2 -2
  126. package/src/bindings/base/FileBindings.ts +25 -1
  127. package/src/bindings/base/StoreBindings.ts +1 -73
  128. package/src/bindings/web/WebFileBindings.ts +1 -1
  129. package/src/define/http/certificate-add.ts +12 -0
  130. package/src/define/http/http-body-editor.ts +1 -1
  131. package/src/define/ui/ui-segmented-button-set.ts +1 -1
  132. package/src/elements/authorization/ui/CC.styles.ts +4 -9
  133. package/src/elements/authorization/ui/CcAuthorization.ts +67 -167
  134. package/src/elements/http/BodyEditor.styles.ts +5 -19
  135. package/src/elements/http/BodyEditor.ts +5 -5
  136. package/src/elements/http/CertificateAdd.element.ts +443 -0
  137. package/src/elements/http/CertificateAdd.styles.ts +61 -0
  138. package/src/elements/project/ProjectRunReport.ts +2 -1
  139. package/src/elements/store/FilePicker.styles.ts +1 -0
  140. package/src/elements/store/FilesLib.ts +2 -2
  141. package/src/events/EventTypes.ts +7 -7
  142. package/src/events/Events.ts +2 -0
  143. package/src/events/FilesystemEvents.ts +63 -0
  144. package/src/events/HttpClientEvents.ts +0 -2
  145. package/src/http-client/idb/Arc18DataUpgrade.ts +84 -84
  146. package/src/http-client/store/Cursor.ts +2 -2
  147. package/src/http-client/store/HttpClientIdbDatabase.ts +5 -9
  148. package/src/http-client/store/State.ts +1 -5
  149. package/src/http-client/store/StoreBroadcast.ts +0 -8
  150. package/src/http-client/store/idb/IdbStore.ts +1 -51
  151. package/src/http-client/store/types.ts +2 -57
  152. package/src/index.ts +3 -0
  153. package/src/lib/files/FileUtils.ts +12 -0
  154. package/src/mixins/RouteMixin.ts +8 -1
  155. package/src/pages/api-client/ApiClient.screen.ts +33 -9
  156. package/src/pages/api-client/ApiClient.styles.ts +0 -12
  157. package/src/pages/api-client/pages/Files.page.ts +11 -0
  158. package/src/pages/api-client/pages/Trash.page.ts +3 -10
  159. package/src/ui/button/SegmentedButtonsSet.ts +16 -1
  160. package/src/ui/list/UiDropdownList.ts +1 -1
  161. package/src/ui/notification/SnackNotifications.ts +8 -0
  162. package/test/elements/http/BodyFormdataEditorElement.test.ts +458 -454
  163. package/test/elements/http/BodyMultipartEditorElement.test.ts +609 -605
  164. package/test/elements/http/BodyRawEditorElement.test.ts +60 -56
  165. package/test/elements/http/CertificateAdd.test.ts +430 -0
  166. package/test/events/EventTypes.test.ts +0 -22
  167. package/test/helpers/UiMock.ts +19 -2
  168. package/web-test-runner.config.mjs +6 -5
  169. package/dist/events/http-client/models/CertificatesEvents.d.ts +0 -12
  170. package/dist/events/http-client/models/CertificatesEvents.d.ts.map +0 -1
  171. package/dist/events/http-client/models/CertificatesEvents.js +0 -18
  172. package/dist/events/http-client/models/CertificatesEvents.js.map +0 -1
  173. package/dist/http-client/idb/AuthDataModel.d.ts +0 -60
  174. package/dist/http-client/idb/AuthDataModel.d.ts.map +0 -1
  175. package/dist/http-client/idb/AuthDataModel.js +0 -150
  176. package/dist/http-client/idb/AuthDataModel.js.map +0 -1
  177. package/dist/http-client/idb/HostsModel.d.ts +0 -25
  178. package/dist/http-client/idb/HostsModel.d.ts.map +0 -1
  179. package/dist/http-client/idb/HostsModel.js +0 -82
  180. package/dist/http-client/idb/HostsModel.js.map +0 -1
  181. package/dist/http-client/idb/LegacyMockedStore.d.ts +0 -214
  182. package/dist/http-client/idb/LegacyMockedStore.d.ts.map +0 -1
  183. package/dist/http-client/idb/LegacyMockedStore.js +0 -486
  184. package/dist/http-client/idb/LegacyMockedStore.js.map +0 -1
  185. package/dist/http-client/store/Validator.d.ts +0 -4
  186. package/dist/http-client/store/Validator.d.ts.map +0 -1
  187. package/dist/http-client/store/Validator.js +0 -32
  188. package/dist/http-client/store/Validator.js.map +0 -1
  189. package/src/events/http-client/models/CertificatesEvents.ts +0 -23
  190. package/src/http-client/idb/AuthDataModel.ts +0 -175
  191. package/src/http-client/idb/HostsModel.ts +0 -125
  192. package/src/http-client/idb/LegacyMockedStore.ts +0 -544
  193. package/src/http-client/store/Validator.ts +0 -33
  194. package/test/apic-ui.test.ts +0 -31
@@ -1,19 +1,14 @@
1
1
  import { css } from 'lit';
2
2
 
3
3
  export default css`
4
- .cert-meta {
5
- display: inline-flex;
6
- align-items: center;
7
- }
8
-
9
4
  :host {
10
- max-height: 300px;
11
5
  display: flex;
12
6
  flex-direction: column;
13
7
  }
14
8
 
15
- form {
16
- overflow: auto;
17
- flex: 1;
9
+ .certificate-info {
10
+ display: flex;
11
+ align-items: center;
12
+ margin-top: 20px;
18
13
  }
19
14
  `;
@@ -1,129 +1,69 @@
1
1
  import { html, nothing, TemplateResult } from "lit";
2
- import { state } from "lit/decorators.js";
3
2
  import {
4
- ICCAuthorization, HttpCertificate, Events as CoreEvents,
5
- ICertificate,
6
- BroadcastEvent,
7
- BroadcastCreatedEvent,
8
- DeletedBroadcastEvent,
3
+ ICCAuthorization, HttpCertificate, Events as CoreEvents, CertificateFileKind, ICertificate, IFile,
9
4
  } from '@api-client/core/build/browser.js';
10
- import '@github/relative-time-element';
5
+ import { state } from "lit/decorators.js";
11
6
  import { Authorization } from "./Authorization.js";
7
+ import type { FilePickerClosingReason } from "../../store/FilePicker.element.js";
12
8
  import { Events } from "../../../events/Events.js";
13
- import type RadioElement from "../../../ui/input/RadioElement.js";
14
- import { StoreBroadcast } from "../../../http-client/store/StoreBroadcast.js";
9
+ import '../../../define/ui/ui-dropdown-list.js';
15
10
  import '../../../define/ui/ui-button.js';
16
- import '../../../define/ui/ui-radio.js';
11
+ import '../../../define/ui/ui-icon-button.js';
12
+ import '../../../define/ui/ui-icon.js';
13
+ import '../../../define/store/file-picker.js';
17
14
 
18
15
  export default class CcAuthorization extends Authorization {
19
- @state() items?: ICertificate[];
20
-
21
- @state() querying = false;
22
-
23
- @state() loadingError?: string;
24
-
25
- channel = new BroadcastChannel(StoreBroadcast.certificates);
26
-
27
- constructor() {
28
- super();
29
-
30
- this.handleBroadcast = this.handleBroadcast.bind(this);
31
- }
32
-
33
- override connectedCallback(): void {
34
- super.connectedCallback();
35
- this.channel.addEventListener('message', this.handleBroadcast);
36
- this.queryCertificates();
37
- }
38
-
39
- override disconnectedCallback(): void {
40
- super.disconnectedCallback();
41
- this.channel.removeEventListener('message', this.handleBroadcast);
42
- }
43
-
44
- protected handleBroadcast(e: MessageEvent): void {
45
- const event = e.data as BroadcastEvent;
46
- switch (event.operation) {
47
- case 'created': this.handleCreated(event as BroadcastCreatedEvent); break;
48
- case 'deleted': this.handleDeleted(event as DeletedBroadcastEvent); break;
49
- default:
50
- }
51
- }
16
+ @state() selectorRendered = false;
52
17
 
53
- protected handleCreated(event: BroadcastCreatedEvent): void {
54
- const cert = event.data as ICertificate;
55
- if (!this.items) {
56
- this.items = [];
18
+ get config(): ICCAuthorization {
19
+ const { authorization } = this;
20
+ if (!authorization) {
21
+ return { };
57
22
  }
58
- const index = this.items.findIndex(i => i.key === cert.key);
59
- if (index >= 0) {
60
- this.items[index] = cert;
61
- } else {
62
- this.items.push(cert);
23
+ if (!authorization.config) {
24
+ authorization.config = {} as ICCAuthorization;
63
25
  }
64
- this.requestUpdate();
26
+ return authorization.config as ICCAuthorization;
65
27
  }
66
28
 
67
- protected handleDeleted(event: DeletedBroadcastEvent): void {
68
- if (!this.items) {
29
+ protected handleClose(e: CustomEvent<FilePickerClosingReason>): void {
30
+ const { canceled, file } = e.detail;
31
+ if (canceled) {
69
32
  return;
70
33
  }
71
- const { key } = event;
72
- const index = this.items.findIndex(i => i.key === key);
73
- if (index >= 0) {
74
- this.items.splice(index, 1);
75
- this.requestUpdate();
76
- }
34
+ this.setCertificate((file as IFile).key);
35
+ CoreEvents.Telemetry.event({
36
+ category: 'Certificates',
37
+ action: 'Authorization',
38
+ label: 'selected-certificate'
39
+ }, this);
77
40
  }
78
41
 
79
- protected async queryCertificates(): Promise<void> {
80
- if (this.querying) {
81
- return;
82
- }
83
- this.querying = true;
42
+ async setCertificate(key: string): Promise<void> {
43
+ let result: unknown;
84
44
  try {
85
- const data = await Events.HttpClient.Model.Certificate.list({ limit: 100, space: "" }); // the space should be filled by the bindings / hosting app
86
- if (!data) {
87
- this.items = undefined;
88
- throw new Error(`Certificates query not handled by the store.`);
89
- return;
90
- }
91
- this.items = data.items;
92
- } catch (cause) {
93
- this.loadingError = (cause as Error).message;
94
- } finally {
95
- this.querying = false;
45
+ result = await Events.Store.File.read(key, true, this);
46
+ } catch (_) {
47
+ return;
96
48
  }
49
+ const { config } = this;
50
+ config.certificate = result as ICertificate;
51
+ this.requestUpdate();
52
+ this.notifyChange();
97
53
  }
98
54
 
99
- protected handleSelected(e: Event): void {
100
- const { authorization } = this;
101
- if (!authorization) {
102
- return;
55
+ protected handleDropDownOpen(): void {
56
+ this.selectorRendered = true;
57
+ if (this.isUpdatePending) {
58
+ this.scheduleUpdate();
103
59
  }
60
+ }
104
61
 
105
- const radio = e.target as RadioElement;
106
- const { checked, value } = radio;
107
- if (!checked) {
108
- return;
109
- }
110
- const config = authorization.config as ICCAuthorization || {} as ICCAuthorization;
111
- if (value === '') {
112
- delete config.certificate;
113
- } else {
114
- const cert = this.items?.find(i => i.key === value);
115
- if (!cert) {
116
- return;
117
- }
118
- config.certificate = cert;
119
- }
62
+ protected handleClearCertificate(): void {
63
+ const { config } = this;
64
+ delete config.certificate;
65
+ this.requestUpdate();
120
66
  this.notifyChange();
121
-
122
- CoreEvents.Telemetry.event({
123
- category: 'Certificates',
124
- action: 'Authorization',
125
- label: 'selected-certificate'
126
- }, this);
127
67
  }
128
68
 
129
69
  override render(): TemplateResult {
@@ -134,81 +74,41 @@ export default class CcAuthorization extends Authorization {
134
74
  }
135
75
 
136
76
  protected renderEditor(): TemplateResult | typeof nothing {
137
- const { authorization, loadingError, items } = this;
138
- if (!authorization) {
139
- return nothing;
140
- }
141
- const hasItems = !!items && !!items.length;
142
- if (!loadingError && !hasItems) {
143
- return html`
144
- ${this.renderEmptyState()}
145
- `;
146
- }
147
- const config = authorization.config as ICCAuthorization || {} as ICCAuthorization;
77
+ const { config } = this;
78
+ const { certificate } = config;
79
+ // Note, the <form> element is required by the Authorization class for validation.
148
80
  return html`
149
- ${loadingError ? this.renderErrorState(loadingError) : ''}
150
- ${hasItems ? html`
151
- <form autocomplete="on" class="auth-form basic-auth">
152
- ${this.renderList(items, config.certificate)}
153
- </form>
154
- ` : ''}
81
+ <form autocomplete="on" class="auth-form cc-auth"></form>
82
+ ${this.renderSelector()}
83
+ ${certificate ? this.renderSelection(certificate) : nothing}
155
84
  `;
156
85
  }
157
86
 
158
- protected renderErrorState(error: string): TemplateResult {
159
- return html`<p class="error-message">Unable to load certificates: ${error}.</p>`;
160
- }
161
-
162
- protected renderEmptyState(): TemplateResult {
163
- return html`<p class="empty-screen body-large">There are no certificates installed in this application.</p>`;
164
- }
165
-
166
- protected renderList(items: HttpCertificate[], current?: ICertificate): TemplateResult {
167
- const currentKey = current && current.key;
87
+ protected renderSelector(): TemplateResult {
88
+ const { selectorRendered } = this;
89
+ const kinds: typeof CertificateFileKind[] = [CertificateFileKind];
168
90
  return html`
169
- ${this.renderNoneItem(currentKey)}
170
- ${items.map((item) => this.renderCertItem(item, currentKey))}
171
- `;
172
- }
173
-
174
- protected renderNoneItem(selectedKey?: string): TemplateResult {
175
- return html`
176
- <label class="label-medium">
177
- <ui-radio name="certificate" value="" .checked="${!selectedKey}" @change="${this.handleSelected}"></ui-radio>
178
- None
179
- </label>
180
- `;
181
- }
182
-
183
- /**
184
- * @param item The item to render
185
- * @returns The template for the dropdown item.
186
- */
187
- protected renderCertItem(item: HttpCertificate, selectedKey?: string): TemplateResult {
188
- return html`
189
- <div class="cert-item">
190
- <label>
191
- <ui-radio name="certificate" value="${item.key}" .checked="${item.key === selectedKey}" @change="${this.handleSelected}"></ui-radio>
192
- <div class="cert-meta">
193
- <span class="label-medium">${item.name}</span>
194
- <span class="body-small">Added: ${this.renderDateTime(item.created)}</span>
195
- </div>
196
- </label>
91
+ <div class="selector">
92
+ <ui-dropdown-list @open="${this.handleDropDownOpen}">
93
+ <ui-button class="dropdown-trigger" type="tonal">Select a certificate</ui-button>
94
+ ${selectorRendered ? html`<file-picker slot="dropdown" .kinds="${kinds}" @close="${this.handleClose}"></file-picker>` : nothing}
95
+ </ui-dropdown-list>
197
96
  </div>
198
97
  `;
199
98
  }
200
99
 
201
- /**
202
- * @param created The certificate created time.
203
- * @returns The template for the cert time element.
204
- */
205
- protected renderDateTime(created?: number): TemplateResult {
206
- if (!created) {
207
- return html`<span>Unknown</span>`;
208
- }
209
- const d = new Date(created);
100
+ protected renderSelection(certificate: HttpCertificate): TemplateResult {
210
101
  return html`
211
- <relative-time datetime="${d.toISOString()}"></relative-time>
102
+ <div class="certificate-info body-medium">
103
+ Current certificate: ${certificate.name}
104
+ <ui-icon-button
105
+ aria-label="Remove certificate from authorization"
106
+ title="Remove certificate from authorization"
107
+ @click="${this.handleClearCertificate}"
108
+ >
109
+ <ui-icon role="presentation" icon="deleteOutline"></ui-icon>
110
+ </ui-icon-button>
111
+ </div>
212
112
  `;
213
113
  }
214
114
  }
@@ -1,6 +1,7 @@
1
1
  import { css } from 'lit';
2
+ import typography from '../../styles/m3/typography.module.js';
2
3
 
3
- export default css`
4
+ export default [typography, css`
4
5
  :host {
5
6
  display: flex;
6
7
  flex-direction: column;
@@ -32,7 +33,8 @@ http-body-text-editor {
32
33
  background-color: #FFEB3B;
33
34
  color: #000;
34
35
  padding: 0 8px;
35
- border-radius: 8px;
36
+ border-radius: var(--md-sys-shape-corner-small);
37
+ margin-bottom: 20px;
36
38
  }
37
39
 
38
40
  .invalid-mime .warning-icon {
@@ -54,14 +56,6 @@ http-body-text-editor {
54
56
  .form-info {
55
57
  margin: 20px 0 0 0;
56
58
  color: var(--md-sys-color-on-surface);
57
- font-family: var(--md-sys-typescale-body-small-font-family-name);
58
- font-style: var(--md-sys-typescale-body-small-font-family-style);
59
- font-weight: var(--md-sys-typescale-body-small-font-weight);
60
- font-size: var(--md-sys-typescale-body-small-font-size);
61
- letter-spacing: var(--md-sys-typescale-body-small-tracking);
62
- line-height: var(--md-sys-typescale-body-small-height);
63
- text-transform: var(--md-sys-typescale-body-small-text-transform);
64
- text-decoration: var(--md-sys-typescale-body-small-text-decoration);
65
59
  }
66
60
 
67
61
  .file-picker {
@@ -73,13 +67,5 @@ http-body-text-editor {
73
67
  display: flex;
74
68
  align-items: center;
75
69
  margin-left: 8px;
76
- font-family: var(--md-sys-typescale-label-medium-font-family-name);
77
- font-style: var(--md-sys-typescale-label-medium-font-family-style);
78
- font-weight: var(--md-sys-typescale-label-medium-font-weight);
79
- font-size: var(--md-sys-typescale-label-medium-font-size);
80
- letter-spacing: var(--md-sys-typescale-label-medium-tracking);
81
- line-height: var(--md-sys-typescale-label-medium-height);
82
- text-transform: var(--md-sys-typescale-label-medium-text-transform);
83
- text-decoration: var(--md-sys-typescale-label-medium-text-decoration);
84
70
  }
85
- `;
71
+ `];
@@ -683,7 +683,7 @@ export default class BodyEditor extends ApiElement {
683
683
  >
684
684
  URL decode
685
685
  </ui-button>
686
- <label title="When set it automatically encodes the values before sending the request">
686
+ <label title="When set it automatically encodes the values before sending the request" class="label-medium">
687
687
  <ui-checkbox .checked="${autoEncode}" @change="${this.handleUrlEncodeAutoChange}"></ui-checkbox>
688
688
  Encode on send
689
689
  </label>
@@ -803,7 +803,7 @@ export default class BodyEditor extends ApiElement {
803
803
 
804
804
  protected renderFormInfo(): TemplateResult {
805
805
  return html`
806
- <p class="form-info">
806
+ <p class="form-info body-small">
807
807
  Note that the content-type header will be added when the request is sent.
808
808
  </p>
809
809
  `;
@@ -829,7 +829,7 @@ export default class BodyEditor extends ApiElement {
829
829
  const { value } = this;
830
830
  const { size, name } = value as File;
831
831
  return html`
832
- <div class="file-info">
832
+ <div class="file-info label-medium">
833
833
  <span class="file-name">${name || 'unknown name'}</span>
834
834
  <span class="file-size">${size} bytes</span>
835
835
  <ui-icon-button
@@ -850,7 +850,7 @@ export default class BodyEditor extends ApiElement {
850
850
  }
851
851
  const id = this.invalidMimeMessage;
852
852
  return html`
853
- <div class="invalid-mime">
853
+ <div class="invalid-mime body-medium">
854
854
  <ui-icon icon="warning" class="warning-icon"></ui-icon>
855
855
  ${id === 1 ? this.renderFixableInvalidMime('multipart/form-data') : ''}
856
856
  ${id === 2 ? this.renderFixableInvalidMime('application/x-www-form-urlencoded') : ''}
@@ -863,7 +863,7 @@ export default class BodyEditor extends ApiElement {
863
863
  */
864
864
  protected renderFixableInvalidMime(suggested: string): TemplateResult {
865
865
  return html`
866
- <p class="message">
866
+ <p class="message body-medium">
867
867
  The <code>content-type</code> header has different value than <b>${suggested}</b>.
868
868
  </p>
869
869
  <ui-button class="fix" type="tonal" title="Updates the content type header for the request" @click="${this.autoFixMime}">Fix</ui-button>