@salutejs/plasma-new-hope 0.324.1-canary.1986.15225454757.0 → 0.324.1-canary.1986.15255471728.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 (112) hide show
  1. package/cjs/components/Calendar/hooks/useMonths.js +3 -1
  2. package/cjs/components/Calendar/hooks/useMonths.js.map +1 -1
  3. package/cjs/components/Calendar/hooks/useQuarters.js +3 -1
  4. package/cjs/components/Calendar/hooks/useQuarters.js.map +1 -1
  5. package/cjs/components/Calendar/hooks/useYears.js +3 -1
  6. package/cjs/components/Calendar/hooks/useYears.js.map +1 -1
  7. package/cjs/components/Calendar/utils/getDateWithModification.js +28 -24
  8. package/cjs/components/Calendar/utils/getDateWithModification.js.map +1 -1
  9. package/cjs/components/Note/Note.css +35 -6
  10. package/cjs/components/Note/Note.js +17 -3
  11. package/cjs/components/Note/Note.js.map +1 -1
  12. package/cjs/components/Note/Note.styles.js +25 -2
  13. package/cjs/components/Note/Note.styles.js.map +1 -1
  14. package/cjs/components/Note/{Note.styles_178qpj9.css → Note.styles_thpfhk.css} +2 -1
  15. package/cjs/components/Note/Note.tokens.js +9 -1
  16. package/cjs/components/Note/Note.tokens.js.map +1 -1
  17. package/cjs/index.css +8 -7
  18. package/emotion/cjs/components/Calendar/hooks/useMonths.js +3 -1
  19. package/emotion/cjs/components/Calendar/hooks/useQuarters.js +3 -1
  20. package/emotion/cjs/components/Calendar/hooks/useYears.js +3 -1
  21. package/emotion/cjs/components/Calendar/utils/getDateWithModification.js +28 -24
  22. package/emotion/cjs/components/Note/Note.js +17 -3
  23. package/emotion/cjs/components/Note/Note.styles.js +27 -15
  24. package/emotion/cjs/components/Note/Note.tokens.js +9 -1
  25. package/emotion/cjs/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +188 -15
  26. package/emotion/cjs/examples/plasma_b2c/components/Note/Note.config.js +9 -9
  27. package/emotion/cjs/examples/plasma_b2c/components/Note/Note.stories.tsx +1 -0
  28. package/emotion/cjs/examples/plasma_b2c/components/Select/Select.stories.tsx +188 -21
  29. package/emotion/cjs/examples/plasma_web/components/Combobox/Combobox.stories.tsx +187 -15
  30. package/emotion/cjs/examples/plasma_web/components/Note/Note.config.js +9 -9
  31. package/emotion/cjs/examples/plasma_web/components/Note/Note.stories.tsx +1 -0
  32. package/emotion/cjs/examples/plasma_web/components/Select/Select.stories.tsx +188 -21
  33. package/emotion/es/components/Calendar/hooks/useMonths.js +3 -1
  34. package/emotion/es/components/Calendar/hooks/useQuarters.js +3 -1
  35. package/emotion/es/components/Calendar/hooks/useYears.js +3 -1
  36. package/emotion/es/components/Calendar/utils/getDateWithModification.js +28 -24
  37. package/emotion/es/components/Note/Note.js +18 -4
  38. package/emotion/es/components/Note/Note.styles.js +26 -14
  39. package/emotion/es/components/Note/Note.tokens.js +9 -1
  40. package/emotion/es/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +188 -15
  41. package/emotion/es/examples/plasma_b2c/components/Note/Note.config.js +9 -9
  42. package/emotion/es/examples/plasma_b2c/components/Note/Note.stories.tsx +1 -0
  43. package/emotion/es/examples/plasma_b2c/components/Select/Select.stories.tsx +188 -21
  44. package/emotion/es/examples/plasma_web/components/Combobox/Combobox.stories.tsx +187 -15
  45. package/emotion/es/examples/plasma_web/components/Note/Note.config.js +9 -9
  46. package/emotion/es/examples/plasma_web/components/Note/Note.stories.tsx +1 -0
  47. package/emotion/es/examples/plasma_web/components/Select/Select.stories.tsx +188 -21
  48. package/es/components/Calendar/hooks/useMonths.js +3 -1
  49. package/es/components/Calendar/hooks/useMonths.js.map +1 -1
  50. package/es/components/Calendar/hooks/useQuarters.js +3 -1
  51. package/es/components/Calendar/hooks/useQuarters.js.map +1 -1
  52. package/es/components/Calendar/hooks/useYears.js +3 -1
  53. package/es/components/Calendar/hooks/useYears.js.map +1 -1
  54. package/es/components/Calendar/utils/getDateWithModification.js +28 -24
  55. package/es/components/Calendar/utils/getDateWithModification.js.map +1 -1
  56. package/es/components/Note/Note.css +35 -6
  57. package/es/components/Note/Note.js +18 -4
  58. package/es/components/Note/Note.js.map +1 -1
  59. package/es/components/Note/Note.styles.js +25 -3
  60. package/es/components/Note/Note.styles.js.map +1 -1
  61. package/es/components/Note/{Note.styles_178qpj9.css → Note.styles_thpfhk.css} +2 -1
  62. package/es/components/Note/Note.tokens.js +9 -1
  63. package/es/components/Note/Note.tokens.js.map +1 -1
  64. package/es/index.css +8 -7
  65. package/package.json +2 -2
  66. package/styled-components/cjs/components/Calendar/hooks/useMonths.js +3 -1
  67. package/styled-components/cjs/components/Calendar/hooks/useQuarters.js +3 -1
  68. package/styled-components/cjs/components/Calendar/hooks/useYears.js +3 -1
  69. package/styled-components/cjs/components/Calendar/utils/getDateWithModification.js +28 -24
  70. package/styled-components/cjs/components/Note/Note.js +17 -3
  71. package/styled-components/cjs/components/Note/Note.styles.js +14 -3
  72. package/styled-components/cjs/components/Note/Note.tokens.js +9 -1
  73. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +188 -15
  74. package/styled-components/cjs/examples/plasma_b2c/components/Note/Note.config.js +4 -4
  75. package/styled-components/cjs/examples/plasma_b2c/components/Note/Note.stories.tsx +1 -0
  76. package/styled-components/cjs/examples/plasma_b2c/components/Select/Select.stories.tsx +188 -21
  77. package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.stories.tsx +187 -15
  78. package/styled-components/cjs/examples/plasma_web/components/Note/Note.config.js +4 -4
  79. package/styled-components/cjs/examples/plasma_web/components/Note/Note.stories.tsx +1 -0
  80. package/styled-components/cjs/examples/plasma_web/components/Select/Select.stories.tsx +188 -21
  81. package/styled-components/es/components/Calendar/hooks/useMonths.js +3 -1
  82. package/styled-components/es/components/Calendar/hooks/useQuarters.js +3 -1
  83. package/styled-components/es/components/Calendar/hooks/useYears.js +3 -1
  84. package/styled-components/es/components/Calendar/utils/getDateWithModification.js +28 -24
  85. package/styled-components/es/components/Note/Note.js +18 -4
  86. package/styled-components/es/components/Note/Note.styles.js +13 -2
  87. package/styled-components/es/components/Note/Note.tokens.js +9 -1
  88. package/styled-components/es/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +188 -15
  89. package/styled-components/es/examples/plasma_b2c/components/Note/Note.config.js +4 -4
  90. package/styled-components/es/examples/plasma_b2c/components/Note/Note.stories.tsx +1 -0
  91. package/styled-components/es/examples/plasma_b2c/components/Select/Select.stories.tsx +188 -21
  92. package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.stories.tsx +187 -15
  93. package/styled-components/es/examples/plasma_web/components/Note/Note.config.js +4 -4
  94. package/styled-components/es/examples/plasma_web/components/Note/Note.stories.tsx +1 -0
  95. package/styled-components/es/examples/plasma_web/components/Select/Select.stories.tsx +188 -21
  96. package/types/components/Calendar/hooks/types.d.ts +7 -2
  97. package/types/components/Calendar/hooks/types.d.ts.map +1 -1
  98. package/types/components/Calendar/hooks/useMonths.d.ts +1 -1
  99. package/types/components/Calendar/hooks/useMonths.d.ts.map +1 -1
  100. package/types/components/Calendar/hooks/useQuarters.d.ts +1 -1
  101. package/types/components/Calendar/hooks/useQuarters.d.ts.map +1 -1
  102. package/types/components/Calendar/hooks/useYears.d.ts +1 -1
  103. package/types/components/Calendar/hooks/useYears.d.ts.map +1 -1
  104. package/types/components/Calendar/utils/getDateWithModification.d.ts.map +1 -1
  105. package/types/components/Note/Note.d.ts +4 -0
  106. package/types/components/Note/Note.d.ts.map +1 -1
  107. package/types/components/Note/Note.styles.d.ts +46 -1
  108. package/types/components/Note/Note.styles.d.ts.map +1 -1
  109. package/types/components/Note/Note.tokens.d.ts +8 -0
  110. package/types/components/Note/Note.tokens.d.ts.map +1 -1
  111. package/types/components/Note/Note.types.d.ts +8 -0
  112. package/types/components/Note/Note.types.d.ts.map +1 -1
@@ -13,7 +13,7 @@ import { Select } from './Select';
13
13
  type StorySelectProps = ComponentProps<typeof Select> & {
14
14
  enableContentLeft?: boolean;
15
15
  hasHint?: boolean;
16
- enableSelectAll?: boolean;
16
+ selectAllLabel?: string;
17
17
  selectAllSticky?: boolean;
18
18
  };
19
19
 
@@ -198,13 +198,6 @@ const meta: Meta<StorySelectProps> = {
198
198
  options: ['default', 'text'],
199
199
  if: { arg: 'target', eq: 'textfield-like' },
200
200
  },
201
- enableSelectAll: {
202
- control: 'boolean',
203
- },
204
- selectAllSticky: {
205
- control: 'boolean',
206
- if: { arg: 'enableSelectAll', truthy: true },
207
- },
208
201
  },
209
202
  args: {
210
203
  target: 'textfield-like',
@@ -234,8 +227,6 @@ const meta: Meta<StorySelectProps> = {
234
227
  hintPlacement: 'auto',
235
228
  hintWidth: '10rem',
236
229
  hintHasArrow: true,
237
- enableSelectAll: false,
238
- selectAllSticky: false,
239
230
  },
240
231
  parameters: {
241
232
  controls: {
@@ -271,8 +262,6 @@ const meta: Meta<StorySelectProps> = {
271
262
  'hintPlacement',
272
263
  'hintWidth',
273
264
  'hintHasArrow',
274
- 'enableSelectAll',
275
- 'selectAllSticky',
276
265
  ],
277
266
  },
278
267
  },
@@ -511,7 +500,7 @@ const SingleStory = ({ enableContentLeft, ...args }: StorySelectProps) => {
511
500
  export const Single: StoryObj<StorySelectProps> = {
512
501
  parameters: {
513
502
  controls: {
514
- exclude: ['chipView', 'isTargetAmount', 'chipType', 'enableSelectAll'],
503
+ exclude: ['chipView', 'isTargetAmount', 'chipType'],
515
504
  },
516
505
  },
517
506
  render: (args) => <SingleStory {...args} />,
@@ -520,7 +509,7 @@ export const Single: StoryObj<StorySelectProps> = {
520
509
  },
521
510
  };
522
511
 
523
- const MultiselectStory = ({ enableContentLeft, enableSelectAll, selectAllSticky, ...args }: StorySelectProps) => {
512
+ const MultiselectStory = ({ enableContentLeft, ...args }: StorySelectProps) => {
524
513
  const [value, setValue] = useState<Array<string>>([]);
525
514
 
526
515
  return (
@@ -531,7 +520,6 @@ const MultiselectStory = ({ enableContentLeft, enableSelectAll, selectAllSticky,
531
520
  value={value}
532
521
  onChange={setValue}
533
522
  contentLeft={enableContentLeft ? <IconDone size="s" color="inherit" /> : undefined}
534
- selectAllOptions={enableSelectAll ? { sticky: selectAllSticky || false } : undefined}
535
523
  />
536
524
  </div>
537
525
  );
@@ -574,11 +562,6 @@ const PredefinedStory = ({ enableContentLeft, ...args }: StorySelectProps) => {
574
562
  };
575
563
 
576
564
  export const Predefined: StoryObj<StorySelectProps> = {
577
- parameters: {
578
- controls: {
579
- exclude: ['enableSelectAll'],
580
- },
581
- },
582
565
  render: (args) => <PredefinedStory {...args} />,
583
566
  };
584
567
 
@@ -1002,7 +985,7 @@ const CommonStory = ({ enableContentLeft, ...args }: StorySelectProps) => {
1002
985
  export const Common: StoryObj<StorySelectProps> = {
1003
986
  parameters: {
1004
987
  controls: {
1005
- exclude: ['target', 'view', 'enableSelectAll'],
988
+ exclude: ['target', 'view'],
1006
989
  },
1007
990
  },
1008
991
  argTypes: {
@@ -1016,3 +999,187 @@ export const Common: StoryObj<StorySelectProps> = {
1016
999
  },
1017
1000
  render: (args) => <CommonStory {...args} />,
1018
1001
  };
1002
+
1003
+ const flatItems = [
1004
+ {
1005
+ value: 'north_america',
1006
+ label: 'Северная Америка',
1007
+ },
1008
+ {
1009
+ value: 'rio_de_janeiro',
1010
+ label: 'Рио-де-Жанейро',
1011
+ },
1012
+ {
1013
+ value: 'sao_paulo',
1014
+ label: 'Сан-Паулу',
1015
+ },
1016
+ {
1017
+ value: 'buenos_aires',
1018
+ label: 'Буэнос-Айрес',
1019
+ },
1020
+ {
1021
+ value: 'cordoba',
1022
+ label: 'Кордова',
1023
+ },
1024
+ {
1025
+ value: 'bogota',
1026
+ label: 'Богота',
1027
+ },
1028
+ {
1029
+ value: 'medellin',
1030
+ label: 'Медельин',
1031
+ },
1032
+ {
1033
+ value: 'paris',
1034
+ label: 'Париж',
1035
+ },
1036
+ {
1037
+ value: 'lyon',
1038
+ label: 'Лион',
1039
+ },
1040
+ {
1041
+ value: 'berlin',
1042
+ label: 'Берлин',
1043
+ },
1044
+ {
1045
+ value: 'munich',
1046
+ label: 'Мюнхен',
1047
+ },
1048
+ {
1049
+ value: 'rome',
1050
+ label: 'Рим',
1051
+ },
1052
+ {
1053
+ value: 'milan',
1054
+ label: 'Милан',
1055
+ },
1056
+ {
1057
+ value: 'madrid',
1058
+ label: 'Мадрид',
1059
+ },
1060
+ {
1061
+ value: 'barcelona',
1062
+ label: 'Барселона',
1063
+ },
1064
+ {
1065
+ value: 'london',
1066
+ label: 'Лондон',
1067
+ },
1068
+ {
1069
+ value: 'manchester',
1070
+ label: 'Манчестер',
1071
+ },
1072
+ {
1073
+ value: 'beijing',
1074
+ label: 'Пекин',
1075
+ },
1076
+ {
1077
+ value: 'shanghai',
1078
+ label: 'Шанхай',
1079
+ },
1080
+ {
1081
+ value: 'tokyo',
1082
+ label: 'Токио',
1083
+ },
1084
+ {
1085
+ value: 'osaka',
1086
+ label: 'Осака',
1087
+ },
1088
+ {
1089
+ value: 'delhi',
1090
+ label: 'Дели',
1091
+ },
1092
+ {
1093
+ value: 'mumbai',
1094
+ label: 'Мумбаи',
1095
+ },
1096
+ {
1097
+ value: 'seoul',
1098
+ label: 'Сеул',
1099
+ },
1100
+ {
1101
+ value: 'busan',
1102
+ label: 'Пусан',
1103
+ },
1104
+ {
1105
+ value: 'bangkok',
1106
+ label: 'Бангкок',
1107
+ },
1108
+ {
1109
+ value: 'phuket',
1110
+ label: 'Пхукет',
1111
+ },
1112
+ {
1113
+ value: 'africa',
1114
+ label: 'Африка',
1115
+ },
1116
+ ];
1117
+
1118
+ const SelectAllStory = (args: StorySelectProps) => {
1119
+ const [value, setValue] = useState([]);
1120
+ const [checked, setChecked] = useState(false);
1121
+ const [indeterminate, setIndeterminate] = useState(false);
1122
+
1123
+ const handleClick = () => {
1124
+ if (checked && !indeterminate) {
1125
+ setValue([]);
1126
+ } else {
1127
+ setValue(flatItems.map((item) => item.value));
1128
+ }
1129
+ };
1130
+
1131
+ React.useEffect(() => {
1132
+ if (value.length === 0) {
1133
+ setChecked(false);
1134
+ setIndeterminate(false);
1135
+ } else if (value.length === flatItems.length) {
1136
+ setChecked(true);
1137
+ setIndeterminate(false);
1138
+ } else {
1139
+ setChecked(true);
1140
+ setIndeterminate(true);
1141
+ }
1142
+ }, [value]);
1143
+
1144
+ return (
1145
+ <div style={{ width: '400px' }}>
1146
+ <Select
1147
+ placeholder="Placeholder"
1148
+ multiselect
1149
+ items={flatItems}
1150
+ value={value}
1151
+ onChange={setValue}
1152
+ listOverflow="auto"
1153
+ listMaxHeight="300px"
1154
+ selectAllOptions={{
1155
+ sticky: args?.selectAllSticky || false,
1156
+ label: args?.selectAllLabel,
1157
+ checked,
1158
+ indeterminate,
1159
+ onClick: handleClick,
1160
+ }}
1161
+ />
1162
+ </div>
1163
+ );
1164
+ };
1165
+
1166
+ export const SelectAll: StoryObj<StorySelectProps> = {
1167
+ render: (args) => <SelectAllStory {...args} />,
1168
+ argTypes: {
1169
+ selectAllSticky: {
1170
+ control: 'boolean',
1171
+ },
1172
+ selectAllLabel: {
1173
+ control: 'text',
1174
+ },
1175
+ },
1176
+ args: {
1177
+ selectAllSticky: false,
1178
+ selectAllLabel: 'Выбрать все',
1179
+ },
1180
+ parameters: {
1181
+ controls: {
1182
+ include: ['selectAllSticky', 'selectAllLabel'],
1183
+ },
1184
+ },
1185
+ };
@@ -11,7 +11,7 @@ import { Combobox } from './Combobox';
11
11
  type StorySelectProps = ComponentProps<typeof Combobox> & {
12
12
  enableContentLeft?: boolean;
13
13
  hasHint?: boolean;
14
- enableSelectAll?: boolean;
14
+ selectAllLabel?: string;
15
15
  selectAllSticky?: boolean;
16
16
  };
17
17
 
@@ -175,13 +175,6 @@ const meta: Meta<StorySelectProps> = {
175
175
  emptyStateDescription: {
176
176
  control: { type: 'text' },
177
177
  },
178
- enableSelectAll: {
179
- control: 'boolean',
180
- },
181
- selectAllSticky: {
182
- control: 'boolean',
183
- if: { arg: 'enableSelectAll', truthy: true },
184
- },
185
178
  },
186
179
  args: {
187
180
  label: 'Label',
@@ -211,8 +204,6 @@ const meta: Meta<StorySelectProps> = {
211
204
  hintWidth: '10rem',
212
205
  hintHasArrow: true,
213
206
  emptyStateDescription: '',
214
- enableSelectAll: false,
215
- selectAllSticky: false,
216
207
  },
217
208
  parameters: {
218
209
  controls: {
@@ -248,8 +239,6 @@ const meta: Meta<StorySelectProps> = {
248
239
  'hintWidth',
249
240
  'hintHasArrow',
250
241
  'emptyStateDescription',
251
- 'enableSelectAll',
252
- 'selectAllSticky',
253
242
  ],
254
243
  },
255
244
  },
@@ -491,12 +480,12 @@ export const Single: StoryObj<StorySelectProps> = {
491
480
  },
492
481
  parameters: {
493
482
  controls: {
494
- exclude: ['isTargetAmount', 'enableSelectAll'],
483
+ exclude: ['isTargetAmount'],
495
484
  },
496
485
  },
497
486
  };
498
487
 
499
- const MultipleStory = ({ enableSelectAll, selectAllSticky, ...args }: StorySelectProps) => {
488
+ const MultipleStory = (args: StorySelectProps) => {
500
489
  const [value, setValue] = useState([]);
501
490
 
502
491
  return (
@@ -508,7 +497,6 @@ const MultipleStory = ({ enableSelectAll, selectAllSticky, ...args }: StorySelec
508
497
  value={value}
509
498
  onChange={setValue}
510
499
  contentLeft={args.enableContentLeft ? <IconDone size="s" /> : undefined}
511
- selectAllOptions={enableSelectAll ? { sticky: selectAllSticky || false } : undefined}
512
500
  />
513
501
  </div>
514
502
  );
@@ -520,3 +508,187 @@ export const Multiple: StoryObj<StorySelectProps> = {
520
508
  closeAfterSelect: false,
521
509
  },
522
510
  };
511
+
512
+ const flatItems = [
513
+ {
514
+ value: 'north_america',
515
+ label: 'Северная Америка',
516
+ },
517
+ {
518
+ value: 'rio_de_janeiro',
519
+ label: 'Рио-де-Жанейро',
520
+ },
521
+ {
522
+ value: 'sao_paulo',
523
+ label: 'Сан-Паулу',
524
+ },
525
+ {
526
+ value: 'buenos_aires',
527
+ label: 'Буэнос-Айрес',
528
+ },
529
+ {
530
+ value: 'cordoba',
531
+ label: 'Кордова',
532
+ },
533
+ {
534
+ value: 'bogota',
535
+ label: 'Богота',
536
+ },
537
+ {
538
+ value: 'medellin',
539
+ label: 'Медельин',
540
+ },
541
+ {
542
+ value: 'paris',
543
+ label: 'Париж',
544
+ },
545
+ {
546
+ value: 'lyon',
547
+ label: 'Лион',
548
+ },
549
+ {
550
+ value: 'berlin',
551
+ label: 'Берлин',
552
+ },
553
+ {
554
+ value: 'munich',
555
+ label: 'Мюнхен',
556
+ },
557
+ {
558
+ value: 'rome',
559
+ label: 'Рим',
560
+ },
561
+ {
562
+ value: 'milan',
563
+ label: 'Милан',
564
+ },
565
+ {
566
+ value: 'madrid',
567
+ label: 'Мадрид',
568
+ },
569
+ {
570
+ value: 'barcelona',
571
+ label: 'Барселона',
572
+ },
573
+ {
574
+ value: 'london',
575
+ label: 'Лондон',
576
+ },
577
+ {
578
+ value: 'manchester',
579
+ label: 'Манчестер',
580
+ },
581
+ {
582
+ value: 'beijing',
583
+ label: 'Пекин',
584
+ },
585
+ {
586
+ value: 'shanghai',
587
+ label: 'Шанхай',
588
+ },
589
+ {
590
+ value: 'tokyo',
591
+ label: 'Токио',
592
+ },
593
+ {
594
+ value: 'osaka',
595
+ label: 'Осака',
596
+ },
597
+ {
598
+ value: 'delhi',
599
+ label: 'Дели',
600
+ },
601
+ {
602
+ value: 'mumbai',
603
+ label: 'Мумбаи',
604
+ },
605
+ {
606
+ value: 'seoul',
607
+ label: 'Сеул',
608
+ },
609
+ {
610
+ value: 'busan',
611
+ label: 'Пусан',
612
+ },
613
+ {
614
+ value: 'bangkok',
615
+ label: 'Бангкок',
616
+ },
617
+ {
618
+ value: 'phuket',
619
+ label: 'Пхукет',
620
+ },
621
+ {
622
+ value: 'africa',
623
+ label: 'Африка',
624
+ },
625
+ ];
626
+
627
+ const SelectAllStory = (args: StorySelectProps) => {
628
+ const [value, setValue] = useState([]);
629
+ const [checked, setChecked] = useState(false);
630
+ const [indeterminate, setIndeterminate] = useState(false);
631
+
632
+ const handleClick = () => {
633
+ if (checked && !indeterminate) {
634
+ setValue([]);
635
+ } else {
636
+ setValue(flatItems.map((item) => item.value));
637
+ }
638
+ };
639
+
640
+ React.useEffect(() => {
641
+ if (value.length === 0) {
642
+ setChecked(false);
643
+ setIndeterminate(false);
644
+ } else if (value.length === flatItems.length) {
645
+ setChecked(true);
646
+ setIndeterminate(false);
647
+ } else {
648
+ setChecked(true);
649
+ setIndeterminate(true);
650
+ }
651
+ }, [value]);
652
+
653
+ return (
654
+ <div style={{ width: '400px' }}>
655
+ <Combobox
656
+ placeholder="Placeholder"
657
+ multiple
658
+ items={flatItems}
659
+ value={value}
660
+ onChange={setValue}
661
+ listOverflow="auto"
662
+ listMaxHeight="300px"
663
+ selectAllOptions={{
664
+ sticky: args?.selectAllSticky || false,
665
+ label: args?.selectAllLabel,
666
+ checked,
667
+ indeterminate,
668
+ onClick: handleClick,
669
+ }}
670
+ />
671
+ </div>
672
+ );
673
+ };
674
+
675
+ export const SelectAll: StoryObj<StorySelectProps> = {
676
+ render: (args) => <SelectAllStory {...args} />,
677
+ argTypes: {
678
+ selectAllSticky: {
679
+ control: 'boolean',
680
+ },
681
+ selectAllLabel: {
682
+ control: 'text',
683
+ },
684
+ },
685
+ args: {
686
+ selectAllSticky: false,
687
+ selectAllLabel: 'Выбрать все',
688
+ },
689
+ parameters: {
690
+ controls: {
691
+ include: ['selectAllSticky', 'selectAllLabel'],
692
+ },
693
+ },
694
+ };