@snabcentr/client-ui 3.51.15 → 3.52.1
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/configurators/index.d.ts +1 -0
- package/configurators/models/index.d.ts +1 -0
- package/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.d.ts +18 -0
- package/configurators/sandwich/sc-sandwich.component.d.ts +24 -0
- package/configurators/sandwich_m2/index.d.ts +4 -0
- package/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.d.ts +8 -0
- package/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.d.ts +23 -0
- package/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.d.ts +13 -0
- package/configurators/sandwich_m2/sc-sandwich-m2.component.d.ts +267 -0
- package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +14 -5
- package/esm2022/configurators/index.mjs +2 -1
- package/esm2022/configurators/models/index.mjs +2 -1
- package/esm2022/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.mjs +2 -0
- package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +57 -6
- package/esm2022/configurators/sandwich_m2/index.mjs +5 -0
- package/esm2022/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.mjs +14 -0
- package/esm2022/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.mjs +2 -0
- package/esm2022/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.mjs +5 -0
- package/esm2022/configurators/sandwich_m2/sc-sandwich-m2.component.mjs +561 -0
- package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +39 -12
- package/fesm2022/snabcentr-client-ui.mjs +651 -16
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/release_notes.tmp +3 -3
- package/styles/tailwind/tailwind.scss +72 -0
|
@@ -1,43 +1,70 @@
|
|
|
1
1
|
/* eslint-disable lodash/prefer-lodash-method */
|
|
2
|
-
import { ContentChildren, Directive, HostListener } from '@angular/core';
|
|
2
|
+
import { ContentChildren, Directive, ElementRef, HostListener, inject } from '@angular/core';
|
|
3
3
|
import { AbstractTuiControl } from '@taiga-ui/legacy';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
/**
|
|
6
6
|
* Директива для перехода по нажатию клавиши enter на следующее поле ввода формы.
|
|
7
|
+
* Поддерживает как legacy Taiga UI v3 контролы (AbstractTuiControl), так и новые v4
|
|
8
|
+
* (tui-textfield + нативные input) — через DOM-fallback.
|
|
7
9
|
*/
|
|
8
10
|
export class ScNextInputFocusDirective {
|
|
11
|
+
constructor() {
|
|
12
|
+
/**
|
|
13
|
+
* Элемент формы.
|
|
14
|
+
*/
|
|
15
|
+
this.el = inject(ElementRef);
|
|
16
|
+
}
|
|
9
17
|
/**
|
|
10
|
-
*
|
|
18
|
+
* По Enter — переход на следующее редактируемое поле формы.
|
|
19
|
+
* Сначала пробует legacy Taiga UI v3 контролы, затем DOM fallback для v4.
|
|
11
20
|
*
|
|
12
|
-
* @param event
|
|
21
|
+
* @param event Событие нажатия клавиши.
|
|
13
22
|
*/
|
|
14
23
|
onFormKeyDownEnter(event) {
|
|
15
24
|
if (event.code !== 'Enter' && event.key !== 'Enter') {
|
|
16
25
|
return;
|
|
17
26
|
}
|
|
18
27
|
event.preventDefault();
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
// Taiga UI v3: переход через AbstractTuiControl (legacy-обёртки tui-input, tui-input-number и др.).
|
|
29
|
+
const legacy = this.legacyControls.toArray();
|
|
30
|
+
const legacyIndex = legacy.findIndex((control) => control.focused);
|
|
31
|
+
if (legacyIndex !== -1) {
|
|
32
|
+
const next = legacy[legacyIndex + 1]?.nativeFocusableElement;
|
|
33
|
+
if (next) {
|
|
34
|
+
next.focus();
|
|
35
|
+
return;
|
|
25
36
|
}
|
|
26
37
|
}
|
|
38
|
+
// Taiga UI v4: переход через DOM — ищем нативные input внутри формы (tui-textfield + директивы).
|
|
39
|
+
const { target } = event;
|
|
40
|
+
if (!(target instanceof HTMLInputElement) || target.type === 'range') {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// eslint-disable-next-line unicorn/prefer-spread
|
|
44
|
+
const inputs = Array.from(this.el.nativeElement.querySelectorAll('input')).filter((element) => element.type !== 'range' && !element.readOnly && !element.disabled);
|
|
45
|
+
const currentIndex = inputs.indexOf(target);
|
|
46
|
+
if (currentIndex === -1) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const nextInput = inputs.at(currentIndex + 1);
|
|
50
|
+
if (nextInput) {
|
|
51
|
+
nextInput.focus();
|
|
52
|
+
nextInput.select();
|
|
53
|
+
}
|
|
27
54
|
}
|
|
28
55
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNextInputFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
29
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScNextInputFocusDirective, selector: "form[ScNextInputFocus]", host: { listeners: { "keydown": "onFormKeyDownEnter($event)" } }, queries: [{ propertyName: "
|
|
56
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScNextInputFocusDirective, selector: "form[ScNextInputFocus]", host: { listeners: { "keydown": "onFormKeyDownEnter($event)" } }, queries: [{ propertyName: "legacyControls", predicate: AbstractTuiControl, descendants: true }], ngImport: i0 }); }
|
|
30
57
|
}
|
|
31
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNextInputFocusDirective, decorators: [{
|
|
32
59
|
type: Directive,
|
|
33
60
|
args: [{
|
|
34
61
|
selector: 'form[ScNextInputFocus]',
|
|
35
62
|
}]
|
|
36
|
-
}], propDecorators: {
|
|
63
|
+
}], propDecorators: { legacyControls: [{
|
|
37
64
|
type: ContentChildren,
|
|
38
65
|
args: [AbstractTuiControl, { descendants: true }]
|
|
39
66
|
}], onFormKeyDownEnter: [{
|
|
40
67
|
type: HostListener,
|
|
41
68
|
args: ['keydown', ['$event']]
|
|
42
69
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbmV4dC1pbnB1dC1mb2N1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9uZXh0LWlucHV0LWZvY3VzL3NjLW5leHQtaW5wdXQtZm9jdXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdEQUFnRDtBQUVoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0JBQWtCLEVBQStCLE1BQU0sa0JBQWtCLENBQUM7O0FBRW5GOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBWUk7O1dBRUc7UUFDYyxPQUFFLEdBQWdDLE1BQU0sQ0FBOEIsVUFBVSxDQUFDLENBQUM7S0FzRHRHO0lBcERHOzs7OztPQUtHO0lBRUksa0JBQWtCLENBQUMsS0FBb0I7UUFDMUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2xELE9BQU87UUFDWCxDQUFDO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZCLG9HQUFvRztRQUNwRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRSxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUM7WUFFN0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBRWIsT0FBTztZQUNYLENBQUM7UUFDTCxDQUFDO1FBRUQsaUdBQWlHO1FBQ2pHLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFekIsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFZLGdCQUFnQixDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNuRSxPQUFPO1FBQ1gsQ0FBQztRQUVELGlEQUFpRDtRQUNqRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFtQixPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDL0YsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQ2xGLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLElBQUksWUFBWSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU5QyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQzsrR0FqRVEseUJBQXlCO21HQUF6Qix5QkFBeUIsK0pBTWpCLGtCQUFrQjs7NEZBTjFCLHlCQUF5QjtrQkFIckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNyQzs4QkFRb0IsY0FBYztzQkFEOUIsZUFBZTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBZW5ELGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBsb2Rhc2gvcHJlZmVyLWxvZGFzaC1tZXRob2QgKi9cblxuaW1wb3J0IHsgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0VHVpQ29udHJvbCwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yIH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeSc7XG5cbi8qKlxuICog0JTQuNGA0LXQutGC0LjQstCwINC00LvRjyDQv9C10YDQtdGF0L7QtNCwINC/0L4g0L3QsNC20LDRgtC40Y4g0LrQu9Cw0LLQuNGI0LggZW50ZXIg0L3QsCDRgdC70LXQtNGD0Y7RidC10LUg0L/QvtC70LUg0LLQstC+0LTQsCDRhNC+0YDQvNGLLlxuICog0J/QvtC00LTQtdGA0LbQuNCy0LDQtdGCINC60LDQuiBsZWdhY3kgVGFpZ2EgVUkgdjMg0LrQvtC90YLRgNC+0LvRiyAoQWJzdHJhY3RUdWlDb250cm9sKSwg0YLQsNC6INC4INC90L7QstGL0LUgdjRcbiAqICh0dWktdGV4dGZpZWxkICsg0L3QsNGC0LjQstC90YvQtSBpbnB1dCkg4oCUINGH0LXRgNC10LcgRE9NLWZhbGxiYWNrLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Zvcm1bU2NOZXh0SW5wdXRGb2N1c10nLFxufSlcbmV4cG9ydCBjbGFzcyBTY05leHRJbnB1dEZvY3VzRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBMZWdhY3kgVGFpZ2EgVUkgdjMg0LrQvtC90YLRgNC+0LvRiyAodHVpLWlucHV0LCB0dWktaW5wdXQtbnVtYmVyINC4INGCLtC0LikuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCDQkdGD0LTQtdGCINGD0LTQsNC70LXQvdC+INC/0L7RgdC70LUg0L/QtdGA0LXRhdC+0LTQsCDQvdCwIFRhaWdhIFVJIHY1LlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQWJzdHJhY3RUdWlDb250cm9sLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBsZWdhY3lDb250cm9sczogUXVlcnlMaXN0PFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvcj47XG5cbiAgICAvKipcbiAgICAgKiDQrdC70LXQvNC10L3RgiDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWY8SFRNTEZvcm1FbGVtZW50PiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxGb3JtRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqXG4gICAgICog0J/QviBFbnRlciDigJQg0L/QtdGA0LXRhdC+0LQg0L3QsCDRgdC70LXQtNGD0Y7RidC10LUg0YDQtdC00LDQutGC0LjRgNGD0LXQvNC+0LUg0L/QvtC70LUg0YTQvtGA0LzRiy5cbiAgICAgKiDQodC90LDRh9Cw0LvQsCDQv9GA0L7QsdGD0LXRgiBsZWdhY3kgVGFpZ2EgVUkgdjMg0LrQvtC90YLRgNC+0LvRiywg0LfQsNGC0LXQvCBET00gZmFsbGJhY2sg0LTQu9GPIHY0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50INCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC60LvQsNCy0LjRiNC4LlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkZvcm1LZXlEb3duRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmNvZGUgIT09ICdFbnRlcicgJiYgZXZlbnQua2V5ICE9PSAnRW50ZXInKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIC8vIFRhaWdhIFVJIHYzOiDQv9C10YDQtdGF0L7QtCDRh9C10YDQtdC3IEFic3RyYWN0VHVpQ29udHJvbCAobGVnYWN5LdC+0LHRkdGA0YLQutC4IHR1aS1pbnB1dCwgdHVpLWlucHV0LW51bWJlciDQuCDQtNGALikuXG4gICAgICAgIGNvbnN0IGxlZ2FjeSA9IHRoaXMubGVnYWN5Q29udHJvbHMudG9BcnJheSgpO1xuICAgICAgICBjb25zdCBsZWdhY3lJbmRleCA9IGxlZ2FjeS5maW5kSW5kZXgoKGNvbnRyb2wpID0+IGNvbnRyb2wuZm9jdXNlZCk7XG5cbiAgICAgICAgaWYgKGxlZ2FjeUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGxlZ2FjeVtsZWdhY3lJbmRleCArIDFdPy5uYXRpdmVGb2N1c2FibGVFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAobmV4dCkge1xuICAgICAgICAgICAgICAgIG5leHQuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRhaWdhIFVJIHY0OiDQv9C10YDQtdGF0L7QtCDRh9C10YDQtdC3IERPTSDigJQg0LjRidC10Lwg0L3QsNGC0LjQstC90YvQtSBpbnB1dCDQstC90YPRgtGA0Lgg0YTQvtGA0LzRiyAodHVpLXRleHRmaWVsZCArINC00LjRgNC10LrRgtC40LLRiykuXG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBldmVudDtcblxuICAgICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB8fCB0YXJnZXQudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLXNwcmVhZFxuICAgICAgICBjb25zdCBpbnB1dHMgPSBBcnJheS5mcm9tKHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxJbnB1dEVsZW1lbnQ+KCdpbnB1dCcpKS5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC50eXBlICE9PSAncmFuZ2UnICYmICFlbGVtZW50LnJlYWRPbmx5ICYmICFlbGVtZW50LmRpc2FibGVkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGlucHV0cy5pbmRleE9mKHRhcmdldCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5leHRJbnB1dCA9IGlucHV0cy5hdChjdXJyZW50SW5kZXggKyAxKTtcblxuICAgICAgICBpZiAobmV4dElucHV0KSB7XG4gICAgICAgICAgICBuZXh0SW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgIG5leHRJbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|