@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
+ };
@@ -14,10 +14,10 @@ export var config = {
14
14
  info: /*#__PURE__*/css(["", ":var(--surface-transparent-info);", ":var(--text-primary);", ":var(--text-info);"], tokens.background, tokens.color, tokens.contentBeforeColor)
15
15
  },
16
16
  size: {
17
- l: /*#__PURE__*/css(["", ":1.5rem 1.875rem;", ":1.5rem 1.75rem;", ":0.875rem;", ":0.75rem;", ":1rem;", ":0.25rem;", ":1.5rem;", ":2rem;", ":0.25rem 0;", ":var(--plasma-typo-text-l-font-family);", ":var(--plasma-typo-text-l-font-size);", ":var(--plasma-typo-text-l-font-style);", ":var(--plasma-typo-text-l-bold-font-weight);", ":var(--plasma-typo-text-l-letter-spacing);", ":var(--plasma-typo-text-l-line-height);", ":var(--plasma-typo-text-l-font-family);", ":var(--plasma-typo-text-l-font-size);", ":var(--plasma-typo-text-l-font-style);", ":var(--plasma-typo-text-l-font-weight);", ":var(--plasma-typo-text-l-letter-spacing);", ":var(--plasma-typo-text-l-line-height);"], tokens.padding, tokens.paddingScalable, tokens.borderRadius, tokens.gap, tokens.gapScalable, tokens.contentGap, tokens.fixedContentBeforeWidth, tokens.fixedContentBeforeHeight, tokens.fixedContentBeforePadding, tokens.titleFontFamily, tokens.titleFontSize, tokens.titleFontStyle, tokens.titleFontWeight, tokens.titleLetterSpacing, tokens.titleLineHeight, tokens.textFontFamily, tokens.textFontSize, tokens.textFontStyle, tokens.textFontWeight, tokens.textLetterSpacing, tokens.textLineHeight),
18
- m: /*#__PURE__*/css(["", ":1.25rem 1.5rem;", ":1.25rem;", ":0.75rem;", ":0.625rem;", ":0.75rem;", ":0.125rem;", ":1.5rem;", ":1.5rem;", ":0;", ":var(--plasma-typo-text-m-font-family);", ":var(--plasma-typo-text-m-font-size);", ":var(--plasma-typo-text-m-font-style);", ":var(--plasma-typo-text-m-bold-font-weight);", ":var(--plasma-typo-text-m-letter-spacing);", ":var(--plasma-typo-text-m-line-height);", ":var(--plasma-typo-text-m-font-family);", ":var(--plasma-typo-text-m-font-size);", ":var(--plasma-typo-text-m-font-style);", ":var(--plasma-typo-text-m-font-weight);", ":var(--plasma-typo-text-m-letter-spacing);", ":var(--plasma-typo-text-m-line-height);"], tokens.padding, tokens.paddingScalable, tokens.borderRadius, tokens.gap, tokens.gapScalable, tokens.contentGap, tokens.fixedContentBeforeWidth, tokens.fixedContentBeforeHeight, tokens.fixedContentBeforePadding, tokens.titleFontFamily, tokens.titleFontSize, tokens.titleFontStyle, tokens.titleFontWeight, tokens.titleLetterSpacing, tokens.titleLineHeight, tokens.textFontFamily, tokens.textFontSize, tokens.textFontStyle, tokens.textFontWeight, tokens.textLetterSpacing, tokens.textLineHeight),
19
- s: /*#__PURE__*/css(["", ":1rem 1.25rem;", ":1rem;", ":0.625rem;", ":0.5rem;", ":0.75rem;", ":0.125rem;", ":1rem;", ":1.125rem;", ":0.063rem 0;", ":var(--plasma-typo-text-s-font-family);", ":var(--plasma-typo-text-s-font-size);", ":var(--plasma-typo-text-s-font-style);", ":var(--plasma-typo-text-s-bold-font-weight);", ":var(--plasma-typo-text-s-letter-spacing);", ":var(--plasma-typo-text-s-line-height);", ":var(--plasma-typo-text-s-font-family);", ":var(--plasma-typo-text-s-font-size);", ":var(--plasma-typo-text-s-font-style);", ":var(--plasma-typo-text-s-font-weight);", ":var(--plasma-typo-text-s-letter-spacing);", ":var(--plasma-typo-text-s-line-height);"], tokens.padding, tokens.paddingScalable, tokens.borderRadius, tokens.gap, tokens.gapScalable, tokens.contentGap, tokens.fixedContentBeforeWidth, tokens.fixedContentBeforeHeight, tokens.fixedContentBeforePadding, tokens.titleFontFamily, tokens.titleFontSize, tokens.titleFontStyle, tokens.titleFontWeight, tokens.titleLetterSpacing, tokens.titleLineHeight, tokens.textFontFamily, tokens.textFontSize, tokens.textFontStyle, tokens.textFontWeight, tokens.textLetterSpacing, tokens.textLineHeight),
20
- xs: /*#__PURE__*/css(["", ":0.75rem 1rem;", ":0.75rem;", ":0.5rem;", ":0.375rem;", ":0.5rem;", ":0.125rem;", ":1rem;", ":1rem;", ":0;", ":var(--plasma-typo-text-xs-font-family);", ":var(--plasma-typo-text-xs-font-size);", ":var(--plasma-typo-text-xs-font-style);", ":var(--plasma-typo-text-xs-bold-font-weight);", ":var(--plasma-typo-text-xs-letter-spacing);", ":var(--plasma-typo-text-xs-line-height);", ":var(--plasma-typo-text-xs-font-family);", ":var(--plasma-typo-text-xs-font-size);", ":var(--plasma-typo-text-xs-font-style);", ":var(--plasma-typo-text-xs-font-weight);", ":var(--plasma-typo-text-xs-letter-spacing);", ":var(--plasma-typo-text-xs-line-height);"], tokens.padding, tokens.paddingScalable, tokens.borderRadius, tokens.gap, tokens.gapScalable, tokens.contentGap, tokens.fixedContentBeforeWidth, tokens.fixedContentBeforeHeight, tokens.fixedContentBeforePadding, tokens.titleFontFamily, tokens.titleFontSize, tokens.titleFontStyle, tokens.titleFontWeight, tokens.titleLetterSpacing, tokens.titleLineHeight, tokens.textFontFamily, tokens.textFontSize, tokens.textFontStyle, tokens.textFontWeight, tokens.textLetterSpacing, tokens.textLineHeight)
17
+ l: /*#__PURE__*/css(["", ":1.5rem 1.875rem;", ":1.5rem 1.75rem;", ":0.875rem;", ":0.75rem;", ":1rem;", ":0.25rem;", ":1rem;", ":1rem;", ":var(--text-secondary);", ":var(--text-secondary-hover);", ":1.5rem;", ":1.5rem;", ":1.5rem;", ":2rem;", ":0.25rem 0;", ":var(--plasma-typo-text-l-font-family);", ":var(--plasma-typo-text-l-font-size);", ":var(--plasma-typo-text-l-font-style);", ":var(--plasma-typo-text-l-bold-font-weight);", ":var(--plasma-typo-text-l-letter-spacing);", ":var(--plasma-typo-text-l-line-height);", ":1.875rem;", ":var(--plasma-typo-text-l-font-family);", ":var(--plasma-typo-text-l-font-size);", ":var(--plasma-typo-text-l-font-style);", ":var(--plasma-typo-text-l-font-weight);", ":var(--plasma-typo-text-l-letter-spacing);", ":var(--plasma-typo-text-l-line-height);"], tokens.padding, tokens.paddingScalable, tokens.borderRadius, tokens.gap, tokens.gapScalable, tokens.contentGap, tokens.closeIconTop, tokens.closeIconRight, tokens.closeIconColor, tokens.closeIconColorOnHover, tokens.closeIconSize, tokens.closeIconButtonSize, tokens.fixedContentBeforeWidth, tokens.fixedContentBeforeHeight, tokens.fixedContentBeforePadding, tokens.titleFontFamily, tokens.titleFontSize, tokens.titleFontStyle, tokens.titleFontWeight, tokens.titleLetterSpacing, tokens.titleLineHeight, tokens.titlePaddingRight, tokens.textFontFamily, tokens.textFontSize, tokens.textFontStyle, tokens.textFontWeight, tokens.textLetterSpacing, tokens.textLineHeight),
18
+ m: /*#__PURE__*/css(["", ":1.25rem 1.5rem;", ":1.25rem;", ":0.75rem;", ":0.625rem;", ":0.75rem;", ":0.125rem;", ":0.75rem;", ":0.75rem;", ":var(--text-secondary);", ":var(--text-secondary-hover);", ":1.5rem;", ":1.5rem;", ":1.5rem;", ":1.5rem;", ":0;", ":var(--plasma-typo-text-m-font-family);", ":var(--plasma-typo-text-m-font-size);", ":var(--plasma-typo-text-m-font-style);", ":var(--plasma-typo-text-m-bold-font-weight);", ":var(--plasma-typo-text-m-letter-spacing);", ":var(--plasma-typo-text-m-line-height);", ":1.75rem;", ":var(--plasma-typo-text-m-font-family);", ":var(--plasma-typo-text-m-font-size);", ":var(--plasma-typo-text-m-font-style);", ":var(--plasma-typo-text-m-font-weight);", ":var(--plasma-typo-text-m-letter-spacing);", ":var(--plasma-typo-text-m-line-height);"], tokens.padding, tokens.paddingScalable, tokens.borderRadius, tokens.gap, tokens.gapScalable, tokens.contentGap, tokens.closeIconTop, tokens.closeIconRight, tokens.closeIconColor, tokens.closeIconColorOnHover, tokens.closeIconSize, tokens.closeIconButtonSize, tokens.fixedContentBeforeWidth, tokens.fixedContentBeforeHeight, tokens.fixedContentBeforePadding, tokens.titleFontFamily, tokens.titleFontSize, tokens.titleFontStyle, tokens.titleFontWeight, tokens.titleLetterSpacing, tokens.titleLineHeight, tokens.titlePaddingRight, tokens.textFontFamily, tokens.textFontSize, tokens.textFontStyle, tokens.textFontWeight, tokens.textLetterSpacing, tokens.textLineHeight),
19
+ s: /*#__PURE__*/css(["", ":1rem 1.25rem;", ":1rem;", ":0.625rem;", ":0.5rem;", ":0.75rem;", ":0.125rem;", ":0.625rem;", ":0.625rem;", ":var(--text-secondary);", ":var(--text-secondary-hover);", ":1.5rem;", ":1.5rem;", ":1rem;", ":1.125rem;", ":0.063rem 0;", ":var(--plasma-typo-text-s-font-family);", ":var(--plasma-typo-text-s-font-size);", ":var(--plasma-typo-text-s-font-style);", ":var(--plasma-typo-text-s-bold-font-weight);", ":var(--plasma-typo-text-s-letter-spacing);", ":var(--plasma-typo-text-s-line-height);", ":1.625rem;", ":var(--plasma-typo-text-s-font-family);", ":var(--plasma-typo-text-s-font-size);", ":var(--plasma-typo-text-s-font-style);", ":var(--plasma-typo-text-s-font-weight);", ":var(--plasma-typo-text-s-letter-spacing);", ":var(--plasma-typo-text-s-line-height);"], tokens.padding, tokens.paddingScalable, tokens.borderRadius, tokens.gap, tokens.gapScalable, tokens.contentGap, tokens.closeIconTop, tokens.closeIconRight, tokens.closeIconColor, tokens.closeIconColorOnHover, tokens.closeIconSize, tokens.closeIconButtonSize, tokens.fixedContentBeforeWidth, tokens.fixedContentBeforeHeight, tokens.fixedContentBeforePadding, tokens.titleFontFamily, tokens.titleFontSize, tokens.titleFontStyle, tokens.titleFontWeight, tokens.titleLetterSpacing, tokens.titleLineHeight, tokens.titlePaddingRight, tokens.textFontFamily, tokens.textFontSize, tokens.textFontStyle, tokens.textFontWeight, tokens.textLetterSpacing, tokens.textLineHeight),
20
+ xs: /*#__PURE__*/css(["", ":0.75rem 1rem;", ":0.75rem;", ":0.5rem;", ":0.375rem;", ":0.5rem;", ":0.125rem;", ":0.625rem;", ":0.625rem;", ":var(--text-secondary);", ":var(--text-secondary-hover);", ":1rem;", ":1rem;", ":1rem;", ":1rem;", ":0;", ":var(--plasma-typo-text-xs-font-family);", ":var(--plasma-typo-text-xs-font-size);", ":var(--plasma-typo-text-xs-font-style);", ":var(--plasma-typo-text-xs-bold-font-weight);", ":var(--plasma-typo-text-xs-letter-spacing);", ":var(--plasma-typo-text-xs-line-height);", ":1.5rem;", ":var(--plasma-typo-text-xs-font-family);", ":var(--plasma-typo-text-xs-font-size);", ":var(--plasma-typo-text-xs-font-style);", ":var(--plasma-typo-text-xs-font-weight);", ":var(--plasma-typo-text-xs-letter-spacing);", ":var(--plasma-typo-text-xs-line-height);"], tokens.padding, tokens.paddingScalable, tokens.borderRadius, tokens.gap, tokens.gapScalable, tokens.contentGap, tokens.closeIconTop, tokens.closeIconRight, tokens.closeIconColor, tokens.closeIconColorOnHover, tokens.closeIconSize, tokens.closeIconButtonSize, tokens.fixedContentBeforeWidth, tokens.fixedContentBeforeHeight, tokens.fixedContentBeforePadding, tokens.titleFontFamily, tokens.titleFontSize, tokens.titleFontStyle, tokens.titleFontWeight, tokens.titleLetterSpacing, tokens.titleLineHeight, tokens.titlePaddingRight, tokens.textFontFamily, tokens.textFontSize, tokens.textFontStyle, tokens.textFontWeight, tokens.textLetterSpacing, tokens.textLineHeight)
21
21
  }
22
22
  }
23
23
  };
@@ -67,6 +67,7 @@ export const Default: StoryObj<StoryPropsDefault> = {
67
67
  text: 'Text',
68
68
  enableContentBefore: true,
69
69
  contentBeforeSizing: 'fixed',
70
+ hasClose: true,
70
71
  },
71
72
  render: ({ enableContentBefore, ...args }) => (
72
73
  <div style={{ height: '100vh' }}>