@salutejs/plasma-new-hope 0.141.0-canary.1422.10775243587.0 → 0.141.0-canary.1425.10772606706.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. package/cjs/components/Combobox/ComboboxNew/Combobox.js +4 -6
  2. package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  3. package/cjs/components/Combobox/ComboboxOld/Combobox.js +8 -15
  4. package/cjs/components/Combobox/ComboboxOld/Combobox.js.map +1 -1
  5. package/cjs/components/TextField/TextField.js +4 -4
  6. package/cjs/components/TextField/TextField.js.map +1 -1
  7. package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +4 -6
  8. package/emotion/cjs/components/Combobox/ComboboxOld/Combobox.js +8 -15
  9. package/emotion/cjs/components/TextField/TextField.js +5 -5
  10. package/emotion/cjs/examples/plasma_b2c/components/Combobox/ComboboxNew/Combobox.config.js +39 -0
  11. package/{styled-components/cjs/examples/plasma_b2c/components/Combobox → emotion/cjs/examples/plasma_b2c/components/Combobox/ComboboxNew}/Combobox.js +2 -2
  12. package/emotion/{es/examples/plasma_b2c/components/Combobox → cjs/examples/plasma_b2c/components/Combobox/ComboboxNew}/Combobox.stories.tsx +3 -5
  13. package/emotion/cjs/examples/plasma_b2c/components/Combobox/ComboboxOld/Combobox.config.js +25 -0
  14. package/emotion/cjs/examples/{plasma_web/components/Combobox/Legacy → plasma_b2c/components/Combobox/ComboboxOld}/Combobox.stories.tsx +16 -18
  15. package/emotion/cjs/examples/plasma_b2c/components/TextField/TextField.stories.tsx +30 -15
  16. package/emotion/cjs/examples/plasma_web/components/Combobox/ComboboxNew/Combobox.config.js +39 -0
  17. package/emotion/cjs/examples/plasma_web/components/Combobox/{Combobox.js → ComboboxNew/Combobox.js} +2 -2
  18. package/emotion/{es/examples/plasma_web/components/Combobox → cjs/examples/plasma_web/components/Combobox/ComboboxNew}/Combobox.stories.tsx +3 -5
  19. package/emotion/cjs/examples/plasma_web/components/Combobox/ComboboxOld/Combobox.config.js +25 -0
  20. package/emotion/cjs/examples/{plasma_b2c/components/Combobox/Legacy → plasma_web/components/Combobox/ComboboxOld}/Combobox.stories.tsx +16 -18
  21. package/emotion/cjs/examples/plasma_web/components/TextField/TextField.stories.tsx +30 -15
  22. package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +4 -6
  23. package/emotion/es/components/Combobox/ComboboxOld/Combobox.js +8 -15
  24. package/emotion/es/components/TextField/TextField.js +5 -5
  25. package/emotion/es/examples/plasma_b2c/components/Combobox/ComboboxNew/Combobox.config.js +33 -0
  26. package/emotion/es/examples/plasma_b2c/components/Combobox/{Combobox.js → ComboboxNew/Combobox.js} +2 -2
  27. package/emotion/{cjs/examples/plasma_web/components/Combobox → es/examples/plasma_b2c/components/Combobox/ComboboxNew}/Combobox.stories.tsx +3 -5
  28. package/emotion/es/examples/plasma_b2c/components/Combobox/ComboboxOld/Combobox.config.js +19 -0
  29. package/emotion/es/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.stories.tsx +16 -18
  30. package/emotion/es/examples/plasma_b2c/components/TextField/TextField.stories.tsx +30 -15
  31. package/emotion/es/examples/plasma_web/components/Combobox/ComboboxNew/Combobox.config.js +33 -0
  32. package/{styled-components/es/examples/plasma_b2c/components/Combobox → emotion/es/examples/plasma_web/components/Combobox/ComboboxNew}/Combobox.js +2 -2
  33. package/emotion/{cjs/examples/plasma_b2c/components/Combobox → es/examples/plasma_web/components/Combobox/ComboboxNew}/Combobox.stories.tsx +3 -5
  34. package/emotion/es/examples/plasma_web/components/Combobox/ComboboxOld/Combobox.config.js +19 -0
  35. package/emotion/es/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.stories.tsx +16 -18
  36. package/emotion/es/examples/plasma_web/components/TextField/TextField.stories.tsx +30 -15
  37. package/es/components/Combobox/ComboboxNew/Combobox.js +4 -6
  38. package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  39. package/es/components/Combobox/ComboboxOld/Combobox.js +8 -15
  40. package/es/components/Combobox/ComboboxOld/Combobox.js.map +1 -1
  41. package/es/components/TextField/TextField.js +4 -4
  42. package/es/components/TextField/TextField.js.map +1 -1
  43. package/package.json +2 -2
  44. package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +4 -6
  45. package/styled-components/cjs/components/Combobox/ComboboxOld/Combobox.js +8 -15
  46. package/styled-components/cjs/components/TextField/TextField.js +4 -4
  47. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/{Combobox.config.js → ComboboxNew/Combobox.config.js} +2 -2
  48. package/{emotion/cjs/examples/plasma_b2c/components/Combobox → styled-components/cjs/examples/plasma_b2c/components/Combobox/ComboboxNew}/Combobox.js +2 -2
  49. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/ComboboxNew/Combobox.stories.tsx +366 -0
  50. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.config.js +1 -1
  51. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/ComboboxOld/Combobox.stories.tsx +254 -0
  52. package/styled-components/cjs/examples/plasma_b2c/components/TextField/TextField.stories.tsx +30 -15
  53. package/styled-components/cjs/examples/plasma_web/components/Combobox/ComboboxNew/Combobox.config.js +39 -0
  54. package/styled-components/cjs/examples/plasma_web/components/Combobox/{Combobox.js → ComboboxNew/Combobox.js} +2 -2
  55. package/styled-components/cjs/examples/plasma_web/components/Combobox/ComboboxNew/Combobox.stories.tsx +366 -0
  56. package/styled-components/cjs/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.config.js +1 -1
  57. package/styled-components/cjs/examples/plasma_web/components/Combobox/ComboboxOld/Combobox.stories.tsx +254 -0
  58. package/styled-components/cjs/examples/plasma_web/components/TextField/TextField.stories.tsx +30 -15
  59. package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +4 -6
  60. package/styled-components/es/components/Combobox/ComboboxOld/Combobox.js +8 -15
  61. package/styled-components/es/components/TextField/TextField.js +4 -4
  62. package/styled-components/es/examples/plasma_b2c/components/Combobox/{Combobox.config.js → ComboboxNew/Combobox.config.js} +2 -2
  63. package/styled-components/es/examples/{plasma_web/components/Combobox → plasma_b2c/components/Combobox/ComboboxNew}/Combobox.js +2 -2
  64. package/styled-components/es/examples/plasma_b2c/components/Combobox/ComboboxNew/Combobox.stories.tsx +366 -0
  65. package/styled-components/es/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.config.js +1 -1
  66. package/styled-components/es/examples/plasma_b2c/components/Combobox/ComboboxOld/Combobox.stories.tsx +254 -0
  67. package/styled-components/es/examples/plasma_b2c/components/TextField/TextField.stories.tsx +30 -15
  68. package/styled-components/es/examples/plasma_web/components/Combobox/ComboboxNew/Combobox.config.js +33 -0
  69. package/{emotion/es/examples/plasma_web/components/Combobox → styled-components/es/examples/plasma_web/components/Combobox/ComboboxNew}/Combobox.js +2 -2
  70. package/styled-components/es/examples/plasma_web/components/Combobox/ComboboxNew/Combobox.stories.tsx +366 -0
  71. package/styled-components/es/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.config.js +1 -1
  72. package/styled-components/es/examples/plasma_web/components/Combobox/ComboboxOld/Combobox.stories.tsx +254 -0
  73. package/styled-components/es/examples/plasma_web/components/TextField/TextField.stories.tsx +30 -15
  74. package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
  75. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts +1 -5
  76. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts.map +1 -1
  77. package/types/components/Combobox/ComboboxOld/Combobox.d.ts.map +1 -1
  78. package/types/components/Combobox/ComboboxOld/Combobox.types.d.ts +0 -6
  79. package/types/components/Combobox/ComboboxOld/Combobox.types.d.ts.map +1 -1
  80. package/types/examples/plasma_b2c/components/Combobox/ComboboxNew/Combobox.config.d.ts.map +1 -0
  81. package/types/examples/plasma_b2c/components/Combobox/{Combobox.d.ts → ComboboxNew/Combobox.d.ts} +3 -3
  82. package/types/examples/plasma_b2c/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -0
  83. package/types/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.config.d.ts.map +1 -1
  84. package/types/examples/plasma_b2c/components/Combobox/ComboboxOld/Combobox.d.ts.map +1 -0
  85. package/types/examples/plasma_web/components/Combobox/ComboboxNew/Combobox.config.d.ts.map +1 -0
  86. package/types/examples/plasma_web/components/Combobox/{Combobox.d.ts → ComboboxNew/Combobox.d.ts} +3 -3
  87. package/types/examples/plasma_web/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -0
  88. package/types/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.config.d.ts.map +1 -1
  89. package/types/examples/plasma_web/components/Combobox/ComboboxOld/Combobox.d.ts.map +1 -0
  90. package/emotion/cjs/components/Combobox/Combobox.template-doc.mdx +0 -347
  91. package/emotion/cjs/examples/plasma_b2c/components/Combobox/Combobox.config.js +0 -39
  92. package/emotion/cjs/examples/plasma_b2c/components/Combobox/Legacy/Combobox.config.js +0 -25
  93. package/emotion/cjs/examples/plasma_web/components/Combobox/Combobox.config.js +0 -39
  94. package/emotion/cjs/examples/plasma_web/components/Combobox/Legacy/Combobox.config.js +0 -25
  95. package/emotion/es/components/Combobox/Combobox.template-doc.mdx +0 -347
  96. package/emotion/es/examples/plasma_b2c/components/Combobox/Combobox.config.js +0 -33
  97. package/emotion/es/examples/plasma_b2c/components/Combobox/Legacy/Combobox.config.js +0 -19
  98. package/emotion/es/examples/plasma_web/components/Combobox/Combobox.config.js +0 -33
  99. package/emotion/es/examples/plasma_web/components/Combobox/Legacy/Combobox.config.js +0 -19
  100. package/styled-components/cjs/components/Combobox/Combobox.template-doc.mdx +0 -347
  101. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +0 -368
  102. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Legacy/Combobox.stories.tsx +0 -256
  103. package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.config.js +0 -39
  104. package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.stories.tsx +0 -368
  105. package/styled-components/cjs/examples/plasma_web/components/Combobox/Legacy/Combobox.stories.tsx +0 -256
  106. package/styled-components/es/components/Combobox/Combobox.template-doc.mdx +0 -347
  107. package/styled-components/es/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +0 -368
  108. package/styled-components/es/examples/plasma_b2c/components/Combobox/Legacy/Combobox.stories.tsx +0 -256
  109. package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.config.js +0 -33
  110. package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.stories.tsx +0 -368
  111. package/styled-components/es/examples/plasma_web/components/Combobox/Legacy/Combobox.stories.tsx +0 -256
  112. package/types/examples/plasma_b2c/components/Combobox/Combobox.config.d.ts.map +0 -1
  113. package/types/examples/plasma_b2c/components/Combobox/Combobox.d.ts.map +0 -1
  114. package/types/examples/plasma_b2c/components/Combobox/Legacy/Combobox.d.ts.map +0 -1
  115. package/types/examples/plasma_web/components/Combobox/Combobox.config.d.ts.map +0 -1
  116. package/types/examples/plasma_web/components/Combobox/Combobox.d.ts.map +0 -1
  117. package/types/examples/plasma_web/components/Combobox/Legacy/Combobox.d.ts.map +0 -1
  118. /package/emotion/cjs/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.js +0 -0
  119. /package/emotion/cjs/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.js +0 -0
  120. /package/emotion/es/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.js +0 -0
  121. /package/emotion/es/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.js +0 -0
  122. /package/styled-components/cjs/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.js +0 -0
  123. /package/styled-components/cjs/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.js +0 -0
  124. /package/styled-components/es/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.js +0 -0
  125. /package/styled-components/es/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.js +0 -0
  126. /package/types/examples/plasma_b2c/components/Combobox/{Combobox.config.d.ts → ComboboxNew/Combobox.config.d.ts} +0 -0
  127. /package/types/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.config.d.ts +0 -0
  128. /package/types/examples/plasma_b2c/components/Combobox/{Legacy → ComboboxOld}/Combobox.d.ts +0 -0
  129. /package/types/examples/plasma_web/components/Combobox/{Combobox.config.d.ts → ComboboxNew/Combobox.config.d.ts} +0 -0
  130. /package/types/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.config.d.ts +0 -0
  131. /package/types/examples/plasma_web/components/Combobox/{Legacy → ComboboxOld}/Combobox.d.ts +0 -0
@@ -0,0 +1,366 @@
1
+ import React, { useState } from 'react';
2
+ import type { ComponentProps } from 'react';
3
+ import type { Meta, StoryObj } from '@storybook/react';
4
+
5
+ import { WithTheme } from '../../../../_helpers';
6
+ import { IconDone } from '../../../../../components/_Icon';
7
+
8
+ import { Combobox } from './Combobox';
9
+
10
+ type StorySelectProps = ComponentProps<typeof Combobox> & {
11
+ enableContentLeft?: boolean;
12
+ };
13
+
14
+ const view = ['default', 'positive', 'warning', 'negative'];
15
+ const size = ['xs', 's', 'm', 'l'];
16
+ const labelPlacement = ['inner', 'outer'];
17
+ const variant = ['normal', 'tight'];
18
+
19
+ const meta: Meta<StorySelectProps> = {
20
+ title: 'plasma_web/ComboboxNew',
21
+ decorators: [WithTheme],
22
+ component: Combobox,
23
+ argTypes: {
24
+ size: {
25
+ options: size,
26
+ control: {
27
+ type: 'select',
28
+ },
29
+ },
30
+ view: {
31
+ options: view,
32
+ control: {
33
+ type: 'select',
34
+ },
35
+ },
36
+ labelPlacement: {
37
+ options: labelPlacement,
38
+ control: {
39
+ type: 'select',
40
+ },
41
+ },
42
+ variant: {
43
+ options: variant,
44
+ control: {
45
+ type: 'select',
46
+ },
47
+ },
48
+ listWidth: {
49
+ control: {
50
+ type: 'text',
51
+ },
52
+ },
53
+ listOverflow: {
54
+ control: {
55
+ type: 'text',
56
+ },
57
+ },
58
+ listHeight: {
59
+ control: {
60
+ type: 'text',
61
+ },
62
+ },
63
+ },
64
+ args: {
65
+ label: 'Label',
66
+ labelPlacement: 'outer',
67
+ placeholder: 'Placeholder',
68
+ helperText: 'Helper text',
69
+ size: 'm',
70
+ view: 'default',
71
+ enableContentLeft: false,
72
+ isTargetAmount: false,
73
+ variant: 'normal',
74
+ disabled: false,
75
+ readOnly: false,
76
+ },
77
+ parameters: {
78
+ controls: {
79
+ include: [
80
+ 'size',
81
+ 'view',
82
+ 'enableContentLeft',
83
+ 'label',
84
+ 'labelPlacement',
85
+ 'placeholder',
86
+ 'helperText',
87
+ 'isTargetAmount',
88
+ 'closeAfterSelect',
89
+ 'variant',
90
+ 'disabled',
91
+ 'readOnly',
92
+ 'listWidth',
93
+ 'listOverflow',
94
+ 'listHeight',
95
+ ],
96
+ },
97
+ },
98
+ };
99
+
100
+ export default meta;
101
+
102
+ const items = [
103
+ {
104
+ value: 'north_america',
105
+ label: 'Северная Америка',
106
+ },
107
+ {
108
+ value: 'south_america',
109
+ label: 'Южная Америка',
110
+ items: [
111
+ {
112
+ value: 'brazil',
113
+ label: 'Бразилия',
114
+ items: [
115
+ {
116
+ value: 'rio_de_janeiro',
117
+ label: 'Рио-де-Жанейро',
118
+ },
119
+ {
120
+ value: 'sao_paulo',
121
+ label: 'Сан-Паулу',
122
+ },
123
+ ],
124
+ },
125
+ {
126
+ value: 'argentina',
127
+ label: 'Аргентина',
128
+ items: [
129
+ {
130
+ value: 'buenos_aires',
131
+ label: 'Буэнос-Айрес',
132
+ },
133
+ {
134
+ value: 'cordoba',
135
+ label: 'Кордова',
136
+ },
137
+ ],
138
+ },
139
+ {
140
+ value: 'colombia',
141
+ label: 'Колумбия',
142
+ items: [
143
+ {
144
+ value: 'bogota',
145
+ label: 'Богота',
146
+ },
147
+ {
148
+ value: 'medellin',
149
+ label: 'Медельин',
150
+ },
151
+ ],
152
+ },
153
+ ],
154
+ },
155
+ {
156
+ value: 'europe',
157
+ label: 'Европа',
158
+ items: [
159
+ {
160
+ value: 'france',
161
+ label: 'Франция',
162
+ items: [
163
+ {
164
+ value: 'paris',
165
+ label: 'Париж',
166
+ },
167
+ {
168
+ value: 'lyon',
169
+ label: 'Лион',
170
+ },
171
+ ],
172
+ },
173
+ {
174
+ value: 'germany',
175
+ label: 'Германия',
176
+ items: [
177
+ {
178
+ value: 'berlin',
179
+ label: 'Берлин',
180
+ },
181
+ {
182
+ value: 'munich',
183
+ label: 'Мюнхен',
184
+ },
185
+ ],
186
+ },
187
+ {
188
+ value: 'italy',
189
+ label: 'Италия',
190
+ items: [
191
+ {
192
+ value: 'rome',
193
+ label: 'Рим',
194
+ },
195
+ {
196
+ value: 'milan',
197
+ label: 'Милан',
198
+ },
199
+ ],
200
+ },
201
+ {
202
+ value: 'spain',
203
+ label: 'Испания',
204
+ items: [
205
+ {
206
+ value: 'madrid',
207
+ label: 'Мадрид',
208
+ },
209
+ {
210
+ value: 'barcelona',
211
+ label: 'Барселона',
212
+ },
213
+ ],
214
+ },
215
+ {
216
+ value: 'united_kingdom',
217
+ label: 'Великобритания',
218
+ items: [
219
+ {
220
+ value: 'london',
221
+ label: 'Лондон',
222
+ },
223
+ {
224
+ value: 'manchester',
225
+ label: 'Манчестер',
226
+ },
227
+ ],
228
+ },
229
+ ],
230
+ },
231
+ {
232
+ value: 'asia',
233
+ label: 'Азия',
234
+ items: [
235
+ {
236
+ value: 'china',
237
+ label: 'Китай',
238
+ items: [
239
+ {
240
+ value: 'beijing',
241
+ label: 'Пекин',
242
+ },
243
+ {
244
+ value: 'shanghai',
245
+ label: 'Шанхай',
246
+ },
247
+ ],
248
+ },
249
+ {
250
+ value: 'japan',
251
+ label: 'Япония',
252
+ items: [
253
+ {
254
+ value: 'tokyo',
255
+ label: 'Токио',
256
+ },
257
+ {
258
+ value: 'osaka',
259
+ label: 'Осака',
260
+ },
261
+ ],
262
+ },
263
+ {
264
+ value: 'india',
265
+ label: 'Индия',
266
+ items: [
267
+ {
268
+ value: 'delhi',
269
+ label: 'Дели',
270
+ },
271
+ {
272
+ value: 'mumbai',
273
+ label: 'Мумбаи',
274
+ },
275
+ ],
276
+ },
277
+ {
278
+ value: 'south_korea',
279
+ label: 'Южная Корея',
280
+ items: [
281
+ {
282
+ value: 'seoul',
283
+ label: 'Сеул',
284
+ },
285
+ {
286
+ value: 'busan',
287
+ label: 'Пусан',
288
+ },
289
+ ],
290
+ },
291
+ {
292
+ value: 'thailand',
293
+ label: 'Таиланд',
294
+ items: [
295
+ {
296
+ value: 'bangkok',
297
+ label: 'Бангкок',
298
+ },
299
+ {
300
+ value: 'phuket',
301
+ label: 'Пхукет',
302
+ },
303
+ ],
304
+ },
305
+ ],
306
+ },
307
+ {
308
+ value: 'africa',
309
+ label: 'Африка',
310
+ disabled: true,
311
+ },
312
+ ];
313
+
314
+ const SingleStory = (args: StorySelectProps) => {
315
+ const [value, setValue] = useState('');
316
+
317
+ return (
318
+ <div style={{ width: '400px' }}>
319
+ <Combobox
320
+ {...args}
321
+ items={items}
322
+ value={value}
323
+ onChange={setValue}
324
+ contentLeft={args.enableContentLeft ? <IconDone size="s" /> : undefined}
325
+ autoComplete="off"
326
+ />
327
+ </div>
328
+ );
329
+ };
330
+
331
+ export const Single: StoryObj<StorySelectProps> = {
332
+ render: (args) => <SingleStory {...args} />,
333
+ args: {
334
+ closeAfterSelect: true,
335
+ },
336
+ parameters: {
337
+ controls: {
338
+ exclude: ['isTargetAmount'],
339
+ },
340
+ },
341
+ };
342
+
343
+ const MultipleStory = (args: StorySelectProps) => {
344
+ const [value, setValue] = useState([]);
345
+
346
+ return (
347
+ <div style={{ width: '400px' }}>
348
+ <Combobox
349
+ {...args}
350
+ multiple
351
+ items={items}
352
+ value={value}
353
+ onChange={setValue}
354
+ contentLeft={args.enableContentLeft ? <IconDone size="s" /> : undefined}
355
+ autoComplete="off"
356
+ />
357
+ </div>
358
+ );
359
+ };
360
+
361
+ export const Multiple: StoryObj<StorySelectProps> = {
362
+ render: (args) => <MultipleStory {...args} />,
363
+ args: {
364
+ closeAfterSelect: false,
365
+ },
366
+ };
@@ -13,7 +13,7 @@ export var config = {
13
13
  l: /*#__PURE__*/css(["", ":100%;", ":auto;", ":0.875rem;", ":0.125rem;", ":0.125rem;", ":0.125rem;", ":0.125rem;", ":var(--surface-transparent-tertiary);", ":0.063rem;", ":0;", ":1rem;", ":0;", ":1rem;", ":auto;", ":1.5rem;", ":1rem;", ":1rem;", ":1rem;", ":1rem;", ":0.75rem;", ":1.875rem;", ":var(--plasma-typo-body-l-font-family);", ":var(--plasma-typo-body-l-font-size);", ":var(--plasma-typo-body-l-font-style);", ":var(--plasma-typo-body-l-font-weight);", ":var(--plasma-typo-body-l-letter-spacing);", ":var(--plasma-typo-body-l-line-height);", ":0.25rem;", ":0.5rem;", ":auto;", ":2.75rem;", ":0.75rem;", ":1rem;", ":0.625rem;", ":0rem;", ":1rem;", ":var(--plasma-typo-body-m-font-family);", ":var(--plasma-typo-body-m-font-size);", ":var(--plasma-typo-body-m-font-style);", ":var(--plasma-typo-body-m-font-weight);", ":var(--plasma-typo-body-m-letter-spacing);", ":var(--plasma-typo-body-m-line-height);", ":1rem;", ":3.5rem;", ":100%;", ":0.875rem;", ":0 3.5rem 0 1.5rem;", ":0 3.625rem 0 0.375rem;", ":0 3.625rem 0 0.625rem;", ":0.5rem;", ":0.375rem;", ":var(--plasma-typo-body-l-font-family);", ":var(--plasma-typo-body-l-font-size);", ":var(--plasma-typo-body-l-font-style);", ":var(--plasma-typo-body-l-font-weight);", ":var(--plasma-typo-body-l-letter-spacing);", ":var(--plasma-typo-body-l-line-height);", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);"], comboboxTokens.width, comboboxTokens.height, comboboxTokens.borderRadius, comboboxTokens.paddingTop, comboboxTokens.paddingRight, comboboxTokens.paddingBottom, comboboxTokens.paddingLeft, comboboxTokens.dividerColor, comboboxTokens.dividerHeight, comboboxTokens.dividerMarginTop, comboboxTokens.dividerMarginRight, comboboxTokens.dividerMarginBottom, comboboxTokens.dividerMarginLeft, comboboxTokens.itemWidth, comboboxTokens.itemHeight, comboboxTokens.itemPaddingTop, comboboxTokens.itemPaddingRight, comboboxTokens.itemPaddingBottom, comboboxTokens.itemPaddingLeft, comboboxTokens.itemBorderRadius, comboboxTokens.itemContentLeftWidth, comboboxTokens.itemFontFamily, comboboxTokens.itemFontSize, comboboxTokens.itemFontStyle, comboboxTokens.itemFontWeightBold, comboboxTokens.itemFontLetterSpacing, comboboxTokens.itemFontLineHeight, comboboxTokens.chipGap, comboboxTokens.chipBorderRadius, comboboxTokens.chipWidth, comboboxTokens.chipHeight, comboboxTokens.chipPaddingRight, comboboxTokens.chipPaddingLeft, comboboxTokens.chipClearContentMarginLeft, comboboxTokens.chipClearContentMarginRight, comboboxTokens.chipCloseIconSize, comboboxTokens.chipFontFamily, comboboxTokens.chipFontSize, comboboxTokens.chipFontStyle, comboboxTokens.chipFontWeight, comboboxTokens.chipLetterSpacing, comboboxTokens.chipLineHeight, comboboxTokens.targetArrowRight, comboboxTokens.targetHeight, comboboxTokens.targetWidth, comboboxTokens.targetRadius, comboboxTokens.targetPadding, comboboxTokens.targetPaddingHasChips, comboboxTokens.targetPaddingWithInput, comboboxTokens.targetInnerTop, comboboxTokens.targetLabelInnerTop, comboboxTokens.targetFontFamily, comboboxTokens.targetFontSize, comboboxTokens.targetFontStyle, comboboxTokens.targetFontWeight, comboboxTokens.targetLetterSpacing, comboboxTokens.targetLineHeight, comboboxTokens.targetLabelInnerFontFamily, comboboxTokens.targetLabelInnerFontSize, comboboxTokens.targetLabelInnerFontStyle, comboboxTokens.targetLabelInnerFontWeight, comboboxTokens.targetLabelInnerLetterSpacing, comboboxTokens.targetLabelInnerLineHeight)
14
14
  },
15
15
  view: {
16
- "default": /*#__PURE__*/css(["", ":var(--text-primary);", ":var(--text-secondary);", ":var(--text-secondary);", ":var(--text-tertiary);", ":var(--text-tertiary-hover);", ":var(--text-tertiary-active);", ":var(--text-accent);", ":var(--surface-solid-card);", ":var(--shadow-down-soft-s);", ":var(--plasma-colors-transparent);", ":var(--surface-transparent-secondary);", ":var(--surface-transparent-secondary);", ":var(--text-primary);", ":var(--text-accent);", ":var(--text-secondary);", ":var(--text-primary);", ":var(--surface-transparent-secondary);", ":var(--text-primary);", ":var(--surface-transparent-secondary-hover);", ":var(--text-primary);", ":var(--surface-transparent-secondary-active);", ":var(--surface-transparent-secondary);", ":var(--text-primary);", ":var(--surface-transparent-secondary);", ":var(--text-primary);", ":0.72;", ":0.4;", ":var(--surface-accent);"], comboboxTokens.targetColor, comboboxTokens.targetLabelColor, comboboxTokens.targetArrowColor, comboboxTokens.targetBorderColor, comboboxTokens.targetBorderColorHover, comboboxTokens.targetBorderColorActive, comboboxTokens.targetBorderColorOpen, comboboxTokens.background, comboboxTokens.boxShadow, comboboxTokens.itemBackground, comboboxTokens.itemBackgroundHover, comboboxTokens.itemBackgroundSelectedHover, comboboxTokens.itemColor, comboboxTokens.itemContentLeftColor, comboboxTokens.chipCloseIconColor, comboboxTokens.chipColor, comboboxTokens.chipBackground, comboboxTokens.chipColorHover, comboboxTokens.chipBackgroundHover, comboboxTokens.chipColorActive, comboboxTokens.chipBackgroundActive, comboboxTokens.chipBackgroundReadOnly, comboboxTokens.chipColorReadOnly, comboboxTokens.chipBackgroundReadOnlyHover, comboboxTokens.chipColorReadOnlyHover, comboboxTokens.chipOpacityReadonly, comboboxTokens.disabledOpacity, comboboxTokens.focusColor)
16
+ "default": /*#__PURE__*/css(["", ":var(--text-primary);", ":var(--text-secondary);", ":var(--text-secondary);", ":var(--text-tertiary);", ":var(--text-tertiary-hover);", ":var(--text-tertiary-active);", ":var(--text-accent);", ":var(--surface-solid-card-brightness);", ":var(--shadow-down-soft-s);", ":var(--plasma-colors-transparent);", ":var(--surface-transparent-secondary);", ":var(--surface-transparent-secondary);", ":var(--text-primary);", ":var(--text-accent);", ":var(--text-secondary);", ":var(--text-primary);", ":var(--surface-transparent-secondary);", ":var(--text-primary);", ":var(--surface-transparent-secondary-hover);", ":var(--text-primary);", ":var(--surface-transparent-secondary-active);", ":var(--surface-transparent-secondary);", ":var(--text-primary);", ":var(--surface-transparent-secondary);", ":var(--text-primary);", ":0.72;", ":0.4;", ":var(--surface-accent);"], comboboxTokens.targetColor, comboboxTokens.targetLabelColor, comboboxTokens.targetArrowColor, comboboxTokens.targetBorderColor, comboboxTokens.targetBorderColorHover, comboboxTokens.targetBorderColorActive, comboboxTokens.targetBorderColorOpen, comboboxTokens.background, comboboxTokens.boxShadow, comboboxTokens.itemBackground, comboboxTokens.itemBackgroundHover, comboboxTokens.itemBackgroundSelectedHover, comboboxTokens.itemColor, comboboxTokens.itemContentLeftColor, comboboxTokens.chipCloseIconColor, comboboxTokens.chipColor, comboboxTokens.chipBackground, comboboxTokens.chipColorHover, comboboxTokens.chipBackgroundHover, comboboxTokens.chipColorActive, comboboxTokens.chipBackgroundActive, comboboxTokens.chipBackgroundReadOnly, comboboxTokens.chipColorReadOnly, comboboxTokens.chipBackgroundReadOnlyHover, comboboxTokens.chipColorReadOnlyHover, comboboxTokens.chipOpacityReadonly, comboboxTokens.disabledOpacity, comboboxTokens.focusColor)
17
17
  }
18
18
  }
19
19
  };
@@ -0,0 +1,254 @@
1
+ import React, { useState } from 'react';
2
+ import type { ComponentProps } from 'react';
3
+ import type { Meta, StoryObj } from '@storybook/react';
4
+ import { action } from '@storybook/addon-actions';
5
+
6
+ import { mergeConfig } from '../../../../../engines';
7
+ import { Checkbox } from '../../Checkbox/Checkbox';
8
+ import { comboboxOldConfig } from '../../../../../components/Combobox';
9
+ import { WithTheme, argTypesFromConfig } from '../../../../_helpers';
10
+ import { IconDone } from '../../../../../components/_Icon';
11
+
12
+ import { Combobox, ComboboxDivider, ComboboxItem } from './Combobox';
13
+ import { config } from './Combobox.config';
14
+
15
+ const placements: Array<string> = ['top', 'bottom', 'right', 'left', 'auto'];
16
+ const enumerations: Array<string> = ['comma', 'chip'];
17
+
18
+ type ComboboxPrimitiveValue = string | number | boolean;
19
+
20
+ type StorySelectPropsCustom = {
21
+ skidding?: number;
22
+ distance?: number;
23
+ };
24
+
25
+ type StorySelectProps = ComponentProps<typeof Combobox> & StorySelectPropsCustom;
26
+
27
+ const meta: Meta<StorySelectProps> = {
28
+ title: 'plasma_web/ComboboxOld',
29
+ decorators: [WithTheme],
30
+ component: Combobox,
31
+ argTypes: {
32
+ placement: {
33
+ options: placements,
34
+ control: {
35
+ type: 'select',
36
+ },
37
+ },
38
+ enumerationType: {
39
+ options: enumerations,
40
+ control: {
41
+ type: 'select',
42
+ },
43
+ },
44
+ ...argTypesFromConfig(mergeConfig(comboboxOldConfig, config)),
45
+ },
46
+ args: {
47
+ usePortal: false,
48
+ disabled: false,
49
+ readOnly: false,
50
+ label: 'Label',
51
+ placeholder: 'Placeholder',
52
+ enumerationType: 'comma',
53
+ size: 'm',
54
+ view: 'default',
55
+ placement: 'bottom',
56
+ },
57
+ };
58
+
59
+ export default meta;
60
+
61
+ const onChangeAction = action('onChange');
62
+
63
+ const iconDoneToSelectSizeMap: Record<string, 'xs' | 's'> = {
64
+ xs: 'xs',
65
+ s: 's',
66
+ m: 's',
67
+ l: 's',
68
+ };
69
+
70
+ const checkboxToSelectSizeMap: Record<string, 's' | 'm'> = {
71
+ xs: 's',
72
+ s: 'm',
73
+ m: 'm',
74
+ l: 'm',
75
+ };
76
+
77
+ const getSelectItems = (slug: string, elemCount: number) =>
78
+ [...Array(elemCount).keys()].map((num) => ({
79
+ value: `${slug}_${num}`,
80
+ child: `${slug} ${num}`,
81
+ }));
82
+
83
+ const StorySingle = (args: StorySelectProps) => {
84
+ const { usePortal, placement, label, placeholder, readOnly, disabled, size = 'm', view } = args;
85
+
86
+ const [value, setValue] = useState<ComboboxPrimitiveValue | undefined>('item_0');
87
+
88
+ const onChangeValue = (newValue?: ComboboxPrimitiveValue) => {
89
+ setValue(newValue);
90
+ onChangeAction(newValue);
91
+ };
92
+
93
+ return (
94
+ <div style={{ width: '50%' }}>
95
+ <Combobox
96
+ frame="theme-root"
97
+ usePortal={usePortal}
98
+ valueType="single"
99
+ value={value}
100
+ placement={placement}
101
+ label={label}
102
+ placeholder={placeholder}
103
+ size={size}
104
+ view={view}
105
+ disabled={disabled}
106
+ readOnly={readOnly}
107
+ onChangeValue={onChangeValue}
108
+ >
109
+ <ComboboxItem value={undefined} text="Clear" />
110
+ {getSelectItems('item', 6).map((item) => (
111
+ <ComboboxItem
112
+ key={item.value}
113
+ contentLeft={
114
+ item.value === value ? (
115
+ <IconDone size={iconDoneToSelectSizeMap[size]} color="inherit" />
116
+ ) : undefined
117
+ }
118
+ value={item.value}
119
+ text={item.child}
120
+ />
121
+ ))}
122
+ </Combobox>
123
+ </div>
124
+ );
125
+ };
126
+
127
+ export const Single: StoryObj<StorySelectProps> = {
128
+ render: (args) => <StorySingle {...args} />,
129
+ };
130
+
131
+ const StoryMultiple = (args: StorySelectProps) => {
132
+ const { usePortal, placement, label, placeholder, readOnly, disabled, enumerationType, size = 'm', view } = args;
133
+
134
+ const [value, setValue] = useState<Array<ComboboxPrimitiveValue> | undefined>(['item_2', 'item_3']);
135
+
136
+ const onChangeValue = (newValue?: Array<ComboboxPrimitiveValue>) => {
137
+ setValue(newValue);
138
+ onChangeAction(newValue);
139
+ };
140
+
141
+ return (
142
+ <div style={{ width: '50%' }}>
143
+ <Combobox
144
+ frame="theme-root"
145
+ usePortal={usePortal}
146
+ valueType="multiple"
147
+ enumerationType={enumerationType}
148
+ value={value}
149
+ placement={placement}
150
+ label={label}
151
+ placeholder={placeholder}
152
+ size={size}
153
+ view={view}
154
+ disabled={disabled}
155
+ readOnly={readOnly}
156
+ onChangeValue={onChangeValue}
157
+ >
158
+ <ComboboxItem value={undefined} text="Clear" />
159
+ {getSelectItems('item', 6).map((item) => (
160
+ <ComboboxItem
161
+ key={item.value}
162
+ contentLeft={<Checkbox size={checkboxToSelectSizeMap[size]} />}
163
+ value={item.value}
164
+ text={item.child}
165
+ />
166
+ ))}
167
+ </Combobox>
168
+ </div>
169
+ );
170
+ };
171
+
172
+ export const Multiple: StoryObj<StorySelectProps> = {
173
+ render: (args) => <StoryMultiple {...args} />,
174
+ };
175
+
176
+ const StoryAddCustomItem = (args: StorySelectProps) => {
177
+ const { usePortal, placement, label, placeholder, readOnly, disabled, size = 'm', view } = args;
178
+
179
+ const [opened, setOpened] = useState(false);
180
+ const [items, setItems] = useState(getSelectItems('item', 1));
181
+ const [value, setValue] = useState<ComboboxPrimitiveValue | undefined>('item_0');
182
+
183
+ const onChangeValue = (newValue?: ComboboxPrimitiveValue) => {
184
+ setValue(newValue);
185
+ onChangeAction(newValue);
186
+ };
187
+
188
+ const onToggle = (openValue: boolean) => setOpened(openValue);
189
+
190
+ const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
191
+ const { code } = event;
192
+
193
+ if (code === 'Enter') {
194
+ const newValue = (event.target as HTMLInputElement).value;
195
+ const newItems = [...items];
196
+
197
+ if (newItems.find((item) => item.child === newValue)) {
198
+ return;
199
+ }
200
+
201
+ newItems.push({
202
+ value: `${newValue}_`,
203
+ child: (newValue || '').toString(),
204
+ });
205
+
206
+ setOpened(false);
207
+ setItems(newItems);
208
+ }
209
+ };
210
+
211
+ const filterFunction = () => true;
212
+
213
+ return (
214
+ <div style={{ width: '50%' }}>
215
+ <Combobox
216
+ frame="theme-root"
217
+ usePortal={usePortal}
218
+ valueType="single"
219
+ value={value}
220
+ placement={placement}
221
+ label={label}
222
+ placeholder={placeholder}
223
+ size={size}
224
+ view={view}
225
+ disabled={disabled}
226
+ readOnly={readOnly}
227
+ opened={opened}
228
+ onToggle={onToggle}
229
+ onChangeValue={onChangeValue}
230
+ onKeyDown={onKeyDown}
231
+ filterFunction={filterFunction}
232
+ >
233
+ <ComboboxItem value={undefined} text="Clear" />
234
+ <ComboboxDivider />
235
+ {items.map((item) => (
236
+ <ComboboxItem
237
+ key={item.value}
238
+ contentLeft={
239
+ item.value === value ? (
240
+ <IconDone size={iconDoneToSelectSizeMap[size]} color="inherit" />
241
+ ) : undefined
242
+ }
243
+ value={item.value}
244
+ text={item.child}
245
+ />
246
+ ))}
247
+ </Combobox>
248
+ </div>
249
+ );
250
+ };
251
+
252
+ export const AddCustomItem: StoryObj<StorySelectProps> = {
253
+ render: (args) => <StoryAddCustomItem {...args} />,
254
+ };
@@ -98,21 +98,36 @@ const StoryDemo = ({ enableContentLeft, enableContentRight, view, ...rest }: Sto
98
98
  const iconSize = rest.size === 'xs' ? 'xs' : 's';
99
99
 
100
100
  return (
101
- <TextField
102
- {...rest}
103
- enumerationType="plain"
104
- value={text}
105
- contentLeft={enableContentLeft ? <IconPlaceholder size={iconSize} /> : undefined}
106
- contentRight={enableContentRight ? <IconPlaceholder size={iconSize} /> : undefined}
107
- view={view}
108
- onChange={(e) => {
109
- setText(e.target.value);
110
- onChange(e.target.value);
111
- }}
112
- onFocus={onFocus}
113
- onBlur={onBlur}
114
- onSearch={onSearch}
115
- />
101
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '2rem' }}>
102
+ <TextField
103
+ {...rest}
104
+ enumerationType="plain"
105
+ value={text}
106
+ contentLeft={enableContentLeft ? <IconPlaceholder size={iconSize} /> : undefined}
107
+ contentRight={enableContentRight ? <IconPlaceholder size={iconSize} /> : undefined}
108
+ view={view}
109
+ onChange={(e) => {
110
+ setText(e.target.value);
111
+ onChange(e.target.value);
112
+ }}
113
+ onFocus={onFocus}
114
+ onBlur={onBlur}
115
+ onSearch={onSearch}
116
+ />
117
+
118
+ <TextField
119
+ {...rest}
120
+ label="Uncontrolled TextField"
121
+ defaultValue="Дефолтное значение"
122
+ enumerationType="plain"
123
+ contentLeft={enableContentLeft ? <IconPlaceholder size={iconSize} /> : undefined}
124
+ contentRight={enableContentRight ? <IconPlaceholder size={iconSize} /> : undefined}
125
+ view={view}
126
+ onFocus={onFocus}
127
+ onBlur={onBlur}
128
+ onSearch={onSearch}
129
+ />
130
+ </div>
116
131
  );
117
132
  };
118
133