Mike Phares 127634f5ab Delete self contained Thunder Tests
Back to .net8.0
api/v4/InfinityQS
ApiExplorerSettings
Wafer Counter
Color Sorting
2024-03-13 13:15:56 -07:00

191 lines
5.1 KiB
JavaScript

import { h } from "@stencil/core";
import classNames from "classnames";
export class SearchField {
constructor() {
this.handleInput = () => {
const query = this.inputElement.value;
this.value = query; // update the value property when input changes
this.ifxInput.emit(this.value);
};
this.handleDelete = () => {
this.inputElement.value = '';
this.value = "";
this.ifxInput.emit(null);
};
this.value = '';
this.insideDropdown = false;
this.showDeleteIcon = false;
this.showDeleteIconInternalState = false;
this.disabled = false;
this.size = 'l';
this.isFocused = false;
}
handleOutsideClick(event) {
const path = event.composedPath();
if (!path.includes(this.inputElement)) {
this.isFocused = false;
}
}
valueWatcher(newValue) {
if (newValue !== this.inputElement.value) {
this.inputElement.value = newValue;
}
}
focusInput() {
this.inputElement.focus();
this.isFocused = true;
}
componentWillUpdate() {
if (this.value !== "") {
this.showDeleteIconInternalState = true;
}
else
this.showDeleteIconInternalState = false;
}
render() {
return (h("div", { "aria-label": "a search field for user input", "aria-disabled": this.disabled, "aria-value": this.value, class: 'search-field' }, h("div", { class: this.getWrapperClassNames(), tabindex: 1, onFocus: () => this.focusInput(), onClick: () => this.focusInput() }, h("ifx-icon", { icon: "search-16", class: "search-icon" }), h("input", { ref: (el) => (this.inputElement = el), type: "text", onInput: () => this.handleInput(), placeholder: "Search...", disabled: this.disabled, value: this.value }), this.showDeleteIcon && this.showDeleteIconInternalState ? (h("ifx-icon", { icon: "cremove16", class: "delete-icon", onClick: this.handleDelete })) : null)));
}
getSizeClass() {
return `${this.size}` === "s"
? "search-field__wrapper-s"
: "";
}
getWrapperClassNames() {
return classNames(`search-field__wrapper`, `search-field__wrapper ${this.getSizeClass()}`, `${this.isFocused ? 'focused' : ""}`);
}
static get is() { return "ifx-search-field"; }
static get encapsulation() { return "shadow"; }
static get originalStyleUrls() {
return {
"$": ["search-field.scss"]
};
}
static get styleUrls() {
return {
"$": ["search-field.css"]
};
}
static get properties() {
return {
"value": {
"type": "string",
"mutable": true,
"complexType": {
"original": "string",
"resolved": "string",
"references": {}
},
"required": false,
"optional": false,
"docs": {
"tags": [],
"text": ""
},
"attribute": "value",
"reflect": false,
"defaultValue": "''"
},
"showDeleteIcon": {
"type": "boolean",
"mutable": false,
"complexType": {
"original": "boolean",
"resolved": "boolean",
"references": {}
},
"required": false,
"optional": false,
"docs": {
"tags": [],
"text": ""
},
"attribute": "show-delete-icon",
"reflect": false,
"defaultValue": "false"
},
"disabled": {
"type": "boolean",
"mutable": false,
"complexType": {
"original": "boolean",
"resolved": "boolean",
"references": {}
},
"required": false,
"optional": false,
"docs": {
"tags": [],
"text": ""
},
"attribute": "disabled",
"reflect": false,
"defaultValue": "false"
},
"size": {
"type": "string",
"mutable": false,
"complexType": {
"original": "string",
"resolved": "string",
"references": {}
},
"required": false,
"optional": false,
"docs": {
"tags": [],
"text": ""
},
"attribute": "size",
"reflect": false,
"defaultValue": "'l'"
}
};
}
static get states() {
return {
"insideDropdown": {},
"showDeleteIconInternalState": {},
"isFocused": {}
};
}
static get events() {
return [{
"method": "ifxInput",
"name": "ifxInput",
"bubbles": true,
"cancelable": true,
"composed": true,
"docs": {
"tags": [],
"text": ""
},
"complexType": {
"original": "String",
"resolved": "String",
"references": {
"String": {
"location": "global",
"id": "global::String"
}
}
}
}];
}
static get watchers() {
return [{
"propName": "value",
"methodName": "valueWatcher"
}];
}
static get listeners() {
return [{
"name": "mousedown",
"method": "handleOutsideClick",
"target": "document",
"capture": false,
"passive": true
}];
}
}
//# sourceMappingURL=search-field.js.map