UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

29 lines 4.15 kB
import { effect, signal } from '@angular/core'; import { tuiInjectElement } from './inject-element'; /** * Host binding `host: {'[value]': 'yourSignal()'}` is not an option for our textfields – * they use {@link TuiTextfieldDirective} as a host directive. * `TuiTextfieldDirective` has host binding which depends on native input's value. * Host bindings of the host directives are re-calculated BEFORE component's ones – * native input's value should be updated SYNCHRONOUSLY before next change detection iteration. * @deprecated */ export function tuiValueBinding(value = signal(tuiInjectElement().value || '')) { const el = tuiInjectElement(); effect(() => { if (el.value === value()) { return; } const { selectionStart, selectionEnd } = el; el.value = value(); if (el.matches(':focus')) { /** * After programmatic updates of input's value, caret is automatically placed at the end – * revert to the previous position */ el.setSelectionRange(selectionStart, selectionEnd); } }); return value; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy9kb20vdmFsdWUtYmluZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFlLE1BQU0sRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFLbEQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzNCLFFBQXdCLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBb0IsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBRWhGLE1BQU0sRUFBRSxHQUFHLGdCQUFnQixFQUFvQixDQUFDO0lBRWhELE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDUixJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDdEIsT0FBTztTQUNWO1FBRUQsTUFBTSxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUMsR0FBRyxFQUFFLENBQUM7UUFFMUMsRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUVuQixJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdEI7OztlQUdHO1lBQ0gsRUFBRSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZWZmZWN0LCB0eXBlIFNpZ25hbCwgc2lnbmFsLCB0eXBlIFdyaXRhYmxlU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICcuL2luamVjdC1lbGVtZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aVZhbHVlQmluZGluZyh2YWx1ZT86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz4pOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuZXhwb3J0IGZ1bmN0aW9uIHR1aVZhbHVlQmluZGluZyh2YWx1ZT86IFNpZ25hbDxzdHJpbmc+KTogU2lnbmFsPHN0cmluZz47XG5cbi8qKlxuICogSG9zdCBiaW5kaW5nIGBob3N0OiB7J1t2YWx1ZV0nOiAneW91clNpZ25hbCgpJ31gIGlzIG5vdCBhbiBvcHRpb24gZm9yIG91ciB0ZXh0ZmllbGRzIOKAk1xuICogdGhleSB1c2Uge0BsaW5rIFR1aVRleHRmaWVsZERpcmVjdGl2ZX0gYXMgYSBob3N0IGRpcmVjdGl2ZS5cbiAqIGBUdWlUZXh0ZmllbGREaXJlY3RpdmVgIGhhcyBob3N0IGJpbmRpbmcgd2hpY2ggZGVwZW5kcyBvbiBuYXRpdmUgaW5wdXQncyB2YWx1ZS5cbiAqIEhvc3QgYmluZGluZ3Mgb2YgdGhlIGhvc3QgZGlyZWN0aXZlcyBhcmUgcmUtY2FsY3VsYXRlZCBCRUZPUkUgY29tcG9uZW50J3Mgb25lcyDigJNcbiAqIG5hdGl2ZSBpbnB1dCdzIHZhbHVlIHNob3VsZCBiZSB1cGRhdGVkIFNZTkNIUk9OT1VTTFkgYmVmb3JlIG5leHQgY2hhbmdlIGRldGVjdGlvbiBpdGVyYXRpb24uXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdHVpVmFsdWVCaW5kaW5nKFxuICAgIHZhbHVlOiBTaWduYWw8c3RyaW5nPiA9IHNpZ25hbCh0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCkudmFsdWUgfHwgJycpLFxuKTogU2lnbmFsPHN0cmluZz4ge1xuICAgIGNvbnN0IGVsID0gdHVpSW5qZWN0RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PigpO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGVsLnZhbHVlID09PSB2YWx1ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZH0gPSBlbDtcblxuICAgICAgICBlbC52YWx1ZSA9IHZhbHVlKCk7XG5cbiAgICAgICAgaWYgKGVsLm1hdGNoZXMoJzpmb2N1cycpKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFmdGVyIHByb2dyYW1tYXRpYyB1cGRhdGVzIG9mIGlucHV0J3MgdmFsdWUsIGNhcmV0IGlzIGF1dG9tYXRpY2FsbHkgcGxhY2VkIGF0IHRoZSBlbmQg4oCTXG4gICAgICAgICAgICAgKiByZXZlcnQgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVsLnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG59XG4iXX0=