@spectrum-web-components/textfield 0.37.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -307,7 +307,15 @@
307
307
  "type": {
308
308
  "text": "void"
309
309
  }
310
- }
310
+ },
311
+ "parameters": [
312
+ {
313
+ "name": "_event",
314
+ "type": {
315
+ "text": "Event"
316
+ }
317
+ }
318
+ ]
311
319
  },
312
320
  {
313
321
  "kind": "method",
@@ -965,6 +973,14 @@
965
973
  "text": "void"
966
974
  }
967
975
  },
976
+ "parameters": [
977
+ {
978
+ "name": "_event",
979
+ "type": {
980
+ "text": "Event"
981
+ }
982
+ }
983
+ ],
968
984
  "inheritedFrom": {
969
985
  "name": "TextfieldBase",
970
986
  "module": "src/Textfield.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/textfield",
3
- "version": "0.37.0",
3
+ "version": "0.38.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -57,12 +57,12 @@
57
57
  "lit-html"
58
58
  ],
59
59
  "dependencies": {
60
- "@spectrum-web-components/base": "^0.37.0",
61
- "@spectrum-web-components/help-text": "^0.37.0",
62
- "@spectrum-web-components/icon": "^0.37.0",
63
- "@spectrum-web-components/icons-ui": "^0.37.0",
64
- "@spectrum-web-components/icons-workflow": "^0.37.0",
65
- "@spectrum-web-components/shared": "^0.37.0"
60
+ "@spectrum-web-components/base": "^0.38.0",
61
+ "@spectrum-web-components/help-text": "^0.38.0",
62
+ "@spectrum-web-components/icon": "^0.38.0",
63
+ "@spectrum-web-components/icons-ui": "^0.38.0",
64
+ "@spectrum-web-components/icons-workflow": "^0.38.0",
65
+ "@spectrum-web-components/shared": "^0.38.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@spectrum-css/textfield": "^6.0.11"
@@ -73,5 +73,5 @@
73
73
  "./sp-*.js",
74
74
  "./**/*.dev.js"
75
75
  ],
76
- "gitHead": "d771f62f0d8063070af43283bb0fd5e3400bad06"
76
+ "gitHead": "9a099b7543672f2fd4030833ab813b16c2cad62e"
77
77
  }
@@ -57,7 +57,7 @@ export declare class TextfieldBase extends TextfieldBase_base {
57
57
  * Selects all the text.
58
58
  */
59
59
  select(): void;
60
- protected handleInput(): void;
60
+ protected handleInput(_event: Event): void;
61
61
  protected handleChange(): void;
62
62
  protected onFocus(): void;
63
63
  protected onBlur(): void;
@@ -104,7 +104,7 @@ export class TextfieldBase extends ManageHelpText(
104
104
  select() {
105
105
  this.inputElement.select();
106
106
  }
107
- handleInput() {
107
+ handleInput(_event) {
108
108
  if (this.allowedKeys && this.inputElement.value) {
109
109
  const regExp = new RegExp(`^[${this.allowedKeys}]*$`, "u");
110
110
  if (!regExp.test(this.inputElement.value)) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["Textfield.ts"],
4
- "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n SizedMixin,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n ifDefined,\n live,\n} from '@spectrum-web-components/base/src/directives.js';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\n\nimport { ManageHelpText } from '@spectrum-web-components/help-text/src/manage-help-text.js';\nimport { Focusable } from '@spectrum-web-components/shared/src/focusable.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-checkmark100.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';\n\nimport textfieldStyles from './textfield.css.js';\nimport checkmarkStyles from '@spectrum-web-components/icon/src/spectrum-icon-checkmark.css.js';\n\nconst textfieldTypes = ['text', 'url', 'tel', 'email', 'password'] as const;\nexport type TextfieldType = typeof textfieldTypes[number];\n\n/**\n * @fires input - The value of the element has changed.\n * @fires change - An alteration to the value of the element has been committed by the user.\n */\nexport class TextfieldBase extends ManageHelpText(\n SizedMixin(Focusable, {\n noDefaultSize: true,\n })\n) {\n public static override get styles(): CSSResultArray {\n return [textfieldStyles, checkmarkStyles];\n }\n\n @state()\n appliedLabel?: string;\n\n @property({ attribute: 'allowed-keys' })\n allowedKeys = '';\n\n @property({ type: Boolean, reflect: true })\n public focused = false;\n\n @query('.input:not(#sizer)')\n protected inputElement!: HTMLInputElement | HTMLTextAreaElement;\n\n @property({ type: Boolean, reflect: true })\n public invalid = false;\n\n @property()\n public label = '';\n\n @property()\n public placeholder = '';\n\n @property({ attribute: 'type', reflect: true })\n private _type: TextfieldType = 'text';\n\n @state()\n get type(): TextfieldType {\n return textfieldTypes.find((t) => t === this._type) ?? 'text';\n }\n\n set type(val: TextfieldType) {\n const prev = this._type;\n this._type = val;\n this.requestUpdate('type', prev);\n }\n\n @property()\n public pattern?: string;\n\n @property({ type: Boolean, reflect: true })\n public grows = false;\n\n @property({ type: Number })\n public maxlength = -1;\n\n @property({ type: Number })\n public minlength = -1;\n\n @property({ type: Boolean, reflect: true })\n public multiline = false;\n\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n @property({ type: Number })\n public rows = -1;\n\n @property({ type: Boolean, reflect: true })\n public valid = false;\n\n @property({ type: String })\n public set value(value: string | number) {\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n }\n\n public get value(): string | number {\n return this._value;\n }\n\n protected _value: string | number = '';\n\n @property({ type: Boolean, reflect: true })\n public quiet = false;\n\n @property({ type: Boolean, reflect: true })\n public required = false;\n\n @property({ type: String, reflect: true })\n public autocomplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete'];\n\n public override get focusElement(): HTMLInputElement | HTMLTextAreaElement {\n return this.inputElement;\n }\n\n /**\n * Sets the start and end positions of the current selection.\n *\n * @param selectionStart The 0-based index of the first selected character. An index greater than the length of the\n * element's value is treated as pointing to the end of the value.\n * @param selectionEnd The 0-based index of the character after the last selected character. An index greater than\n * the length of the element's value is treated as pointing to the end of the value.\n * @param [selectionDirection=\"none\"] A string indicating the direction in which the selection is considered to\n * have been performed.\n */\n public setSelectionRange(\n selectionStart: number,\n selectionEnd: number,\n selectionDirection: 'forward' | 'backward' | 'none' = 'none'\n ): void {\n this.inputElement.setSelectionRange(\n selectionStart,\n selectionEnd,\n selectionDirection\n );\n }\n\n /**\n * Selects all the text.\n */\n public select(): void {\n this.inputElement.select();\n }\n\n protected handleInput(): void {\n if (this.allowedKeys && this.inputElement.value) {\n const regExp = new RegExp(`^[${this.allowedKeys}]*$`, 'u');\n if (!regExp.test(this.inputElement.value)) {\n const selectionStart = this.inputElement\n .selectionStart as number;\n const nextSelectStart = selectionStart - 1;\n this.inputElement.value = this.value.toString();\n this.inputElement.setSelectionRange(\n nextSelectStart,\n nextSelectStart\n );\n return;\n }\n }\n this.value = this.inputElement.value;\n }\n\n protected handleChange(): void {\n this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n protected onFocus(): void {\n this.focused = !this.readonly && true;\n }\n\n protected onBlur(): void {\n this.focused = !this.readonly && false;\n }\n\n protected renderStateIcons(): TemplateResult | typeof nothing {\n if (this.invalid) {\n return html`\n <sp-icon-alert id=\"invalid\" class=\"icon\"></sp-icon-alert>\n `;\n } else if (this.valid) {\n return html`\n <sp-icon-checkmark100\n id=\"valid\"\n class=\"icon spectrum-UIIcon-Checkmark100\"\n ></sp-icon-checkmark100>\n `;\n }\n return nothing;\n }\n\n protected get displayValue(): string {\n return this.value.toString();\n }\n\n private get renderMultiline(): TemplateResult {\n return html`\n ${this.grows && this.rows === -1\n ? html`\n <div id=\"sizer\" class=\"input\" aria-hidden=\"true\">\n ${this.value}&#8203;\n </div>\n `\n : nothing}\n <!-- @ts-ignore -->\n <textarea\n aria-describedby=${this.helpTextId}\n aria-label=${this.label ||\n this.appliedLabel ||\n this.placeholder}\n aria-invalid=${ifDefined(this.invalid || undefined)}\n class=\"input\"\n maxlength=${ifDefined(\n this.maxlength > -1 ? this.maxlength : undefined\n )}\n minlength=${ifDefined(\n this.minlength > -1 ? this.minlength : undefined\n )}\n title=${this.invalid ? '' : nothing}\n pattern=${ifDefined(this.pattern)}\n placeholder=${this.placeholder}\n .value=${this.displayValue}\n @change=${this.handleChange}\n @input=${this.handleInput}\n @focus=${this.onFocus}\n @blur=${this.onBlur}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n rows=${ifDefined(this.rows > -1 ? this.rows : undefined)}\n autocomplete=${ifDefined(this.autocomplete)}\n ></textarea>\n `;\n }\n\n private get renderInput(): TemplateResult {\n return html`\n <!-- @ts-ignore -->\n <input\n type=${this.type}\n aria-describedby=${this.helpTextId}\n aria-label=${this.label ||\n this.appliedLabel ||\n this.placeholder}\n aria-invalid=${ifDefined(this.invalid || undefined)}\n class=\"input\"\n title=${this.invalid ? '' : nothing}\n maxlength=${ifDefined(\n this.maxlength > -1 ? this.maxlength : undefined\n )}\n minlength=${ifDefined(\n this.minlength > -1 ? this.minlength : undefined\n )}\n pattern=${ifDefined(this.pattern)}\n placeholder=${this.placeholder}\n .value=${live(this.displayValue)}\n @change=${this.handleChange}\n @input=${this.handleInput}\n @focus=${this.onFocus}\n @blur=${this.onBlur}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n autocomplete=${ifDefined(this.autocomplete)}\n />\n `;\n }\n\n protected renderField(): TemplateResult {\n return html`\n ${this.renderStateIcons()}\n ${this.multiline ? this.renderMultiline : this.renderInput}\n `;\n }\n\n protected override render(): TemplateResult {\n return html`\n <div id=\"textfield\">${this.renderField()}</div>\n ${this.renderHelpText(this.invalid)}\n `;\n }\n\n protected override update(changedProperties: PropertyValues): void {\n if (\n changedProperties.has('value') ||\n (changedProperties.has('required') && this.required)\n ) {\n this.updateComplete.then(() => {\n this.checkValidity();\n });\n }\n super.update(changedProperties);\n }\n\n public checkValidity(): boolean {\n let validity = this.inputElement.checkValidity();\n if (this.required || (this.value && this.pattern)) {\n if ((this.disabled || this.multiline) && this.pattern) {\n const regex = new RegExp(`^${this.pattern}$`, 'u');\n validity = regex.test(this.value.toString());\n }\n if (typeof this.minlength !== 'undefined') {\n validity =\n validity && this.value.toString().length >= this.minlength;\n }\n this.valid = validity;\n this.invalid = !validity;\n }\n return validity;\n }\n}\n\n/**\n * @element sp-textfield\n * @slot help-text - default or non-negative help text to associate to your form element\n * @slot negative-help-text - negative help text to associate to your form element when `invalid`\n */\nexport class Textfield extends TextfieldBase {\n @property({ type: String })\n public override set value(value: string) {\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n }\n\n public override get value(): string {\n return this._value;\n }\n\n protected override _value = '';\n}\n"],
5
- "mappings": ";;;;;;;;;;;;AAYA;AAAA,EAEI;AAAA,EACA;AAAA,EAEA;AAAA,OAEG;AACP;AAAA,EACI;AAAA,EACA;AAAA,OACG;AACP;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,OAAO;AACP,OAAO;AAEP,OAAO,qBAAqB;AAC5B,OAAO,qBAAqB;AAE5B,MAAM,iBAAiB,CAAC,QAAQ,OAAO,OAAO,SAAS,UAAU;AAO1D,aAAM,sBAAsB;AAAA,EAC/B,WAAW,WAAW;AAAA,IAClB,eAAe;AAAA,EACnB,CAAC;AACL,EAAE;AAAA,EAJK;AAAA;AAaH,uBAAc;AAGd,SAAO,UAAU;AAMjB,SAAO,UAAU;AAGjB,SAAO,QAAQ;AAGf,SAAO,cAAc;AAGrB,SAAQ,QAAuB;AAiB/B,SAAO,QAAQ;AAGf,SAAO,YAAY;AAGnB,SAAO,YAAY;AAGnB,SAAO,YAAY;AAGnB,SAAO,WAAW;AAGlB,SAAO,OAAO;AAGd,SAAO,QAAQ;AAgBf,SAAU,SAA0B;AAGpC,SAAO,QAAQ;AAGf,SAAO,WAAW;AAAA;AAAA,EAnFlB,WAA2B,SAAyB;AAChD,WAAO,CAAC,iBAAiB,eAAe;AAAA,EAC5C;AAAA,EA2BA,IAAI,OAAsB;AA/E9B;AAgFQ,YAAO,oBAAe,KAAK,CAAC,MAAM,MAAM,KAAK,KAAK,MAA3C,YAAgD;AAAA,EAC3D;AAAA,EAEA,IAAI,KAAK,KAAoB;AACzB,UAAM,OAAO,KAAK;AAClB,SAAK,QAAQ;AACb,SAAK,cAAc,QAAQ,IAAI;AAAA,EACnC;AAAA,EA2BA,IAAW,MAAM,OAAwB;AACrC,QAAI,UAAU,KAAK,OAAO;AACtB;AAAA,IACJ;AACA,UAAM,WAAW,KAAK;AACtB,SAAK,SAAS;AACd,SAAK,cAAc,SAAS,QAAQ;AAAA,EACxC;AAAA,EAEA,IAAW,QAAyB;AAChC,WAAO,KAAK;AAAA,EAChB;AAAA,EAeA,IAAoB,eAAuD;AACvE,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,kBACH,gBACA,cACA,qBAAsD,QAClD;AACJ,SAAK,aAAa;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKO,SAAe;AAClB,SAAK,aAAa,OAAO;AAAA,EAC7B;AAAA,EAEU,cAAoB;AAC1B,QAAI,KAAK,eAAe,KAAK,aAAa,OAAO;AAC7C,YAAM,SAAS,IAAI,OAAO,KAAK,KAAK,WAAW,OAAO,GAAG;AACzD,UAAI,CAAC,OAAO,KAAK,KAAK,aAAa,KAAK,GAAG;AACvC,cAAM,iBAAiB,KAAK,aACvB;AACL,cAAM,kBAAkB,iBAAiB;AACzC,aAAK,aAAa,QAAQ,KAAK,MAAM,SAAS;AAC9C,aAAK,aAAa;AAAA,UACd;AAAA,UACA;AAAA,QACJ;AACA;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,QAAQ,KAAK,aAAa;AAAA,EACnC;AAAA,EAEU,eAAqB;AAC3B,SAAK;AAAA,MACD,IAAI,MAAM,UAAU;AAAA,QAChB,SAAS;AAAA,QACT,UAAU;AAAA,MACd,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEU,UAAgB;AACtB,SAAK,UAAU,CAAC,KAAK,YAAY;AAAA,EACrC;AAAA,EAEU,SAAe;AACrB,SAAK,UAAU,CAAC,KAAK,YAAY;AAAA,EACrC;AAAA,EAEU,mBAAoD;AAC1D,QAAI,KAAK,SAAS;AACd,aAAO;AAAA;AAAA;AAAA,IAGX,WAAW,KAAK,OAAO;AACnB,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMX;AACA,WAAO;AAAA,EACX;AAAA,EAEA,IAAc,eAAuB;AACjC,WAAO,KAAK,MAAM,SAAS;AAAA,EAC/B;AAAA,EAEA,IAAY,kBAAkC;AAC1C,WAAO;AAAA,cACD,KAAK,SAAS,KAAK,SAAS,KACxB;AAAA;AAAA,4BAEU,KAAK,KAAK;AAAA;AAAA,sBAGpB,OAAO;AAAA;AAAA;AAAA,mCAGU,KAAK,UAAU;AAAA,6BACrB,KAAK,SAClB,KAAK,gBACL,KAAK,WAAW;AAAA,+BACD,UAAU,KAAK,WAAW,MAAS,CAAC;AAAA;AAAA,4BAEvC;AAAA,MACR,KAAK,YAAY,KAAK,KAAK,YAAY;AAAA,IAC3C,CAAC;AAAA,4BACW;AAAA,MACR,KAAK,YAAY,KAAK,KAAK,YAAY;AAAA,IAC3C,CAAC;AAAA,wBACO,KAAK,UAAU,KAAK,OAAO;AAAA,0BACzB,UAAU,KAAK,OAAO,CAAC;AAAA,8BACnB,KAAK,WAAW;AAAA,yBACrB,KAAK,YAAY;AAAA,0BAChB,KAAK,YAAY;AAAA,yBAClB,KAAK,WAAW;AAAA,yBAChB,KAAK,OAAO;AAAA,wBACb,KAAK,MAAM;AAAA,4BACP,KAAK,QAAQ;AAAA,4BACb,KAAK,QAAQ;AAAA,4BACb,KAAK,QAAQ;AAAA,uBAClB,UAAU,KAAK,OAAO,KAAK,KAAK,OAAO,MAAS,CAAC;AAAA,+BACzC,UAAU,KAAK,YAAY,CAAC;AAAA;AAAA;AAAA,EAGvD;AAAA,EAEA,IAAY,cAA8B;AACtC,WAAO;AAAA;AAAA;AAAA,uBAGQ,KAAK,IAAI;AAAA,mCACG,KAAK,UAAU;AAAA,6BACrB,KAAK,SAClB,KAAK,gBACL,KAAK,WAAW;AAAA,+BACD,UAAU,KAAK,WAAW,MAAS,CAAC;AAAA;AAAA,wBAE3C,KAAK,UAAU,KAAK,OAAO;AAAA,4BACvB;AAAA,MACR,KAAK,YAAY,KAAK,KAAK,YAAY;AAAA,IAC3C,CAAC;AAAA,4BACW;AAAA,MACR,KAAK,YAAY,KAAK,KAAK,YAAY;AAAA,IAC3C,CAAC;AAAA,0BACS,UAAU,KAAK,OAAO,CAAC;AAAA,8BACnB,KAAK,WAAW;AAAA,yBACrB,KAAK,KAAK,YAAY,CAAC;AAAA,0BACtB,KAAK,YAAY;AAAA,yBAClB,KAAK,WAAW;AAAA,yBAChB,KAAK,OAAO;AAAA,wBACb,KAAK,MAAM;AAAA,4BACP,KAAK,QAAQ;AAAA,4BACb,KAAK,QAAQ;AAAA,4BACb,KAAK,QAAQ;AAAA,+BACV,UAAU,KAAK,YAAY,CAAC;AAAA;AAAA;AAAA,EAGvD;AAAA,EAEU,cAA8B;AACpC,WAAO;AAAA,cACD,KAAK,iBAAiB,CAAC;AAAA,cACvB,KAAK,YAAY,KAAK,kBAAkB,KAAK,WAAW;AAAA;AAAA,EAElE;AAAA,EAEmB,SAAyB;AACxC,WAAO;AAAA,kCACmB,KAAK,YAAY,CAAC;AAAA,cACtC,KAAK,eAAe,KAAK,OAAO,CAAC;AAAA;AAAA,EAE3C;AAAA,EAEmB,OAAO,mBAAyC;AAC/D,QACI,kBAAkB,IAAI,OAAO,KAC5B,kBAAkB,IAAI,UAAU,KAAK,KAAK,UAC7C;AACE,WAAK,eAAe,KAAK,MAAM;AAC3B,aAAK,cAAc;AAAA,MACvB,CAAC;AAAA,IACL;AACA,UAAM,OAAO,iBAAiB;AAAA,EAClC;AAAA,EAEO,gBAAyB;AAC5B,QAAI,WAAW,KAAK,aAAa,cAAc;AAC/C,QAAI,KAAK,YAAa,KAAK,SAAS,KAAK,SAAU;AAC/C,WAAK,KAAK,YAAY,KAAK,cAAc,KAAK,SAAS;AACnD,cAAM,QAAQ,IAAI,OAAO,IAAI,KAAK,OAAO,KAAK,GAAG;AACjD,mBAAW,MAAM,KAAK,KAAK,MAAM,SAAS,CAAC;AAAA,MAC/C;AACA,UAAI,OAAO,KAAK,cAAc,aAAa;AACvC,mBACI,YAAY,KAAK,MAAM,SAAS,EAAE,UAAU,KAAK;AAAA,MACzD;AACA,WAAK,QAAQ;AACb,WAAK,UAAU,CAAC;AAAA,IACpB;AACA,WAAO;AAAA,EACX;AACJ;AAhSI;AAAA,EADC,MAAM;AAAA,GATE,cAUT;AAGA;AAAA,EADC,SAAS,EAAE,WAAW,eAAe,CAAC;AAAA,GAZ9B,cAaT;AAGO;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAfjC,cAgBF;AAGG;AAAA,EADT,MAAM,oBAAoB;AAAA,GAlBlB,cAmBC;AAGH;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GArBjC,cAsBF;AAGA;AAAA,EADN,SAAS;AAAA,GAxBD,cAyBF;AAGA;AAAA,EADN,SAAS;AAAA,GA3BD,cA4BF;AAGC;AAAA,EADP,SAAS,EAAE,WAAW,QAAQ,SAAS,KAAK,CAAC;AAAA,GA9BrC,cA+BD;AAGJ;AAAA,EADH,MAAM;AAAA,GAjCE,cAkCL;AAWG;AAAA,EADN,SAAS;AAAA,GA5CD,cA6CF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA/CjC,cAgDF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAlDjB,cAmDF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GArDjB,cAsDF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAxDjC,cAyDF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA3DjC,cA4DF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GA9DjB,cA+DF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAjEjC,cAkEF;AAGI;AAAA,EADV,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GApEjB,cAqEE;AAgBJ;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GApFjC,cAqFF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAvFjC,cAwFF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GA1FhC,cA2FF;AAsNJ,aAAM,kBAAkB,cAAc;AAAA,EAAtC;AAAA;AAeH,SAAmB,SAAS;AAAA;AAAA,EAb5B,IAAoB,MAAM,OAAe;AACrC,QAAI,UAAU,KAAK,OAAO;AACtB;AAAA,IACJ;AACA,UAAM,WAAW,KAAK;AACtB,SAAK,SAAS;AACd,SAAK,cAAc,SAAS,QAAQ;AAAA,EACxC;AAAA,EAEA,IAAoB,QAAgB;AAChC,WAAO,KAAK;AAAA,EAChB;AAGJ;AAdwB;AAAA,EADnB,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADjB,UAEW;",
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n SizedMixin,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n ifDefined,\n live,\n} from '@spectrum-web-components/base/src/directives.js';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\n\nimport { ManageHelpText } from '@spectrum-web-components/help-text/src/manage-help-text.js';\nimport { Focusable } from '@spectrum-web-components/shared/src/focusable.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-checkmark100.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';\n\nimport textfieldStyles from './textfield.css.js';\nimport checkmarkStyles from '@spectrum-web-components/icon/src/spectrum-icon-checkmark.css.js';\n\nconst textfieldTypes = ['text', 'url', 'tel', 'email', 'password'] as const;\nexport type TextfieldType = typeof textfieldTypes[number];\n\n/**\n * @fires input - The value of the element has changed.\n * @fires change - An alteration to the value of the element has been committed by the user.\n */\nexport class TextfieldBase extends ManageHelpText(\n SizedMixin(Focusable, {\n noDefaultSize: true,\n })\n) {\n public static override get styles(): CSSResultArray {\n return [textfieldStyles, checkmarkStyles];\n }\n\n @state()\n appliedLabel?: string;\n\n @property({ attribute: 'allowed-keys' })\n allowedKeys = '';\n\n @property({ type: Boolean, reflect: true })\n public focused = false;\n\n @query('.input:not(#sizer)')\n protected inputElement!: HTMLInputElement | HTMLTextAreaElement;\n\n @property({ type: Boolean, reflect: true })\n public invalid = false;\n\n @property()\n public label = '';\n\n @property()\n public placeholder = '';\n\n @property({ attribute: 'type', reflect: true })\n private _type: TextfieldType = 'text';\n\n @state()\n get type(): TextfieldType {\n return textfieldTypes.find((t) => t === this._type) ?? 'text';\n }\n\n set type(val: TextfieldType) {\n const prev = this._type;\n this._type = val;\n this.requestUpdate('type', prev);\n }\n\n @property()\n public pattern?: string;\n\n @property({ type: Boolean, reflect: true })\n public grows = false;\n\n @property({ type: Number })\n public maxlength = -1;\n\n @property({ type: Number })\n public minlength = -1;\n\n @property({ type: Boolean, reflect: true })\n public multiline = false;\n\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n @property({ type: Number })\n public rows = -1;\n\n @property({ type: Boolean, reflect: true })\n public valid = false;\n\n @property({ type: String })\n public set value(value: string | number) {\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n }\n\n public get value(): string | number {\n return this._value;\n }\n\n protected _value: string | number = '';\n\n @property({ type: Boolean, reflect: true })\n public quiet = false;\n\n @property({ type: Boolean, reflect: true })\n public required = false;\n\n @property({ type: String, reflect: true })\n public autocomplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete'];\n\n public override get focusElement(): HTMLInputElement | HTMLTextAreaElement {\n return this.inputElement;\n }\n\n /**\n * Sets the start and end positions of the current selection.\n *\n * @param selectionStart The 0-based index of the first selected character. An index greater than the length of the\n * element's value is treated as pointing to the end of the value.\n * @param selectionEnd The 0-based index of the character after the last selected character. An index greater than\n * the length of the element's value is treated as pointing to the end of the value.\n * @param [selectionDirection=\"none\"] A string indicating the direction in which the selection is considered to\n * have been performed.\n */\n public setSelectionRange(\n selectionStart: number,\n selectionEnd: number,\n selectionDirection: 'forward' | 'backward' | 'none' = 'none'\n ): void {\n this.inputElement.setSelectionRange(\n selectionStart,\n selectionEnd,\n selectionDirection\n );\n }\n\n /**\n * Selects all the text.\n */\n public select(): void {\n this.inputElement.select();\n }\n\n protected handleInput(_event: Event): void {\n if (this.allowedKeys && this.inputElement.value) {\n const regExp = new RegExp(`^[${this.allowedKeys}]*$`, 'u');\n if (!regExp.test(this.inputElement.value)) {\n const selectionStart = this.inputElement\n .selectionStart as number;\n const nextSelectStart = selectionStart - 1;\n this.inputElement.value = this.value.toString();\n this.inputElement.setSelectionRange(\n nextSelectStart,\n nextSelectStart\n );\n return;\n }\n }\n this.value = this.inputElement.value;\n }\n\n protected handleChange(): void {\n this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n protected onFocus(): void {\n this.focused = !this.readonly && true;\n }\n\n protected onBlur(): void {\n this.focused = !this.readonly && false;\n }\n\n protected renderStateIcons(): TemplateResult | typeof nothing {\n if (this.invalid) {\n return html`\n <sp-icon-alert id=\"invalid\" class=\"icon\"></sp-icon-alert>\n `;\n } else if (this.valid) {\n return html`\n <sp-icon-checkmark100\n id=\"valid\"\n class=\"icon spectrum-UIIcon-Checkmark100\"\n ></sp-icon-checkmark100>\n `;\n }\n return nothing;\n }\n\n protected get displayValue(): string {\n return this.value.toString();\n }\n\n private get renderMultiline(): TemplateResult {\n return html`\n ${this.grows && this.rows === -1\n ? html`\n <div id=\"sizer\" class=\"input\" aria-hidden=\"true\">\n ${this.value}&#8203;\n </div>\n `\n : nothing}\n <!-- @ts-ignore -->\n <textarea\n aria-describedby=${this.helpTextId}\n aria-label=${this.label ||\n this.appliedLabel ||\n this.placeholder}\n aria-invalid=${ifDefined(this.invalid || undefined)}\n class=\"input\"\n maxlength=${ifDefined(\n this.maxlength > -1 ? this.maxlength : undefined\n )}\n minlength=${ifDefined(\n this.minlength > -1 ? this.minlength : undefined\n )}\n title=${this.invalid ? '' : nothing}\n pattern=${ifDefined(this.pattern)}\n placeholder=${this.placeholder}\n .value=${this.displayValue}\n @change=${this.handleChange}\n @input=${this.handleInput}\n @focus=${this.onFocus}\n @blur=${this.onBlur}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n rows=${ifDefined(this.rows > -1 ? this.rows : undefined)}\n autocomplete=${ifDefined(this.autocomplete)}\n ></textarea>\n `;\n }\n\n private get renderInput(): TemplateResult {\n return html`\n <!-- @ts-ignore -->\n <input\n type=${this.type}\n aria-describedby=${this.helpTextId}\n aria-label=${this.label ||\n this.appliedLabel ||\n this.placeholder}\n aria-invalid=${ifDefined(this.invalid || undefined)}\n class=\"input\"\n title=${this.invalid ? '' : nothing}\n maxlength=${ifDefined(\n this.maxlength > -1 ? this.maxlength : undefined\n )}\n minlength=${ifDefined(\n this.minlength > -1 ? this.minlength : undefined\n )}\n pattern=${ifDefined(this.pattern)}\n placeholder=${this.placeholder}\n .value=${live(this.displayValue)}\n @change=${this.handleChange}\n @input=${this.handleInput}\n @focus=${this.onFocus}\n @blur=${this.onBlur}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n autocomplete=${ifDefined(this.autocomplete)}\n />\n `;\n }\n\n protected renderField(): TemplateResult {\n return html`\n ${this.renderStateIcons()}\n ${this.multiline ? this.renderMultiline : this.renderInput}\n `;\n }\n\n protected override render(): TemplateResult {\n return html`\n <div id=\"textfield\">${this.renderField()}</div>\n ${this.renderHelpText(this.invalid)}\n `;\n }\n\n protected override update(changedProperties: PropertyValues): void {\n if (\n changedProperties.has('value') ||\n (changedProperties.has('required') && this.required)\n ) {\n this.updateComplete.then(() => {\n this.checkValidity();\n });\n }\n super.update(changedProperties);\n }\n\n public checkValidity(): boolean {\n let validity = this.inputElement.checkValidity();\n if (this.required || (this.value && this.pattern)) {\n if ((this.disabled || this.multiline) && this.pattern) {\n const regex = new RegExp(`^${this.pattern}$`, 'u');\n validity = regex.test(this.value.toString());\n }\n if (typeof this.minlength !== 'undefined') {\n validity =\n validity && this.value.toString().length >= this.minlength;\n }\n this.valid = validity;\n this.invalid = !validity;\n }\n return validity;\n }\n}\n\n/**\n * @element sp-textfield\n * @slot help-text - default or non-negative help text to associate to your form element\n * @slot negative-help-text - negative help text to associate to your form element when `invalid`\n */\nexport class Textfield extends TextfieldBase {\n @property({ type: String })\n public override set value(value: string) {\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n }\n\n public override get value(): string {\n return this._value;\n }\n\n protected override _value = '';\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;AAYA;AAAA,EAEI;AAAA,EACA;AAAA,EAEA;AAAA,OAEG;AACP;AAAA,EACI;AAAA,EACA;AAAA,OACG;AACP;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,OAAO;AACP,OAAO;AAEP,OAAO,qBAAqB;AAC5B,OAAO,qBAAqB;AAE5B,MAAM,iBAAiB,CAAC,QAAQ,OAAO,OAAO,SAAS,UAAU;AAO1D,aAAM,sBAAsB;AAAA,EAC/B,WAAW,WAAW;AAAA,IAClB,eAAe;AAAA,EACnB,CAAC;AACL,EAAE;AAAA,EAJK;AAAA;AAaH,uBAAc;AAGd,SAAO,UAAU;AAMjB,SAAO,UAAU;AAGjB,SAAO,QAAQ;AAGf,SAAO,cAAc;AAGrB,SAAQ,QAAuB;AAiB/B,SAAO,QAAQ;AAGf,SAAO,YAAY;AAGnB,SAAO,YAAY;AAGnB,SAAO,YAAY;AAGnB,SAAO,WAAW;AAGlB,SAAO,OAAO;AAGd,SAAO,QAAQ;AAgBf,SAAU,SAA0B;AAGpC,SAAO,QAAQ;AAGf,SAAO,WAAW;AAAA;AAAA,EAnFlB,WAA2B,SAAyB;AAChD,WAAO,CAAC,iBAAiB,eAAe;AAAA,EAC5C;AAAA,EA2BA,IAAI,OAAsB;AA/E9B;AAgFQ,YAAO,oBAAe,KAAK,CAAC,MAAM,MAAM,KAAK,KAAK,MAA3C,YAAgD;AAAA,EAC3D;AAAA,EAEA,IAAI,KAAK,KAAoB;AACzB,UAAM,OAAO,KAAK;AAClB,SAAK,QAAQ;AACb,SAAK,cAAc,QAAQ,IAAI;AAAA,EACnC;AAAA,EA2BA,IAAW,MAAM,OAAwB;AACrC,QAAI,UAAU,KAAK,OAAO;AACtB;AAAA,IACJ;AACA,UAAM,WAAW,KAAK;AACtB,SAAK,SAAS;AACd,SAAK,cAAc,SAAS,QAAQ;AAAA,EACxC;AAAA,EAEA,IAAW,QAAyB;AAChC,WAAO,KAAK;AAAA,EAChB;AAAA,EAeA,IAAoB,eAAuD;AACvE,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,kBACH,gBACA,cACA,qBAAsD,QAClD;AACJ,SAAK,aAAa;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKO,SAAe;AAClB,SAAK,aAAa,OAAO;AAAA,EAC7B;AAAA,EAEU,YAAY,QAAqB;AACvC,QAAI,KAAK,eAAe,KAAK,aAAa,OAAO;AAC7C,YAAM,SAAS,IAAI,OAAO,KAAK,KAAK,WAAW,OAAO,GAAG;AACzD,UAAI,CAAC,OAAO,KAAK,KAAK,aAAa,KAAK,GAAG;AACvC,cAAM,iBAAiB,KAAK,aACvB;AACL,cAAM,kBAAkB,iBAAiB;AACzC,aAAK,aAAa,QAAQ,KAAK,MAAM,SAAS;AAC9C,aAAK,aAAa;AAAA,UACd;AAAA,UACA;AAAA,QACJ;AACA;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,QAAQ,KAAK,aAAa;AAAA,EACnC;AAAA,EAEU,eAAqB;AAC3B,SAAK;AAAA,MACD,IAAI,MAAM,UAAU;AAAA,QAChB,SAAS;AAAA,QACT,UAAU;AAAA,MACd,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEU,UAAgB;AACtB,SAAK,UAAU,CAAC,KAAK,YAAY;AAAA,EACrC;AAAA,EAEU,SAAe;AACrB,SAAK,UAAU,CAAC,KAAK,YAAY;AAAA,EACrC;AAAA,EAEU,mBAAoD;AAC1D,QAAI,KAAK,SAAS;AACd,aAAO;AAAA;AAAA;AAAA,IAGX,WAAW,KAAK,OAAO;AACnB,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMX;AACA,WAAO;AAAA,EACX;AAAA,EAEA,IAAc,eAAuB;AACjC,WAAO,KAAK,MAAM,SAAS;AAAA,EAC/B;AAAA,EAEA,IAAY,kBAAkC;AAC1C,WAAO;AAAA,cACD,KAAK,SAAS,KAAK,SAAS,KACxB;AAAA;AAAA,4BAEU,KAAK,KAAK;AAAA;AAAA,sBAGpB,OAAO;AAAA;AAAA;AAAA,mCAGU,KAAK,UAAU;AAAA,6BACrB,KAAK,SAClB,KAAK,gBACL,KAAK,WAAW;AAAA,+BACD,UAAU,KAAK,WAAW,MAAS,CAAC;AAAA;AAAA,4BAEvC;AAAA,MACR,KAAK,YAAY,KAAK,KAAK,YAAY;AAAA,IAC3C,CAAC;AAAA,4BACW;AAAA,MACR,KAAK,YAAY,KAAK,KAAK,YAAY;AAAA,IAC3C,CAAC;AAAA,wBACO,KAAK,UAAU,KAAK,OAAO;AAAA,0BACzB,UAAU,KAAK,OAAO,CAAC;AAAA,8BACnB,KAAK,WAAW;AAAA,yBACrB,KAAK,YAAY;AAAA,0BAChB,KAAK,YAAY;AAAA,yBAClB,KAAK,WAAW;AAAA,yBAChB,KAAK,OAAO;AAAA,wBACb,KAAK,MAAM;AAAA,4BACP,KAAK,QAAQ;AAAA,4BACb,KAAK,QAAQ;AAAA,4BACb,KAAK,QAAQ;AAAA,uBAClB,UAAU,KAAK,OAAO,KAAK,KAAK,OAAO,MAAS,CAAC;AAAA,+BACzC,UAAU,KAAK,YAAY,CAAC;AAAA;AAAA;AAAA,EAGvD;AAAA,EAEA,IAAY,cAA8B;AACtC,WAAO;AAAA;AAAA;AAAA,uBAGQ,KAAK,IAAI;AAAA,mCACG,KAAK,UAAU;AAAA,6BACrB,KAAK,SAClB,KAAK,gBACL,KAAK,WAAW;AAAA,+BACD,UAAU,KAAK,WAAW,MAAS,CAAC;AAAA;AAAA,wBAE3C,KAAK,UAAU,KAAK,OAAO;AAAA,4BACvB;AAAA,MACR,KAAK,YAAY,KAAK,KAAK,YAAY;AAAA,IAC3C,CAAC;AAAA,4BACW;AAAA,MACR,KAAK,YAAY,KAAK,KAAK,YAAY;AAAA,IAC3C,CAAC;AAAA,0BACS,UAAU,KAAK,OAAO,CAAC;AAAA,8BACnB,KAAK,WAAW;AAAA,yBACrB,KAAK,KAAK,YAAY,CAAC;AAAA,0BACtB,KAAK,YAAY;AAAA,yBAClB,KAAK,WAAW;AAAA,yBAChB,KAAK,OAAO;AAAA,wBACb,KAAK,MAAM;AAAA,4BACP,KAAK,QAAQ;AAAA,4BACb,KAAK,QAAQ;AAAA,4BACb,KAAK,QAAQ;AAAA,+BACV,UAAU,KAAK,YAAY,CAAC;AAAA;AAAA;AAAA,EAGvD;AAAA,EAEU,cAA8B;AACpC,WAAO;AAAA,cACD,KAAK,iBAAiB,CAAC;AAAA,cACvB,KAAK,YAAY,KAAK,kBAAkB,KAAK,WAAW;AAAA;AAAA,EAElE;AAAA,EAEmB,SAAyB;AACxC,WAAO;AAAA,kCACmB,KAAK,YAAY,CAAC;AAAA,cACtC,KAAK,eAAe,KAAK,OAAO,CAAC;AAAA;AAAA,EAE3C;AAAA,EAEmB,OAAO,mBAAyC;AAC/D,QACI,kBAAkB,IAAI,OAAO,KAC5B,kBAAkB,IAAI,UAAU,KAAK,KAAK,UAC7C;AACE,WAAK,eAAe,KAAK,MAAM;AAC3B,aAAK,cAAc;AAAA,MACvB,CAAC;AAAA,IACL;AACA,UAAM,OAAO,iBAAiB;AAAA,EAClC;AAAA,EAEO,gBAAyB;AAC5B,QAAI,WAAW,KAAK,aAAa,cAAc;AAC/C,QAAI,KAAK,YAAa,KAAK,SAAS,KAAK,SAAU;AAC/C,WAAK,KAAK,YAAY,KAAK,cAAc,KAAK,SAAS;AACnD,cAAM,QAAQ,IAAI,OAAO,IAAI,KAAK,OAAO,KAAK,GAAG;AACjD,mBAAW,MAAM,KAAK,KAAK,MAAM,SAAS,CAAC;AAAA,MAC/C;AACA,UAAI,OAAO,KAAK,cAAc,aAAa;AACvC,mBACI,YAAY,KAAK,MAAM,SAAS,EAAE,UAAU,KAAK;AAAA,MACzD;AACA,WAAK,QAAQ;AACb,WAAK,UAAU,CAAC;AAAA,IACpB;AACA,WAAO;AAAA,EACX;AACJ;AAhSI;AAAA,EADC,MAAM;AAAA,GATE,cAUT;AAGA;AAAA,EADC,SAAS,EAAE,WAAW,eAAe,CAAC;AAAA,GAZ9B,cAaT;AAGO;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAfjC,cAgBF;AAGG;AAAA,EADT,MAAM,oBAAoB;AAAA,GAlBlB,cAmBC;AAGH;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GArBjC,cAsBF;AAGA;AAAA,EADN,SAAS;AAAA,GAxBD,cAyBF;AAGA;AAAA,EADN,SAAS;AAAA,GA3BD,cA4BF;AAGC;AAAA,EADP,SAAS,EAAE,WAAW,QAAQ,SAAS,KAAK,CAAC;AAAA,GA9BrC,cA+BD;AAGJ;AAAA,EADH,MAAM;AAAA,GAjCE,cAkCL;AAWG;AAAA,EADN,SAAS;AAAA,GA5CD,cA6CF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA/CjC,cAgDF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAlDjB,cAmDF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GArDjB,cAsDF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAxDjC,cAyDF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA3DjC,cA4DF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GA9DjB,cA+DF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAjEjC,cAkEF;AAGI;AAAA,EADV,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GApEjB,cAqEE;AAgBJ;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GApFjC,cAqFF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GAvFjC,cAwFF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GA1FhC,cA2FF;AAsNJ,aAAM,kBAAkB,cAAc;AAAA,EAAtC;AAAA;AAeH,SAAmB,SAAS;AAAA;AAAA,EAb5B,IAAoB,MAAM,OAAe;AACrC,QAAI,UAAU,KAAK,OAAO;AACtB;AAAA,IACJ;AACA,UAAM,WAAW,KAAK;AACtB,SAAK,SAAS;AACd,SAAK,cAAc,SAAS,QAAQ;AAAA,EACxC;AAAA,EAEA,IAAoB,QAAgB;AAChC,WAAO,KAAK;AAAA,EAChB;AAGJ;AAdwB;AAAA,EADnB,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADjB,UAEW;",
6
6
  "names": []
7
7
  }
package/src/Textfield.js CHANGED
@@ -1,26 +1,26 @@
1
- "use strict";var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var t=(u,a,e,l)=>{for(var r=l>1?void 0:l?m(a,e):a,o=u.length-1,h;o>=0;o--)(h=u[o])&&(r=(l?h(a,e,r):h(r))||r);return l&&r&&c(a,e,r),r};import{html as s,nothing as p,SizedMixin as v}from"@spectrum-web-components/base";import{ifDefined as n,live as y}from"@spectrum-web-components/base/src/directives.js";import{property as i,query as b,state as d}from"@spectrum-web-components/base/src/decorators.js";import{ManageHelpText as g}from"@spectrum-web-components/help-text/src/manage-help-text.js";import{Focusable as f}from"@spectrum-web-components/shared/src/focusable.js";import"@spectrum-web-components/icons-ui/icons/sp-icon-checkmark100.js";import"@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js";import $ from"./textfield.css.js";import S from"@spectrum-web-components/icon/src/spectrum-icon-checkmark.css.js";const E=["text","url","tel","email","password"];export class TextfieldBase extends g(v(f,{noDefaultSize:!0})){constructor(){super(...arguments);this.allowedKeys="";this.focused=!1;this.invalid=!1;this.label="";this.placeholder="";this._type="text";this.grows=!1;this.maxlength=-1;this.minlength=-1;this.multiline=!1;this.readonly=!1;this.rows=-1;this.valid=!1;this._value="";this.quiet=!1;this.required=!1}static get styles(){return[$,S]}get type(){var e;return(e=E.find(l=>l===this._type))!=null?e:"text"}set type(e){const l=this._type;this._type=e,this.requestUpdate("type",l)}set value(e){if(e===this.value)return;const l=this._value;this._value=e,this.requestUpdate("value",l)}get value(){return this._value}get focusElement(){return this.inputElement}setSelectionRange(e,l,r="none"){this.inputElement.setSelectionRange(e,l,r)}select(){this.inputElement.select()}handleInput(){if(this.allowedKeys&&this.inputElement.value&&!new RegExp(`^[${this.allowedKeys}]*$`,"u").test(this.inputElement.value)){const r=this.inputElement.selectionStart-1;this.inputElement.value=this.value.toString(),this.inputElement.setSelectionRange(r,r);return}this.value=this.inputElement.value}handleChange(){this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}onFocus(){this.focused=!this.readonly&&!0}onBlur(){this.focused=!this.readonly&&!1}renderStateIcons(){return this.invalid?s`
1
+ "use strict";var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var t=(p,a,e,l)=>{for(var n=l>1?void 0:l?m(a,e):a,u=p.length-1,h;u>=0;u--)(h=p[u])&&(n=(l?h(a,e,n):h(n))||n);return l&&n&&c(a,e,n),n};import{html as s,nothing as o,SizedMixin as v}from"@spectrum-web-components/base";import{ifDefined as r,live as y}from"@spectrum-web-components/base/src/directives.js";import{property as i,query as b,state as d}from"@spectrum-web-components/base/src/decorators.js";import{ManageHelpText as g}from"@spectrum-web-components/help-text/src/manage-help-text.js";import{Focusable as f}from"@spectrum-web-components/shared/src/focusable.js";import"@spectrum-web-components/icons-ui/icons/sp-icon-checkmark100.js";import"@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js";import $ from"./textfield.css.js";import E from"@spectrum-web-components/icon/src/spectrum-icon-checkmark.css.js";const S=["text","url","tel","email","password"];export class TextfieldBase extends g(v(f,{noDefaultSize:!0})){constructor(){super(...arguments);this.allowedKeys="";this.focused=!1;this.invalid=!1;this.label="";this.placeholder="";this._type="text";this.grows=!1;this.maxlength=-1;this.minlength=-1;this.multiline=!1;this.readonly=!1;this.rows=-1;this.valid=!1;this._value="";this.quiet=!1;this.required=!1}static get styles(){return[$,E]}get type(){var e;return(e=S.find(l=>l===this._type))!=null?e:"text"}set type(e){const l=this._type;this._type=e,this.requestUpdate("type",l)}set value(e){if(e===this.value)return;const l=this._value;this._value=e,this.requestUpdate("value",l)}get value(){return this._value}get focusElement(){return this.inputElement}setSelectionRange(e,l,n="none"){this.inputElement.setSelectionRange(e,l,n)}select(){this.inputElement.select()}handleInput(e){if(this.allowedKeys&&this.inputElement.value&&!new RegExp(`^[${this.allowedKeys}]*$`,"u").test(this.inputElement.value)){const u=this.inputElement.selectionStart-1;this.inputElement.value=this.value.toString(),this.inputElement.setSelectionRange(u,u);return}this.value=this.inputElement.value}handleChange(){this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}onFocus(){this.focused=!this.readonly&&!0}onBlur(){this.focused=!this.readonly&&!1}renderStateIcons(){return this.invalid?s`
2
2
  <sp-icon-alert id="invalid" class="icon"></sp-icon-alert>
3
3
  `:this.valid?s`
4
4
  <sp-icon-checkmark100
5
5
  id="valid"
6
6
  class="icon spectrum-UIIcon-Checkmark100"
7
7
  ></sp-icon-checkmark100>
8
- `:p}get displayValue(){return this.value.toString()}get renderMultiline(){return s`
8
+ `:o}get displayValue(){return this.value.toString()}get renderMultiline(){return s`
9
9
  ${this.grows&&this.rows===-1?s`
10
10
  <div id="sizer" class="input" aria-hidden="true">
11
11
  ${this.value}&#8203;
12
12
  </div>
13
- `:p}
13
+ `:o}
14
14
  <!-- @ts-ignore -->
15
15
  <textarea
16
16
  aria-describedby=${this.helpTextId}
17
17
  aria-label=${this.label||this.appliedLabel||this.placeholder}
18
- aria-invalid=${n(this.invalid||void 0)}
18
+ aria-invalid=${r(this.invalid||void 0)}
19
19
  class="input"
20
- maxlength=${n(this.maxlength>-1?this.maxlength:void 0)}
21
- minlength=${n(this.minlength>-1?this.minlength:void 0)}
22
- title=${this.invalid?"":p}
23
- pattern=${n(this.pattern)}
20
+ maxlength=${r(this.maxlength>-1?this.maxlength:void 0)}
21
+ minlength=${r(this.minlength>-1?this.minlength:void 0)}
22
+ title=${this.invalid?"":o}
23
+ pattern=${r(this.pattern)}
24
24
  placeholder=${this.placeholder}
25
25
  .value=${this.displayValue}
26
26
  @change=${this.handleChange}
@@ -30,8 +30,8 @@
30
30
  ?disabled=${this.disabled}
31
31
  ?required=${this.required}
32
32
  ?readonly=${this.readonly}
33
- rows=${n(this.rows>-1?this.rows:void 0)}
34
- autocomplete=${n(this.autocomplete)}
33
+ rows=${r(this.rows>-1?this.rows:void 0)}
34
+ autocomplete=${r(this.autocomplete)}
35
35
  ></textarea>
36
36
  `}get renderInput(){return s`
37
37
  <!-- @ts-ignore -->
@@ -39,12 +39,12 @@
39
39
  type=${this.type}
40
40
  aria-describedby=${this.helpTextId}
41
41
  aria-label=${this.label||this.appliedLabel||this.placeholder}
42
- aria-invalid=${n(this.invalid||void 0)}
42
+ aria-invalid=${r(this.invalid||void 0)}
43
43
  class="input"
44
- title=${this.invalid?"":p}
45
- maxlength=${n(this.maxlength>-1?this.maxlength:void 0)}
46
- minlength=${n(this.minlength>-1?this.minlength:void 0)}
47
- pattern=${n(this.pattern)}
44
+ title=${this.invalid?"":o}
45
+ maxlength=${r(this.maxlength>-1?this.maxlength:void 0)}
46
+ minlength=${r(this.minlength>-1?this.minlength:void 0)}
47
+ pattern=${r(this.pattern)}
48
48
  placeholder=${this.placeholder}
49
49
  .value=${y(this.displayValue)}
50
50
  @change=${this.handleChange}
@@ -54,7 +54,7 @@
54
54
  ?disabled=${this.disabled}
55
55
  ?required=${this.required}
56
56
  ?readonly=${this.readonly}
57
- autocomplete=${n(this.autocomplete)}
57
+ autocomplete=${r(this.autocomplete)}
58
58
  />
59
59
  `}renderField(){return s`
60
60
  ${this.renderStateIcons()}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["Textfield.ts"],
4
- "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n SizedMixin,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n ifDefined,\n live,\n} from '@spectrum-web-components/base/src/directives.js';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\n\nimport { ManageHelpText } from '@spectrum-web-components/help-text/src/manage-help-text.js';\nimport { Focusable } from '@spectrum-web-components/shared/src/focusable.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-checkmark100.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';\n\nimport textfieldStyles from './textfield.css.js';\nimport checkmarkStyles from '@spectrum-web-components/icon/src/spectrum-icon-checkmark.css.js';\n\nconst textfieldTypes = ['text', 'url', 'tel', 'email', 'password'] as const;\nexport type TextfieldType = typeof textfieldTypes[number];\n\n/**\n * @fires input - The value of the element has changed.\n * @fires change - An alteration to the value of the element has been committed by the user.\n */\nexport class TextfieldBase extends ManageHelpText(\n SizedMixin(Focusable, {\n noDefaultSize: true,\n })\n) {\n public static override get styles(): CSSResultArray {\n return [textfieldStyles, checkmarkStyles];\n }\n\n @state()\n appliedLabel?: string;\n\n @property({ attribute: 'allowed-keys' })\n allowedKeys = '';\n\n @property({ type: Boolean, reflect: true })\n public focused = false;\n\n @query('.input:not(#sizer)')\n protected inputElement!: HTMLInputElement | HTMLTextAreaElement;\n\n @property({ type: Boolean, reflect: true })\n public invalid = false;\n\n @property()\n public label = '';\n\n @property()\n public placeholder = '';\n\n @property({ attribute: 'type', reflect: true })\n private _type: TextfieldType = 'text';\n\n @state()\n get type(): TextfieldType {\n return textfieldTypes.find((t) => t === this._type) ?? 'text';\n }\n\n set type(val: TextfieldType) {\n const prev = this._type;\n this._type = val;\n this.requestUpdate('type', prev);\n }\n\n @property()\n public pattern?: string;\n\n @property({ type: Boolean, reflect: true })\n public grows = false;\n\n @property({ type: Number })\n public maxlength = -1;\n\n @property({ type: Number })\n public minlength = -1;\n\n @property({ type: Boolean, reflect: true })\n public multiline = false;\n\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n @property({ type: Number })\n public rows = -1;\n\n @property({ type: Boolean, reflect: true })\n public valid = false;\n\n @property({ type: String })\n public set value(value: string | number) {\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n }\n\n public get value(): string | number {\n return this._value;\n }\n\n protected _value: string | number = '';\n\n @property({ type: Boolean, reflect: true })\n public quiet = false;\n\n @property({ type: Boolean, reflect: true })\n public required = false;\n\n @property({ type: String, reflect: true })\n public autocomplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete'];\n\n public override get focusElement(): HTMLInputElement | HTMLTextAreaElement {\n return this.inputElement;\n }\n\n /**\n * Sets the start and end positions of the current selection.\n *\n * @param selectionStart The 0-based index of the first selected character. An index greater than the length of the\n * element's value is treated as pointing to the end of the value.\n * @param selectionEnd The 0-based index of the character after the last selected character. An index greater than\n * the length of the element's value is treated as pointing to the end of the value.\n * @param [selectionDirection=\"none\"] A string indicating the direction in which the selection is considered to\n * have been performed.\n */\n public setSelectionRange(\n selectionStart: number,\n selectionEnd: number,\n selectionDirection: 'forward' | 'backward' | 'none' = 'none'\n ): void {\n this.inputElement.setSelectionRange(\n selectionStart,\n selectionEnd,\n selectionDirection\n );\n }\n\n /**\n * Selects all the text.\n */\n public select(): void {\n this.inputElement.select();\n }\n\n protected handleInput(): void {\n if (this.allowedKeys && this.inputElement.value) {\n const regExp = new RegExp(`^[${this.allowedKeys}]*$`, 'u');\n if (!regExp.test(this.inputElement.value)) {\n const selectionStart = this.inputElement\n .selectionStart as number;\n const nextSelectStart = selectionStart - 1;\n this.inputElement.value = this.value.toString();\n this.inputElement.setSelectionRange(\n nextSelectStart,\n nextSelectStart\n );\n return;\n }\n }\n this.value = this.inputElement.value;\n }\n\n protected handleChange(): void {\n this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n protected onFocus(): void {\n this.focused = !this.readonly && true;\n }\n\n protected onBlur(): void {\n this.focused = !this.readonly && false;\n }\n\n protected renderStateIcons(): TemplateResult | typeof nothing {\n if (this.invalid) {\n return html`\n <sp-icon-alert id=\"invalid\" class=\"icon\"></sp-icon-alert>\n `;\n } else if (this.valid) {\n return html`\n <sp-icon-checkmark100\n id=\"valid\"\n class=\"icon spectrum-UIIcon-Checkmark100\"\n ></sp-icon-checkmark100>\n `;\n }\n return nothing;\n }\n\n protected get displayValue(): string {\n return this.value.toString();\n }\n\n private get renderMultiline(): TemplateResult {\n return html`\n ${this.grows && this.rows === -1\n ? html`\n <div id=\"sizer\" class=\"input\" aria-hidden=\"true\">\n ${this.value}&#8203;\n </div>\n `\n : nothing}\n <!-- @ts-ignore -->\n <textarea\n aria-describedby=${this.helpTextId}\n aria-label=${this.label ||\n this.appliedLabel ||\n this.placeholder}\n aria-invalid=${ifDefined(this.invalid || undefined)}\n class=\"input\"\n maxlength=${ifDefined(\n this.maxlength > -1 ? this.maxlength : undefined\n )}\n minlength=${ifDefined(\n this.minlength > -1 ? this.minlength : undefined\n )}\n title=${this.invalid ? '' : nothing}\n pattern=${ifDefined(this.pattern)}\n placeholder=${this.placeholder}\n .value=${this.displayValue}\n @change=${this.handleChange}\n @input=${this.handleInput}\n @focus=${this.onFocus}\n @blur=${this.onBlur}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n rows=${ifDefined(this.rows > -1 ? this.rows : undefined)}\n autocomplete=${ifDefined(this.autocomplete)}\n ></textarea>\n `;\n }\n\n private get renderInput(): TemplateResult {\n return html`\n <!-- @ts-ignore -->\n <input\n type=${this.type}\n aria-describedby=${this.helpTextId}\n aria-label=${this.label ||\n this.appliedLabel ||\n this.placeholder}\n aria-invalid=${ifDefined(this.invalid || undefined)}\n class=\"input\"\n title=${this.invalid ? '' : nothing}\n maxlength=${ifDefined(\n this.maxlength > -1 ? this.maxlength : undefined\n )}\n minlength=${ifDefined(\n this.minlength > -1 ? this.minlength : undefined\n )}\n pattern=${ifDefined(this.pattern)}\n placeholder=${this.placeholder}\n .value=${live(this.displayValue)}\n @change=${this.handleChange}\n @input=${this.handleInput}\n @focus=${this.onFocus}\n @blur=${this.onBlur}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n autocomplete=${ifDefined(this.autocomplete)}\n />\n `;\n }\n\n protected renderField(): TemplateResult {\n return html`\n ${this.renderStateIcons()}\n ${this.multiline ? this.renderMultiline : this.renderInput}\n `;\n }\n\n protected override render(): TemplateResult {\n return html`\n <div id=\"textfield\">${this.renderField()}</div>\n ${this.renderHelpText(this.invalid)}\n `;\n }\n\n protected override update(changedProperties: PropertyValues): void {\n if (\n changedProperties.has('value') ||\n (changedProperties.has('required') && this.required)\n ) {\n this.updateComplete.then(() => {\n this.checkValidity();\n });\n }\n super.update(changedProperties);\n }\n\n public checkValidity(): boolean {\n let validity = this.inputElement.checkValidity();\n if (this.required || (this.value && this.pattern)) {\n if ((this.disabled || this.multiline) && this.pattern) {\n const regex = new RegExp(`^${this.pattern}$`, 'u');\n validity = regex.test(this.value.toString());\n }\n if (typeof this.minlength !== 'undefined') {\n validity =\n validity && this.value.toString().length >= this.minlength;\n }\n this.valid = validity;\n this.invalid = !validity;\n }\n return validity;\n }\n}\n\n/**\n * @element sp-textfield\n * @slot help-text - default or non-negative help text to associate to your form element\n * @slot negative-help-text - negative help text to associate to your form element when `invalid`\n */\nexport class Textfield extends TextfieldBase {\n @property({ type: String })\n public override set value(value: string) {\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n }\n\n public override get value(): string {\n return this._value;\n }\n\n protected override _value = '';\n}\n"],
5
- "mappings": "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",
6
- "names": ["html", "nothing", "SizedMixin", "ifDefined", "live", "property", "query", "state", "ManageHelpText", "Focusable", "textfieldStyles", "checkmarkStyles", "textfieldTypes", "_a", "t", "val", "prev", "value", "oldValue", "selectionStart", "selectionEnd", "selectionDirection", "nextSelectStart", "changedProperties", "validity", "__decorateClass"]
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n SizedMixin,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n ifDefined,\n live,\n} from '@spectrum-web-components/base/src/directives.js';\nimport {\n property,\n query,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\n\nimport { ManageHelpText } from '@spectrum-web-components/help-text/src/manage-help-text.js';\nimport { Focusable } from '@spectrum-web-components/shared/src/focusable.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-checkmark100.js';\nimport '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js';\n\nimport textfieldStyles from './textfield.css.js';\nimport checkmarkStyles from '@spectrum-web-components/icon/src/spectrum-icon-checkmark.css.js';\n\nconst textfieldTypes = ['text', 'url', 'tel', 'email', 'password'] as const;\nexport type TextfieldType = typeof textfieldTypes[number];\n\n/**\n * @fires input - The value of the element has changed.\n * @fires change - An alteration to the value of the element has been committed by the user.\n */\nexport class TextfieldBase extends ManageHelpText(\n SizedMixin(Focusable, {\n noDefaultSize: true,\n })\n) {\n public static override get styles(): CSSResultArray {\n return [textfieldStyles, checkmarkStyles];\n }\n\n @state()\n appliedLabel?: string;\n\n @property({ attribute: 'allowed-keys' })\n allowedKeys = '';\n\n @property({ type: Boolean, reflect: true })\n public focused = false;\n\n @query('.input:not(#sizer)')\n protected inputElement!: HTMLInputElement | HTMLTextAreaElement;\n\n @property({ type: Boolean, reflect: true })\n public invalid = false;\n\n @property()\n public label = '';\n\n @property()\n public placeholder = '';\n\n @property({ attribute: 'type', reflect: true })\n private _type: TextfieldType = 'text';\n\n @state()\n get type(): TextfieldType {\n return textfieldTypes.find((t) => t === this._type) ?? 'text';\n }\n\n set type(val: TextfieldType) {\n const prev = this._type;\n this._type = val;\n this.requestUpdate('type', prev);\n }\n\n @property()\n public pattern?: string;\n\n @property({ type: Boolean, reflect: true })\n public grows = false;\n\n @property({ type: Number })\n public maxlength = -1;\n\n @property({ type: Number })\n public minlength = -1;\n\n @property({ type: Boolean, reflect: true })\n public multiline = false;\n\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n @property({ type: Number })\n public rows = -1;\n\n @property({ type: Boolean, reflect: true })\n public valid = false;\n\n @property({ type: String })\n public set value(value: string | number) {\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n }\n\n public get value(): string | number {\n return this._value;\n }\n\n protected _value: string | number = '';\n\n @property({ type: Boolean, reflect: true })\n public quiet = false;\n\n @property({ type: Boolean, reflect: true })\n public required = false;\n\n @property({ type: String, reflect: true })\n public autocomplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete'];\n\n public override get focusElement(): HTMLInputElement | HTMLTextAreaElement {\n return this.inputElement;\n }\n\n /**\n * Sets the start and end positions of the current selection.\n *\n * @param selectionStart The 0-based index of the first selected character. An index greater than the length of the\n * element's value is treated as pointing to the end of the value.\n * @param selectionEnd The 0-based index of the character after the last selected character. An index greater than\n * the length of the element's value is treated as pointing to the end of the value.\n * @param [selectionDirection=\"none\"] A string indicating the direction in which the selection is considered to\n * have been performed.\n */\n public setSelectionRange(\n selectionStart: number,\n selectionEnd: number,\n selectionDirection: 'forward' | 'backward' | 'none' = 'none'\n ): void {\n this.inputElement.setSelectionRange(\n selectionStart,\n selectionEnd,\n selectionDirection\n );\n }\n\n /**\n * Selects all the text.\n */\n public select(): void {\n this.inputElement.select();\n }\n\n protected handleInput(_event: Event): void {\n if (this.allowedKeys && this.inputElement.value) {\n const regExp = new RegExp(`^[${this.allowedKeys}]*$`, 'u');\n if (!regExp.test(this.inputElement.value)) {\n const selectionStart = this.inputElement\n .selectionStart as number;\n const nextSelectStart = selectionStart - 1;\n this.inputElement.value = this.value.toString();\n this.inputElement.setSelectionRange(\n nextSelectStart,\n nextSelectStart\n );\n return;\n }\n }\n this.value = this.inputElement.value;\n }\n\n protected handleChange(): void {\n this.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n protected onFocus(): void {\n this.focused = !this.readonly && true;\n }\n\n protected onBlur(): void {\n this.focused = !this.readonly && false;\n }\n\n protected renderStateIcons(): TemplateResult | typeof nothing {\n if (this.invalid) {\n return html`\n <sp-icon-alert id=\"invalid\" class=\"icon\"></sp-icon-alert>\n `;\n } else if (this.valid) {\n return html`\n <sp-icon-checkmark100\n id=\"valid\"\n class=\"icon spectrum-UIIcon-Checkmark100\"\n ></sp-icon-checkmark100>\n `;\n }\n return nothing;\n }\n\n protected get displayValue(): string {\n return this.value.toString();\n }\n\n private get renderMultiline(): TemplateResult {\n return html`\n ${this.grows && this.rows === -1\n ? html`\n <div id=\"sizer\" class=\"input\" aria-hidden=\"true\">\n ${this.value}&#8203;\n </div>\n `\n : nothing}\n <!-- @ts-ignore -->\n <textarea\n aria-describedby=${this.helpTextId}\n aria-label=${this.label ||\n this.appliedLabel ||\n this.placeholder}\n aria-invalid=${ifDefined(this.invalid || undefined)}\n class=\"input\"\n maxlength=${ifDefined(\n this.maxlength > -1 ? this.maxlength : undefined\n )}\n minlength=${ifDefined(\n this.minlength > -1 ? this.minlength : undefined\n )}\n title=${this.invalid ? '' : nothing}\n pattern=${ifDefined(this.pattern)}\n placeholder=${this.placeholder}\n .value=${this.displayValue}\n @change=${this.handleChange}\n @input=${this.handleInput}\n @focus=${this.onFocus}\n @blur=${this.onBlur}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n rows=${ifDefined(this.rows > -1 ? this.rows : undefined)}\n autocomplete=${ifDefined(this.autocomplete)}\n ></textarea>\n `;\n }\n\n private get renderInput(): TemplateResult {\n return html`\n <!-- @ts-ignore -->\n <input\n type=${this.type}\n aria-describedby=${this.helpTextId}\n aria-label=${this.label ||\n this.appliedLabel ||\n this.placeholder}\n aria-invalid=${ifDefined(this.invalid || undefined)}\n class=\"input\"\n title=${this.invalid ? '' : nothing}\n maxlength=${ifDefined(\n this.maxlength > -1 ? this.maxlength : undefined\n )}\n minlength=${ifDefined(\n this.minlength > -1 ? this.minlength : undefined\n )}\n pattern=${ifDefined(this.pattern)}\n placeholder=${this.placeholder}\n .value=${live(this.displayValue)}\n @change=${this.handleChange}\n @input=${this.handleInput}\n @focus=${this.onFocus}\n @blur=${this.onBlur}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n autocomplete=${ifDefined(this.autocomplete)}\n />\n `;\n }\n\n protected renderField(): TemplateResult {\n return html`\n ${this.renderStateIcons()}\n ${this.multiline ? this.renderMultiline : this.renderInput}\n `;\n }\n\n protected override render(): TemplateResult {\n return html`\n <div id=\"textfield\">${this.renderField()}</div>\n ${this.renderHelpText(this.invalid)}\n `;\n }\n\n protected override update(changedProperties: PropertyValues): void {\n if (\n changedProperties.has('value') ||\n (changedProperties.has('required') && this.required)\n ) {\n this.updateComplete.then(() => {\n this.checkValidity();\n });\n }\n super.update(changedProperties);\n }\n\n public checkValidity(): boolean {\n let validity = this.inputElement.checkValidity();\n if (this.required || (this.value && this.pattern)) {\n if ((this.disabled || this.multiline) && this.pattern) {\n const regex = new RegExp(`^${this.pattern}$`, 'u');\n validity = regex.test(this.value.toString());\n }\n if (typeof this.minlength !== 'undefined') {\n validity =\n validity && this.value.toString().length >= this.minlength;\n }\n this.valid = validity;\n this.invalid = !validity;\n }\n return validity;\n }\n}\n\n/**\n * @element sp-textfield\n * @slot help-text - default or non-negative help text to associate to your form element\n * @slot negative-help-text - negative help text to associate to your form element when `invalid`\n */\nexport class Textfield extends TextfieldBase {\n @property({ type: String })\n public override set value(value: string) {\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n }\n\n public override get value(): string {\n return this._value;\n }\n\n protected override _value = '';\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["html", "nothing", "SizedMixin", "ifDefined", "live", "property", "query", "state", "ManageHelpText", "Focusable", "textfieldStyles", "checkmarkStyles", "textfieldTypes", "_a", "t", "val", "prev", "value", "oldValue", "selectionStart", "selectionEnd", "selectionDirection", "_event", "nextSelectStart", "changedProperties", "validity", "__decorateClass"]
7
7
  }
@@ -43,10 +43,11 @@ export default {
43
43
  ],
44
44
  hoist: false,
45
45
  },
46
+ // Default to `size='m'` without needing the attribute
47
+ converter.classToHost('spectrum-Textfield--sizeM'),
46
48
  ...converter.enumerateAttributes(
47
49
  [
48
50
  ['spectrum-Textfield--sizeS', 's'],
49
- ['spectrum-Textfield--sizeM', 'm'],
50
51
  ['spectrum-Textfield--sizeL', 'l'],
51
52
  ['spectrum-Textfield--sizeXL', 'xl'],
52
53
  ],
@@ -5,9 +5,7 @@ const styles = css`
5
5
  --spectrum-animation-duration-100
6
6
  );--spectrum-textfield-width:240px;--spectrum-textfield-min-width:var(
7
7
  --spectrum-text-field-minimum-width-multiplier
8
- );--spectrum-textfield-corner-radius:var(--spectrum-corner-radius-100);--spectrum-textfield-height:var(--spectrum-component-height-100);--spectrum-textfield-spacing-inline:var(
9
- --spectrum-component-edge-to-text-100
10
- );--spectrum-textfield-spacing-inline-quiet:var(
8
+ );--spectrum-textfield-corner-radius:var(--spectrum-corner-radius-100);--spectrum-textfield-spacing-inline-quiet:var(
11
9
  --spectrum-field-edge-to-text-quiet
12
10
  );--spectrum-textfield-spacing-block-start:var(
13
11
  --spectrum-component-top-to-text-100
@@ -17,44 +15,22 @@ const styles = css`
17
15
  --spectrum-field-edge-to-border-quiet
18
16
  );--spectrum-textfield-label-spacing-block:var(
19
17
  --spectrum-field-label-to-component
20
- );--spectrum-textfield-label-spacing-block-quiet:var(
21
- --spectrum-field-label-to-component-quiet-medium
22
18
  );--spectrum-textfield-label-spacing-inline-side-label:var(
23
19
  --spectrum-spacing-100
24
20
  );--spectrum-textfield-helptext-spacing-block:var(
25
21
  --spectrum-help-text-to-component
26
- );--spectrum-textfield-icon-size-invalid:var(
27
- --spectrum-workflow-icon-size-100
28
- );--spectrum-textfield-icon-spacing-inline-start-invalid:var(
29
- --spectrum-field-text-to-alert-icon-medium
30
- );--spectrum-textfield-icon-spacing-inline-end-invalid:var(
31
- --spectrum-field-edge-to-alert-icon-medium
32
22
  );--spectrum-textfield-icon-spacing-inline-end-quiet-invalid:var(
33
23
  --spectrum-field-edge-to-alert-icon-quiet
34
- );--spectrum-textfield-icon-spacing-block-invalid:var(
35
- --spectrum-field-top-to-alert-icon-medium
36
- );--spectrum-textfield-icon-spacing-inline-start-valid:var(
37
- --spectrum-field-text-to-validation-icon-medium
38
- );--spectrum-textfield-icon-spacing-inline-end-valid:var(
39
- --spectrum-field-edge-to-validation-icon-medium
40
24
  );--spectrum-textfield-icon-spacing-inline-end-quiet-valid:var(
41
25
  --spectrum-field-edge-to-validation-icon-quiet
42
- );--spectrum-textfield-icon-spacing-block-valid:var(
43
- --spectrum-field-top-to-validation-icon-medium
44
- );--spectrum-textfield-icon-spacing-inline-end-override:32px;--spectrum-Textfield-workflow-icon-width:18px;--spectrum-Textfield-workflow-icon-gap:6px;--spectrum-textfield-font-family:var(--spectrum-sans-font-family-stack);--spectrum-textfield-font-weight:var(--spectrum-regular-font-weight);--spectrum-textfield-placeholder-font-size:var(--spectrum-font-size-100);--spectrum-textfield-character-count-font-family:var(
26
+ );--spectrum-textfield-icon-spacing-inline-end-override:32px;--spectrum-Textfield-workflow-icon-width:18px;--spectrum-Textfield-workflow-icon-gap:6px;--spectrum-textfield-font-family:var(--spectrum-sans-font-family-stack);--spectrum-textfield-font-weight:var(--spectrum-regular-font-weight);--spectrum-textfield-character-count-font-family:var(
45
27
  --spectrum-sans-font-family-stack
46
28
  );--spectrum-textfield-character-count-font-weight:var(
47
29
  --spectrum-regular-font-weight
48
- );--spectrum-textfield-character-count-font-size:var(
49
- --spectrum-font-size-75
50
30
  );--spectrum-textfield-character-count-spacing-inline:var(
51
31
  --spectrum-spacing-200
52
- );--spectrum-textfield-character-count-spacing-block:var(
53
- --spectrum-component-bottom-to-text-75
54
32
  );--spectrum-textfield-character-count-spacing-inline-side:var(
55
33
  --spectrum-side-label-character-count-to-field
56
- );--spectrum-textfield-character-count-spacing-block-side:var(
57
- --spectrum-side-label-character-count-top-margin-medium
58
34
  );--spectrum-textfield-focus-indicator-width:var(
59
35
  --spectrum-focus-indicator-thickness
60
36
  );--spectrum-textfield-focus-indicator-gap:var(
@@ -101,8 +77,6 @@ const styles = css`
101
77
  --spectrum-text-area-minimum-width
102
78
  );--spectrum-text-area-min-block-size:var(
103
79
  --spectrum-text-area-minimum-height
104
- );--spectrum-text-area-min-block-size-quiet:var(
105
- --spectrum-component-height-100
106
80
  )}:host([size=s]){--spectrum-textfield-height:var(--spectrum-component-height-75);--spectrum-textfield-label-spacing-block-quiet:var(
107
81
  --spectrum-field-label-to-component-quiet-small
108
82
  );--spectrum-textfield-label-spacing-inline-side-label:var(
@@ -133,7 +107,7 @@ const styles = css`
133
107
  --spectrum-side-label-character-count-top-margin-small
134
108
  );--spectrum-text-area-min-block-size-quiet:var(
135
109
  --spectrum-component-height-75
136
- )}:host([size=m]){--spectrum-textfield-height:var(--spectrum-component-height-100);--spectrum-textfield-label-spacing-block-quiet:var(
110
+ )}:host{--spectrum-textfield-height:var(--spectrum-component-height-100);--spectrum-textfield-label-spacing-block-quiet:var(
137
111
  --spectrum-field-label-to-component-quiet-medium
138
112
  );--spectrum-textfield-label-spacing-inline-side-label:var(
139
113
  --spectrum-spacing-200