@nuralyui/input 0.0.12 → 0.0.13
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/bundle.js +62 -364
- package/input.component.d.ts +0 -1
- package/input.component.js +0 -1
- package/input.component.js.map +1 -1
- package/package.json +1 -1
package/input.component.d.ts
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { LitElement, PropertyValues } from 'lit';
|
|
7
|
-
import '../icon/icon.component.js';
|
|
8
7
|
import { INPUT_TYPE, INPUT_STATE, INPUT_SIZE, INPUT_VARIANT, ValidationRule, InputValidationResult } from './input.types.js';
|
|
9
8
|
import { InputValidationHost, InputEventHost } from './controllers/index.js';
|
|
10
9
|
declare const NrInputElement_base: (new (...args: any[]) => import("./mixins/number-mixin.js").NumberCapable) & (new (...args: any[]) => import("./mixins/focus-mixin.js").FocusCapable) & (new (...args: any[]) => import("./mixins/selection-mixin.js").SelectionCapable) & (new (...args: any[]) => import("@nuralyui/common/mixins").DependencyAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").ThemeAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").EventHandlerCapable) & typeof LitElement;
|
package/input.component.js
CHANGED
|
@@ -21,7 +21,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
21
21
|
import { LitElement, html } from 'lit';
|
|
22
22
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
23
23
|
import { styles } from './input.style.js';
|
|
24
|
-
import '../icon/icon.component.js';
|
|
25
24
|
import { EMPTY_STRING } from './input.types.js';
|
|
26
25
|
import { NuralyUIBaseMixin } from '@nuralyui/common/mixins';
|
|
27
26
|
import { InputValidationUtils, InputRenderUtils } from './utils/index.js';
|
package/input.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.component.js","sourceRoot":"","sources":["../../../src/components/input/input.component.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2023 Nuraly, Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport { LitElement, PropertyValues, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { styles } from './input.style.js';\nimport '../icon/icon.component.js';\nimport {\n INPUT_TYPE,\n INPUT_STATE,\n INPUT_SIZE,\n INPUT_VARIANT,\n EMPTY_STRING,\n ValidationRule,\n InputValidationResult\n} from './input.types.js';\nimport { NuralyUIBaseMixin } from '@nuralyui/common/mixins';\nimport { InputValidationUtils, InputRenderUtils } from './utils/index.js';\nimport { SelectionMixin, FocusMixin, NumberMixin } from './mixins/index.js';\nimport {\n InputValidationController,\n InputValidationHost,\n InputEventController,\n InputEventHost\n} from './controllers/index.js';\n\n/**\n * Versatile input component with validation, multiple types, and interactive features.\n * \n * @example\n * ```html\n * <nr-input type=\"text\" placeholder=\"Enter name\"></nr-input>\n * <nr-input type=\"password\"></nr-input>\n * <nr-input type=\"number\" min=\"0\" max=\"100\"></nr-input>\n * ```\n * \n * @fires nr-input - Value changes\n * @fires nr-focus - Input focused\n * @fires nr-blur - Input blurred \n * @fires nr-enter - Enter key pressed\n * @fires nr-clear - Clear button clicked\n * \n * @slot label - Input label\n * @slot helper-text - Helper text\n * @slot addon-before - Content before input\n * @slot addon-after - Content after input\n */\n@customElement('nr-input')\nexport class NrInputElement extends NumberMixin(\n FocusMixin(\n SelectionMixin(\n NuralyUIBaseMixin(LitElement)\n ) \n )\n) implements InputValidationHost, InputEventHost {\n static override styles = styles;\n \n private validationController = new InputValidationController(this);\n private eventController = new InputEventController(this);\n\n /** Disables the input */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** Makes the input read-only */\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n /** Visual state (default, success, warning, error) */\n @property({ type: String, reflect: true })\n state = INPUT_STATE.Default;\n\n /** Current input value */\n @property({ type: String })\n value = EMPTY_STRING;\n\n /** Input size (small, medium, large) */\n @property({ type: String })\n size = INPUT_SIZE.Medium;\n\n /** Visual variant (outlined, underlined, filled) */\n @property({ type: String, reflect: true })\n variant = INPUT_VARIANT.Underlined;\n\n /** Input type (text, password, number, email, etc.) */\n @property({ reflect: true })\n type = INPUT_TYPE.TEXT;\n\n /** Step value for number inputs */\n @property({ type: String })\n step?: string;\n\n /** Minimum value for number inputs */\n @property({ type: String })\n min?: string;\n\n /** Maximum value for number inputs */\n @property({ type: String })\n max?: string;\n\n /** Placeholder text */\n @property({ type: String })\n placeholder = EMPTY_STRING;\n\n /** HTML autocomplete attribute */\n @property({ type: String })\n autocomplete = 'off';\n\n /** Field name for form submission */\n @property({ type: String })\n name?: string;\n\n /** Required field indicator */\n @property({ type: Boolean })\n required?: boolean;\n\n /** Shows copy button */\n @property({ type: Boolean, reflect: true })\n withCopy = false;\n\n /** Shows clear button */\n @property({ type: Boolean, reflect: true })\n allowClear = false;\n\n /** Shows character counter */\n @property({ type: Boolean, reflect: true })\n showCount = false;\n\n /** Maximum character limit */\n @property({ type: Number })\n maxLength?: number;\n\n\n /** Array of validation rules */\n @property({ type: Array })\n rules: ValidationRule[] = [];\n\n /** Validate on change */\n @property({ type: Boolean, attribute: 'validate-on-change' })\n validateOnChangeInput = true;\n\n /** Validate on blur */\n @property({ type: Boolean, attribute: 'validate-on-blur' })\n validateOnBlurInput = true;\n\n /** Show validation status icon */\n @property({ type: Boolean, attribute: 'has-feedback' })\n hasFeedback = false;\n\n /** Allow validation warnings */\n @property({ type: Boolean, attribute: 'allow-warnings' })\n allowWarnings = false;\n\n /** Custom validation trigger */\n @property({ type: String, attribute: 'validation-trigger' })\n validationTrigger: 'change' | 'blur' | 'submit' = 'change';\n\n /** Validation debounce delay in milliseconds */\n @property({ type: Number, attribute: 'validation-debounce' })\n validationDebounce?: number;\n\n /** Input label for better error messages */\n @property({ type: String })\n label?: string;\n\n /** Validation message */\n @state()\n validationMessage?: string;\n\n\n @state()\n inputType = EMPTY_STRING;\n\n @state()\n hasAddonBefore = false;\n\n @state()\n hasAddonAfter = false;\n\n @state()\n focused = false;\n\n private get _input(): HTMLInputElement {\n return this.shadowRoot!.querySelector('#input') as HTMLInputElement;\n }\n\n\n get characterCountDisplay(): string {\n const currentLength = this.value.length;\n if (this.maxLength) {\n return `${currentLength}/${this.maxLength}`;\n }\n return `${currentLength}`;\n }\n\n get isOverCharacterLimit(): boolean {\n return this.maxLength ? this.value.length > this.maxLength : false;\n }\n\n protected get input(): HTMLInputElement {\n return this._input;\n }\n\n protected get inputElement(): HTMLInputElement {\n return this._input;\n }\n\n\n\n override requiredComponents = ['nr-icon'];\n\n override connectedCallback() {\n super.connectedCallback();\n \n this.addEventListener('nr-validation', this._handleValidationEvent as EventListener);\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n \n this.removeEventListener('nr-validation', this._handleValidationEvent as EventListener);\n \n this.validationController.clearDebounceTimer?.();\n }\n\n /**\n * Handle validation events from the controller\n */\n private _handleValidationEvent = (event: Event) => {\n const customEvent = event as CustomEvent;\n const detail = customEvent.detail;\n \n this.validationMessage = detail.validationMessage || '';\n \n let newState = INPUT_STATE.Default;\n \n if (detail.validationResult.hasError) {\n newState = INPUT_STATE.Error;\n } else if (detail.validationResult.hasWarning && this.allowWarnings) {\n newState = INPUT_STATE.Warning;\n } else if (detail.validationResult.isValid && this.value && this.hasFeedback) {\n newState = INPUT_STATE.Success;\n }\n \n if (this.state !== newState) {\n this.state = newState;\n }\n \n this.requestUpdate();\n }\n\n override willUpdate(_changedProperties: PropertyValues): void {\n super.willUpdate(_changedProperties);\n\n if (_changedProperties.has('type') || !this.inputType) {\n this.inputType = this.type;\n }\n\n if (_changedProperties.has('type') || _changedProperties.has('min')) {\n if (this.type === INPUT_TYPE.NUMBER && this.min && !this.value) {\n this.value = this.min;\n }\n }\n\n if (_changedProperties.has('type') ||\n _changedProperties.has('min') ||\n _changedProperties.has('max') ||\n _changedProperties.has('step')) {\n InputValidationUtils.validateNumericProperties(this.type, this.min, this.max, this.step);\n }\n\n if (_changedProperties.has('type') || \n _changedProperties.has('required') || \n _changedProperties.has('maxLength') ||\n _changedProperties.has('min') ||\n _changedProperties.has('max')) {\n this.validationController.setupValidationRules();\n }\n }\n\n override updated(_changedProperties: PropertyValues): void {\n if (_changedProperties.has('step') || _changedProperties.has('min') || _changedProperties.has('max') || _changedProperties.has('maxLength')) {\n const input = this.input;\n if (input) {\n this.setStep(this.step);\n\n if (this.min) input.setAttribute('min', this.min);\n else input.removeAttribute('min');\n\n if (this.max) input.setAttribute('max', this.max);\n else input.removeAttribute('max');\n\n if (this.maxLength) input.setAttribute('maxlength', this.maxLength.toString());\n else input.removeAttribute('maxlength');\n }\n }\n }\n\n override firstUpdated(): void {\n this._checkInitialSlotContent();\n }\n\n\n private _checkInitialSlotContent(): void {\n const addonBeforeElements = this.querySelectorAll('[slot=\"addon-before\"]');\n this.hasAddonBefore = addonBeforeElements.length > 0;\n\n const addonAfterElements = this.querySelectorAll('[slot=\"addon-after\"]');\n this.hasAddonAfter = addonAfterElements.length > 0;\n }\n\n private _handleSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n const slotName = slot.name;\n\n if (slotName === 'addon-before') {\n this.hasAddonBefore = slot.assignedElements().length > 0;\n } else if (slotName === 'addon-after') {\n this.hasAddonAfter = slot.assignedElements().length > 0;\n }\n }\n\n\n private _handleKeyDown = (keyDownEvent: KeyboardEvent): void => {\n this.eventController.handleKeyDown(keyDownEvent);\n };\n\n private _valueChange = (e: Event): void => {\n this.eventController.handleValueChange(e);\n };\n\n private _focusEvent = (e: Event): void => {\n this.eventController.handleFocus(e);\n };\n\n private _blurEvent = (e: Event): void => {\n this.eventController.handleBlur(e);\n };\n\n private _handleIconKeydown = (keyDownEvent: KeyboardEvent): void => {\n this.eventController.handleIconKeydown(keyDownEvent);\n };\n\n private async _onCopy(): Promise<void> {\n await this.eventController.handleCopy();\n }\n\n private _onClear(): void {\n this.eventController.handleClear();\n }\n\n\n private _increment(): void {\n this.eventController.handleIncrement();\n }\n\n private _decrement(): void {\n this.eventController.handleDecrement();\n }\n\n private _togglePasswordIcon(): void {\n this.eventController.handleTogglePassword();\n }\n\n private _getAriaDescribedBy(): string {\n const describedBy: string[] = [];\n\n const helperSlot = this.shadowRoot?.querySelector('slot[name=\"helper-text\"]');\n if (helperSlot && (helperSlot as HTMLSlotElement).assignedNodes().length > 0) {\n describedBy.push('helper-text');\n }\n\n return describedBy.join(' ') || '';\n }\n\n /**\n * Setup default validation rules based on input properties\n */\n /**\n * Override the form mixin's validateValue method with controller logic\n */\n protected validateValue(_value: string): boolean {\n return this.validationController.validate();\n }\n\n /**\n * Add validation rule dynamically\n */\n addRule(rule: ValidationRule): void {\n this.validationController.addRule(rule);\n }\n\n /**\n * Remove validation rule\n */\n removeRule(predicate: (rule: ValidationRule) => boolean): void {\n this.validationController.removeRule(predicate);\n }\n\n /**\n * Clear all validation rules\n */\n clearRules(): void {\n this.validationController.clearRules();\n }\n\n /**\n * Get current validation status\n */\n getValidationStatus(): {\n isValid: boolean;\n isValidating: boolean;\n errors: string[];\n warnings: string[];\n } {\n return this.validationController.getValidationStatus();\n }\n\n /**\n * Trigger validation manually\n */\n async validateInput(): Promise<boolean> {\n const result = this.validationController.validate();\n \n if (this.validationController.isValidating) {\n return new Promise((resolve) => {\n const checkValidation = () => {\n if (!this.validationController.isValidating) {\n resolve(this.validationController.isValid);\n } else {\n setTimeout(checkValidation, 50);\n }\n };\n checkValidation();\n });\n }\n \n return result;\n }\n\n /**\n * Set validation state externally (for form integration)\n */\n setValidationStatus(result: InputValidationResult): void {\n this.validationController.setValidationStatus(result);\n }\n\n /**\n * Get validation classes for CSS styling\n */\n protected getValidationClasses(): Record<string, boolean> {\n return this.validationController.getValidationClasses();\n }\n\n /**\n * Render validation feedback icon\n */\n private renderValidationIcon() {\n return this.validationController.renderValidationIcon();\n }\n\n /**\n * Render validation message\n */\n private renderValidationMessage() {\n return this.validationController.renderValidationMessage();\n }\n\n\n override render() {\n const validationClasses = this.getValidationClasses();\n const validationRenderState = this.validationController.getValidationRenderState();\n \n return html`\n <slot name=\"label\"></slot>\n <div class=\"input-wrapper ${Object.entries(validationClasses).filter(([, value]) => value).map(([key]) => key).join(' ')}\" \n part=\"input-wrapper\" \n data-theme=\"${this.currentTheme}\"\n ?data-validating=\"${validationRenderState.isValidating}\">\n ${InputRenderUtils.renderAddonBefore(this.hasAddonBefore, (e: Event) => this._handleSlotChange(e))}\n <div data-size=${this.size} id=\"input-container\" part=\"input-container\">\n ${InputRenderUtils.renderPrefix()}\n <input\n id=\"input\"\n part=\"input\"\n .disabled=${this.disabled}\n .readOnly=${this.readonly}\n .value=${this.value}\n .placeholder=${this.placeholder}\n .type=\"${this.inputType}\"\n .autocomplete=${this.autocomplete}\n aria-invalid=${validationRenderState.validationResult.hasError ? 'true' : 'false'}\n aria-describedby=${this._getAriaDescribedBy()}\n @input=${this._valueChange}\n @focus=${this._focusEvent}\n @blur=${this._blurEvent}\n @keydown=${this._handleKeyDown}\n />\n ${InputRenderUtils.renderSuffix()}\n ${InputRenderUtils.renderCopyIcon(\n this.withCopy,\n this.disabled,\n this.readonly,\n () => this._onCopy(),\n (e: KeyboardEvent) => this._handleIconKeydown(e)\n )}\n ${InputRenderUtils.renderClearIcon(\n this.allowClear,\n this.value,\n this.disabled,\n this.readonly,\n () => this._onClear(),\n (e: KeyboardEvent) => this._handleIconKeydown(e)\n )}\n ${validationRenderState.hasValidationFeedback ? this.renderValidationIcon() : InputRenderUtils.renderStateIcon(this.state)}\n ${InputRenderUtils.renderCalendarIcon(this.state, this.type)}\n ${InputRenderUtils.renderPasswordIcon(\n this.type,\n this.inputType,\n this.disabled,\n this.readonly,\n () => this._togglePasswordIcon(),\n (e: KeyboardEvent) => this._handleIconKeydown(e)\n )}\n ${InputRenderUtils.renderNumberIcons(\n this.type,\n this.state,\n this.disabled,\n this.readonly,\n () => this._increment(),\n () => this._decrement(),\n (e: KeyboardEvent) => this._handleIconKeydown(e)\n )}\n </div>\n ${InputRenderUtils.renderAddonAfter(this.hasAddonAfter, (e: Event) => this._handleSlotChange(e))}\n </div>\n <slot name=\"helper-text\"></slot>\n ${this.renderValidationMessage()}\n ${this.showCount ? html`\n <div class=\"character-count\" part=\"character-count\" ?data-over-limit=${this.isOverCharacterLimit}>\n ${this.characterCountDisplay}\n </div>\n ` : ''}\n `;\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"input.component.js","sourceRoot":"","sources":["../../../src/components/input/input.component.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2023 Nuraly, Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport { LitElement, PropertyValues, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { styles } from './input.style.js';\nimport {\n INPUT_TYPE,\n INPUT_STATE,\n INPUT_SIZE,\n INPUT_VARIANT,\n EMPTY_STRING,\n ValidationRule,\n InputValidationResult\n} from './input.types.js';\nimport { NuralyUIBaseMixin } from '@nuralyui/common/mixins';\nimport { InputValidationUtils, InputRenderUtils } from './utils/index.js';\nimport { SelectionMixin, FocusMixin, NumberMixin } from './mixins/index.js';\nimport {\n InputValidationController,\n InputValidationHost,\n InputEventController,\n InputEventHost\n} from './controllers/index.js';\n\n/**\n * Versatile input component with validation, multiple types, and interactive features.\n * \n * @example\n * ```html\n * <nr-input type=\"text\" placeholder=\"Enter name\"></nr-input>\n * <nr-input type=\"password\"></nr-input>\n * <nr-input type=\"number\" min=\"0\" max=\"100\"></nr-input>\n * ```\n * \n * @fires nr-input - Value changes\n * @fires nr-focus - Input focused\n * @fires nr-blur - Input blurred \n * @fires nr-enter - Enter key pressed\n * @fires nr-clear - Clear button clicked\n * \n * @slot label - Input label\n * @slot helper-text - Helper text\n * @slot addon-before - Content before input\n * @slot addon-after - Content after input\n */\n@customElement('nr-input')\nexport class NrInputElement extends NumberMixin(\n FocusMixin(\n SelectionMixin(\n NuralyUIBaseMixin(LitElement)\n ) \n )\n) implements InputValidationHost, InputEventHost {\n static override styles = styles;\n \n private validationController = new InputValidationController(this);\n private eventController = new InputEventController(this);\n\n /** Disables the input */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** Makes the input read-only */\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n /** Visual state (default, success, warning, error) */\n @property({ type: String, reflect: true })\n state = INPUT_STATE.Default;\n\n /** Current input value */\n @property({ type: String })\n value = EMPTY_STRING;\n\n /** Input size (small, medium, large) */\n @property({ type: String })\n size = INPUT_SIZE.Medium;\n\n /** Visual variant (outlined, underlined, filled) */\n @property({ type: String, reflect: true })\n variant = INPUT_VARIANT.Underlined;\n\n /** Input type (text, password, number, email, etc.) */\n @property({ reflect: true })\n type = INPUT_TYPE.TEXT;\n\n /** Step value for number inputs */\n @property({ type: String })\n step?: string;\n\n /** Minimum value for number inputs */\n @property({ type: String })\n min?: string;\n\n /** Maximum value for number inputs */\n @property({ type: String })\n max?: string;\n\n /** Placeholder text */\n @property({ type: String })\n placeholder = EMPTY_STRING;\n\n /** HTML autocomplete attribute */\n @property({ type: String })\n autocomplete = 'off';\n\n /** Field name for form submission */\n @property({ type: String })\n name?: string;\n\n /** Required field indicator */\n @property({ type: Boolean })\n required?: boolean;\n\n /** Shows copy button */\n @property({ type: Boolean, reflect: true })\n withCopy = false;\n\n /** Shows clear button */\n @property({ type: Boolean, reflect: true })\n allowClear = false;\n\n /** Shows character counter */\n @property({ type: Boolean, reflect: true })\n showCount = false;\n\n /** Maximum character limit */\n @property({ type: Number })\n maxLength?: number;\n\n\n /** Array of validation rules */\n @property({ type: Array })\n rules: ValidationRule[] = [];\n\n /** Validate on change */\n @property({ type: Boolean, attribute: 'validate-on-change' })\n validateOnChangeInput = true;\n\n /** Validate on blur */\n @property({ type: Boolean, attribute: 'validate-on-blur' })\n validateOnBlurInput = true;\n\n /** Show validation status icon */\n @property({ type: Boolean, attribute: 'has-feedback' })\n hasFeedback = false;\n\n /** Allow validation warnings */\n @property({ type: Boolean, attribute: 'allow-warnings' })\n allowWarnings = false;\n\n /** Custom validation trigger */\n @property({ type: String, attribute: 'validation-trigger' })\n validationTrigger: 'change' | 'blur' | 'submit' = 'change';\n\n /** Validation debounce delay in milliseconds */\n @property({ type: Number, attribute: 'validation-debounce' })\n validationDebounce?: number;\n\n /** Input label for better error messages */\n @property({ type: String })\n label?: string;\n\n /** Validation message */\n @state()\n validationMessage?: string;\n\n\n @state()\n inputType = EMPTY_STRING;\n\n @state()\n hasAddonBefore = false;\n\n @state()\n hasAddonAfter = false;\n\n @state()\n focused = false;\n\n private get _input(): HTMLInputElement {\n return this.shadowRoot!.querySelector('#input') as HTMLInputElement;\n }\n\n\n get characterCountDisplay(): string {\n const currentLength = this.value.length;\n if (this.maxLength) {\n return `${currentLength}/${this.maxLength}`;\n }\n return `${currentLength}`;\n }\n\n get isOverCharacterLimit(): boolean {\n return this.maxLength ? this.value.length > this.maxLength : false;\n }\n\n protected get input(): HTMLInputElement {\n return this._input;\n }\n\n protected get inputElement(): HTMLInputElement {\n return this._input;\n }\n\n\n\n override requiredComponents = ['nr-icon'];\n\n override connectedCallback() {\n super.connectedCallback();\n \n this.addEventListener('nr-validation', this._handleValidationEvent as EventListener);\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n \n this.removeEventListener('nr-validation', this._handleValidationEvent as EventListener);\n \n this.validationController.clearDebounceTimer?.();\n }\n\n /**\n * Handle validation events from the controller\n */\n private _handleValidationEvent = (event: Event) => {\n const customEvent = event as CustomEvent;\n const detail = customEvent.detail;\n \n this.validationMessage = detail.validationMessage || '';\n \n let newState = INPUT_STATE.Default;\n \n if (detail.validationResult.hasError) {\n newState = INPUT_STATE.Error;\n } else if (detail.validationResult.hasWarning && this.allowWarnings) {\n newState = INPUT_STATE.Warning;\n } else if (detail.validationResult.isValid && this.value && this.hasFeedback) {\n newState = INPUT_STATE.Success;\n }\n \n if (this.state !== newState) {\n this.state = newState;\n }\n \n this.requestUpdate();\n }\n\n override willUpdate(_changedProperties: PropertyValues): void {\n super.willUpdate(_changedProperties);\n\n if (_changedProperties.has('type') || !this.inputType) {\n this.inputType = this.type;\n }\n\n if (_changedProperties.has('type') || _changedProperties.has('min')) {\n if (this.type === INPUT_TYPE.NUMBER && this.min && !this.value) {\n this.value = this.min;\n }\n }\n\n if (_changedProperties.has('type') ||\n _changedProperties.has('min') ||\n _changedProperties.has('max') ||\n _changedProperties.has('step')) {\n InputValidationUtils.validateNumericProperties(this.type, this.min, this.max, this.step);\n }\n\n if (_changedProperties.has('type') || \n _changedProperties.has('required') || \n _changedProperties.has('maxLength') ||\n _changedProperties.has('min') ||\n _changedProperties.has('max')) {\n this.validationController.setupValidationRules();\n }\n }\n\n override updated(_changedProperties: PropertyValues): void {\n if (_changedProperties.has('step') || _changedProperties.has('min') || _changedProperties.has('max') || _changedProperties.has('maxLength')) {\n const input = this.input;\n if (input) {\n this.setStep(this.step);\n\n if (this.min) input.setAttribute('min', this.min);\n else input.removeAttribute('min');\n\n if (this.max) input.setAttribute('max', this.max);\n else input.removeAttribute('max');\n\n if (this.maxLength) input.setAttribute('maxlength', this.maxLength.toString());\n else input.removeAttribute('maxlength');\n }\n }\n }\n\n override firstUpdated(): void {\n this._checkInitialSlotContent();\n }\n\n\n private _checkInitialSlotContent(): void {\n const addonBeforeElements = this.querySelectorAll('[slot=\"addon-before\"]');\n this.hasAddonBefore = addonBeforeElements.length > 0;\n\n const addonAfterElements = this.querySelectorAll('[slot=\"addon-after\"]');\n this.hasAddonAfter = addonAfterElements.length > 0;\n }\n\n private _handleSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n const slotName = slot.name;\n\n if (slotName === 'addon-before') {\n this.hasAddonBefore = slot.assignedElements().length > 0;\n } else if (slotName === 'addon-after') {\n this.hasAddonAfter = slot.assignedElements().length > 0;\n }\n }\n\n\n private _handleKeyDown = (keyDownEvent: KeyboardEvent): void => {\n this.eventController.handleKeyDown(keyDownEvent);\n };\n\n private _valueChange = (e: Event): void => {\n this.eventController.handleValueChange(e);\n };\n\n private _focusEvent = (e: Event): void => {\n this.eventController.handleFocus(e);\n };\n\n private _blurEvent = (e: Event): void => {\n this.eventController.handleBlur(e);\n };\n\n private _handleIconKeydown = (keyDownEvent: KeyboardEvent): void => {\n this.eventController.handleIconKeydown(keyDownEvent);\n };\n\n private async _onCopy(): Promise<void> {\n await this.eventController.handleCopy();\n }\n\n private _onClear(): void {\n this.eventController.handleClear();\n }\n\n\n private _increment(): void {\n this.eventController.handleIncrement();\n }\n\n private _decrement(): void {\n this.eventController.handleDecrement();\n }\n\n private _togglePasswordIcon(): void {\n this.eventController.handleTogglePassword();\n }\n\n private _getAriaDescribedBy(): string {\n const describedBy: string[] = [];\n\n const helperSlot = this.shadowRoot?.querySelector('slot[name=\"helper-text\"]');\n if (helperSlot && (helperSlot as HTMLSlotElement).assignedNodes().length > 0) {\n describedBy.push('helper-text');\n }\n\n return describedBy.join(' ') || '';\n }\n\n /**\n * Setup default validation rules based on input properties\n */\n /**\n * Override the form mixin's validateValue method with controller logic\n */\n protected validateValue(_value: string): boolean {\n return this.validationController.validate();\n }\n\n /**\n * Add validation rule dynamically\n */\n addRule(rule: ValidationRule): void {\n this.validationController.addRule(rule);\n }\n\n /**\n * Remove validation rule\n */\n removeRule(predicate: (rule: ValidationRule) => boolean): void {\n this.validationController.removeRule(predicate);\n }\n\n /**\n * Clear all validation rules\n */\n clearRules(): void {\n this.validationController.clearRules();\n }\n\n /**\n * Get current validation status\n */\n getValidationStatus(): {\n isValid: boolean;\n isValidating: boolean;\n errors: string[];\n warnings: string[];\n } {\n return this.validationController.getValidationStatus();\n }\n\n /**\n * Trigger validation manually\n */\n async validateInput(): Promise<boolean> {\n const result = this.validationController.validate();\n \n if (this.validationController.isValidating) {\n return new Promise((resolve) => {\n const checkValidation = () => {\n if (!this.validationController.isValidating) {\n resolve(this.validationController.isValid);\n } else {\n setTimeout(checkValidation, 50);\n }\n };\n checkValidation();\n });\n }\n \n return result;\n }\n\n /**\n * Set validation state externally (for form integration)\n */\n setValidationStatus(result: InputValidationResult): void {\n this.validationController.setValidationStatus(result);\n }\n\n /**\n * Get validation classes for CSS styling\n */\n protected getValidationClasses(): Record<string, boolean> {\n return this.validationController.getValidationClasses();\n }\n\n /**\n * Render validation feedback icon\n */\n private renderValidationIcon() {\n return this.validationController.renderValidationIcon();\n }\n\n /**\n * Render validation message\n */\n private renderValidationMessage() {\n return this.validationController.renderValidationMessage();\n }\n\n\n override render() {\n const validationClasses = this.getValidationClasses();\n const validationRenderState = this.validationController.getValidationRenderState();\n \n return html`\n <slot name=\"label\"></slot>\n <div class=\"input-wrapper ${Object.entries(validationClasses).filter(([, value]) => value).map(([key]) => key).join(' ')}\" \n part=\"input-wrapper\" \n data-theme=\"${this.currentTheme}\"\n ?data-validating=\"${validationRenderState.isValidating}\">\n ${InputRenderUtils.renderAddonBefore(this.hasAddonBefore, (e: Event) => this._handleSlotChange(e))}\n <div data-size=${this.size} id=\"input-container\" part=\"input-container\">\n ${InputRenderUtils.renderPrefix()}\n <input\n id=\"input\"\n part=\"input\"\n .disabled=${this.disabled}\n .readOnly=${this.readonly}\n .value=${this.value}\n .placeholder=${this.placeholder}\n .type=\"${this.inputType}\"\n .autocomplete=${this.autocomplete}\n aria-invalid=${validationRenderState.validationResult.hasError ? 'true' : 'false'}\n aria-describedby=${this._getAriaDescribedBy()}\n @input=${this._valueChange}\n @focus=${this._focusEvent}\n @blur=${this._blurEvent}\n @keydown=${this._handleKeyDown}\n />\n ${InputRenderUtils.renderSuffix()}\n ${InputRenderUtils.renderCopyIcon(\n this.withCopy,\n this.disabled,\n this.readonly,\n () => this._onCopy(),\n (e: KeyboardEvent) => this._handleIconKeydown(e)\n )}\n ${InputRenderUtils.renderClearIcon(\n this.allowClear,\n this.value,\n this.disabled,\n this.readonly,\n () => this._onClear(),\n (e: KeyboardEvent) => this._handleIconKeydown(e)\n )}\n ${validationRenderState.hasValidationFeedback ? this.renderValidationIcon() : InputRenderUtils.renderStateIcon(this.state)}\n ${InputRenderUtils.renderCalendarIcon(this.state, this.type)}\n ${InputRenderUtils.renderPasswordIcon(\n this.type,\n this.inputType,\n this.disabled,\n this.readonly,\n () => this._togglePasswordIcon(),\n (e: KeyboardEvent) => this._handleIconKeydown(e)\n )}\n ${InputRenderUtils.renderNumberIcons(\n this.type,\n this.state,\n this.disabled,\n this.readonly,\n () => this._increment(),\n () => this._decrement(),\n (e: KeyboardEvent) => this._handleIconKeydown(e)\n )}\n </div>\n ${InputRenderUtils.renderAddonAfter(this.hasAddonAfter, (e: Event) => this._handleSlotChange(e))}\n </div>\n <slot name=\"helper-text\"></slot>\n ${this.renderValidationMessage()}\n ${this.showCount ? html`\n <div class=\"character-count\" part=\"character-count\" ?data-over-limit=${this.isOverCharacterLimit}>\n ${this.characterCountDisplay}\n </div>\n ` : ''}\n `;\n }\n}\n\n"]}
|