@skbkontur/playwright-react-ui-components 1.13.0

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.
Files changed (165) hide show
  1. package/build/index.d.ts +1 -0
  2. package/build/index.js +17 -0
  3. package/build/src/assertions/AutocompleteAssertions.d.ts +19 -0
  4. package/build/src/assertions/AutocompleteAssertions.js +177 -0
  5. package/build/src/assertions/BaseComponentAssertions.d.ts +15 -0
  6. package/build/src/assertions/BaseComponentAssertions.js +158 -0
  7. package/build/src/assertions/ButtonAssertions.d.ts +15 -0
  8. package/build/src/assertions/ButtonAssertions.js +162 -0
  9. package/build/src/assertions/CheckboxAssertions.d.ts +19 -0
  10. package/build/src/assertions/CheckboxAssertions.js +210 -0
  11. package/build/src/assertions/ComboBoxAssertions.d.ts +19 -0
  12. package/build/src/assertions/ComboBoxAssertions.js +304 -0
  13. package/build/src/assertions/ComponentListAssertions.d.ts +13 -0
  14. package/build/src/assertions/ComponentListAssertions.js +126 -0
  15. package/build/src/assertions/CurrencyInputAssertions.d.ts +15 -0
  16. package/build/src/assertions/CurrencyInputAssertions.js +212 -0
  17. package/build/src/assertions/DateInputAssertions.d.ts +15 -0
  18. package/build/src/assertions/DateInputAssertions.js +162 -0
  19. package/build/src/assertions/DatePickerAssertions.d.ts +15 -0
  20. package/build/src/assertions/DatePickerAssertions.js +162 -0
  21. package/build/src/assertions/DateRangePickerAssertions.d.ts +11 -0
  22. package/build/src/assertions/DateRangePickerAssertions.js +111 -0
  23. package/build/src/assertions/DropdownAssertions.d.ts +19 -0
  24. package/build/src/assertions/DropdownAssertions.js +260 -0
  25. package/build/src/assertions/DropdownMenuAssertions.d.ts +17 -0
  26. package/build/src/assertions/DropdownMenuAssertions.js +236 -0
  27. package/build/src/assertions/FileUploaderAssertions.d.ts +14 -0
  28. package/build/src/assertions/FileUploaderAssertions.js +119 -0
  29. package/build/src/assertions/FxInputAssertions.d.ts +17 -0
  30. package/build/src/assertions/FxInputAssertions.js +189 -0
  31. package/build/src/assertions/InputAssertions.d.ts +19 -0
  32. package/build/src/assertions/InputAssertions.js +177 -0
  33. package/build/src/assertions/KebabAssertions.d.ts +13 -0
  34. package/build/src/assertions/KebabAssertions.js +189 -0
  35. package/build/src/assertions/LabelAssertions.d.ts +19 -0
  36. package/build/src/assertions/LabelAssertions.js +144 -0
  37. package/build/src/assertions/LinkAssertions.d.ts +17 -0
  38. package/build/src/assertions/LinkAssertions.js +187 -0
  39. package/build/src/assertions/LoaderAssertions.d.ts +8 -0
  40. package/build/src/assertions/LoaderAssertions.js +78 -0
  41. package/build/src/assertions/MenuItemAssertations.d.ts +11 -0
  42. package/build/src/assertions/MenuItemAssertations.js +114 -0
  43. package/build/src/assertions/PagingAssertions.d.ts +15 -0
  44. package/build/src/assertions/PagingAssertions.js +149 -0
  45. package/build/src/assertions/PortalAssertions.d.ts +9 -0
  46. package/build/src/assertions/PortalAssertions.js +90 -0
  47. package/build/src/assertions/RadioAssertions.d.ts +19 -0
  48. package/build/src/assertions/RadioAssertions.js +210 -0
  49. package/build/src/assertions/RadioGroupAssertions.d.ts +15 -0
  50. package/build/src/assertions/RadioGroupAssertions.js +233 -0
  51. package/build/src/assertions/SelectAssertions.d.ts +15 -0
  52. package/build/src/assertions/SelectAssertions.js +211 -0
  53. package/build/src/assertions/SpinnerAssertions.d.ts +8 -0
  54. package/build/src/assertions/SpinnerAssertions.js +78 -0
  55. package/build/src/assertions/TabAssertions.d.ts +17 -0
  56. package/build/src/assertions/TabAssertions.js +187 -0
  57. package/build/src/assertions/TabsAssertions.d.ts +11 -0
  58. package/build/src/assertions/TabsAssertions.js +130 -0
  59. package/build/src/assertions/TextareaAssertions.d.ts +15 -0
  60. package/build/src/assertions/TextareaAssertions.js +162 -0
  61. package/build/src/assertions/ToastAssertions.d.ts +8 -0
  62. package/build/src/assertions/ToastAssertions.js +78 -0
  63. package/build/src/assertions/ToggleAssertions.d.ts +17 -0
  64. package/build/src/assertions/ToggleAssertions.js +186 -0
  65. package/build/src/assertions/TokenAssertions.d.ts +17 -0
  66. package/build/src/assertions/TokenAssertions.js +159 -0
  67. package/build/src/assertions/TokenInputAssertions.d.ts +16 -0
  68. package/build/src/assertions/TokenInputAssertions.js +170 -0
  69. package/build/src/assertions/TooltipAssertions.d.ts +11 -0
  70. package/build/src/assertions/TooltipAssertions.js +114 -0
  71. package/build/src/assertions/index.d.ts +34 -0
  72. package/build/src/assertions/index.js +71 -0
  73. package/build/src/components/Autocomplete.d.ts +25 -0
  74. package/build/src/components/Autocomplete.js +256 -0
  75. package/build/src/components/BaseComponent.d.ts +18 -0
  76. package/build/src/components/BaseComponent.js +159 -0
  77. package/build/src/components/Button.d.ts +21 -0
  78. package/build/src/components/Button.js +146 -0
  79. package/build/src/components/Checkbox.d.ts +21 -0
  80. package/build/src/components/Checkbox.js +161 -0
  81. package/build/src/components/ComboBox.d.ts +41 -0
  82. package/build/src/components/ComboBox.js +292 -0
  83. package/build/src/components/ComponentList.d.ts +21 -0
  84. package/build/src/components/ComponentList.js +203 -0
  85. package/build/src/components/CurrencyInput.d.ts +21 -0
  86. package/build/src/components/CurrencyInput.js +201 -0
  87. package/build/src/components/DateInput.d.ts +18 -0
  88. package/build/src/components/DateInput.js +195 -0
  89. package/build/src/components/DatePicker.d.ts +20 -0
  90. package/build/src/components/DatePicker.js +205 -0
  91. package/build/src/components/DateRangePicker.d.ts +20 -0
  92. package/build/src/components/DateRangePicker.js +111 -0
  93. package/build/src/components/Dropdown.d.ts +35 -0
  94. package/build/src/components/Dropdown.js +322 -0
  95. package/build/src/components/DropdownMenu.d.ts +40 -0
  96. package/build/src/components/DropdownMenu.js +321 -0
  97. package/build/src/components/FileUploader.d.ts +54 -0
  98. package/build/src/components/FileUploader.js +213 -0
  99. package/build/src/components/FxInput.d.ts +23 -0
  100. package/build/src/components/FxInput.js +217 -0
  101. package/build/src/components/Input.d.ts +21 -0
  102. package/build/src/components/Input.js +192 -0
  103. package/build/src/components/Kebab.d.ts +27 -0
  104. package/build/src/components/Kebab.js +247 -0
  105. package/build/src/components/Label.d.ts +13 -0
  106. package/build/src/components/Label.js +94 -0
  107. package/build/src/components/Link.d.ts +16 -0
  108. package/build/src/components/Link.js +130 -0
  109. package/build/src/components/Loader.d.ts +11 -0
  110. package/build/src/components/Loader.js +103 -0
  111. package/build/src/components/MenuItem.d.ts +13 -0
  112. package/build/src/components/MenuItem.js +84 -0
  113. package/build/src/components/Paging.d.ts +25 -0
  114. package/build/src/components/Paging.js +249 -0
  115. package/build/src/components/Portal.d.ts +11 -0
  116. package/build/src/components/Portal.js +112 -0
  117. package/build/src/components/Radio.d.ts +19 -0
  118. package/build/src/components/Radio.js +156 -0
  119. package/build/src/components/RadioGroup.d.ts +21 -0
  120. package/build/src/components/RadioGroup.js +232 -0
  121. package/build/src/components/Select.d.ts +43 -0
  122. package/build/src/components/Select.js +384 -0
  123. package/build/src/components/Spinner.d.ts +12 -0
  124. package/build/src/components/Spinner.js +103 -0
  125. package/build/src/components/Tab.d.ts +16 -0
  126. package/build/src/components/Tab.js +126 -0
  127. package/build/src/components/Tabs.d.ts +18 -0
  128. package/build/src/components/Tabs.js +136 -0
  129. package/build/src/components/Textarea.d.ts +21 -0
  130. package/build/src/components/Textarea.js +186 -0
  131. package/build/src/components/Toast.d.ts +10 -0
  132. package/build/src/components/Toast.js +79 -0
  133. package/build/src/components/Toggle.d.ts +19 -0
  134. package/build/src/components/Toggle.js +151 -0
  135. package/build/src/components/Token.d.ts +13 -0
  136. package/build/src/components/Token.js +106 -0
  137. package/build/src/components/TokenInput.d.ts +44 -0
  138. package/build/src/components/TokenInput.js +319 -0
  139. package/build/src/components/Tooltip.d.ts +14 -0
  140. package/build/src/components/Tooltip.js +98 -0
  141. package/build/src/components/index.d.ts +34 -0
  142. package/build/src/components/index.js +71 -0
  143. package/build/src/index.d.ts +5 -0
  144. package/build/src/index.js +21 -0
  145. package/build/src/matchers/formattedMatchers.d.ts +37 -0
  146. package/build/src/matchers/formattedMatchers.js +125 -0
  147. package/build/src/matchers/index.d.ts +2 -0
  148. package/build/src/matchers/index.js +20 -0
  149. package/build/src/matchers/mergedExpects.d.ts +25 -0
  150. package/build/src/matchers/mergedExpects.js +6 -0
  151. package/build/src/options/AssertionOptions.d.ts +82 -0
  152. package/build/src/options/AssertionOptions.js +2 -0
  153. package/build/src/options/LocatorOptions.d.ts +342 -0
  154. package/build/src/options/LocatorOptions.js +2 -0
  155. package/build/src/options/index.d.ts +2 -0
  156. package/build/src/options/index.js +18 -0
  157. package/build/src/utils/constants.d.ts +10 -0
  158. package/build/src/utils/constants.js +15 -0
  159. package/build/src/utils/dataTidSelector.d.ts +1 -0
  160. package/build/src/utils/dataTidSelector.js +6 -0
  161. package/build/src/utils/index.d.ts +2 -0
  162. package/build/src/utils/index.js +20 -0
  163. package/build/src/utils/tooltipProvider.d.ts +4 -0
  164. package/build/src/utils/tooltipProvider.js +95 -0
  165. package/package.json +27 -0
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.DateRangePicker = void 0;
55
+ var BaseComponent_1 = require("./BaseComponent");
56
+ var DatePicker_1 = require("./DatePicker");
57
+ var assertions_1 = require("../assertions");
58
+ var dataTidSelector_1 = require("../utils/dataTidSelector");
59
+ var DateRangePicker = /** @class */ (function (_super) {
60
+ __extends(DateRangePicker, _super);
61
+ function DateRangePicker(rootLocator) {
62
+ var _this = _super.call(this, rootLocator) || this;
63
+ _this.rootLocator = rootLocator;
64
+ _this.datePickerStart = new DatePicker_1.DatePicker(rootLocator.locator((0, dataTidSelector_1.getDataTidSelector)('DateRangePicker__start')));
65
+ _this.datePickerEnd = new DatePicker_1.DatePicker(rootLocator.locator((0, dataTidSelector_1.getDataTidSelector)('DateRangePicker__end')));
66
+ return _this;
67
+ }
68
+ DateRangePicker.prototype.fill = function (values) {
69
+ return __awaiter(this, void 0, void 0, function () {
70
+ var start, end;
71
+ return __generator(this, function (_a) {
72
+ switch (_a.label) {
73
+ case 0:
74
+ start = values.start, end = values.end;
75
+ if (!start) return [3 /*break*/, 2];
76
+ return [4 /*yield*/, this.datePickerStart.fill(start)];
77
+ case 1:
78
+ _a.sent();
79
+ _a.label = 2;
80
+ case 2:
81
+ if (!end) return [3 /*break*/, 4];
82
+ return [4 /*yield*/, this.datePickerEnd.fill(end)];
83
+ case 3:
84
+ _a.sent();
85
+ _a.label = 4;
86
+ case 4: return [2 /*return*/];
87
+ }
88
+ });
89
+ });
90
+ };
91
+ DateRangePicker.prototype.clear = function (options) {
92
+ return __awaiter(this, void 0, void 0, function () {
93
+ return __generator(this, function (_a) {
94
+ switch (_a.label) {
95
+ case 0: return [4 /*yield*/, this.datePickerStart.clear(options)];
96
+ case 1:
97
+ _a.sent();
98
+ return [4 /*yield*/, this.datePickerEnd.clear(options)];
99
+ case 2:
100
+ _a.sent();
101
+ return [2 /*return*/];
102
+ }
103
+ });
104
+ });
105
+ };
106
+ DateRangePicker.prototype.expect = function () {
107
+ return new assertions_1.DateRangePickerAssertions(this);
108
+ };
109
+ return DateRangePicker;
110
+ }(BaseComponent_1.BaseComponent));
111
+ exports.DateRangePicker = DateRangePicker;
@@ -0,0 +1,35 @@
1
+ import { type Locator } from '@playwright/test';
2
+ import { BaseComponent } from './BaseComponent';
3
+ import { type TooltipType } from '../utils';
4
+ import { DropdownAssertions } from '../assertions';
5
+ import { ComponentList } from './ComponentList';
6
+ import { MenuItem } from './MenuItem';
7
+ import type { BlurOptions, ClickOptions, FocusOptions, InnerTextOptions, IsDisabledOptions } from '../options';
8
+ export declare class Dropdown extends BaseComponent {
9
+ readonly rootLocator: Locator;
10
+ readonly buttonLocator: Locator;
11
+ private readonly portal;
12
+ constructor(rootLocator: Locator);
13
+ isDisabled(options?: IsDisabledOptions): Promise<boolean>;
14
+ isMenuOpened(): Promise<boolean>;
15
+ getText(options?: InnerTextOptions): Promise<string>;
16
+ selectFirstByText(text: string | RegExp, options?: ClickOptions): Promise<void>;
17
+ selectByIndex(index: number, options?: ClickOptions): Promise<void>;
18
+ selectByDataTid(dataTid: string, options?: ClickOptions): Promise<void>;
19
+ click(options?: ClickOptions): Promise<void>;
20
+ getTooltip(type: TooltipType): Promise<import("./Tooltip").Tooltip>;
21
+ focus(options?: FocusOptions): Promise<void>;
22
+ blur(options?: BlurOptions): Promise<void>;
23
+ /**
24
+ * Возвращает список меню по data-tid'ам из react-ui:
25
+ * - MenuItemDataTids.root
26
+ * - MenuHeaderDataTids.root
27
+ * - MenuFooterDataTids.root
28
+ */
29
+ getMenuItems(): Promise<ComponentList<MenuItem>>;
30
+ getMenuItemByText(text: string): Promise<MenuItem>;
31
+ getMenuItemByIndex(index: number): Promise<MenuItem>;
32
+ expect(): DropdownAssertions;
33
+ private getMenuItemsLocator;
34
+ private getPortalContainer;
35
+ }
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.Dropdown = void 0;
55
+ var test_1 = require("@playwright/test");
56
+ var react_ui_1 = require("@skbkontur/react-ui");
57
+ var MenuFooter_1 = require("@skbkontur/react-ui/components/MenuFooter");
58
+ var BaseComponent_1 = require("./BaseComponent");
59
+ var Portal_1 = require("./Portal");
60
+ var utils_1 = require("../utils");
61
+ var assertions_1 = require("../assertions");
62
+ var ComponentList_1 = require("./ComponentList");
63
+ var MenuItem_1 = require("./MenuItem");
64
+ var dataTidSelector_1 = require("../utils/dataTidSelector");
65
+ var Dropdown = /** @class */ (function (_super) {
66
+ __extends(Dropdown, _super);
67
+ function Dropdown(rootLocator) {
68
+ var _this = _super.call(this, rootLocator) || this;
69
+ _this.rootLocator = rootLocator;
70
+ _this.buttonLocator = rootLocator.locator('button');
71
+ _this.portal = new Portal_1.Portal(rootLocator.locator('noscript'));
72
+ return _this;
73
+ }
74
+ Dropdown.prototype.isDisabled = function (options) {
75
+ return __awaiter(this, void 0, void 0, function () {
76
+ return __generator(this, function (_a) {
77
+ switch (_a.label) {
78
+ case 0: return [4 /*yield*/, this.buttonLocator.isDisabled(options)];
79
+ case 1: return [2 /*return*/, _a.sent()];
80
+ }
81
+ });
82
+ });
83
+ };
84
+ Dropdown.prototype.isMenuOpened = function () {
85
+ return __awaiter(this, void 0, void 0, function () {
86
+ return __generator(this, function (_a) {
87
+ switch (_a.label) {
88
+ case 0: return [4 /*yield*/, this.waitFor()];
89
+ case 1:
90
+ _a.sent();
91
+ return [4 /*yield*/, this.portal.isVisible()];
92
+ case 2: return [2 /*return*/, _a.sent()];
93
+ }
94
+ });
95
+ });
96
+ };
97
+ Dropdown.prototype.getText = function (options) {
98
+ return __awaiter(this, void 0, void 0, function () {
99
+ return __generator(this, function (_a) {
100
+ switch (_a.label) {
101
+ case 0: return [4 /*yield*/, this.buttonLocator.innerText(options)];
102
+ case 1: return [2 /*return*/, _a.sent()];
103
+ }
104
+ });
105
+ });
106
+ };
107
+ Dropdown.prototype.selectFirstByText = function (text, options) {
108
+ return __awaiter(this, void 0, void 0, function () {
109
+ var items;
110
+ return __generator(this, function (_a) {
111
+ switch (_a.label) {
112
+ case 0: return [4 /*yield*/, this.getMenuItemsLocator(text)];
113
+ case 1:
114
+ items = _a.sent();
115
+ return [4 /*yield*/, items.first().click(options)];
116
+ case 2:
117
+ _a.sent();
118
+ // note: ожидание закрытия меню, чтобы не было гонок
119
+ return [4 /*yield*/, this.portal.expect().toBeHidden()];
120
+ case 3:
121
+ // note: ожидание закрытия меню, чтобы не было гонок
122
+ _a.sent();
123
+ return [2 /*return*/];
124
+ }
125
+ });
126
+ });
127
+ };
128
+ Dropdown.prototype.selectByIndex = function (index, options) {
129
+ return __awaiter(this, void 0, void 0, function () {
130
+ var items;
131
+ return __generator(this, function (_a) {
132
+ switch (_a.label) {
133
+ case 0: return [4 /*yield*/, this.getMenuItemsLocator()];
134
+ case 1:
135
+ items = _a.sent();
136
+ return [4 /*yield*/, items.nth(index).click(options)];
137
+ case 2:
138
+ _a.sent();
139
+ // note: ожидание закрытия меню, чтобы не было гонок
140
+ return [4 /*yield*/, this.portal.expect().toBeHidden()];
141
+ case 3:
142
+ // note: ожидание закрытия меню, чтобы не было гонок
143
+ _a.sent();
144
+ return [2 /*return*/];
145
+ }
146
+ });
147
+ });
148
+ };
149
+ Dropdown.prototype.selectByDataTid = function (dataTid, options) {
150
+ return __awaiter(this, void 0, void 0, function () {
151
+ var container, item;
152
+ return __generator(this, function (_a) {
153
+ switch (_a.label) {
154
+ case 0: return [4 /*yield*/, this.getPortalContainer()];
155
+ case 1:
156
+ container = _a.sent();
157
+ item = container.locator((0, dataTidSelector_1.getDataTidSelector)(dataTid));
158
+ return [4 /*yield*/, item.count()];
159
+ case 2:
160
+ if ((_a.sent()) > 1) {
161
+ throw Error('DataTid должен быть уникальным');
162
+ }
163
+ return [4 /*yield*/, item.click(options)];
164
+ case 3:
165
+ _a.sent();
166
+ // note: ожидание закрытия меню, чтобы не было гонок
167
+ return [4 /*yield*/, this.portal.expect().toBeHidden()];
168
+ case 4:
169
+ // note: ожидание закрытия меню, чтобы не было гонок
170
+ _a.sent();
171
+ return [2 /*return*/];
172
+ }
173
+ });
174
+ });
175
+ };
176
+ Dropdown.prototype.click = function (options) {
177
+ return __awaiter(this, void 0, void 0, function () {
178
+ return __generator(this, function (_a) {
179
+ switch (_a.label) {
180
+ case 0: return [4 /*yield*/, this.buttonLocator.click(options)];
181
+ case 1:
182
+ _a.sent();
183
+ return [2 /*return*/];
184
+ }
185
+ });
186
+ });
187
+ };
188
+ Dropdown.prototype.getTooltip = function (type) {
189
+ return __awaiter(this, void 0, void 0, function () {
190
+ return __generator(this, function (_a) {
191
+ return [2 /*return*/, (0, utils_1.getTooltip)(type, this)];
192
+ });
193
+ });
194
+ };
195
+ Dropdown.prototype.focus = function (options) {
196
+ return __awaiter(this, void 0, void 0, function () {
197
+ return __generator(this, function (_a) {
198
+ switch (_a.label) {
199
+ case 0: return [4 /*yield*/, (0, test_1.expect)(this.buttonLocator).toBeEnabled()];
200
+ case 1:
201
+ _a.sent();
202
+ return [4 /*yield*/, this.buttonLocator.focus(options)];
203
+ case 2:
204
+ _a.sent();
205
+ return [2 /*return*/];
206
+ }
207
+ });
208
+ });
209
+ };
210
+ Dropdown.prototype.blur = function (options) {
211
+ return __awaiter(this, void 0, void 0, function () {
212
+ return __generator(this, function (_a) {
213
+ switch (_a.label) {
214
+ case 0: return [4 /*yield*/, this.buttonLocator.blur(options)];
215
+ case 1:
216
+ _a.sent();
217
+ return [2 /*return*/];
218
+ }
219
+ });
220
+ });
221
+ };
222
+ /**
223
+ * Возвращает список меню по data-tid'ам из react-ui:
224
+ * - MenuItemDataTids.root
225
+ * - MenuHeaderDataTids.root
226
+ * - MenuFooterDataTids.root
227
+ */
228
+ Dropdown.prototype.getMenuItems = function () {
229
+ return __awaiter(this, void 0, void 0, function () {
230
+ var container;
231
+ return __generator(this, function (_a) {
232
+ switch (_a.label) {
233
+ case 0: return [4 /*yield*/, this.getPortalContainer()];
234
+ case 1:
235
+ container = _a.sent();
236
+ return [4 /*yield*/, container.locator((0, dataTidSelector_1.getDataTidSelector)(react_ui_1.SpinnerDataTids.root)).waitFor({ state: 'hidden' })];
237
+ case 2:
238
+ _a.sent();
239
+ return [2 /*return*/, new ComponentList_1.ComponentList(container, function (locator) {
240
+ return locator
241
+ .locator((0, dataTidSelector_1.getDataTidSelector)(react_ui_1.MenuItemDataTids.root))
242
+ .or(locator.locator((0, dataTidSelector_1.getDataTidSelector)(react_ui_1.MenuHeaderDataTids.root)))
243
+ .or(locator.locator((0, dataTidSelector_1.getDataTidSelector)(MenuFooter_1.MenuFooterDataTids.root)));
244
+ }, function (locator) { return new MenuItem_1.MenuItem(locator); })];
245
+ }
246
+ });
247
+ });
248
+ };
249
+ Dropdown.prototype.getMenuItemByText = function (text) {
250
+ return __awaiter(this, void 0, void 0, function () {
251
+ var items;
252
+ var _this = this;
253
+ return __generator(this, function (_a) {
254
+ switch (_a.label) {
255
+ case 0: return [4 /*yield*/, this.getMenuItems()];
256
+ case 1:
257
+ items = _a.sent();
258
+ return [4 /*yield*/, items.getFirstItemByPredicate(function (item) { return __awaiter(_this, void 0, void 0, function () {
259
+ var itemText;
260
+ return __generator(this, function (_a) {
261
+ switch (_a.label) {
262
+ case 0: return [4 /*yield*/, item.getText()];
263
+ case 1:
264
+ itemText = _a.sent();
265
+ return [2 /*return*/, itemText.toLowerCase() === text.toLowerCase()];
266
+ }
267
+ });
268
+ }); })];
269
+ case 2: return [2 /*return*/, _a.sent()];
270
+ }
271
+ });
272
+ });
273
+ };
274
+ Dropdown.prototype.getMenuItemByIndex = function (index) {
275
+ return __awaiter(this, void 0, void 0, function () {
276
+ var items;
277
+ return __generator(this, function (_a) {
278
+ switch (_a.label) {
279
+ case 0: return [4 /*yield*/, this.getMenuItems()];
280
+ case 1:
281
+ items = _a.sent();
282
+ return [2 /*return*/, items.getItemByIndex(index)];
283
+ }
284
+ });
285
+ });
286
+ };
287
+ Dropdown.prototype.expect = function () {
288
+ return new assertions_1.DropdownAssertions(this);
289
+ };
290
+ Dropdown.prototype.getMenuItemsLocator = function (byText) {
291
+ return __awaiter(this, void 0, void 0, function () {
292
+ var container, items;
293
+ return __generator(this, function (_a) {
294
+ switch (_a.label) {
295
+ case 0: return [4 /*yield*/, this.getPortalContainer()];
296
+ case 1:
297
+ container = _a.sent();
298
+ items = container.locator((0, dataTidSelector_1.getDataTidSelector)(react_ui_1.MenuItemDataTids.root));
299
+ return [2 /*return*/, !byText ? items : items.getByText(byText)];
300
+ }
301
+ });
302
+ });
303
+ };
304
+ Dropdown.prototype.getPortalContainer = function () {
305
+ return __awaiter(this, void 0, void 0, function () {
306
+ return __generator(this, function (_a) {
307
+ switch (_a.label) {
308
+ case 0: return [4 /*yield*/, this.isMenuOpened()];
309
+ case 1:
310
+ if (!!(_a.sent())) return [3 /*break*/, 3];
311
+ return [4 /*yield*/, this.buttonLocator.click()];
312
+ case 2:
313
+ _a.sent();
314
+ _a.label = 3;
315
+ case 3: return [2 /*return*/, this.portal.getContainer()];
316
+ }
317
+ });
318
+ });
319
+ };
320
+ return Dropdown;
321
+ }(BaseComponent_1.BaseComponent));
322
+ exports.Dropdown = Dropdown;
@@ -0,0 +1,40 @@
1
+ import type { Locator } from '@playwright/test';
2
+ import { BaseComponent } from './BaseComponent';
3
+ import type { TooltipType } from '../utils';
4
+ import { DropdownMenuAssertions } from '../assertions';
5
+ import { ComponentList } from './ComponentList';
6
+ import { MenuItem } from './MenuItem';
7
+ import type { BlurOptions, ClickOptions, FocusOptions, InnerTextOptions } from '../options';
8
+ export declare class DropdownMenu extends BaseComponent {
9
+ readonly rootLocator: Locator;
10
+ readonly buttonLocator: Locator;
11
+ private readonly portal;
12
+ constructor(rootLocator: Locator);
13
+ getText(options?: InnerTextOptions): Promise<string>;
14
+ isMenuOpened(): Promise<boolean>;
15
+ selectFirstByText(text: string | RegExp, options?: {
16
+ closedAfterSelect: boolean;
17
+ }): Promise<void>;
18
+ selectByDataTid(dataTid: string, options?: {
19
+ closedAfterSelect: boolean;
20
+ }): Promise<void>;
21
+ selectByIndex(index: number, options?: {
22
+ closedAfterSelect: boolean;
23
+ }): Promise<void>;
24
+ click(options?: ClickOptions): Promise<void>;
25
+ focus(options?: FocusOptions): Promise<void>;
26
+ blur(options?: BlurOptions): Promise<void>;
27
+ getTooltip(type: TooltipType): Promise<import("./Tooltip").Tooltip>;
28
+ /**
29
+ * Возвращает список меню по data-tid'ам из react-ui:
30
+ * - MenuItemDataTids.root
31
+ * - MenuHeaderDataTids.root
32
+ * - MenuFooterDataTids.root
33
+ */
34
+ getMenuItems(): Promise<ComponentList<MenuItem>>;
35
+ getMenuItemByText(text: string): Promise<MenuItem>;
36
+ getMenuItemByIndex(index: number): Promise<MenuItem>;
37
+ expect(): DropdownMenuAssertions;
38
+ private getMenuItemsLocator;
39
+ private getPortalContainer;
40
+ }