@universal-material/web 3.3.10 → 3.3.12

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@universal-material/web",
3
- "version": "3.3.10",
3
+ "version": "3.3.12",
4
4
  "description": "Material web components",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAQ,kBAAkB,EAAW,MAAM,KAAK,CAAC;AAMxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AAGxG,qBACa,QAAS,SAAQ,wBAAwB;;IAEpD,OAAgB,MAAM,4BAAwB;IAG9C,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAW;IAEpC,KAAK,EAAG,gBAAgB,CAAC;cAItB,aAAa,IAAI,kBAAkB;IAI7C,MAAM,IAAI,kBAAkB;IAwC5B,YAAY,CAAC,iBAAiB,EAAE,cAAc;CAUxD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,QAAQ,CAAC;KACtB;CACF"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAQ,kBAAkB,EAAW,MAAM,KAAK,CAAC;AAMxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AAGxG,qBACa,QAAS,SAAQ,wBAAwB;;IAEpD,OAAgB,MAAM,4BAAwB;IAG9C,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAW;IAEpC,KAAK,EAAG,gBAAgB,CAAC;cAItB,aAAa,IAAI,kBAAkB;IAI7C,MAAM,IAAI,kBAAkB;IA0C5B,YAAY,CAAC,iBAAiB,EAAE,cAAc;CAUxD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,QAAQ,CAAC;KACtB;CACF"}
package/search/search.js CHANGED
@@ -34,11 +34,13 @@ let UmSearch = class UmSearch extends UmNativeTextFieldWrapper {
34
34
  spellcheck=${this.spellcheck}
35
35
  autocomplete=${this.autocomplete ?? nothing}
36
36
  autocapitalize=${this.autocapitalize || nothing}
37
+ ?autofocus=${this.autofocus}
37
38
  role=${this.role ?? nothing}
38
39
  maxlength=${this.maxlength ?? nothing}
39
40
  .placeholder=${this.placeholder ?? nothing}
40
41
  .value=${live(this._value)}
41
- @input=${this._handleInput} />
42
+ @input=${this._handleInput}
43
+ @keydown=${this._handleKeyDown} />
42
44
 
43
45
  <div class="icon trailing-icon" part="icon trailing">
44
46
  <slot name="trailing-icon" @slotchange="${this.#handleTrailingIconSlotChange}"></slot>
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAsB,OAAO,EAAE,MAAM,KAAK,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGrC,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,wBAAwB;IAA/C;;QAKL,aAAQ,GAAoC,OAAO,CAAC;QAIpD,2BAAsB,GAA0B,IAAI,CAAC;IAwDvD,CAAC;aA/DiB,WAAM,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,AAAvB,CAAwB;IAO9C,sBAAsB,CAA+B;IAElC,aAAa;QAC9B,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;IAEQ,MAAM;QACb,MAAM,OAAO,GAAG,QAAQ,CAAC;YACvB,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;oBACK,OAAO;;;qDAG0B,IAAI,CAAC,4BAA4B;;;;;iBAKrE,IAAI,CAAC,EAAE,IAAI,OAAO;yBACV,IAAI,CAAC,UAAU;2BACb,IAAI,CAAC,YAAY,IAAI,OAAO;6BAC1B,IAAI,CAAC,cAAc,IAAI,OAAO;mBACxC,IAAI,CAAC,IAAI,IAAI,OAAO;wBACf,IAAI,CAAC,SAAS,IAAI,OAAO;2BACtB,IAAI,CAAC,WAAW,IAAI,OAAO;qBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;qBACjB,IAAI,CAAC,YAAY;;;sDAGgB,IAAI,CAAC,6BAA6B;;;;WAI7E,CAAC;IACV,CAAC;IAED,4BAA4B;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,6BAA6B;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/D,CAAC;IAEQ,YAAY,CAAC,iBAAiC;QACrD,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;IACnF,CAAC;;AA3DD;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACwB;AAEpC;IAAf,KAAK,CAAC,OAAO,CAAC;uCAA0B;AAP9B,QAAQ;IADpB,aAAa,CAAC,UAAU,CAAC;GACb,QAAQ,CAiEpB","sourcesContent":["import { PropertyValues } from '@lit/reactive-element';\n\nimport { html, HTMLTemplateResult, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { styles as baseStyles } from '../shared/base.styles.js';\nimport { UmNativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';\nimport { styles } from './search.styles.js';\n\n@customElement('u-search')\nexport class UmSearch extends UmNativeTextFieldWrapper {\n\n static override styles = [baseStyles, styles];\n\n @property({ reflect: true })\n position: 'fixed' | 'absolute' | 'static' = 'fixed';\n\n @query('input') input!: HTMLInputElement;\n\n #containerSizeObserver: ResizeObserver | null = null;\n\n protected override renderControl(): HTMLTemplateResult {\n return html``;\n }\n\n override render(): HTMLTemplateResult {\n const classes = classMap({\n 'inner-container': true,\n });\n\n return html`<div class=\"container\">\n <div class=\"${classes}\">\n <div class=\"content\">\n <div class=\"icon leading-icon\" part=\"icon leading\">\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleLeadingIconSlotChange}\"></slot>\n </div>\n <input\n class=\"input\"\n part=\"input\"\n id=${this.id || nothing}\n spellcheck=${this.spellcheck}\n autocomplete=${this.autocomplete ?? nothing}\n autocapitalize=${this.autocapitalize || nothing}\n role=${this.role ?? nothing}\n maxlength=${this.maxlength ?? nothing}\n .placeholder=${this.placeholder ?? nothing}\n .value=${live(this._value)}\n @input=${this._handleInput} />\n \n <div class=\"icon trailing-icon\" part=\"icon trailing\">\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleTrailingIconSlotChange}\"></slot>\n </div>\n </div>\n </div>\n </div>`;\n }\n\n #handleLeadingIconSlotChange() {\n this.hasLeadingIcon = this.assignedLeadingIcons.length > 0;\n }\n\n #handleTrailingIconSlotChange() {\n this.hasTrailingIcon = this.assignedTrailingIcons.length > 0;\n }\n\n override firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n this.#containerSizeObserver = new ResizeObserver(() => this.#setContentHeightProperty());\n this.#containerSizeObserver.observe(this._container);\n this.#setContentHeightProperty();\n }\n\n #setContentHeightProperty() {\n this.style.setProperty('--_content-height', `${this._container.clientHeight}px`);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-search': UmSearch;\n }\n}\n"]}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAsB,OAAO,EAAE,MAAM,KAAK,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGrC,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,wBAAwB;IAA/C;;QAKL,aAAQ,GAAoC,OAAO,CAAC;QAIpD,2BAAsB,GAA0B,IAAI,CAAC;IA0DvD,CAAC;aAjEiB,WAAM,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,AAAvB,CAAwB;IAO9C,sBAAsB,CAA+B;IAElC,aAAa;QAC9B,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;IAEQ,MAAM;QACb,MAAM,OAAO,GAAG,QAAQ,CAAC;YACvB,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;oBACK,OAAO;;;qDAG0B,IAAI,CAAC,4BAA4B;;;;;iBAKrE,IAAI,CAAC,EAAE,IAAI,OAAO;yBACV,IAAI,CAAC,UAAU;2BACb,IAAI,CAAC,YAAY,IAAI,OAAO;6BAC1B,IAAI,CAAC,cAAc,IAAI,OAAO;yBAClC,IAAI,CAAC,SAAS;mBACpB,IAAI,CAAC,IAAI,IAAI,OAAO;wBACf,IAAI,CAAC,SAAS,IAAI,OAAO;2BACtB,IAAI,CAAC,WAAW,IAAI,OAAO;qBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;qBACjB,IAAI,CAAC,YAAY;uBACf,IAAI,CAAC,cAAc;;;sDAGY,IAAI,CAAC,6BAA6B;;;;WAI7E,CAAC;IACV,CAAC;IAED,4BAA4B;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,6BAA6B;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/D,CAAC;IAEQ,YAAY,CAAC,iBAAiC;QACrD,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;IACnF,CAAC;;AA7DD;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACwB;AAEpC;IAAf,KAAK,CAAC,OAAO,CAAC;uCAA0B;AAP9B,QAAQ;IADpB,aAAa,CAAC,UAAU,CAAC;GACb,QAAQ,CAmEpB","sourcesContent":["import { PropertyValues } from '@lit/reactive-element';\n\nimport { html, HTMLTemplateResult, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { styles as baseStyles } from '../shared/base.styles.js';\nimport { UmNativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';\nimport { styles } from './search.styles.js';\n\n@customElement('u-search')\nexport class UmSearch extends UmNativeTextFieldWrapper {\n\n static override styles = [baseStyles, styles];\n\n @property({ reflect: true })\n position: 'fixed' | 'absolute' | 'static' = 'fixed';\n\n @query('input') input!: HTMLInputElement;\n\n #containerSizeObserver: ResizeObserver | null = null;\n\n protected override renderControl(): HTMLTemplateResult {\n return html``;\n }\n\n override render(): HTMLTemplateResult {\n const classes = classMap({\n 'inner-container': true,\n });\n\n return html`<div class=\"container\">\n <div class=\"${classes}\">\n <div class=\"content\">\n <div class=\"icon leading-icon\" part=\"icon leading\">\n <slot name=\"leading-icon\" @slotchange=\"${this.#handleLeadingIconSlotChange}\"></slot>\n </div>\n <input\n class=\"input\"\n part=\"input\"\n id=${this.id || nothing}\n spellcheck=${this.spellcheck}\n autocomplete=${this.autocomplete ?? nothing}\n autocapitalize=${this.autocapitalize || nothing}\n ?autofocus=${this.autofocus}\n role=${this.role ?? nothing}\n maxlength=${this.maxlength ?? nothing}\n .placeholder=${this.placeholder ?? nothing}\n .value=${live(this._value)}\n @input=${this._handleInput}\n @keydown=${this._handleKeyDown} />\n \n <div class=\"icon trailing-icon\" part=\"icon trailing\">\n <slot name=\"trailing-icon\" @slotchange=\"${this.#handleTrailingIconSlotChange}\"></slot>\n </div>\n </div>\n </div>\n </div>`;\n }\n\n #handleLeadingIconSlotChange() {\n this.hasLeadingIcon = this.assignedLeadingIcons.length > 0;\n }\n\n #handleTrailingIconSlotChange() {\n this.hasTrailingIcon = this.assignedTrailingIcons.length > 0;\n }\n\n override firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n this.#containerSizeObserver = new ResizeObserver(() => this.#setContentHeightProperty());\n this.#containerSizeObserver.observe(this._container);\n this.#setContentHeightProperty();\n }\n\n #setContentHeightProperty() {\n this.style.setProperty('--_content-height', `${this._container.clientHeight}px`);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-search': UmSearch;\n }\n}\n"]}
@@ -10,6 +10,7 @@ export declare abstract class UmNativeTextFieldWrapper extends UmTextFieldBase {
10
10
  role: string | null;
11
11
  focus(): void;
12
12
  abstract input: HTMLInputElement | HTMLTextAreaElement;
13
+ protected _handleKeyDown(e: KeyboardEvent): void;
13
14
  protected _handleInput(): void;
14
15
  }
15
16
  //# sourceMappingURL=native-text-field-wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-text-field-wrapper.d.ts","sourceRoot":"","sources":["../../../src/shared/char-count-text-field/native-text-field-wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,8BAAsB,wBAAyB,SAAQ,eAAe;;IACpE,SAAS,CAAC,MAAM,SAAM;IACtB,IACI,KAAK,IAIQ,MAAM,CAFtB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAKtB;IAE4B,YAAY,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IAI7E,IACI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAG1B;IAEqC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAExD,KAAK;IAId,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAAC;IAEvD,SAAS,CAAC,YAAY;CAavB"}
1
+ {"version":3,"file":"native-text-field-wrapper.d.ts","sourceRoot":"","sources":["../../../src/shared/char-count-text-field/native-text-field-wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,8BAAsB,wBAAyB,SAAQ,eAAe;;IACpE,SAAS,CAAC,MAAM,SAAM;IACtB,IACI,KAAK,IAIQ,MAAM,CAFtB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAKtB;IAE4B,YAAY,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IAI7E,IACI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAG1B;IAEqC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAExD,KAAK;IAId,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAAC;IAEvD,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,aAAa;IAMzC,SAAS,CAAC,YAAY;CAavB"}
@@ -27,6 +27,11 @@ export class UmNativeTextFieldWrapper extends UmTextFieldBase {
27
27
  focus() {
28
28
  this.input.focus();
29
29
  }
30
+ _handleKeyDown(e) {
31
+ if (e.key === 'Enter') {
32
+ this.elementInternals.form?.requestSubmit();
33
+ }
34
+ }
30
35
  _handleInput() {
31
36
  this.value = this.input.value;
32
37
  this.#updateCounter();
@@ -1 +1 @@
1
- {"version":3,"file":"native-text-field-wrapper.js","sourceRoot":"","sources":["../../../src/shared/char-count-text-field/native-text-field-wrapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,MAAM,OAAgB,wBAAyB,SAAQ,eAAe;IAAtE;;QACY,WAAM,GAAG,EAAE,CAAC;QA2BgB,SAAI,GAAkB,IAAI,CAAC;IAqBnE,CAAC;IA9CC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAID,UAAU,CAAqB;IAG/B,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,SAAS,CAAC,KAAa;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAIQ,KAAK;QACZ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAIS,YAAY;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IACjC,CAAC;CACF;AA9CC;IADC,QAAQ,EAAE;qDAGV;AAS4B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8DAAiD;AAK7E;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yDAGzC;AAOqC;IAArC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sDAAqC","sourcesContent":["import { property } from 'lit/decorators.js';\n\nimport { UmTextFieldBase } from '../text-field-base/text-field-base.js';\n\nexport abstract class UmNativeTextFieldWrapper extends UmTextFieldBase {\n protected _value = '';\n @property()\n get value() {\n return this._value;\n }\n\n set value(value: string) {\n this._value = value;\n this.empty = !value;\n this.elementInternals.setFormValue(value);\n this.#updateCounter();\n }\n\n @property({ reflect: true }) autocomplete: 'on' | 'off' | string | undefined;\n\n #maxlength: number | undefined;\n\n @property({ type: Number, reflect: true })\n get maxlength(): number | undefined {\n return this.#maxlength;\n }\n\n set maxlength(value: number) {\n this.#maxlength = value;\n this.#updateCounter();\n }\n\n @property({ reflect: true }) override role: string | null = null;\n\n override focus() {\n this.input.focus();\n }\n\n abstract input: HTMLInputElement | HTMLTextAreaElement;\n\n protected _handleInput() {\n this.value = this.input.value;\n this.#updateCounter();\n }\n\n #updateCounter() {\n if (this.maxlength) {\n this._innerCounter = `${this.value.length}/${this.maxlength}`;\n return;\n }\n\n this._innerCounter = undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"native-text-field-wrapper.js","sourceRoot":"","sources":["../../../src/shared/char-count-text-field/native-text-field-wrapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,MAAM,OAAgB,wBAAyB,SAAQ,eAAe;IAAtE;;QACY,WAAM,GAAG,EAAE,CAAC;QA2BgB,SAAI,GAAkB,IAAI,CAAC;IA2BnE,CAAC;IApDC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAID,UAAU,CAAqB;IAG/B,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,SAAS,CAAC,KAAa;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAIQ,KAAK;QACZ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAIS,cAAc,CAAC,CAAgB;QACvC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IACjC,CAAC;CACF;AApDC;IADC,QAAQ,EAAE;qDAGV;AAS4B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8DAAiD;AAK7E;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yDAGzC;AAOqC;IAArC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sDAAqC","sourcesContent":["import { property } from 'lit/decorators.js';\n\nimport { UmTextFieldBase } from '../text-field-base/text-field-base.js';\n\nexport abstract class UmNativeTextFieldWrapper extends UmTextFieldBase {\n protected _value = '';\n @property()\n get value() {\n return this._value;\n }\n\n set value(value: string) {\n this._value = value;\n this.empty = !value;\n this.elementInternals.setFormValue(value);\n this.#updateCounter();\n }\n\n @property({ reflect: true }) autocomplete: 'on' | 'off' | string | undefined;\n\n #maxlength: number | undefined;\n\n @property({ type: Number, reflect: true })\n get maxlength(): number | undefined {\n return this.#maxlength;\n }\n\n set maxlength(value: number) {\n this.#maxlength = value;\n this.#updateCounter();\n }\n\n @property({ reflect: true }) override role: string | null = null;\n\n override focus() {\n this.input.focus();\n }\n\n abstract input: HTMLInputElement | HTMLTextAreaElement;\n\n protected _handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Enter') {\n this.elementInternals.form?.requestSubmit();\n }\n }\n\n protected _handleInput() {\n this.value = this.input.value;\n this.#updateCounter();\n }\n\n #updateCounter() {\n if (this.maxlength) {\n this._innerCounter = `${this.value.length}/${this.maxlength}`;\n return;\n }\n\n this._innerCounter = undefined;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.d.ts","sourceRoot":"","sources":["../../src/text-field/text-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAQ,kBAAkB,EAAW,MAAM,KAAK,CAAC;AAIxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AAIxG,qBACa,WAAY,SAAQ,wBAAwB;IACvD,OAAgB,MAAM,EAAE,cAAc,CAAoC;IAE9D,IAAI,SAAU;IACc,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,UAAS;IACvB,cAAc,EAAG,MAAM,CAAC;IAE9C,KAAK,EAAG,gBAAgB,CAAC;cAEtB,aAAa,IAAI,kBAAkB;CA4BvD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
1
+ {"version":3,"file":"text-field.d.ts","sourceRoot":"","sources":["../../src/text-field/text-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAQ,kBAAkB,EAAW,MAAM,KAAK,CAAC;AAIxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AAIxG,qBACa,WAAY,SAAQ,wBAAwB;IACvD,OAAgB,MAAM,EAAE,cAAc,CAAoC;IAE9D,IAAI,SAAU;IACc,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,UAAS;IACvB,cAAc,EAAG,MAAM,CAAC;IAE9C,KAAK,EAAG,gBAAgB,CAAC;cAEtB,aAAa,IAAI,kBAAkB;CA8BvD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
@@ -29,11 +29,13 @@ let UmTextField = class UmTextField extends UmNativeTextFieldWrapper {
29
29
  spellcheck=${this.spellcheck}
30
30
  autocomplete=${this.autocomplete ?? nothing}
31
31
  autocapitalize=${this.autocapitalize || nothing}
32
+ ?autofocus=${this.autofocus}
32
33
  role=${this.role ?? nothing}
33
34
  maxlength=${this.maxlength ?? nothing}
34
35
  .placeholder=${this.placeholder ?? nothing}
35
36
  .value=${live(this._value)}
36
- @input=${this._handleInput} />
37
+ @input=${this._handleInput}
38
+ @keydown=${this._handleKeyDown} />
37
39
  </div>
38
40
  <slot class="suffix" name="suffix">
39
41
  <span>${this.suffixText}</span>
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../src/text-field/text-field.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAsB,OAAO,EAAE,MAAM,KAAK,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGzC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,wBAAwB;IAAlD;;QAGO,SAAI,GAAG,MAAM,CAAC;QAGkB,aAAQ,GAAG,KAAK,CAAC;IAiC/D,CAAC;aAtCiB,WAAM,GAAmB,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnD,CAAoD;IAUvD,aAAa;QAC9B,OAAO,IAAI,CAAA;;gBAEC,IAAI,CAAC,UAAU;;;;iBAId,IAAI,CAAC,IAAI;;eAEX,IAAI,CAAC,EAAE,IAAI,OAAO;;;sBAGX,IAAI,CAAC,QAAQ;sBACb,IAAI,CAAC,QAAQ;uBACZ,IAAI,CAAC,UAAU;yBACb,IAAI,CAAC,YAAY,IAAI,OAAO;2BAC1B,IAAI,CAAC,cAAc,IAAI,OAAO;iBACxC,IAAI,CAAC,IAAI,IAAI,OAAO;sBACf,IAAI,CAAC,SAAS,IAAI,OAAO;yBACtB,IAAI,CAAC,WAAW,IAAI,OAAO;mBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;mBACjB,IAAI,CAAC,YAAY;;;gBAGpB,IAAI,CAAC,UAAU;;KAE1B,CAAC;IACJ,CAAC;;AAnCW;IAAX,QAAQ,EAAE;yCAAe;AACc;IAAvC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;+CAAgC;AAC/B;IAAvC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;+CAAgC;AAC3B;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAkB;AACvB;IAArC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;mDAAkC;AAE9C;IAAf,KAAK,CAAC,OAAO,CAAC;0CAA0B;AAT9B,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAuCvB","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { html, HTMLTemplateResult, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { UmNativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';\nimport { UmTextFieldBase } from '../shared/text-field-base/text-field-base.js';\nimport { styles } from './text-field.styles.js';\n\n@customElement('u-text-field')\nexport class UmTextField extends UmNativeTextFieldWrapper {\n static override styles: CSSResultGroup = [UmTextFieldBase.styles, styles];\n\n @property() type = 'text';\n @property({ attribute: 'prefix-text' }) prefixText: string | undefined;\n @property({ attribute: 'suffix-text' }) suffixText: string | undefined;\n @property({ type: Boolean, reflect: true }) readOnly = false;\n @property({ reflect: true }) override autocapitalize!: string;\n\n @query('input') input!: HTMLInputElement;\n\n protected override renderControl(): HTMLTemplateResult {\n return html`\n <slot class=\"prefix\" name=\"prefix\">\n <span>${this.prefixText}</span>\n </slot>\n <div class=\"input\">\n <input\n type=${this.type}\n part=\"input\"\n id=${this.id || nothing}\n aria-labelledby=\"label\"\n aria-describedBy=\"supporting-text\"\n ?readonly=${this.readOnly}\n ?disabled=${this.disabled}\n spellcheck=${this.spellcheck}\n autocomplete=${this.autocomplete ?? nothing}\n autocapitalize=${this.autocapitalize || nothing}\n role=${this.role ?? nothing}\n maxlength=${this.maxlength ?? nothing}\n .placeholder=${this.placeholder ?? nothing}\n .value=${live(this._value)}\n @input=${this._handleInput} />\n </div>\n <slot class=\"suffix\" name=\"suffix\">\n <span>${this.suffixText}</span>\n </slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-text-field': UmTextField;\n }\n}\n"]}
1
+ {"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../src/text-field/text-field.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAsB,OAAO,EAAE,MAAM,KAAK,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGzC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,wBAAwB;IAAlD;;QAGO,SAAI,GAAG,MAAM,CAAC;QAGkB,aAAQ,GAAG,KAAK,CAAC;IAmC/D,CAAC;aAxCiB,WAAM,GAAmB,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnD,CAAoD;IAUvD,aAAa;QAC9B,OAAO,IAAI,CAAA;;gBAEC,IAAI,CAAC,UAAU;;;;iBAId,IAAI,CAAC,IAAI;;eAEX,IAAI,CAAC,EAAE,IAAI,OAAO;;;sBAGX,IAAI,CAAC,QAAQ;sBACb,IAAI,CAAC,QAAQ;uBACZ,IAAI,CAAC,UAAU;yBACb,IAAI,CAAC,YAAY,IAAI,OAAO;2BAC1B,IAAI,CAAC,cAAc,IAAI,OAAO;uBAClC,IAAI,CAAC,SAAS;iBACpB,IAAI,CAAC,IAAI,IAAI,OAAO;sBACf,IAAI,CAAC,SAAS,IAAI,OAAO;yBACtB,IAAI,CAAC,WAAW,IAAI,OAAO;mBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;mBACjB,IAAI,CAAC,YAAY;qBACf,IAAI,CAAC,cAAc;;;gBAGxB,IAAI,CAAC,UAAU;;KAE1B,CAAC;IACJ,CAAC;;AArCW;IAAX,QAAQ,EAAE;yCAAe;AACc;IAAvC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;+CAAgC;AAC/B;IAAvC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;+CAAgC;AAC3B;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAkB;AACvB;IAArC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;mDAAkC;AAE9C;IAAf,KAAK,CAAC,OAAO,CAAC;0CAA0B;AAT9B,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAyCvB","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\n\nimport { html, HTMLTemplateResult, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { live } from 'lit/directives/live.js';\n\nimport { UmNativeTextFieldWrapper } from '../shared/char-count-text-field/native-text-field-wrapper.js';\nimport { UmTextFieldBase } from '../shared/text-field-base/text-field-base.js';\nimport { styles } from './text-field.styles.js';\n\n@customElement('u-text-field')\nexport class UmTextField extends UmNativeTextFieldWrapper {\n static override styles: CSSResultGroup = [UmTextFieldBase.styles, styles];\n\n @property() type = 'text';\n @property({ attribute: 'prefix-text' }) prefixText: string | undefined;\n @property({ attribute: 'suffix-text' }) suffixText: string | undefined;\n @property({ type: Boolean, reflect: true }) readOnly = false;\n @property({ reflect: true }) override autocapitalize!: string;\n\n @query('input') input!: HTMLInputElement;\n\n protected override renderControl(): HTMLTemplateResult {\n return html`\n <slot class=\"prefix\" name=\"prefix\">\n <span>${this.prefixText}</span>\n </slot>\n <div class=\"input\">\n <input\n type=${this.type}\n part=\"input\"\n id=${this.id || nothing}\n aria-labelledby=\"label\"\n aria-describedBy=\"supporting-text\"\n ?readonly=${this.readOnly}\n ?disabled=${this.disabled}\n spellcheck=${this.spellcheck}\n autocomplete=${this.autocomplete ?? nothing}\n autocapitalize=${this.autocapitalize || nothing}\n ?autofocus=${this.autofocus}\n role=${this.role ?? nothing}\n maxlength=${this.maxlength ?? nothing}\n .placeholder=${this.placeholder ?? nothing}\n .value=${live(this._value)}\n @input=${this._handleInput}\n @keydown=${this._handleKeyDown} />\n </div>\n <slot class=\"suffix\" name=\"suffix\">\n <span>${this.suffixText}</span>\n </slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-text-field': UmTextField;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"typeahead.d.ts","sourceRoot":"","sources":["../../src/typeahead/typeahead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAKzC,OAAO,iBAAiB,CAAC;AACzB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,gBAAgB,CAAC;AAExB,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,qBACa,WAAY,SAAQ,UAAU;;IACzC,MAAM,CAAC,QAAQ,CAAC,cAAc,QAAQ;IAEtC,OAAgB,MAAM,0BAAU;IAKhC,OAAO,CAAC,MAAM,CAOE;IASP,OAAO,CAAC,OAAO,CAAS;IAEjC;;OAEG;IACM,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAE1E;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAEhD;;;;OAIG;IACH,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAE7D;;OAEG;IACwC,QAAQ,SAAO;IAE1D;;OAEG;IACwC,KAAK,SAAM;IAEtD;;;;OAIG;IACwC,SAAS,SAAK;IAEzD;;;;OAIG;IAEH,WAAW,UAAS;IAEpB;;OAEG;IACyC,QAAQ,UAAS;IAE7D;;OAEG;IAC0B,YAAY,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAS;IAEzE;;OAEG;IACmC,UAAU,UAAS;IAEzD,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,GAAG,CAEf;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAOnB;IAEQ,KAAK;IAId,KAAK;IASL;;OAEG;IACH,IACI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAMrC;IAEgB,KAAK,EAAG,MAAM,CAAC;IACP,SAAS,EAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE5D,IAAI,UAAU,IAAI,UAAU,EAAE,CAE7B;;IAOQ,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBhF,iBAAiB;IAWjB,oBAAoB;cAuGV,MAAM,IAAI,kBAAkB;IAwG/C,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,YAAY;CAOrB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,WAAW,CAAC;KAC5B;CACF"}
1
+ {"version":3,"file":"typeahead.d.ts","sourceRoot":"","sources":["../../src/typeahead/typeahead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAKzC,OAAO,iBAAiB,CAAC;AACzB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,gBAAgB,CAAC;AAExB,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,qBACa,WAAY,SAAQ,UAAU;;IACzC,MAAM,CAAC,QAAQ,CAAC,cAAc,QAAQ;IAEtC,OAAgB,MAAM,0BAAU;IAKhC,OAAO,CAAC,MAAM,CAOE;IASP,OAAO,CAAC,OAAO,CAAS;IAEjC;;OAEG;IACM,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAE1E;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAEhD;;;;OAIG;IACH,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAE7D;;OAEG;IACwC,QAAQ,SAAO;IAE1D;;OAEG;IACwC,KAAK,SAAM;IAEtD;;;;OAIG;IACwC,SAAS,SAAK;IAEzD;;;;OAIG;IAEH,WAAW,UAAS;IAEpB;;OAEG;IACyC,QAAQ,UAAS;IAE7D;;OAEG;IAC0B,YAAY,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAS;IAEzE;;OAEG;IACmC,UAAU,UAAS;IAEzD,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,GAAG,CAEf;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAOnB;IAEQ,KAAK;IAId,KAAK;IASL;;OAEG;IACH,IACI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAMrC;IAEgB,KAAK,EAAG,MAAM,CAAC;IACP,SAAS,EAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE5D,IAAI,UAAU,IAAI,UAAU,EAAE,CAE7B;;IAOQ,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBhF,iBAAiB;IAWjB,oBAAoB;cAuGV,MAAM,IAAI,kBAAkB;IAwG/C,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,YAAY;CAOrB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,WAAW,CAAC;KAC5B;CACF"}
@@ -307,6 +307,9 @@ let UmTypeahead = class UmTypeahead extends LitElement {
307
307
  if (this.target.tagName === 'U-CHIP-FIELD') {
308
308
  return this.target.input;
309
309
  }
310
+ if (this.target.tagName === 'U-SEARCH') {
311
+ return this.target.input;
312
+ }
310
313
  if (this.target.tagName === 'U-TEXT-FIELD') {
311
314
  return this.target.container;
312
315
  }
@@ -1 +1 @@
1
- {"version":3,"file":"typeahead.js","sourceRoot":"","sources":["../../src/typeahead/typeahead.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, HTMLTemplateResult, LitElement } from 'lit';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js';\nimport { customElement, property, query, queryAll, state } from 'lit/decorators.js';\n\nimport { UmMenuItem } from '../menu/menu-item.js';\nimport { UmMenu } from '../menu/menu.js';\nimport { MenuFieldNavigationController } from '../shared/menu-field/menu-field-navigation-controller.js';\nimport { normalizeText } from '../shared/normalize-text.js';\nimport { styles } from './typeahead.styles.js';\n\nimport '../menu/menu.js';\nimport '../menu/menu-item.js';\nimport './highlight.js';\n\nexport interface Data {\n label: string;\n value: any;\n}\n\n@customElement('u-typeahead')\nexport class UmTypeahead extends LitElement {\n static readonly formAssociated = true;\n\n static override styles = styles;\n\n #targetId: string | undefined;\n\n #connected = false;\n private target:\n | (HTMLElement & {\n autocomplete: 'on' | 'off' | string | null;\n input?: HTMLInputElement;\n container?: HTMLElement;\n value: string;\n })\n | null = null;\n #documentMutationObserver: MutationObserver | null = null;\n readonly #navigationController = new MenuFieldNavigationController(this);\n #termNormalized = '';\n #debounceTimeout: number | null = null;\n #value: any;\n readonly #elementInternals: ElementInternals;\n\n // @ts-ignore\n @state() private results: Data[];\n\n /**\n * The datasource of the typeahead. Accepts an `Array` or a `Promise<[]>`.\n */\n @state() source: (any[] | ((term: string) => Promise<any[]>)) | undefined;\n\n /**\n * A function return a string based on a result from the `source`. Useful when the source results are objects.\n */\n formatter: ((value: any) => string) | undefined;\n\n /**\n * A string representing an HTML to be rendered inside the menu item. If set, it will replace the `u-highlight`.\n *\n * _Note:_ Subject to signature change\n */\n template: ((term: string, value: any) => string) | undefined;\n\n /**\n * The time in milliseconds before triggering an update in the results.\n */\n @property({ type: Number, reflect: true }) debounce = 300;\n\n /**\n * The number of suggestions to show\n */\n @property({ type: Number, reflect: true }) limit = 10;\n\n /**\n * How many characters must be typed before show suggestions\n *\n * _Note:_ Not used when the source is a `Promise`\n */\n @property({ type: Number, reflect: true }) minLength = 2;\n\n /**\n * Whether the menu will be show when the target get focus.\n *\n * _Note:_ The `minLength` will still be applied\n */\n @property({ type: Boolean, attribute: 'open-on-focus', reflect: true })\n openOnFocus = false;\n\n /**\n * If `true`, model values will not be restricted only to items selected from the menu.\n */\n @property({ type: Boolean, reflect: true }) editable = false;\n\n /**\n * The value for the `autocomplete` attribute for the target element.\n */\n @property({ reflect: true }) autocomplete: 'on' | 'off' | string = 'off';\n\n /**\n * The value for the `spellcheck` attribute for the target element.\n */\n @property({ reflect: true }) override spellcheck = false;\n\n get form(): HTMLFormElement | null {\n return this.#elementInternals.form;\n }\n\n /**\n * Gets or sets the current value of the typeahead.\n */\n get value(): any {\n return this.#value;\n }\n\n set value(value: any) {\n this.#value = value;\n this.#elementInternals.setFormValue(value);\n\n if (this.#connected) {\n this.#setValueOnTarget();\n }\n }\n\n override focus() {\n this.target?.focus();\n }\n\n clear() {\n if (!this.target) {\n return;\n }\n\n this.#termNormalized = '';\n this.setTargetValue('');\n }\n\n /**\n * The id of the target element to attach the typeahead.\n */\n @property({ reflect: true, attribute: 'target-id' })\n get targetId(): string | undefined {\n return this.#targetId;\n }\n\n set targetId(value: string | undefined) {\n this.#targetId = value;\n\n if (this.#connected) {\n this.#attach();\n }\n }\n\n @query('u-menu') _menu!: UmMenu;\n @queryAll('u-menu-item') menuItems!: NodeListOf<UmMenuItem>;\n\n get _menuItems(): UmMenuItem[] {\n return Array.from(this.menuItems);\n }\n\n constructor() {\n super();\n this.#elementInternals = this.attachInternals();\n }\n\n override attributeChangedCallback(name: string, _old: string | null, value: string | null) {\n super.attributeChangedCallback(name, _old, value);\n\n if (!this.target) {\n return;\n }\n\n if (name === 'autocomplete') {\n this.target.autocomplete = value;\n }\n\n if (name === 'spellcheck') {\n this.target.spellcheck = value === 'true';\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.#connected = true;\n this.#attach();\n this.#documentMutationObserver = new MutationObserver(() => this.#attach());\n this.#documentMutationObserver.observe(document, {\n attributes: true,\n childList: true,\n });\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#connected = false;\n this.#detach();\n this.#documentMutationObserver!.disconnect();\n this.#documentMutationObserver = null;\n }\n\n #attach() {\n if (!this.targetId) {\n this.#detach();\n return;\n }\n\n const newTarget = document.getElementById(this.targetId) as HTMLInputElement;\n\n if (newTarget === this.target) {\n return;\n }\n\n this.#detach();\n\n if (!newTarget) {\n return;\n }\n\n // @ts-ignore\n this.target = newTarget;\n newTarget.role = 'combobox';\n newTarget.autocomplete = this.autocomplete as any;\n newTarget.spellcheck = this.spellcheck;\n newTarget.autocapitalize = 'off';\n\n newTarget.addEventListener('click', this.#handleClick);\n newTarget.addEventListener('input', this.#handleInput);\n this.#navigationController.attach(newTarget);\n newTarget.addEventListener('focus', this.#handleFocus);\n\n if (this.value) {\n this.#setValueOnTarget();\n }\n }\n\n #detach() {\n this.target?.removeEventListener('click', this.#handleClick);\n this.target?.removeEventListener('input', this.#handleInput);\n this.#navigationController.detach();\n this.target?.removeEventListener('focus', this.#handleFocus);\n }\n\n #handleItemMouseDown(e: Event) {\n e.preventDefault();\n }\n\n #handleClick(e: Event) {\n e.stopPropagation();\n }\n\n readonly #handleFocus = async () => {\n if (this.openOnFocus) {\n await this.#updateResults();\n }\n };\n\n readonly #handleInput = () => {\n if (this.#debounceTimeout) {\n clearTimeout(this.#debounceTimeout);\n }\n\n this.#setValueAndDispatchEvents(this.editable ? this.getTargetValue() : null, true);\n\n this.#debounceTimeout = setTimeout(async () => await this.#updateResults(true), this.debounce);\n };\n\n #getItemClickHandler(data: Data) {\n return () => {\n const selectedEvent = new CustomEvent('selected', {\n cancelable: true,\n detail: data.value,\n });\n\n this.dispatchEvent(selectedEvent);\n\n if (selectedEvent.defaultPrevented) {\n return;\n }\n\n this.#setValueAndDispatchEvents(data.value);\n };\n }\n\n #setValueAndDispatchEvents(value: any, direct = false) {\n if (!direct) {\n this.value = value;\n } else {\n this.#value = value;\n this.#elementInternals.setFormValue(value);\n }\n\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n protected override render(): HTMLTemplateResult {\n if (!this.results?.length) {\n return html``;\n }\n\n setTimeout(() => {\n this._menu.anchorElement = this.getMenuAnchor();\n this._menu.open = true;\n this.#navigationController.focusMenu(this._menuItems[0], 0);\n });\n\n return html`\n <u-menu manualFocus manualClose anchor-corner=\"auto-start\">\n ${this.results.map(result => {\n const content = this.template\n ? unsafeHTML(this.template(this.#termNormalized, result.value))\n : html`\n <u-highlight .term=${this.#termNormalized} .result=${result.label}></u-highlight>\n `;\n\n return html`\n <u-menu-item\n @mousedown=${this.#handleItemMouseDown}\n @click=${this.#getItemClickHandler(result)}\n tabindex=\"-1\">\n ${content}\n </u-menu-item>\n `;\n })}\n </u-menu>\n `;\n }\n\n async #updateResults(lazy = false) {\n const term = this.getTargetValue();\n\n const termNormalized = normalizeText(term).toLowerCase();\n\n if (lazy && termNormalized === this.#termNormalized && this._menu?.open === true) {\n return;\n }\n\n this.#termNormalized = termNormalized;\n\n if (termNormalized.length < this.minLength) {\n this.results = [];\n return;\n }\n\n this.results = await this.#getData();\n this.results = this.results.slice(0, this.limit || this.results.length);\n }\n\n async #getData(): Promise<Data[]> {\n if (!this.source) {\n return [];\n }\n\n let values: any[];\n\n let filter = false;\n\n if (this.source instanceof Array) {\n values = this.source;\n filter = true;\n } else {\n const source = this.source as (term: string) => Promise<any[]>;\n values = await source(this.#termNormalized);\n }\n\n const result = values.map(source => ({\n label: this.formatter ? this.formatter(source) : source.toString(),\n value: source,\n }));\n\n if (!filter) {\n return result;\n }\n\n return result.filter(t => normalizeText(t.label).toLowerCase()\n .includes(this.#termNormalized));\n }\n\n #setValueOnTarget() {\n if (!this.target) {\n return;\n }\n\n const textValue = this.getTextValue();\n this.#termNormalized = normalizeText(textValue)?.toLowerCase();\n\n if (this.target.tagName === 'U-TEXT-FIELD') {\n this.target.value = textValue;\n return;\n }\n\n if (this.target.input) {\n this.target.input.value = textValue;\n return;\n }\n\n this.target.value = textValue;\n }\n\n private getTargetValue(): string {\n return this.target!.input?.value ?? this.target!.value;\n }\n\n private setTargetValue(value: string): void {\n const targetInput = this.target?.input ?? this.target;\n\n if (targetInput) {\n targetInput.value = value;\n }\n }\n\n private getMenuAnchor() {\n if (!this.target) {\n return null;\n }\n\n if (this.target.tagName === 'U-CHIP-FIELD') {\n return this.target.input;\n }\n\n if (this.target.tagName === 'U-TEXT-FIELD') {\n return this.target.container;\n }\n\n return this.target;\n }\n\n private getTextValue(): string {\n if (!this.value) {\n return '';\n }\n\n return this.formatter ? this.formatter(this.value) : this.value;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-typeahead': UmTypeahead;\n }\n}\n"]}
1
+ {"version":3,"file":"typeahead.js","sourceRoot":"","sources":["../../src/typeahead/typeahead.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, HTMLTemplateResult, LitElement } from 'lit';\nimport { unsafeHTML } from 'lit-html/directives/unsafe-html.js';\nimport { customElement, property, query, queryAll, state } from 'lit/decorators.js';\n\nimport { UmMenuItem } from '../menu/menu-item.js';\nimport { UmMenu } from '../menu/menu.js';\nimport { MenuFieldNavigationController } from '../shared/menu-field/menu-field-navigation-controller.js';\nimport { normalizeText } from '../shared/normalize-text.js';\nimport { styles } from './typeahead.styles.js';\n\nimport '../menu/menu.js';\nimport '../menu/menu-item.js';\nimport './highlight.js';\n\nexport interface Data {\n label: string;\n value: any;\n}\n\n@customElement('u-typeahead')\nexport class UmTypeahead extends LitElement {\n static readonly formAssociated = true;\n\n static override styles = styles;\n\n #targetId: string | undefined;\n\n #connected = false;\n private target:\n | (HTMLElement & {\n autocomplete: 'on' | 'off' | string | null;\n input?: HTMLInputElement;\n container?: HTMLElement;\n value: string;\n })\n | null = null;\n #documentMutationObserver: MutationObserver | null = null;\n readonly #navigationController = new MenuFieldNavigationController(this);\n #termNormalized = '';\n #debounceTimeout: number | null = null;\n #value: any;\n readonly #elementInternals: ElementInternals;\n\n // @ts-ignore\n @state() private results: Data[];\n\n /**\n * The datasource of the typeahead. Accepts an `Array` or a `Promise<[]>`.\n */\n @state() source: (any[] | ((term: string) => Promise<any[]>)) | undefined;\n\n /**\n * A function return a string based on a result from the `source`. Useful when the source results are objects.\n */\n formatter: ((value: any) => string) | undefined;\n\n /**\n * A string representing an HTML to be rendered inside the menu item. If set, it will replace the `u-highlight`.\n *\n * _Note:_ Subject to signature change\n */\n template: ((term: string, value: any) => string) | undefined;\n\n /**\n * The time in milliseconds before triggering an update in the results.\n */\n @property({ type: Number, reflect: true }) debounce = 300;\n\n /**\n * The number of suggestions to show\n */\n @property({ type: Number, reflect: true }) limit = 10;\n\n /**\n * How many characters must be typed before show suggestions\n *\n * _Note:_ Not used when the source is a `Promise`\n */\n @property({ type: Number, reflect: true }) minLength = 2;\n\n /**\n * Whether the menu will be show when the target get focus.\n *\n * _Note:_ The `minLength` will still be applied\n */\n @property({ type: Boolean, attribute: 'open-on-focus', reflect: true })\n openOnFocus = false;\n\n /**\n * If `true`, model values will not be restricted only to items selected from the menu.\n */\n @property({ type: Boolean, reflect: true }) editable = false;\n\n /**\n * The value for the `autocomplete` attribute for the target element.\n */\n @property({ reflect: true }) autocomplete: 'on' | 'off' | string = 'off';\n\n /**\n * The value for the `spellcheck` attribute for the target element.\n */\n @property({ reflect: true }) override spellcheck = false;\n\n get form(): HTMLFormElement | null {\n return this.#elementInternals.form;\n }\n\n /**\n * Gets or sets the current value of the typeahead.\n */\n get value(): any {\n return this.#value;\n }\n\n set value(value: any) {\n this.#value = value;\n this.#elementInternals.setFormValue(value);\n\n if (this.#connected) {\n this.#setValueOnTarget();\n }\n }\n\n override focus() {\n this.target?.focus();\n }\n\n clear() {\n if (!this.target) {\n return;\n }\n\n this.#termNormalized = '';\n this.setTargetValue('');\n }\n\n /**\n * The id of the target element to attach the typeahead.\n */\n @property({ reflect: true, attribute: 'target-id' })\n get targetId(): string | undefined {\n return this.#targetId;\n }\n\n set targetId(value: string | undefined) {\n this.#targetId = value;\n\n if (this.#connected) {\n this.#attach();\n }\n }\n\n @query('u-menu') _menu!: UmMenu;\n @queryAll('u-menu-item') menuItems!: NodeListOf<UmMenuItem>;\n\n get _menuItems(): UmMenuItem[] {\n return Array.from(this.menuItems);\n }\n\n constructor() {\n super();\n this.#elementInternals = this.attachInternals();\n }\n\n override attributeChangedCallback(name: string, _old: string | null, value: string | null) {\n super.attributeChangedCallback(name, _old, value);\n\n if (!this.target) {\n return;\n }\n\n if (name === 'autocomplete') {\n this.target.autocomplete = value;\n }\n\n if (name === 'spellcheck') {\n this.target.spellcheck = value === 'true';\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.#connected = true;\n this.#attach();\n this.#documentMutationObserver = new MutationObserver(() => this.#attach());\n this.#documentMutationObserver.observe(document, {\n attributes: true,\n childList: true,\n });\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#connected = false;\n this.#detach();\n this.#documentMutationObserver!.disconnect();\n this.#documentMutationObserver = null;\n }\n\n #attach() {\n if (!this.targetId) {\n this.#detach();\n return;\n }\n\n const newTarget = document.getElementById(this.targetId) as HTMLInputElement;\n\n if (newTarget === this.target) {\n return;\n }\n\n this.#detach();\n\n if (!newTarget) {\n return;\n }\n\n // @ts-ignore\n this.target = newTarget;\n newTarget.role = 'combobox';\n newTarget.autocomplete = this.autocomplete as any;\n newTarget.spellcheck = this.spellcheck;\n newTarget.autocapitalize = 'off';\n\n newTarget.addEventListener('click', this.#handleClick);\n newTarget.addEventListener('input', this.#handleInput);\n this.#navigationController.attach(newTarget);\n newTarget.addEventListener('focus', this.#handleFocus);\n\n if (this.value) {\n this.#setValueOnTarget();\n }\n }\n\n #detach() {\n this.target?.removeEventListener('click', this.#handleClick);\n this.target?.removeEventListener('input', this.#handleInput);\n this.#navigationController.detach();\n this.target?.removeEventListener('focus', this.#handleFocus);\n }\n\n #handleItemMouseDown(e: Event) {\n e.preventDefault();\n }\n\n #handleClick(e: Event) {\n e.stopPropagation();\n }\n\n readonly #handleFocus = async () => {\n if (this.openOnFocus) {\n await this.#updateResults();\n }\n };\n\n readonly #handleInput = () => {\n if (this.#debounceTimeout) {\n clearTimeout(this.#debounceTimeout);\n }\n\n this.#setValueAndDispatchEvents(this.editable ? this.getTargetValue() : null, true);\n\n this.#debounceTimeout = setTimeout(async () => await this.#updateResults(true), this.debounce);\n };\n\n #getItemClickHandler(data: Data) {\n return () => {\n const selectedEvent = new CustomEvent('selected', {\n cancelable: true,\n detail: data.value,\n });\n\n this.dispatchEvent(selectedEvent);\n\n if (selectedEvent.defaultPrevented) {\n return;\n }\n\n this.#setValueAndDispatchEvents(data.value);\n };\n }\n\n #setValueAndDispatchEvents(value: any, direct = false) {\n if (!direct) {\n this.value = value;\n } else {\n this.#value = value;\n this.#elementInternals.setFormValue(value);\n }\n\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n protected override render(): HTMLTemplateResult {\n if (!this.results?.length) {\n return html``;\n }\n\n setTimeout(() => {\n this._menu.anchorElement = this.getMenuAnchor();\n this._menu.open = true;\n this.#navigationController.focusMenu(this._menuItems[0], 0);\n });\n\n return html`\n <u-menu manualFocus manualClose anchor-corner=\"auto-start\">\n ${this.results.map(result => {\n const content = this.template\n ? unsafeHTML(this.template(this.#termNormalized, result.value))\n : html`\n <u-highlight .term=${this.#termNormalized} .result=${result.label}></u-highlight>\n `;\n\n return html`\n <u-menu-item\n @mousedown=${this.#handleItemMouseDown}\n @click=${this.#getItemClickHandler(result)}\n tabindex=\"-1\">\n ${content}\n </u-menu-item>\n `;\n })}\n </u-menu>\n `;\n }\n\n async #updateResults(lazy = false) {\n const term = this.getTargetValue();\n\n const termNormalized = normalizeText(term).toLowerCase();\n\n if (lazy && termNormalized === this.#termNormalized && this._menu?.open === true) {\n return;\n }\n\n this.#termNormalized = termNormalized;\n\n if (termNormalized.length < this.minLength) {\n this.results = [];\n return;\n }\n\n this.results = await this.#getData();\n this.results = this.results.slice(0, this.limit || this.results.length);\n }\n\n async #getData(): Promise<Data[]> {\n if (!this.source) {\n return [];\n }\n\n let values: any[];\n\n let filter = false;\n\n if (this.source instanceof Array) {\n values = this.source;\n filter = true;\n } else {\n const source = this.source as (term: string) => Promise<any[]>;\n values = await source(this.#termNormalized);\n }\n\n const result = values.map(source => ({\n label: this.formatter ? this.formatter(source) : source.toString(),\n value: source,\n }));\n\n if (!filter) {\n return result;\n }\n\n return result.filter(t => normalizeText(t.label).toLowerCase()\n .includes(this.#termNormalized));\n }\n\n #setValueOnTarget() {\n if (!this.target) {\n return;\n }\n\n const textValue = this.getTextValue();\n this.#termNormalized = normalizeText(textValue)?.toLowerCase();\n\n if (this.target.tagName === 'U-TEXT-FIELD') {\n this.target.value = textValue;\n return;\n }\n\n if (this.target.input) {\n this.target.input.value = textValue;\n return;\n }\n\n this.target.value = textValue;\n }\n\n private getTargetValue(): string {\n return this.target!.input?.value ?? this.target!.value;\n }\n\n private setTargetValue(value: string): void {\n const targetInput = this.target?.input ?? this.target;\n\n if (targetInput) {\n targetInput.value = value;\n }\n }\n\n private getMenuAnchor() {\n if (!this.target) {\n return null;\n }\n\n if (this.target.tagName === 'U-CHIP-FIELD') {\n return this.target.input;\n }\n\n if (this.target.tagName === 'U-SEARCH') {\n return this.target.input;\n }\n\n if (this.target.tagName === 'U-TEXT-FIELD') {\n return this.target.container;\n }\n\n return this.target;\n }\n\n private getTextValue(): string {\n if (!this.value) {\n return '';\n }\n\n return this.formatter ? this.formatter(this.value) : this.value;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-typeahead': UmTypeahead;\n }\n}\n"]}