@api-client/ui 0.2.3 → 0.2.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 (204) hide show
  1. package/.aiexclude +3 -0
  2. package/.vscode/settings.json +6 -3
  3. package/build/src/elements/authorization/ui/ApiKeyAuthorization.d.ts +1 -1
  4. package/build/src/elements/authorization/ui/ApiKeyAuthorization.d.ts.map +1 -1
  5. package/build/src/elements/authorization/ui/ApiKeyAuthorization.js +7 -7
  6. package/build/src/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  7. package/build/src/elements/authorization/ui/Authorization.styles.js +4 -4
  8. package/build/src/elements/authorization/ui/Authorization.styles.js.map +1 -1
  9. package/build/src/elements/authorization/ui/BasicAuthorization.d.ts +1 -1
  10. package/build/src/elements/authorization/ui/BasicAuthorization.d.ts.map +1 -1
  11. package/build/src/elements/authorization/ui/BasicAuthorization.js +5 -5
  12. package/build/src/elements/authorization/ui/BasicAuthorization.js.map +1 -1
  13. package/build/src/elements/authorization/ui/BearerAuthorization.d.ts +1 -1
  14. package/build/src/elements/authorization/ui/BearerAuthorization.d.ts.map +1 -1
  15. package/build/src/elements/authorization/ui/BearerAuthorization.js +3 -3
  16. package/build/src/elements/authorization/ui/BearerAuthorization.js.map +1 -1
  17. package/build/src/elements/authorization/ui/NtlmAuthorization.d.ts +1 -1
  18. package/build/src/elements/authorization/ui/NtlmAuthorization.d.ts.map +1 -1
  19. package/build/src/elements/authorization/ui/NtlmAuthorization.js +7 -7
  20. package/build/src/elements/authorization/ui/NtlmAuthorization.js.map +1 -1
  21. package/build/src/elements/authorization/ui/OAuth2Authorization.d.ts +1 -1
  22. package/build/src/elements/authorization/ui/OAuth2Authorization.d.ts.map +1 -1
  23. package/build/src/elements/authorization/ui/OAuth2Authorization.js +32 -27
  24. package/build/src/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  25. package/build/src/elements/authorization/ui/OidcAuthorization.js +4 -4
  26. package/build/src/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  27. package/build/src/elements/autocomplete/autocomplete-input.d.ts +10 -0
  28. package/build/src/elements/autocomplete/autocomplete-input.d.ts.map +1 -0
  29. package/build/src/{md/text-field/ui-text-field.js → elements/autocomplete/autocomplete-input.js} +9 -9
  30. package/build/src/elements/autocomplete/autocomplete-input.js.map +1 -0
  31. package/build/src/elements/autocomplete/internals/autocomplete.d.ts +257 -0
  32. package/build/src/elements/autocomplete/internals/autocomplete.d.ts.map +1 -0
  33. package/build/src/elements/autocomplete/internals/autocomplete.js +619 -0
  34. package/build/src/elements/autocomplete/internals/autocomplete.js.map +1 -0
  35. package/build/src/elements/autocomplete/internals/autocomplete.styles.d.ts +3 -0
  36. package/build/src/elements/autocomplete/internals/autocomplete.styles.d.ts.map +1 -0
  37. package/build/src/elements/autocomplete/internals/autocomplete.styles.js +25 -0
  38. package/build/src/elements/autocomplete/internals/autocomplete.styles.js.map +1 -0
  39. package/build/src/elements/dialog/internals/DeleteCookieAction.element.d.ts +1 -1
  40. package/build/src/elements/dialog/internals/DeleteCookieAction.element.d.ts.map +1 -1
  41. package/build/src/elements/dialog/internals/DeleteCookieAction.element.js +5 -5
  42. package/build/src/elements/dialog/internals/DeleteCookieAction.element.js.map +1 -1
  43. package/build/src/elements/dialog/internals/Rename.d.ts +1 -1
  44. package/build/src/elements/dialog/internals/Rename.d.ts.map +1 -1
  45. package/build/src/elements/dialog/internals/Rename.js +3 -3
  46. package/build/src/elements/dialog/internals/Rename.js.map +1 -1
  47. package/build/src/elements/dialog/internals/SetCookieAction.element.d.ts +1 -1
  48. package/build/src/elements/dialog/internals/SetCookieAction.element.d.ts.map +1 -1
  49. package/build/src/elements/dialog/internals/SetCookieAction.element.js +9 -9
  50. package/build/src/elements/dialog/internals/SetCookieAction.element.js.map +1 -1
  51. package/build/src/elements/environment/EnvironmentEditor.d.ts +1 -1
  52. package/build/src/elements/environment/EnvironmentEditor.d.ts.map +1 -1
  53. package/build/src/elements/environment/EnvironmentEditor.js +3 -3
  54. package/build/src/elements/environment/EnvironmentEditor.js.map +1 -1
  55. package/build/src/elements/environment/EnvironmentEditor.styles.js +1 -1
  56. package/build/src/elements/environment/EnvironmentEditor.styles.js.map +1 -1
  57. package/build/src/elements/environment/ServerEditor.d.ts +1 -1
  58. package/build/src/elements/environment/ServerEditor.d.ts.map +1 -1
  59. package/build/src/elements/environment/ServerEditor.js +7 -7
  60. package/build/src/elements/environment/ServerEditor.js.map +1 -1
  61. package/build/src/elements/environment/ServerEditor.styles.js +1 -1
  62. package/build/src/elements/environment/ServerEditor.styles.js.map +1 -1
  63. package/build/src/elements/http/BodyMultipartEditor.d.ts.map +1 -1
  64. package/build/src/elements/http/BodyMultipartEditor.js +4 -0
  65. package/build/src/elements/http/BodyMultipartEditor.js.map +1 -1
  66. package/build/src/elements/http/CertificateAdd.element.d.ts +1 -1
  67. package/build/src/elements/http/CertificateAdd.element.d.ts.map +1 -1
  68. package/build/src/elements/http/CertificateAdd.element.js +8 -8
  69. package/build/src/elements/http/CertificateAdd.element.js.map +1 -1
  70. package/build/src/elements/http/CertificateAdd.styles.js +1 -1
  71. package/build/src/elements/http/CertificateAdd.styles.js.map +1 -1
  72. package/build/src/elements/http/HttpAssertions.element.js +3 -3
  73. package/build/src/elements/http/HttpAssertions.element.js.map +1 -1
  74. package/build/src/elements/http/HttpFlows.element.js +3 -3
  75. package/build/src/elements/http/HttpFlows.element.js.map +1 -1
  76. package/build/src/elements/http/HttpFlowsUi.d.ts +1 -1
  77. package/build/src/elements/http/HttpFlowsUi.d.ts.map +1 -1
  78. package/build/src/elements/http/HttpFlowsUi.js +31 -31
  79. package/build/src/elements/http/HttpFlowsUi.js.map +1 -1
  80. package/build/src/elements/http/RequestConfigElement.d.ts +1 -1
  81. package/build/src/elements/http/RequestConfigElement.d.ts.map +1 -1
  82. package/build/src/elements/http/RequestConfigElement.js +7 -7
  83. package/build/src/elements/http/RequestConfigElement.js.map +1 -1
  84. package/build/src/elements/http/UrlParamsForm.d.ts +1 -1
  85. package/build/src/elements/http/UrlParamsForm.d.ts.map +1 -1
  86. package/build/src/elements/http/UrlParamsForm.js +1 -1
  87. package/build/src/elements/http/UrlParamsForm.js.map +1 -1
  88. package/build/src/elements/project/ProjectRunner.d.ts +1 -1
  89. package/build/src/elements/project/ProjectRunner.d.ts.map +1 -1
  90. package/build/src/elements/project/ProjectRunner.js +5 -5
  91. package/build/src/elements/project/ProjectRunner.js.map +1 -1
  92. package/build/src/md/input/Input.d.ts +0 -15
  93. package/build/src/md/input/Input.d.ts.map +1 -1
  94. package/build/src/md/input/Input.js +7 -42
  95. package/build/src/md/input/Input.js.map +1 -1
  96. package/build/src/md/list/internals/List.d.ts +7 -2
  97. package/build/src/md/list/internals/List.d.ts.map +1 -1
  98. package/build/src/md/list/internals/List.js +6 -0
  99. package/build/src/md/list/internals/List.js.map +1 -1
  100. package/build/src/md/list/internals/ListItem.styles.d.ts.map +1 -1
  101. package/build/src/md/list/internals/ListItem.styles.js +8 -0
  102. package/build/src/md/list/internals/ListItem.styles.js.map +1 -1
  103. package/build/src/md/listbox/internals/Listbox.d.ts +2 -2
  104. package/build/src/md/listbox/internals/Listbox.d.ts.map +1 -1
  105. package/build/src/md/listbox/internals/Listbox.js.map +1 -1
  106. package/build/src/md/text-area/internals/TextAreaElement.d.ts.map +1 -1
  107. package/build/src/md/text-area/internals/TextAreaElement.js +0 -5
  108. package/build/src/md/text-area/internals/TextAreaElement.js.map +1 -1
  109. package/build/src/md/text-area/ui-text-area.d.ts.map +1 -1
  110. package/build/src/md/text-area/ui-text-area.js +3 -2
  111. package/build/src/md/text-area/ui-text-area.js.map +1 -1
  112. package/build/src/md/text-field/internals/{TextFieldElement.d.ts → TextField.d.ts} +2 -2
  113. package/build/src/md/text-field/internals/TextField.d.ts.map +1 -0
  114. package/build/src/md/text-field/internals/{TextFieldElement.js → TextField.js} +2 -5
  115. package/build/src/md/text-field/internals/TextField.js.map +1 -0
  116. package/build/src/md/text-field/internals/{TextField.styles.d.ts → common.styles.d.ts} +1 -1
  117. package/build/src/md/text-field/internals/common.styles.d.ts.map +1 -0
  118. package/build/src/md/text-field/internals/{TextField.styles.js → common.styles.js} +8 -94
  119. package/build/src/md/text-field/internals/common.styles.js.map +1 -0
  120. package/build/src/md/text-field/internals/filled.styles.d.ts +3 -0
  121. package/build/src/md/text-field/internals/filled.styles.d.ts.map +1 -0
  122. package/build/src/md/text-field/internals/filled.styles.js +107 -0
  123. package/build/src/md/text-field/internals/filled.styles.js.map +1 -0
  124. package/build/src/md/text-field/internals/outlined.styles.d.ts +3 -0
  125. package/build/src/md/text-field/internals/outlined.styles.d.ts.map +1 -0
  126. package/build/src/md/text-field/internals/outlined.styles.js +43 -0
  127. package/build/src/md/text-field/internals/outlined.styles.js.map +1 -0
  128. package/build/src/md/text-field/ui-filled-text-field.d.ts +11 -0
  129. package/build/src/md/text-field/ui-filled-text-field.d.ts.map +1 -0
  130. package/build/src/md/text-field/ui-filled-text-field.js +28 -0
  131. package/build/src/md/text-field/ui-filled-text-field.js.map +1 -0
  132. package/build/src/md/text-field/ui-outlined-text-field.d.ts +11 -0
  133. package/build/src/md/text-field/ui-outlined-text-field.d.ts.map +1 -0
  134. package/build/src/md/text-field/ui-outlined-text-field.js +28 -0
  135. package/build/src/md/text-field/ui-outlined-text-field.js.map +1 -0
  136. package/build/src/types/input.d.ts +1 -1
  137. package/build/src/types/input.d.ts.map +1 -1
  138. package/build/src/types/input.js.map +1 -1
  139. package/demo/elements/authorization/oauth-authorize.html +4 -4
  140. package/demo/elements/authorization/oauth-authorize.ts +1 -1
  141. package/demo/elements/autocomplete/index.html +64 -0
  142. package/demo/elements/autocomplete/index.ts +171 -0
  143. package/demo/elements/http/body-editor.ts +3 -3
  144. package/demo/elements/index.html +15 -11
  145. package/demo/md/index.html +1 -1
  146. package/demo/md/inputs/input.html +10 -15
  147. package/demo/md/inputs/input.ts +389 -101
  148. package/demo/page.css +4 -0
  149. package/package.json +1 -1
  150. package/src/elements/authorization/ui/ApiKeyAuthorization.ts +7 -7
  151. package/src/elements/authorization/ui/Authorization.styles.ts +4 -4
  152. package/src/elements/authorization/ui/BasicAuthorization.ts +5 -5
  153. package/src/elements/authorization/ui/BearerAuthorization.ts +3 -3
  154. package/src/elements/authorization/ui/NtlmAuthorization.ts +7 -7
  155. package/src/elements/authorization/ui/OAuth2Authorization.ts +32 -27
  156. package/src/elements/authorization/ui/OidcAuthorization.ts +4 -4
  157. package/src/elements/autocomplete/autocomplete-input.ts +14 -0
  158. package/src/elements/autocomplete/internals/autocomplete.styles.ts +25 -0
  159. package/src/elements/autocomplete/internals/autocomplete.ts +599 -0
  160. package/src/elements/dialog/internals/DeleteCookieAction.element.ts +5 -5
  161. package/src/elements/dialog/internals/Rename.ts +3 -3
  162. package/src/elements/dialog/internals/SetCookieAction.element.ts +9 -9
  163. package/src/elements/environment/EnvironmentEditor.styles.ts +1 -1
  164. package/src/elements/environment/EnvironmentEditor.ts +3 -3
  165. package/src/elements/environment/ServerEditor.styles.ts +1 -1
  166. package/src/elements/environment/ServerEditor.ts +7 -7
  167. package/src/elements/http/BodyMultipartEditor.ts +4 -0
  168. package/src/elements/http/CertificateAdd.element.ts +8 -8
  169. package/src/elements/http/CertificateAdd.styles.ts +1 -1
  170. package/src/elements/http/HttpAssertions.element.ts +3 -3
  171. package/src/elements/http/HttpFlows.element.ts +3 -3
  172. package/src/elements/http/HttpFlowsUi.ts +31 -31
  173. package/src/elements/http/RequestConfigElement.ts +7 -7
  174. package/src/elements/http/UrlParamsForm.ts +1 -1
  175. package/src/elements/project/ProjectRunner.ts +5 -5
  176. package/src/md/input/Input.ts +6 -21
  177. package/src/md/list/internals/List.ts +14 -2
  178. package/src/md/list/internals/ListItem.styles.ts +8 -0
  179. package/src/md/listbox/internals/Listbox.ts +2 -2
  180. package/src/md/text-area/internals/TextAreaElement.ts +0 -5
  181. package/src/md/text-area/ui-text-area.ts +3 -2
  182. package/src/md/text-field/internals/{TextFieldElement.ts → TextField.ts} +1 -4
  183. package/src/md/text-field/internals/{TextField.styles.ts → common.styles.ts} +7 -93
  184. package/src/md/text-field/internals/filled.styles.ts +107 -0
  185. package/src/md/text-field/internals/outlined.styles.ts +43 -0
  186. package/src/md/text-field/ui-filled-text-field.ts +16 -0
  187. package/src/md/text-field/ui-outlined-text-field.ts +16 -0
  188. package/src/types/input.ts +0 -1
  189. package/test/elements/authorization/basic-method.test.ts +3 -3
  190. package/test/elements/authorization/bearer-method.test.ts +2 -2
  191. package/test/elements/authorization/ntlm-method.test.ts +4 -4
  192. package/test/elements/autocomplete/autocomplete-input.spec.ts +643 -0
  193. package/test/elements/http/BodyMultipartEditorElement.test.ts +15 -16
  194. package/test/elements/http/CertificateAdd.test.ts +11 -11
  195. package/test/elements/http/HttpAssertions.test.ts +9 -9
  196. package/test/elements/http/HttpFlows.test.ts +4 -4
  197. package/build/src/md/text-field/internals/TextField.styles.d.ts.map +0 -1
  198. package/build/src/md/text-field/internals/TextField.styles.js.map +0 -1
  199. package/build/src/md/text-field/internals/TextFieldElement.d.ts.map +0 -1
  200. package/build/src/md/text-field/internals/TextFieldElement.js.map +0 -1
  201. package/build/src/md/text-field/ui-text-field.d.ts +0 -11
  202. package/build/src/md/text-field/ui-text-field.d.ts.map +0 -1
  203. package/build/src/md/text-field/ui-text-field.js.map +0 -1
  204. package/src/md/text-field/ui-text-field.ts +0 -15
@@ -16,7 +16,7 @@ import type Input from '../../md/input/Input.js'
16
16
  import '@github/relative-time-element'
17
17
  import '../../define/http-project/project-run-report.js'
18
18
  import '../../md/checkbox/ui-checkbox.js'
19
- import '../../md/text-field/ui-text-field.js'
19
+ import '../../md/text-field/ui-filled-text-field.js'
20
20
  import '../../md/button/ui-filled-button.js'
21
21
  import '../../md/button/ui-filled-tonal-button.js'
22
22
  import '../../md/progress/ui-progress.js'
@@ -405,7 +405,7 @@ export default class ProjectRunner extends ApiElement {
405
405
  const value = typeof config.iterations === 'number' ? config.iterations : 1
406
406
  return html`
407
407
  <div class="form-row">
408
- <ui-text-field
408
+ <ui-filled-text-field
409
409
  required
410
410
  label="Iterations"
411
411
  aria-describedby="iterationsDescription"
@@ -415,7 +415,7 @@ export default class ProjectRunner extends ApiElement {
415
415
  step="1"
416
416
  .value="${String(value)}"
417
417
  @change="${this.handleIterationsChange}"
418
- ></ui-text-field>
418
+ ></ui-filled-text-field>
419
419
  <p class="body-medium" id="iterationsDescription">The number of times the execution should be repeated.</p>
420
420
  </div>
421
421
  `
@@ -426,7 +426,7 @@ export default class ProjectRunner extends ApiElement {
426
426
  const value = typeof config.iterationDelay === 'number' ? config.iterationDelay : 0
427
427
  return html`
428
428
  <div class="form-row">
429
- <ui-text-field
429
+ <ui-filled-text-field
430
430
  required
431
431
  label="Iteration delay"
432
432
  aria-describedby="iterationDelayDescription"
@@ -436,7 +436,7 @@ export default class ProjectRunner extends ApiElement {
436
436
  step="1"
437
437
  .value="${String(value)}"
438
438
  @change="${this.handleIterationDelayChange}"
439
- ></ui-text-field>
439
+ ></ui-filled-text-field>
440
440
  <p class="body-medium" id="iterationDelayDescription">
441
441
  The number of milliseconds to wait between each iteration.
442
442
  </p>
@@ -9,9 +9,6 @@ import { UiElement } from '../UiElement.js'
9
9
  import '../icon-button/ui-icon-button.js'
10
10
  import '../icons/ui-icon.js'
11
11
 
12
- // export type SupportedInputTypes = "text" | "search" | "tel" | "url" | "email" | "password" |
13
- // "datetime" | "date" | "month" | "week" | "time" | "datetime-local" | "number" | "color" | "file";
14
-
15
12
  const floatTypes = ['date', 'color', 'datetime-local', 'file', 'month', 'time', 'week']
16
13
 
17
14
  /**
@@ -227,23 +224,6 @@ export default abstract class Input extends UiElement {
227
224
  */
228
225
  override autocapitalize: SupportedAutocapitalize = 'off'
229
226
 
230
- /**
231
- * Binds this to the `<input>`'s `autocorrect` property.
232
- * @default off
233
- * @attribute
234
- */
235
- @property({ type: String }) accessor autocorrect = 'off'
236
-
237
- /**
238
- * Binds this to the `<input>`'s `results` property,
239
- * used with type=search.
240
- *
241
- * The maximum number of items that should be displayed in the
242
- * drop-down list of previous search queries. Safari only.
243
- * @attribute
244
- */
245
- @property({ type: Number }) accessor results: number | undefined
246
-
247
227
  /**
248
228
  * Binds this to the `<input>`'s `accept` property,
249
229
  * used with type=file.
@@ -572,6 +552,9 @@ export default abstract class Input extends UiElement {
572
552
  }
573
553
 
574
554
  protected getInputValue(): string {
555
+ if (this.type === 'color') {
556
+ return this.value || '#000000'
557
+ }
575
558
  return this.value || ''
576
559
  }
577
560
 
@@ -896,10 +879,12 @@ export default abstract class Input extends UiElement {
896
879
 
897
880
  protected override render(): TemplateResult {
898
881
  const { pressed = false } = this
882
+ const labelResting = this.labelResting()
899
883
  const containerClasses = classMap({
900
884
  surface: true,
901
885
  pressed,
902
- labelResting: this.labelResting(),
886
+ labelResting,
887
+ labelActive: !labelResting,
903
888
  labelHidden: this.labelHidden(),
904
889
  })
905
890
  return html`
@@ -19,9 +19,15 @@ export interface UiListSelection {
19
19
  index: number
20
20
  }
21
21
 
22
+ export interface UiListItemsChange {
23
+ items: UiListItem[]
24
+ }
25
+
22
26
  /**
23
27
  * @fires select - Dispatched when the user click or press `Enter` or `Space` on any active list item.
24
28
  * The `event.detail` object contains the `item` and `index` properties.
29
+ * @fires itemschange - Dispatched when the list items change, e.g. when the slot changes.
30
+ * The `event.detail` object contains the `items` property with the list of items.
25
31
  */
26
32
  export default class UiList extends LitElement {
27
33
  /**
@@ -102,6 +108,9 @@ export default class UiList extends LitElement {
102
108
  if (this.highlightListItem && !items.includes(this.highlightListItem)) {
103
109
  this.highlightListItem = null
104
110
  }
111
+ this.dispatchEvent(
112
+ new CustomEvent<UiListItemsChange>('itemschange', { bubbles: false, composed: false, detail: { items } })
113
+ )
105
114
  }
106
115
 
107
116
  /**
@@ -195,7 +204,10 @@ export default class UiList extends LitElement {
195
204
  item.deactivate()
196
205
  }
197
206
 
198
- protected activateListItem(item: UiListItem): void {
207
+ protected activateListItem(item?: UiListItem | null): void {
208
+ if (!item) {
209
+ return
210
+ }
199
211
  this.removeAttribute('tabindex')
200
212
  item.activate()
201
213
  item.scrollIntoView({ block: 'end', inline: 'nearest' })
@@ -299,7 +311,7 @@ export default class UiList extends LitElement {
299
311
  this.activateFromEvent(event)
300
312
  }
301
313
 
302
- protected highlightItem(item?: UiListItem): void {
314
+ protected highlightItem(item?: UiListItem | null): void {
303
315
  if (this.highlightListItem) {
304
316
  this.highlightListItem.classList.remove('highlight')
305
317
  }
@@ -8,6 +8,14 @@ export default css`
8
8
  cursor: default;
9
9
  }
10
10
 
11
+ :host([disabled]) {
12
+ cursor: not-allowed;
13
+ }
14
+
15
+ :host([hidden]) {
16
+ display: none;
17
+ }
18
+
11
19
  :host([lines='two']),
12
20
  :host([lines='one'][image='image']) {
13
21
  height: 72px;
@@ -55,13 +55,13 @@ export default class UiListbox extends UiList {
55
55
  this.setAttribute('aria-activedescendant', item.id)
56
56
  }
57
57
 
58
- protected override highlightItem(item?: UiListItem): void {
58
+ override highlightItem(item?: UiListItem | null): void {
59
59
  this.beforeActivation()
60
60
  super.highlightItem(item)
61
61
  this.afterActivation(this.highlightListItem)
62
62
  }
63
63
 
64
- protected override activateListItem(item: UiListItem): void {
64
+ override activateListItem(item: UiListItem | null): void {
65
65
  this.beforeActivation()
66
66
  super.activateListItem(item)
67
67
  this.afterActivation(this.activeListItem)
@@ -36,9 +36,7 @@ export default class TextAreaElement extends Input {
36
36
  const placeholderValue = this.placeholder || undefined
37
37
  const maxLengthValue = this.maxLength > -1 ? this.maxLength : undefined
38
38
  const minLengthValue = this.minLength > -1 ? this.minLength : undefined
39
- const patternValue = this.pattern || undefined
40
39
  const roleValue = this.dataRole || undefined
41
- const stepValue = this.step || undefined
42
40
  const { disabled } = this
43
41
 
44
42
  const style: StyleInfo = {}
@@ -62,16 +60,13 @@ export default class TextAreaElement extends Input {
62
60
  .value=${live(this.getInputValue())}
63
61
  maxlength=${ifDefined(maxLengthValue)}
64
62
  minlength=${ifDefined(minLengthValue)}
65
- pattern=${ifDefined(patternValue)}
66
63
  placeholder=${ifDefined(placeholderValue)}
67
64
  role=${ifDefined(roleValue as 'textbox')}
68
65
  ?disabled=${disabled}
69
66
  ?readonly=${this.readOnly}
70
67
  ?required=${this.required}
71
- step=${ifDefined(stepValue as unknown as number)}
72
68
  autocomplete="${ifDefined(this.autocomplete)}"
73
69
  autocapitalize="${ifDefined(this.autocapitalize)}"
74
- autocorrect="${ifDefined(this.autocorrect)}"
75
70
  inputmode="${ifDefined(this.inputMode)}"
76
71
  cols="${ifDefined(this.cols)}"
77
72
  rows="${ifDefined(this.rows)}"
@@ -1,11 +1,12 @@
1
1
  import type { CSSResultOrNative } from 'lit'
2
2
  import { customElement } from 'lit/decorators.js'
3
3
  import Element from './internals/TextAreaElement.js'
4
- import styles from '../text-field/internals/TextField.styles.js'
4
+ import styles from '../text-field/internals/filled.styles.js'
5
+ import common from '../text-field/internals/common.styles.js'
5
6
 
6
7
  @customElement('ui-text-area')
7
8
  export class UiTextAreaElement extends Element {
8
- static override styles: CSSResultOrNative[] = [styles]
9
+ static override styles: CSSResultOrNative[] = [common, styles]
9
10
  }
10
11
 
11
12
  declare global {
@@ -4,7 +4,7 @@ import { live } from 'lit/directives/live.js'
4
4
  import { StyleInfo, styleMap } from 'lit/directives/style-map.js'
5
5
  import Input from '../../input/Input.js'
6
6
 
7
- export default class TextFieldElement extends Input {
7
+ export default class TextField extends Input {
8
8
  protected override renderInput(): TemplateResult {
9
9
  const placeholderValue = this.placeholder || undefined
10
10
  const maxValue = this.max || undefined
@@ -49,10 +49,8 @@ export default class TextFieldElement extends Input {
49
49
  step=${ifDefined(stepValue as unknown as number)}
50
50
  autocomplete="${ifDefined(this.autocomplete)}"
51
51
  autocapitalize="${ifDefined(this.autocapitalize)}"
52
- autocorrect="${ifDefined(this.autocorrect)}"
53
52
  inputmode="${ifDefined(this.inputMode)}"
54
53
  size="${ifDefined(this.size)}"
55
- results="${ifDefined(this.results)}"
56
54
  accept="${ifDefined(this.accept)}"
57
55
  ?multiple="${this.multiple}"
58
56
  spellcheck="${ifDefined(this.spellcheck)}"
@@ -61,7 +59,6 @@ export default class TextFieldElement extends Input {
61
59
  @input=${this.handleInput}
62
60
  @select=${this.retargetEvent}
63
61
  @invalid=${this.invalidHandler}
64
- @search="${this.retargetEvent}"
65
62
  aria-activedescendant=${ifDefined(ariaActiveDescendantValue)}
66
63
  aria-autocomplete=${ifDefined(ariaAutoCompleteValue)}
67
64
  aria-controls=${ifDefined(ariaControlsValue)}
@@ -9,11 +9,6 @@ export default css`
9
9
  -webkit-tap-highlight-color: transparent;
10
10
  cursor: text;
11
11
 
12
- --_active-indicator-color: var(--md-sys-color-on-surface-variant);
13
- --_active-indicator-height: 1px;
14
- --_focus-active-indicator-color: var(--md-sys-color-primary, #6750a4);
15
- --_focus-active-indicator-height: 2px;
16
-
17
12
  min-width: 200px;
18
13
  }
19
14
 
@@ -22,7 +17,6 @@ export default css`
22
17
  position: relative;
23
18
  display: flex;
24
19
  align-items: center;
25
- border-radius: var(--md-sys-shape-corner-extra-small-top);
26
20
  cursor: inherit;
27
21
  }
28
22
 
@@ -30,7 +24,6 @@ export default css`
30
24
  position: absolute;
31
25
  inset: 0;
32
26
  z-index: 1;
33
- background-color: var(--md-sys-color-surface-variant);
34
27
  border-radius: inherit;
35
28
  }
36
29
 
@@ -48,8 +41,6 @@ export default css`
48
41
 
49
42
  .body {
50
43
  flex: 1;
51
- overflow: hidden;
52
- padding-top: 1em;
53
44
  box-sizing: border-box;
54
45
  position: relative;
55
46
  cursor: inherit;
@@ -57,6 +48,7 @@ export default css`
57
48
 
58
49
  .label {
59
50
  color: var(--md-sys-color-on-surface-variant);
51
+
60
52
  max-width: 100%;
61
53
  pointer-events: none;
62
54
  overflow: hidden;
@@ -64,25 +56,14 @@ export default css`
64
56
  white-space: nowrap;
65
57
  z-index: 3;
66
58
 
67
- position: absolute;
68
- transform: translateY(-1.35rem) scale(0.8);
69
- transform-origin: left center;
70
- top: 50%;
71
- transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
72
-
73
59
  font-family: var(--md-sys-typescale-body-large-font);
74
60
  font-weight: var(--md-sys-typescale-body-large-weight);
75
61
  font-size: var(--md-sys-typescale-body-large-size);
76
62
  letter-spacing: var(--md-sys-typescale-body-large-tracking);
77
63
  line-height: var(--md-sys-typescale-body-large-height);
78
- }
79
-
80
- .labelResting .label {
81
- transform: translateY(-50%) scale(1);
82
- }
83
64
 
84
- :host(:focus-within) .label {
85
- color: var(--md-sys-color-primary);
65
+ transform-origin: left center;
66
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
86
67
  }
87
68
 
88
69
  .input {
@@ -151,51 +132,6 @@ export default css`
151
132
  cursor: default;
152
133
  }
153
134
 
154
- .highlight {
155
- inset: auto 0px 0px;
156
- pointer-events: none;
157
- position: absolute;
158
- width: 100%;
159
- z-index: 4;
160
- }
161
-
162
- .highlight::before {
163
- content: '';
164
- border-bottom: 1px solid var(--md-sys-color-on-surface-variant);
165
- inset: auto 0px 0px;
166
- position: absolute;
167
- }
168
-
169
- .highlight::after {
170
- content: '';
171
- border-bottom-color: var(--md-sys-color-primary);
172
- border-bottom-width: 2px;
173
- border-bottom-style: solid;
174
- opacity: 0;
175
- transform: scaleX(0);
176
- transform-origin: center center;
177
-
178
- transition:
179
- opacity 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s,
180
- transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 150ms;
181
-
182
- position: absolute;
183
- inset: auto 0px 0px;
184
- }
185
-
186
- :host(:focus-within) .highlight::after {
187
- opacity: 1;
188
- transform: scaleX(1);
189
- }
190
-
191
- .labelHidden .label {
192
- display: none;
193
- }
194
-
195
- .labelHidden .body {
196
- padding-top: 0;
197
- }
198
-
199
135
  .supporting-text {
200
136
  padding-top: 4px;
201
137
  color: var(--md-sys-color-on-surface-variant);
@@ -217,19 +153,6 @@ export default css`
217
153
  margin-right: 16px;
218
154
  }
219
155
 
220
- .container::before {
221
- content: '';
222
- position: absolute;
223
- inset: 0;
224
- opacity: 0;
225
- background-color: var(--md-sys-color-on-surface-variant);
226
- transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
227
- }
228
-
229
- :host(:hover) .container::before {
230
- opacity: var(--md-sys-state-hover-state-layer-opacity);
231
- }
232
-
233
156
  :host([disabled]) {
234
157
  pointer-events: none;
235
158
  }
@@ -239,11 +162,6 @@ export default css`
239
162
  opacity: 0.04;
240
163
  }
241
164
 
242
- :host([disabled]) .highlight::before {
243
- border-bottom-color: var(--md-sys-color-on-surface);
244
- opacity: 0.38;
245
- }
246
-
247
165
  :host([disabled]) .label,
248
166
  :host([disabled]) .input,
249
167
  :host([disabled]) .end ::slotted(*),
@@ -252,22 +170,18 @@ export default css`
252
170
  opacity: 0.38;
253
171
  }
254
172
 
255
- :host([invalid]) .highlight::before {
256
- border-bottom-color: var(--md-sys-color-error);
257
- }
258
-
259
173
  :host([invalid]) .label,
260
174
  :host([invalid]) .supporting-text,
261
175
  :host([invalid]) .end ::slotted(*) {
262
176
  color: var(--md-sys-color-error);
263
177
  }
264
178
 
265
- :host([invalid]:hover) .highlight::before {
266
- border-bottom-color: var(--md-sys-color-on-error-container);
267
- }
268
-
269
179
  :host([invalid]:hover) .label,
270
180
  :host([invalid]:hover) .end ::slotted(*) {
271
181
  color: var(--md-sys-color-on-error-container);
272
182
  }
183
+
184
+ .labelHidden .label {
185
+ display: none;
186
+ }
273
187
  `
@@ -0,0 +1,107 @@
1
+ import { css } from 'lit'
2
+
3
+ export default css`
4
+ :host {
5
+ --_active-indicator-color: var(--md-sys-color-on-surface-variant);
6
+ --_active-indicator-height: 1px;
7
+ --_focus-active-indicator-color: var(--md-sys-color-primary, #6750a4);
8
+ --_focus-active-indicator-height: 2px;
9
+ }
10
+
11
+ .surface {
12
+ height: 56px;
13
+ }
14
+
15
+ .container {
16
+ background-color: var(--md-sys-color-surface-variant);
17
+ }
18
+
19
+ .body {
20
+ overflow: hidden;
21
+ }
22
+
23
+ .label {
24
+ position: absolute;
25
+ transform: translateY(-1.35rem) scale(0.8);
26
+ top: 50%;
27
+ }
28
+
29
+ .labelResting .label {
30
+ transform: translateY(-50%) scale(1);
31
+ }
32
+
33
+ :host(:focus-within) .label {
34
+ color: var(--md-sys-color-primary);
35
+ }
36
+
37
+ .highlight {
38
+ inset: auto 0px 0px;
39
+ pointer-events: none;
40
+ position: absolute;
41
+ width: 100%;
42
+ z-index: 4;
43
+ }
44
+
45
+ .highlight::before {
46
+ content: '';
47
+ border-bottom: 1px solid var(--md-sys-color-on-surface-variant);
48
+ inset: auto 0px 0px;
49
+ position: absolute;
50
+ }
51
+
52
+ .highlight::after {
53
+ content: '';
54
+ border-bottom-color: var(--md-sys-color-primary);
55
+ border-bottom-width: 2px;
56
+ border-bottom-style: solid;
57
+ opacity: 0;
58
+ transform: scaleX(0);
59
+ transform-origin: center center;
60
+
61
+ transition:
62
+ opacity 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s,
63
+ transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 150ms;
64
+
65
+ position: absolute;
66
+ inset: auto 0px 0px;
67
+ }
68
+
69
+ :host(:focus-within) .highlight::after {
70
+ opacity: 1;
71
+ transform: scaleX(1);
72
+ }
73
+
74
+ :host([disabled]) .highlight::before {
75
+ border-bottom-color: var(--md-sys-color-on-surface);
76
+ opacity: 0.38;
77
+ }
78
+
79
+ :host([invalid]) .highlight::before {
80
+ border-bottom-color: var(--md-sys-color-error);
81
+ }
82
+
83
+ :host([invalid]:hover) .highlight::before {
84
+ border-bottom-color: var(--md-sys-color-on-error-container);
85
+ }
86
+
87
+ .labelHidden .body {
88
+ padding-top: 0;
89
+ }
90
+
91
+ .container::before {
92
+ content: '';
93
+ position: absolute;
94
+ inset: 0;
95
+ opacity: 0;
96
+ background-color: var(--md-sys-color-on-surface-variant);
97
+ transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
98
+ }
99
+
100
+ :host(:hover) .container::before {
101
+ opacity: var(--md-sys-state-hover-state-layer-opacity);
102
+ }
103
+
104
+ .body {
105
+ padding-top: 1em;
106
+ }
107
+ `
@@ -0,0 +1,43 @@
1
+ import { css } from 'lit'
2
+
3
+ export default css`
4
+ .highlight {
5
+ display: none;
6
+ }
7
+
8
+ .surface {
9
+ border-radius: var(--md-sys-shape-corner-extra-small);
10
+ }
11
+
12
+ .container {
13
+ border: 1px var(--md-sys-color-outline) solid;
14
+ outline: 0px solid var(--md-sys-color-primary);
15
+ outline-offset: -3px;
16
+ transition:
17
+ border-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
18
+ outline-width 150ms cubic-bezier(0.4, 0, 0.2, 1);
19
+ }
20
+
21
+ :host(:hover:not(:focus-within)) .container {
22
+ border-color: var(--md-sys-color-on-surface);
23
+ }
24
+
25
+ :host(:focus-within) .container {
26
+ border-color: var(--md-sys-color-primary);
27
+ outline-width: 3px;
28
+ }
29
+
30
+ .label {
31
+ padding: 0 4px;
32
+ }
33
+
34
+ .labelActive .label {
35
+ transform: translateY(calc(-100% - 2px)) scale(0.75);
36
+ position: absolute;
37
+ background-color: var(--md-sys-color-surface);
38
+ }
39
+
40
+ :host(:focus-within) .label {
41
+ color: var(--md-sys-color-primary);
42
+ }
43
+ `
@@ -0,0 +1,16 @@
1
+ import type { CSSResultOrNative } from 'lit'
2
+ import { customElement } from 'lit/decorators.js'
3
+ import Element from './internals/TextField.js'
4
+ import styles from './internals/filled.styles.js'
5
+ import common from './internals/common.styles.js'
6
+
7
+ @customElement('ui-filled-text-field')
8
+ export class UiFilledTextFieldElement extends Element {
9
+ static override styles: CSSResultOrNative[] = [common, styles]
10
+ }
11
+
12
+ declare global {
13
+ interface HTMLElementTagNameMap {
14
+ 'ui-filled-text-field': UiFilledTextFieldElement
15
+ }
16
+ }
@@ -0,0 +1,16 @@
1
+ import type { CSSResultOrNative } from 'lit'
2
+ import { customElement } from 'lit/decorators.js'
3
+ import Element from './internals/TextField.js'
4
+ import styles from './internals/outlined.styles.js'
5
+ import common from './internals/common.styles.js'
6
+
7
+ @customElement('ui-outlined-text-field')
8
+ export class UiOutlinedTextFieldElement extends Element {
9
+ static override styles: CSSResultOrNative[] = [common, styles]
10
+ }
11
+
12
+ declare global {
13
+ interface HTMLElementTagNameMap {
14
+ 'ui-outlined-text-field': UiOutlinedTextFieldElement
15
+ }
16
+ }
@@ -6,7 +6,6 @@ export type SupportedInputTypes =
6
6
  | 'url'
7
7
  | 'email'
8
8
  | 'password'
9
- | 'datetime'
10
9
  | 'date'
11
10
  | 'month'
12
11
  | 'week'
@@ -5,8 +5,8 @@ import Input from '../../../src/md/input/Input.js'
5
5
  import '../../../src/define/authorization/basic-authorization.js'
6
6
 
7
7
  describe('Basic method', () => {
8
- const usernameSelector = 'ui-text-field[name="username"]'
9
- const passwordSelector = 'ui-text-field[name="password"]'
8
+ const usernameSelector = 'ui-filled-text-field[name="username"]'
9
+ const passwordSelector = 'ui-filled-text-field[name="password"]'
10
10
 
11
11
  const username = 'test-username'
12
12
  const password = 'test-password'
@@ -54,7 +54,7 @@ describe('Basic method', () => {
54
54
  })
55
55
 
56
56
  it('has no other inputs', () => {
57
- const controls = form.querySelectorAll('ui-text-field')
57
+ const controls = form.querySelectorAll('ui-filled-text-field')
58
58
  assert.lengthOf(controls, 2)
59
59
  })
60
60
  })
@@ -5,7 +5,7 @@ import Input from '../../../src/md/input/Input.js'
5
5
  import '../../../src/define/authorization/bearer-authorization.js'
6
6
 
7
7
  describe('Bearer method', () => {
8
- const tokenSelector = 'ui-text-field[name="token"]'
8
+ const tokenSelector = 'ui-filled-text-field[name="token"]'
9
9
  const token = 'test-token'
10
10
 
11
11
  async function basicFixture(auth?: IRequestAuthorization): Promise<Authorization> {
@@ -45,7 +45,7 @@ describe('Bearer method', () => {
45
45
  })
46
46
 
47
47
  it('has no other inputs', () => {
48
- const controls = form.querySelectorAll('ui-text-field')
48
+ const controls = form.querySelectorAll('ui-filled-text-field')
49
49
  assert.lengthOf(controls, 1)
50
50
  })
51
51
  })
@@ -5,9 +5,9 @@ import Input from '../../../src/md/input/Input.js'
5
5
  import '../../../src/define/authorization/ntlm-authorization.js'
6
6
 
7
7
  describe('NTLM method', () => {
8
- const usernameSelector = 'ui-text-field[name="username"]'
9
- const passwordSelector = 'ui-text-field[name="password"]'
10
- const domainSelector = 'ui-text-field[name="domain"]'
8
+ const usernameSelector = 'ui-filled-text-field[name="username"]'
9
+ const passwordSelector = 'ui-filled-text-field[name="password"]'
10
+ const domainSelector = 'ui-filled-text-field[name="domain"]'
11
11
 
12
12
  const username = 'test-username'
13
13
  const password = 'test-password'
@@ -71,7 +71,7 @@ describe('NTLM method', () => {
71
71
  })
72
72
 
73
73
  it('has no other inputs', () => {
74
- const controls = form.querySelectorAll('ui-text-field')
74
+ const controls = form.querySelectorAll('ui-filled-text-field')
75
75
  assert.lengthOf(controls, 3)
76
76
  })
77
77
  })