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.18 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy9kb20vdmFsdWUtYmluZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUtsRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDM0IsUUFBd0IsTUFBTSxDQUFDLGdCQUFnQixFQUFvQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFFaEYsTUFBTSxFQUFFLEdBQUcsZ0JBQWdCLEVBQW9CLENBQUM7SUFFaEQsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNSLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUN0QixPQUFPO1NBQ1Y7UUFFRCxNQUFNLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBQyxHQUFHLEVBQUUsQ0FBQztRQUUxQyxFQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBRW5CLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN0Qjs7O2VBR0c7WUFDSCxFQUFFLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ3REO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1NpZ25hbCwgV3JpdGFibGVTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtlZmZlY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnLi9pbmplY3QtZWxlbWVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlWYWx1ZUJpbmRpbmcodmFsdWU/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+KTogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbmV4cG9ydCBmdW5jdGlvbiB0dWlWYWx1ZUJpbmRpbmcodmFsdWU/OiBTaWduYWw8c3RyaW5nPik6IFNpZ25hbDxzdHJpbmc+O1xuXG4vKipcbiAqIEhvc3QgYmluZGluZyBgaG9zdDogeydbdmFsdWVdJzogJ3lvdXJTaWduYWwoKSd9YCBpcyBub3QgYW4gb3B0aW9uIGZvciBvdXIgdGV4dGZpZWxkcyDigJNcbiAqIHRoZXkgdXNlIHtAbGluayBUdWlUZXh0ZmllbGREaXJlY3RpdmV9IGFzIGEgaG9zdCBkaXJlY3RpdmUuXG4gKiBgVHVpVGV4dGZpZWxkRGlyZWN0aXZlYCBoYXMgaG9zdCBiaW5kaW5nIHdoaWNoIGRlcGVuZHMgb24gbmF0aXZlIGlucHV0J3MgdmFsdWUuXG4gKiBIb3N0IGJpbmRpbmdzIG9mIHRoZSBob3N0IGRpcmVjdGl2ZXMgYXJlIHJlLWNhbGN1bGF0ZWQgQkVGT1JFIGNvbXBvbmVudCdzIG9uZXMg4oCTXG4gKiBuYXRpdmUgaW5wdXQncyB2YWx1ZSBzaG91bGQgYmUgdXBkYXRlZCBTWU5DSFJPTk9VU0xZIGJlZm9yZSBuZXh0IGNoYW5nZSBkZXRlY3Rpb24gaXRlcmF0aW9uLlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR1aVZhbHVlQmluZGluZyhcbiAgICB2YWx1ZTogU2lnbmFsPHN0cmluZz4gPSBzaWduYWwodHVpSW5qZWN0RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PigpLnZhbHVlIHx8ICcnKSxcbik6IFNpZ25hbDxzdHJpbmc+IHtcbiAgICBjb25zdCBlbCA9IHR1aUluamVjdEVsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4oKTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChlbC52YWx1ZSA9PT0gdmFsdWUoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmR9ID0gZWw7XG5cbiAgICAgICAgZWwudmFsdWUgPSB2YWx1ZSgpO1xuXG4gICAgICAgIGlmIChlbC5tYXRjaGVzKCc6Zm9jdXMnKSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBZnRlciBwcm9ncmFtbWF0aWMgdXBkYXRlcyBvZiBpbnB1dCdzIHZhbHVlLCBjYXJldCBpcyBhdXRvbWF0aWNhbGx5IHBsYWNlZCBhdCB0aGUgZW5kIOKAk1xuICAgICAgICAgICAgICogcmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlbC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuIl19