UNPKG

igniteui-webcomponents

Version:

Ignite UI for Web Components is a complete library of UI components, giving you the ability to build modern web applications using encapsulation and the concept of reusable components in a dependency-free approach.

139 lines 5.58 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { property, state } from 'lit/decorators.js'; import { blazorDeepImport } from '../common/decorators/blazorDeepImport.js'; import { IgcInputBaseComponent } from '../input/input-base.js'; import { MaskParser } from './mask-parser.js'; let IgcMaskInputBaseComponent = class IgcMaskInputBaseComponent extends IgcInputBaseComponent { constructor() { super(...arguments); this._parser = new MaskParser(); this._maskSelection = { start: 0, end: 0 }; this.compositionStart = 0; this._focused = false; this._maskedValue = ''; } get _inputSelection() { return { start: this.input.selectionStart || 0, end: this.input.selectionEnd || 0, }; } set mask(value) { this._parser.mask = value; } get mask() { return this._parser.mask; } set prompt(value) { this._parser.prompt = value; } get prompt() { return this._parser.prompt; } async _handleInput({ inputType, isComposing, }) { const value = this.input.value; const { start, end } = this._maskSelection; const deletePosition = this._parser.getNextNonLiteralPosition(end) + 1; this._setTouchedState(); switch (inputType) { case 'deleteContentForward': this._updateInput('', { start, end: deletePosition }); await this.updateComplete; return this.input.setSelectionRange(deletePosition, deletePosition); case 'deleteContentBackward': if (isComposing) return; return this._updateInput('', { start: this._parser.getPreviousNonLiteralPosition(this._inputSelection.start + 1), end, }); case 'deleteByCut': return this._updateInput('', this._maskSelection); case 'insertText': return this._updateInput(value.substring(start, this._inputSelection.end), this._maskSelection); case 'insertFromPaste': return this._updateInput(value.substring(start, this._inputSelection.end), { start, end: this._inputSelection.start, }); case 'insertFromDrop': return this._updateInput(value.substring(this._inputSelection.start, this._inputSelection.end), { ...this._inputSelection }); case undefined: case '': return this._updateInput(this._parser.parse(value.substring(start, this._inputSelection.end)), { start, end: this._inputSelection.end, }); } } _setMaskSelection() { this._maskSelection = this._inputSelection; } _handleCompositionStart() { this.compositionStart = this._inputSelection.start; } _handleCompositionEnd({ data }) { this._updateInput(data, { start: this.compositionStart, end: this._inputSelection.end, }); } _handleClick() { const { selectionStart: start, selectionEnd: end } = this.input; if (start === end && start === this._maskedValue.length) { this.select(); } } select() { this.input.select(); } setSelectionRange(start, end, direction) { super.setSelectionRange(start, end, direction); this._maskSelection = { start, end }; } setRangeText(replacement, start, end, selectMode) { const current = this._inputSelection; const _start = start ?? current.start; const _end = end ?? current.end; const result = this._parser.replace(this._maskedValue || this._parser.emptyMask, replacement, _start, _end); this._maskedValue = this._parser.apply(this._parser.parse(result.value)); this._updateSetRangeTextValue(); this.updateComplete.then(() => { switch (selectMode) { case 'select': this.setSelectionRange(_start, _end); break; case 'start': this.setSelectionRange(_start, _start); break; case 'end': this.setSelectionRange(_end, _end); break; default: this.setSelectionRange(current.start, current.end); } }); } }; __decorate([ state() ], IgcMaskInputBaseComponent.prototype, "_focused", void 0); __decorate([ state() ], IgcMaskInputBaseComponent.prototype, "_maskedValue", void 0); __decorate([ property() ], IgcMaskInputBaseComponent.prototype, "mask", null); __decorate([ property() ], IgcMaskInputBaseComponent.prototype, "prompt", null); IgcMaskInputBaseComponent = __decorate([ blazorDeepImport ], IgcMaskInputBaseComponent); export { IgcMaskInputBaseComponent }; //# sourceMappingURL=mask-input-base.js.map