@moysklad/uikit 30.4.0 → 31.20.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 (356) hide show
  1. package/README.md +9 -4
  2. package/dist/colorVariables.css +23 -1
  3. package/dist/components/AutoComplete/AutoComplete.js +2 -2
  4. package/dist/components/BentoBlock/BentoBlock.d.ts +15 -0
  5. package/dist/components/BentoBlock/BentoBlock.js +20 -0
  6. package/dist/components/BentoBlock/BentoBlock.module.js +9 -0
  7. package/dist/components/BentoBlock/BentoBlock_module.css +50 -0
  8. package/dist/components/BentoBlock/consts.d.ts +14 -0
  9. package/dist/components/BentoBlock/consts.js +15 -0
  10. package/dist/components/Button/Button.d.ts +5 -2
  11. package/dist/components/Button/Button.js +28 -19
  12. package/dist/components/Button/Button_module.css +16 -14
  13. package/dist/components/Checkbox/Checkbox.js +1 -1
  14. package/dist/components/DateRange/ArrowButton/ArrowButton.module.js +6 -0
  15. package/dist/components/DateRange/ArrowButton/ArrowButton_module.css +26 -0
  16. package/dist/components/DateRange/ArrowButton/index.d.ts +8 -0
  17. package/dist/components/DateRange/ArrowButton/index.js +23 -0
  18. package/dist/components/DateRange/Calendar/index.d.ts +12 -0
  19. package/dist/components/DateRange/Calendar/index.js +22 -0
  20. package/dist/components/DateRange/DateRange.d.ts +6 -0
  21. package/dist/components/DateRange/DateRange.js +51 -0
  22. package/dist/components/DateRange/DateRangeDefaultTrigger/DateRangeDefaultTrigger.d.ts +44 -0
  23. package/dist/components/DateRange/DateRangeDefaultTrigger/DateRangeDefaultTrigger.js +128 -0
  24. package/dist/components/DateRange/DateRangeDefaultTrigger/DateRangeDefaultTrigger.module.js +19 -0
  25. package/dist/components/DateRange/DateRangeDefaultTrigger/DateRangeDefaultTrigger_module.css +170 -0
  26. package/dist/components/DateRange/DateRangeDefaultTrigger.module.js +12 -0
  27. package/dist/components/DateRange/DateRangeDefaultTrigger_module.css +43 -0
  28. package/dist/components/DateRange/DateRangeInput/DateRangeInput.d.ts +4 -0
  29. package/dist/components/DateRange/DateRangeInput/DateRangeInput.js +69 -0
  30. package/dist/components/DateRange/Day/Day.module.js +16 -0
  31. package/dist/components/DateRange/Day/Day_module.css +80 -0
  32. package/dist/components/DateRange/Day/index.d.ts +12 -0
  33. package/dist/components/DateRange/Day/index.js +39 -0
  34. package/dist/components/DateRange/DropdownContent/DropdownContent.module.js +10 -0
  35. package/dist/components/DateRange/DropdownContent/DropdownContent_module.css +34 -0
  36. package/dist/components/DateRange/DropdownContent/index.d.ts +24 -0
  37. package/dist/components/DateRange/DropdownContent/index.js +132 -0
  38. package/dist/components/DateRange/InputContent/InputContent.module.js +9 -0
  39. package/dist/components/DateRange/InputContent/InputContent_module.css +31 -0
  40. package/dist/components/DateRange/InputContent/index.d.ts +12 -0
  41. package/dist/components/DateRange/InputContent/index.js +59 -0
  42. package/dist/components/DateRange/Month/Month.module.js +7 -0
  43. package/dist/components/DateRange/Month/Month_module.css +17 -0
  44. package/dist/components/DateRange/Month/index.d.ts +15 -0
  45. package/dist/components/DateRange/Month/index.js +158 -0
  46. package/dist/components/DateRange/Month/utils.d.ts +2 -0
  47. package/dist/components/DateRange/Month/utils.js +8 -0
  48. package/dist/components/DateRange/MonthHeader/MonthHeader.module.js +5 -0
  49. package/dist/components/DateRange/MonthHeader/MonthHeader_module.css +10 -0
  50. package/dist/components/DateRange/MonthHeader/index.d.ts +5 -0
  51. package/dist/components/DateRange/MonthHeader/index.js +26 -0
  52. package/dist/components/DateRange/MonthList/MonthList.module.js +7 -0
  53. package/dist/components/DateRange/MonthList/MonthList_module.css +25 -0
  54. package/dist/components/DateRange/MonthList/index.d.ts +11 -0
  55. package/dist/components/DateRange/MonthList/index.js +91 -0
  56. package/dist/components/DateRange/PeriodVariantList/PeriodVariantList.module.js +9 -0
  57. package/dist/components/DateRange/PeriodVariantList/PeriodVariantList_module.css +18 -0
  58. package/dist/components/DateRange/PeriodVariantList/index.d.ts +18 -0
  59. package/dist/components/DateRange/PeriodVariantList/index.js +83 -0
  60. package/dist/components/DateRange/SideMenu/SideMenu.module.js +6 -0
  61. package/dist/components/DateRange/SideMenu/SideMenu_module.css +18 -0
  62. package/dist/components/DateRange/SideMenu/index.d.ts +13 -0
  63. package/dist/components/DateRange/SideMenu/index.js +73 -0
  64. package/dist/components/DateRange/TooltipedText/index.d.ts +8 -0
  65. package/dist/components/DateRange/TooltipedText/index.js +30 -0
  66. package/dist/components/DateRange/Year/Year.module.js +11 -0
  67. package/dist/components/DateRange/Year/Year_module.css +60 -0
  68. package/dist/components/DateRange/Year/index.d.ts +8 -0
  69. package/dist/components/DateRange/Year/index.js +47 -0
  70. package/dist/components/DateRange/YearsList/YearsList.module.js +5 -0
  71. package/dist/components/DateRange/YearsList/YearsList_module.css +15 -0
  72. package/dist/components/DateRange/YearsList/index.d.ts +12 -0
  73. package/dist/components/DateRange/YearsList/index.js +47 -0
  74. package/dist/components/DateRange/consts.d.ts +20 -0
  75. package/dist/components/DateRange/consts.js +81 -0
  76. package/dist/components/DateRange/formatDateRangeValue.d.ts +24 -0
  77. package/dist/components/DateRange/formatDateRangeValue.js +116 -0
  78. package/dist/components/DateRange/hooks/useCalendar.d.ts +13 -0
  79. package/dist/components/DateRange/hooks/useCalendar.js +88 -0
  80. package/dist/components/DateRange/hooks/useDateRange.d.ts +392 -0
  81. package/dist/components/DateRange/hooks/useDateRange.js +36 -0
  82. package/dist/components/DateRange/hooks/useDateRangeDropdown.d.ts +47 -0
  83. package/dist/components/DateRange/hooks/useDateRangeDropdown.js +117 -0
  84. package/dist/components/DateRange/hooks/useDateRangeValue.d.ts +56 -0
  85. package/dist/components/DateRange/hooks/useDateRangeValue.js +173 -0
  86. package/dist/components/DateRange/hooks/useMaskInput.d.ts +18 -0
  87. package/dist/components/DateRange/hooks/useMaskInput.js +169 -0
  88. package/dist/components/DateRange/hooks/useMonthList.d.ts +12 -0
  89. package/dist/components/DateRange/hooks/useMonthList.js +80 -0
  90. package/dist/components/DateRange/hooks/useSideMenu.d.ts +14 -0
  91. package/dist/components/DateRange/hooks/useSideMenu.js +113 -0
  92. package/dist/components/DateRange/index.d.ts +1 -0
  93. package/dist/components/DateRange/index.js +1 -0
  94. package/dist/components/DateRange/locale/en-US.d.ts +2 -0
  95. package/dist/components/DateRange/locale/en-US.js +82 -0
  96. package/dist/components/DateRange/locale/index.d.ts +4 -0
  97. package/dist/components/DateRange/locale/index.js +3 -0
  98. package/dist/components/DateRange/locale/ru-RU.d.ts +2 -0
  99. package/dist/components/DateRange/locale/ru-RU.js +82 -0
  100. package/dist/components/DateRange/locale/types.d.ts +9 -0
  101. package/dist/components/DateRange/locale/types.js +7 -0
  102. package/dist/components/DateRange/locale/useLocale.d.ts +8 -0
  103. package/dist/components/DateRange/locale/useLocale.js +31 -0
  104. package/dist/components/DateRange/props.d.ts +39 -0
  105. package/dist/components/DateRange/props.js +0 -0
  106. package/dist/components/DateRange/types.d.ts +126 -0
  107. package/dist/components/DateRange/types.js +13 -0
  108. package/dist/components/DateRange/utils.d.ts +33 -0
  109. package/dist/components/DateRange/utils.js +105 -0
  110. package/dist/components/Datepicker/Datepicker.d.ts +3 -1
  111. package/dist/components/Datepicker/Datepicker.js +4 -2
  112. package/dist/components/EditableDate/DropdownContent/DropdownContent.d.ts +9 -0
  113. package/dist/components/EditableDate/DropdownContent/DropdownContent.js +36 -0
  114. package/dist/components/EditableDate/EditableDate.d.ts +9 -0
  115. package/dist/components/EditableDate/EditableDate.js +142 -0
  116. package/dist/components/EditableDate/EditableDate.module.js +7 -0
  117. package/dist/components/EditableDate/EditableDate_module.css +32 -0
  118. package/dist/components/EditableTitle/EditableTitle.d.ts +7 -2
  119. package/dist/components/EditableTitle/EditableTitle.js +63 -31
  120. package/dist/components/EditableTitle/EditableTitle.module.js +1 -0
  121. package/dist/components/EditableTitle/EditableTitle_module.css +6 -0
  122. package/dist/components/EmptyState/EmptyState.d.ts +1 -1
  123. package/dist/components/EmptyStateLarge/EmptyStateLarge_module.css +2 -2
  124. package/dist/components/Help/Help_module.css +1 -1
  125. package/dist/components/Informer/Informer.d.ts +37 -0
  126. package/dist/components/Informer/Informer.js +36 -0
  127. package/dist/components/Informer/Informer.module.js +7 -0
  128. package/dist/components/Informer/Informer_module.css +24 -0
  129. package/dist/components/Input/Input.js +10 -5
  130. package/dist/components/Input/components/InfoBlock.d.ts +3 -1
  131. package/dist/components/Input/components/InfoBlock.js +7 -4
  132. package/dist/components/InputUnit/InputUnit.js +4 -4
  133. package/dist/components/LabelValue/LabelValue.d.ts +14 -10
  134. package/dist/components/LabelValue/LabelValue.js +46 -25
  135. package/dist/components/LabelValue/LabelValue.module.js +10 -4
  136. package/dist/components/LabelValue/LabelValue_module.css +53 -19
  137. package/dist/components/LabelValue/ValueBlock/ValueBlock.d.ts +2 -0
  138. package/dist/components/LabelValue/ValueBlock/ValueBlock.js +82 -0
  139. package/dist/components/LabelValue/ValueBlockWrapper.d.ts +5 -0
  140. package/dist/components/LabelValue/ValueBlockWrapper.js +13 -0
  141. package/dist/components/LabelValue/ValueIcon.d.ts +4 -0
  142. package/dist/components/LabelValue/ValueIcon.js +9 -0
  143. package/dist/components/LabelValue/ValueText.d.ts +10 -0
  144. package/dist/components/LabelValue/ValueText.js +24 -0
  145. package/dist/components/LabelValue/ValueTextWithHint.d.ts +12 -0
  146. package/dist/components/LabelValue/ValueTextWithHint.js +29 -0
  147. package/dist/components/LabelValue/hooks/useValueBlock.d.ts +29 -0
  148. package/dist/components/LabelValue/hooks/useValueBlock.js +72 -0
  149. package/dist/components/LabelValue/{ValueBlock/index.d.ts → types.d.ts} +8 -4
  150. package/dist/components/LabelValue/types.js +0 -0
  151. package/dist/components/LabelValueDate/LabelValueDate.js +2 -2
  152. package/dist/components/LabelValueFile/DeleteButton/DeleteButton.d.ts +9 -0
  153. package/dist/components/LabelValueFile/DeleteButton/DeleteButton.js +17 -0
  154. package/dist/components/LabelValueFile/FilePreviewIcon/FilePreviewIcon.d.ts +7 -0
  155. package/dist/components/LabelValueFile/FilePreviewIcon/FilePreviewIcon.js +15 -0
  156. package/dist/components/LabelValueFile/FilePreviewIcon/FilePreviewIcon.module.js +6 -0
  157. package/dist/components/LabelValueFile/FilePreviewIcon/FilePreviewIcon_module.css +10 -0
  158. package/dist/components/LabelValueFile/ImagePreview/ImagePreview.d.ts +8 -0
  159. package/dist/components/LabelValueFile/ImagePreview/ImagePreview.js +53 -0
  160. package/dist/components/LabelValueFile/ImagePreview/ImagePreview.module.js +6 -0
  161. package/dist/components/LabelValueFile/ImagePreview/ImagePreview_module.css +13 -0
  162. package/dist/components/LabelValueFile/LabelValueFile.d.ts +7 -0
  163. package/dist/components/LabelValueFile/LabelValueFile.js +42 -0
  164. package/dist/components/LabelValueFile/LabelValueFile.module.js +12 -0
  165. package/dist/components/LabelValueFile/LabelValueFile_module.css +57 -0
  166. package/dist/components/LabelValueFile/ValueBlock/ValueBlock.d.ts +15 -0
  167. package/dist/components/LabelValueFile/ValueBlock/ValueBlock.js +130 -0
  168. package/dist/components/LabelValueFile/ValueBlock/ValueBlock.module.js +7 -0
  169. package/dist/components/LabelValueFile/ValueBlock/ValueBlock_module.css +17 -0
  170. package/dist/components/LabelValueInput/DropdownConnent/DropdownContent.d.ts +2 -0
  171. package/dist/components/LabelValueInput/DropdownConnent/DropdownContent.js +2 -0
  172. package/dist/components/LabelValueLink/LabelValueLink.d.ts +2 -0
  173. package/dist/components/LabelValueLink/LabelValueLink.js +76 -0
  174. package/dist/components/LabelValueLink/LabelValueLink.module.js +6 -0
  175. package/dist/components/LabelValueLink/LabelValueLink_module.css +11 -0
  176. package/dist/components/LabelValueLink/ValueBlock/LabelValueLinkValueBlock.d.ts +2 -0
  177. package/dist/components/LabelValueLink/ValueBlock/LabelValueLinkValueBlock.js +117 -0
  178. package/dist/components/LabelValueLink/ValueBlock/LabelValueLinkValueBlock.module.js +6 -0
  179. package/dist/components/LabelValueLink/ValueBlock/LabelValueLinkValueBlock_module.css +8 -0
  180. package/dist/components/LabelValueLink/normalizeLinkValue.d.ts +1 -0
  181. package/dist/components/LabelValueLink/normalizeLinkValue.js +10 -0
  182. package/dist/components/LabelValueLink/useLinkDropdownValue.d.ts +15 -0
  183. package/dist/components/LabelValueLink/useLinkDropdownValue.js +26 -0
  184. package/dist/components/LabelValueSelect/Input/index.js +1 -1
  185. package/dist/components/LabelValueSelect/LabelValueSelect.d.ts +4 -2
  186. package/dist/components/Layout/Layout.d.ts +13 -0
  187. package/dist/components/Layout/Layout.js +41 -0
  188. package/dist/components/Layout/Layout.module.js +15 -0
  189. package/dist/components/Layout/Layout_module.css +77 -0
  190. package/dist/components/Link/Link.d.ts +5 -6
  191. package/dist/components/Link/Link.js +35 -9
  192. package/dist/components/Link/Link.module.js +1 -0
  193. package/dist/components/Link/Link_module.css +9 -0
  194. package/dist/components/MentionsTextfield/Mentions/style.css +2 -6
  195. package/dist/components/MentionsTextfield/MentionsTextfield.js +2 -1
  196. package/dist/components/Multiselect/AllSelectedChip/AllSelectedChip.d.ts +8 -0
  197. package/dist/components/Multiselect/AllSelectedChip/AllSelectedChip.js +13 -0
  198. package/dist/components/Multiselect/AllSelectedChip/AllSelectedChip.module.js +5 -0
  199. package/dist/components/Multiselect/AllSelectedChip/AllSelectedChip_module.css +9 -0
  200. package/dist/components/Multiselect/DropdownContent/MultiselectDropdownContent.d.ts +12 -1
  201. package/dist/components/Multiselect/DropdownContent/MultiselectDropdownContent.js +20 -15
  202. package/dist/components/Multiselect/Input/Input.d.ts +6 -2
  203. package/dist/components/Multiselect/Input/Input.js +18 -4
  204. package/dist/components/Multiselect/Multiselect.d.ts +4 -2
  205. package/dist/components/Multiselect/Multiselect.js +14 -2
  206. package/dist/components/Multiselect/ShortDropdownContent/ShortDropdownContent.js +2 -1
  207. package/dist/components/Multiselect/TextField/MultiselectTextField.d.ts +5 -1
  208. package/dist/components/Multiselect/TextField/MultiselectTextField.js +15 -2
  209. package/dist/components/Multiselect/lib/consts.d.ts +1 -1
  210. package/dist/components/Multiselect/lib/consts.js +1 -1
  211. package/dist/components/Multiselect/lib/helpers.d.ts +24 -0
  212. package/dist/components/Multiselect/lib/helpers.js +15 -0
  213. package/dist/components/Multiselect/types.d.ts +2 -0
  214. package/dist/components/Panel/Panel.d.ts +34 -0
  215. package/dist/components/Panel/Panel.js +39 -0
  216. package/dist/components/Panel/Panel.module.js +6 -0
  217. package/dist/components/Panel/Panel_module.css +17 -0
  218. package/dist/components/Radiobutton/Radiobutton.js +1 -1
  219. package/dist/components/Radiobutton/Radiobutton_module.css +5 -0
  220. package/dist/components/SearchInput/SearchInput_module.css +1 -1
  221. package/dist/components/Select/ArchivedInputValue/ArchivedInputValue.d.ts +3 -4
  222. package/dist/components/Select/ArchivedInputValue/ArchivedInputValue.js +19 -24
  223. package/dist/components/Select/ArchivedInputValue/ArchivedInputValue.module.js +1 -2
  224. package/dist/components/Select/ArchivedInputValue/ArchivedInputValue_module.css +5 -12
  225. package/dist/components/Select/Combobox/Combobox.d.ts +3 -1
  226. package/dist/components/Select/Combobox/Combobox.js +19 -8
  227. package/dist/components/Select/Combobox/Combobox.module.js +4 -3
  228. package/dist/components/Select/Combobox/Combobox_module.css +15 -9
  229. package/dist/components/Select/OptionsList/OptionsList.d.ts +3 -1
  230. package/dist/components/Select/OptionsList/OptionsList.js +37 -21
  231. package/dist/components/Select/OptionsList/OptionsList.module.js +2 -0
  232. package/dist/components/Select/OptionsList/OptionsList_module.css +15 -0
  233. package/dist/components/Select/Select.d.ts +2 -3
  234. package/dist/components/Select/Select.js +17 -7
  235. package/dist/components/Select/Select_module.css +5 -0
  236. package/dist/components/Select/ShortVariant/ShortVariant.js +1 -1
  237. package/dist/components/StatusBadge/StatusBadge.d.ts +28 -0
  238. package/dist/components/StatusBadge/StatusBadge.js +167 -0
  239. package/dist/components/StatusBadge/StatusBadge.module.js +37 -0
  240. package/dist/components/StatusBadge/StatusBadge_module.css +149 -0
  241. package/dist/components/StatusBadge/utils/StatusBadgeColor.d.ts +21 -0
  242. package/dist/components/StatusBadge/utils/StatusBadgeColor.js +20 -0
  243. package/dist/components/StatusBadge/utils/getStatusBadgeColor.d.ts +2 -0
  244. package/dist/components/StatusBadge/utils/getStatusBadgeColor.js +8 -0
  245. package/dist/components/Textfield/Textfield.d.ts +7 -2
  246. package/dist/components/Textfield/Textfield.js +2 -1
  247. package/dist/components/Textfield/components/Container/Container.d.ts +2 -0
  248. package/dist/components/Textfield/components/Container/Container.js +17 -6
  249. package/dist/components/Textfield/components/Container/Container.module.js +2 -1
  250. package/dist/components/Textfield/components/Container/Container_module.css +4 -0
  251. package/dist/components/Toggle/Toggle.js +1 -1
  252. package/dist/components/ViewersStack/ViewersStack.js +5 -3
  253. package/dist/components/_shared/CustomDatepickerDropdownContent/CustomDatepickerDropdownContent.d.ts +12 -0
  254. package/dist/components/{LabelValueDate/DropdownContent/index.js → _shared/CustomDatepickerDropdownContent/CustomDatepickerDropdownContent.js} +10 -10
  255. package/dist/components/_shared/CustomDatepickerDropdownContent/CustomDatepickerDropdownContent.module.js +9 -0
  256. package/dist/components/{LabelValueDate/DropdownContent/DropdownContent_module.css → _shared/CustomDatepickerDropdownContent/CustomDatepickerDropdownContent_module.css} +6 -6
  257. package/dist/components/_shared/FieldLabel/FieldLabel.d.ts +18 -0
  258. package/dist/components/{FieldLabel → _shared/FieldLabel}/FieldLabel.js +19 -12
  259. package/dist/components/_shared/FieldLabel/FieldLabel.module.js +11 -0
  260. package/dist/components/{FieldLabel → _shared/FieldLabel}/FieldLabel_module.css +8 -8
  261. package/dist/components/{FieldLabel → _shared/FieldLabel}/components/HelpButton.d.ts +1 -1
  262. package/dist/components/{FieldLabel → _shared/FieldLabel}/components/HelpButton.js +2 -2
  263. package/dist/components/{FieldLabel → _shared/FieldLabel}/components/HelpButton.module.js +1 -1
  264. package/dist/components/{FieldLabel → _shared/FieldLabel}/components/HelpButton_module.css +1 -1
  265. package/dist/components/{FieldRow → _shared/FieldRow}/FieldRow.d.ts +1 -1
  266. package/dist/components/{FieldRow → _shared/FieldRow}/FieldRow.js +1 -1
  267. package/dist/components/{FieldRow → _shared/FieldRow}/FieldRow.module.js +3 -3
  268. package/dist/components/{FieldRow → _shared/FieldRow}/FieldRow_module.css +3 -3
  269. package/dist/components/{Info → _shared/Info}/Info.d.ts +3 -1
  270. package/dist/components/{Info → _shared/Info}/Info.js +9 -6
  271. package/dist/components/_shared/Info/Info.module.js +9 -0
  272. package/dist/components/{Info → _shared/Info}/Info_module.css +6 -6
  273. package/dist/components/_shared/Info/types/index.d.ts +6 -0
  274. package/dist/components/_shared/Info/types/index.js +5 -0
  275. package/dist/components/{InputClear → _shared/InputClear}/InputClear.d.ts +1 -1
  276. package/dist/components/{InputClear → _shared/InputClear}/InputClear.js +2 -2
  277. package/dist/components/{InputClear → _shared/InputClear}/InputClear.module.js +3 -3
  278. package/dist/components/{InputClear → _shared/InputClear}/InputClear_module.css +5 -5
  279. package/dist/components/_shared/utils/polymorphicClickableTypes.d.ts +17 -0
  280. package/dist/components/_shared/utils/polymorphicClickableTypes.js +7 -0
  281. package/dist/data-grid/Filters/DateRangeFilter/DropdownContent/index.js +3 -3
  282. package/dist/data-grid/Filters/DateRangeFilter/InputContent/index.js +29 -26
  283. package/dist/data-grid/Filters/DateRangeFilter/PeriodVariantList/index.js +5 -3
  284. package/dist/data-grid/Filters/DateRangeFilter/Year/index.js +3 -3
  285. package/dist/data-grid/Filters/DateRangeFilter/consts.js +6 -6
  286. package/dist/data-grid/Filters/DateRangeFilter/hooks/useMaskInput.js +6 -6
  287. package/dist/data-grid/Filters/DateRangeFilter/hooks/useSideMenu.js +1 -4
  288. package/dist/data-grid/Filters/DateRangeFilter/types.d.ts +68 -56
  289. package/dist/data-grid/Filters/FiltersContainer/FiltersContainer.js +2 -1
  290. package/dist/data-grid/Filters/FiltersContainer/utils/useRenderParams.d.ts +1 -0
  291. package/dist/data-grid/Filters/FiltersContainer/utils/useRenderParams.js +14 -6
  292. package/dist/data-grid/Filters/MultiselectFilter/MultiselectFilter.js +2 -2
  293. package/dist/data-grid/Filters/OutlineInput/OutlineInput.js +2 -2
  294. package/dist/data-grid/Filters/OutlineInput/OutlineInput_module.css +1 -1
  295. package/dist/data-grid/Table/Table_module.css +0 -1
  296. package/dist/data-grid/cells/ImageCell/ImageMiniature/ImageMiniature_module.css +1 -1
  297. package/dist/data-grid/cells/components/TableNumberInput/TableNumberInput.d.ts +1 -0
  298. package/dist/data-grid/cells/components/TableNumberInput/TableNumberInput.js +17 -5
  299. package/dist/data-grid/cells/components/TableSelect/TableSelect.js +3 -2
  300. package/dist/data-grid/headers/components/Dropdown/Dropdown.d.ts +3 -0
  301. package/dist/data-grid/headers/components/HeaderBuilder/HeaderBuilder.js +1 -0
  302. package/dist/data-grid/index.d.ts +0 -4
  303. package/dist/data-grid/locale/en-US.js +68 -56
  304. package/dist/data-grid/locale/ru-RU.js +68 -56
  305. package/dist/data-grid/locale/useLocale.d.ts +6 -1
  306. package/dist/data-grid/locale/useLocale.js +14 -5
  307. package/dist/hooks/useIsElementOverflowing/index.d.ts +1 -0
  308. package/dist/hooks/useIsElementOverflowing/index.js +8 -2
  309. package/dist/hooks/useOverflowHint/index.d.ts +7 -0
  310. package/dist/hooks/useOverflowHint/index.js +16 -0
  311. package/dist/hooks/useTextField/useTextField.d.ts +1 -1
  312. package/dist/icon/components/MsLogo12Icon.d.ts +8 -0
  313. package/dist/icon/components/MsLogo12Icon.js +28 -0
  314. package/dist/icon/components/MsLogo16Icon.d.ts +8 -0
  315. package/dist/icon/components/MsLogo16Icon.js +26 -0
  316. package/dist/icon/components/MsLogo20Icon.d.ts +8 -0
  317. package/dist/icon/components/MsLogo20Icon.js +28 -0
  318. package/dist/icon/components/Phone12Icon.d.ts +8 -0
  319. package/dist/icon/components/Phone12Icon.js +18 -0
  320. package/dist/icon/components/Phone16Icon.d.ts +8 -0
  321. package/dist/icon/components/Phone16Icon.js +17 -0
  322. package/dist/icon/components/Phone20Icon.d.ts +8 -0
  323. package/dist/icon/components/Phone20Icon.js +18 -0
  324. package/dist/icon/index.d.ts +6 -0
  325. package/dist/icon/index.js +6 -0
  326. package/dist/index.d.ts +9 -1
  327. package/dist/index.js +8 -0
  328. package/dist/utils/checkIsArchivedValue.d.ts +2 -0
  329. package/dist/utils/checkIsArchivedValue.js +5 -0
  330. package/dist/utils/utils.d.ts +1 -0
  331. package/dist/utils/utils.js +1 -0
  332. package/package.json +70 -13
  333. package/dist/components/FieldLabel/FieldLabel.d.ts +0 -17
  334. package/dist/components/FieldLabel/FieldLabel.module.js +0 -11
  335. package/dist/components/Info/Info.module.js +0 -9
  336. package/dist/components/LabelValue/ValueBlock/index.js +0 -138
  337. package/dist/components/LabelValue/hooks/useTooltip.d.ts +0 -8
  338. package/dist/components/LabelValue/hooks/useTooltip.js +0 -16
  339. package/dist/components/LabelValueDate/DropdownContent/DropdownContent.module.js +0 -9
  340. package/dist/components/LabelValueDate/DropdownContent/index.d.ts +0 -12
  341. package/dist/components/MentionsTextfield/OptionForStory/OptionForStory.d.ts +0 -7
  342. package/dist/components/MentionsTextfield/OptionForStory/OptionForStory.js +0 -27
  343. package/dist/components/MentionsTextfield/OptionForStory/OptionForStory.module.js +0 -8
  344. package/dist/components/MentionsTextfield/OptionForStory/OptionForStory_module.css +0 -25
  345. package/dist/components/MentionsTextfield/OptionForStory/index.d.ts +0 -1
  346. package/dist/components/MentionsTextfield/OptionForStory/index.js +0 -1
  347. package/dist/components/Textfield/components/Label/Label.d.ts +0 -11
  348. package/dist/components/Textfield/components/Label/Label.js +0 -38
  349. package/dist/components/Textfield/components/Label/Label.module.js +0 -7
  350. package/dist/components/Textfield/components/Label/Label_module.css +0 -17
  351. package/dist/components/Textfield/components/Label/index.d.ts +0 -1
  352. package/dist/components/Textfield/components/Label/index.js +0 -1
  353. /package/dist/components/{FieldLabel → _shared/FieldLabel}/FieldLabel.constants.d.ts +0 -0
  354. /package/dist/components/{FieldLabel → _shared/FieldLabel}/FieldLabel.constants.js +0 -0
  355. /package/dist/components/{FieldLabel → _shared/FieldLabel}/components/index.d.ts +0 -0
  356. /package/dist/components/{FieldLabel → _shared/FieldLabel}/components/index.js +0 -0
@@ -10,8 +10,10 @@ import { Loading } from "../../Select/Loading/Loading.js";
10
10
  import { Text, TextColor } from "../../Text/Text.js";
11
11
  import { useDebounceCallback } from "../../../hooks/useDebounceCallback/useDebounceCallback.js";
12
12
  import { Add16Icon, RemoveClose12Icon } from "../../../icon/index.js";
13
+ import { AllSelectedChip } from "../AllSelectedChip/AllSelectedChip.js";
13
14
  import { useAsyncDropdownContext } from "../AsyncDropdownContext/AsyncDropdownContextProvider.js";
14
15
  import { minChipsWidth, selectAllCheckboxDefaultText } from "../lib/consts.js";
16
+ import { canSelectAllItems, getDefaultAllSelectedChipText, isAllItemsSelected } from "../lib/helpers.js";
15
17
  import { useChipsKeyDown } from "../lib/useChipsKeyDown.js";
16
18
  import { useItemKeyDown } from "../lib/useItemKeyDown.js";
17
19
  import { SelectAllCheckbox } from "../SelectAllCheckbox/SelectAllCheckbox.js";
@@ -26,7 +28,6 @@ const MultiselectDropdownContent = (props)=>{
26
28
  const asyncDropdownContext = useAsyncDropdownContext();
27
29
  const selectedItems = (asyncDropdownContext?.selectedValues ?? props.items).filter((item)=>props.values.includes(item.value));
28
30
  const [filteredItems, setFilteredItems] = useState(asyncDropdownContext?.cachedItems ?? props.items);
29
- const [filteredSelectedItems, setFilteredSelectedItems] = useState(selectedItems);
30
31
  const [searchInputValue, setSearchInputValue] = useState(asyncDropdownContext?.cachedInputValue ?? '');
31
32
  const searchInputValueRef = useRef(searchInputValue);
32
33
  searchInputValueRef.current = searchInputValue;
@@ -46,14 +47,12 @@ const MultiselectDropdownContent = (props)=>{
46
47
  const handleSearch = (inputValue)=>{
47
48
  setSearchInputValue(inputValue);
48
49
  if (!inputValue.trim()) {
49
- setFilteredSelectedItems(selectedItems);
50
50
  if (props.onSearch) {
51
51
  setFilteredItems([]);
52
52
  handleAsyncSearchDebounced(inputValue);
53
53
  } else setFilteredItems(props.items);
54
54
  return;
55
55
  }
56
- setFilteredSelectedItems(selectedItems.filter((item)=>item.label.toLowerCase().includes(inputValue.trim().toLowerCase())));
57
56
  if (props.onSearch) {
58
57
  setFilteredItems([]);
59
58
  handleAsyncSearchDebounced(inputValue);
@@ -61,15 +60,13 @@ const MultiselectDropdownContent = (props)=>{
61
60
  }
62
61
  setFilteredItems(props.items.filter((item)=>item.label.toLowerCase().includes(inputValue.trim().toLowerCase())));
63
62
  };
64
- const updateFilteredSelectedItems = (inputValue)=>{
65
- if (!inputValue.trim()) return void setFilteredSelectedItems(selectedItems);
66
- setFilteredSelectedItems(selectedItems.filter((item)=>item.label.toLowerCase().includes(inputValue.trim().toLowerCase())));
67
- };
68
- useEffect(()=>{
69
- updateFilteredSelectedItems(searchInputValue);
63
+ const filteredSelectedItems = useMemo(()=>{
64
+ const trimmedSearchInputValue = searchInputValue.trim().toLowerCase();
65
+ if (!trimmedSearchInputValue) return selectedItems;
66
+ return selectedItems.filter((item)=>item.label.toLowerCase().includes(trimmedSearchInputValue));
70
67
  }, [
71
- props.values,
72
- asyncDropdownContext?.selectedValues
68
+ searchInputValue,
69
+ selectedItems
73
70
  ]);
74
71
  useEffect(()=>{
75
72
  if (props.onSearch) return;
@@ -90,13 +87,16 @@ const MultiselectDropdownContent = (props)=>{
90
87
  const isManySelected = useMemo(()=>filteredSelectedItems.length > 9, [
91
88
  filteredSelectedItems
92
89
  ]);
90
+ const availableItems = asyncDropdownContext?.cachedItems ?? props.items;
91
+ const isAllSelected = props.showSelectAllCheckbox && isAllItemsSelected(availableItems, props.values);
93
92
  const selectAllCheckboxText = useMemo(()=>props.selectAllCheckboxText ?? selectAllCheckboxDefaultText, [
94
93
  props.selectAllCheckboxText
95
94
  ]);
96
95
  const isShowSelectAllCheckbox = useMemo(()=>{
97
96
  if (!props.showSelectAllCheckbox) return false;
98
- return selectAllCheckboxText.toLowerCase().includes(searchInputValue.trim().toLowerCase());
97
+ return canSelectAllItems(availableItems) && selectAllCheckboxText.toLowerCase().includes(searchInputValue.trim().toLowerCase());
99
98
  }, [
99
+ availableItems,
100
100
  props.showSelectAllCheckbox,
101
101
  searchInputValue,
102
102
  selectAllCheckboxText
@@ -237,10 +237,15 @@ const MultiselectDropdownContent = (props)=>{
237
237
  })
238
238
  })
239
239
  });
240
- const chips = !!filteredSelectedItems.length && /*#__PURE__*/ jsxs("div", {
240
+ const chips = (isAllSelected || !!filteredSelectedItems.length) && /*#__PURE__*/ jsxs("div", {
241
241
  className: cn(MultiselectDropdownContent_module.chipsContainer, props.chipsContainerClassName),
242
242
  children: [
243
- !isManySelected && filteredSelectedItems.map((item, index)=>/*#__PURE__*/ jsx(TooltipedChip, {
243
+ isAllSelected && /*#__PURE__*/ jsx(AllSelectedChip, {
244
+ label: props.getAllSelectedChipText?.(availableItems.length) ?? getDefaultAllSelectedChipText(availableItems.length, props.allSelectedChipTextVariant),
245
+ className: cn(MultiselectDropdownContent_module.chip, MultiselectDropdownContent_module.moreElementsChip),
246
+ testId: props.testId ? `${props.testId}-all-selected` : void 0
247
+ }),
248
+ !isAllSelected && !isManySelected && filteredSelectedItems.map((item, index)=>/*#__PURE__*/ jsx(TooltipedChip, {
244
249
  tooltipDelay: props.tooltipDelay,
245
250
  ref: (ref)=>chipRefs.current[index] = ref,
246
251
  minWidth: minChipsWidth,
@@ -253,7 +258,7 @@ const MultiselectDropdownContent = (props)=>{
253
258
  renderSelectedItem: props.renderSelectedItem,
254
259
  item: item
255
260
  }, item.value)),
256
- isManySelected && /*#__PURE__*/ jsx(Chip, {
261
+ !isAllSelected && isManySelected && /*#__PURE__*/ jsx(Chip, {
257
262
  isActive: true,
258
263
  onClick: ()=>{},
259
264
  icon: /*#__PURE__*/ jsx("div", {
@@ -1,5 +1,5 @@
1
1
  import { type AriaAttributes } from 'react';
2
- import { type InputValue, type RenderSelectedItem } from '../types';
2
+ import { type AllSelectedChipTextVariant, type GetAllSelectedChipText, type InputValue, type RenderSelectedItem } from '../types';
3
3
  export interface InputProps {
4
4
  id?: HTMLInputElement['id'];
5
5
  placeholder?: string;
@@ -12,7 +12,7 @@ export interface InputProps {
12
12
  * используется для форматирования строки невлезающих элементов в input
13
13
  *
14
14
  * @param elementsCount количество оставшихся элементов которые не влезли
15
- * @example (count) => `ещё ${count}`
15
+ * @example (count) => `еще ${count}`
16
16
  */
17
17
  getOtherText?: (elementsCount: number) => string;
18
18
  /**
@@ -23,6 +23,10 @@ export interface InputProps {
23
23
  className?: string;
24
24
  testId?: string;
25
25
  disabled?: boolean;
26
+ canShowAllSelectedChip?: boolean;
27
+ isAllSelected?: boolean;
28
+ allSelectedChipTextVariant?: AllSelectedChipTextVariant;
29
+ getAllSelectedChipText?: GetAllSelectedChipText;
26
30
  wrapSelectedItems?: boolean;
27
31
  renderSelectedItem?: RenderSelectedItem;
28
32
  triggerAriaProps?: Pick<AriaAttributes, 'aria-controls' | 'aria-expanded' | 'aria-haspopup'>;
@@ -4,8 +4,10 @@ import { cn } from "../../../common/css/cn.js";
4
4
  import { Chip } from "../../Chip/Chip.js";
5
5
  import { Text, TextColor } from "../../Text/Text.js";
6
6
  import { Down12Icon } from "../../../icon/index.js";
7
+ import { AllSelectedChip } from "../AllSelectedChip/AllSelectedChip.js";
7
8
  import { useAsyncDropdownContext } from "../AsyncDropdownContext/AsyncDropdownContextProvider.js";
8
9
  import { chipsContainerGap, minChipsWidth } from "../lib/consts.js";
10
+ import { getAllSelectedChipState, getDefaultAllSelectedChipText } from "../lib/helpers.js";
9
11
  import { useChipsKeyDown } from "../lib/useChipsKeyDown.js";
10
12
  import { TooltipedChip, chipStyles } from "../TooltipedChip/TooltipedChip.js";
11
13
  import Input_module from "./Input.module.js";
@@ -13,6 +15,12 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
13
15
  const chipsContainerRef = useRef(null);
14
16
  const asyncDropdownContext = useAsyncDropdownContext();
15
17
  const selectedItems = asyncDropdownContext?.selectedValues ?? props.selectedItems;
18
+ const allSelectedChipState = getAllSelectedChipState({
19
+ asyncItems: asyncDropdownContext?.cachedItems,
20
+ canShowAllSelectedChip: props.canShowAllSelectedChip,
21
+ isAllSelected: props.isAllSelected,
22
+ selectedItems
23
+ });
16
24
  const [displayedSelectedItems, setDisplayedSelectedItems] = useState([]);
17
25
  const otherChipRef = useRef(null);
18
26
  const [otherElementsCount, setOtherElementsCount] = useState(0);
@@ -48,6 +56,7 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
48
56
  props.onItemDelete?.(item.value);
49
57
  if (ifFirstItem) containerRef.current?.focus();
50
58
  });
59
+ const hasVisibleValue = allSelectedChipState.isAllSelected || displayedSelectedItems.length;
51
60
  return /*#__PURE__*/ jsxs("div", {
52
61
  ...props.triggerAriaProps,
53
62
  id: props.id,
@@ -77,7 +86,7 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
77
86
  },
78
87
  "aria-disabled": props.disabled,
79
88
  children: [
80
- props.placeholder && !displayedSelectedItems.length && /*#__PURE__*/ jsx(Text.Body, {
89
+ props.placeholder && !hasVisibleValue && /*#__PURE__*/ jsx(Text.Body, {
81
90
  className: Input_module.placeholder,
82
91
  colorToken: TextColor.tertiary,
83
92
  children: props.placeholder
@@ -90,7 +99,12 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
90
99
  },
91
100
  "data-test-id": props.testId ? `${props.testId}-values` : '',
92
101
  children: [
93
- displayedSelectedItems.map((item, i)=>/*#__PURE__*/ jsx(TooltipedChip, {
102
+ allSelectedChipState.isAllSelected ? /*#__PURE__*/ jsx(AllSelectedChip, {
103
+ label: props.getAllSelectedChipText?.(allSelectedChipState.itemsCount) ?? getDefaultAllSelectedChipText(allSelectedChipState.itemsCount, props.allSelectedChipTextVariant),
104
+ disabled: props.disabled,
105
+ className: cn(chipStyles.chip, chipStyles.multiselectChip),
106
+ testId: props.testId ? `${props.testId}-all-selected` : void 0
107
+ }) : displayedSelectedItems.map((item, i)=>/*#__PURE__*/ jsx(TooltipedChip, {
94
108
  ref: (ref)=>chipRefs.current[i] = ref,
95
109
  text: item.label,
96
110
  minWidth: minChipsWidth,
@@ -106,7 +120,7 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
106
120
  renderSelectedItem: props.renderSelectedItem,
107
121
  item: item
108
122
  }, item.value)),
109
- !props.wrapSelectedItems && /*#__PURE__*/ jsx(Chip, {
123
+ !allSelectedChipState.isAllSelected && !props.wrapSelectedItems && /*#__PURE__*/ jsx(Chip, {
110
124
  ref: otherChipRef,
111
125
  className: cn(chipStyles.chip, chipStyles.multiselectChip),
112
126
  isActive: true,
@@ -117,7 +131,7 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
117
131
  },
118
132
  disabled: props.disabled,
119
133
  testId: `${props.testId}-is-many-selected`,
120
- children: props.getOtherText?.(otherElementsCount) ?? `ещё ${otherElementsCount}...`
134
+ children: props.getOtherText?.(otherElementsCount) ?? `еще ${otherElementsCount}...`
121
135
  })
122
136
  ]
123
137
  }),
@@ -2,7 +2,7 @@ import { type Key, type MutableRefObject, type ReactElement, type ReactNode, typ
2
2
  import { type InputProps } from './Input/Input';
3
3
  import { type MultiselectDropdownContentProps } from './DropdownContent/MultiselectDropdownContent';
4
4
  import { type ShortDropdownContentProps } from './ShortDropdownContent/ShortDropdownContent';
5
- import { type DropdownItem, type RenderSelectedItem } from './types';
5
+ import { type AllSelectedChipTextVariant, type DropdownItem, type GetAllSelectedChipText, type RenderSelectedItem } from './types';
6
6
  type SharedProps<T extends Key, DTO = unknown> = Pick<InputProps, 'placeholder' | 'getOtherText' | 'tooltipDelay'> & {
7
7
  id?: HTMLElement['id'];
8
8
  label?: string;
@@ -30,6 +30,8 @@ type SharedProps<T extends Key, DTO = unknown> = Pick<InputProps, 'placeholder'
30
30
  onSearch?: (value: string) => Promise<DropdownItem<T>[]>;
31
31
  renderItem?: (item: DropdownItem<T, DTO>) => ReactNode;
32
32
  renderSelectedItem?: RenderSelectedItem;
33
+ allSelectedChipTextVariant?: AllSelectedChipTextVariant;
34
+ getAllSelectedChipText?: GetAllSelectedChipText;
33
35
  };
34
36
  type DefaultProps<T extends Key, DTO = any> = MultiselectDropdownContentProps<T, DTO> & {
35
37
  variant?: 'default' | 'textarea';
@@ -46,4 +48,4 @@ export { useChipsKeyDown } from './lib/useChipsKeyDown';
46
48
  export { SelectedItemArchive, type SelectedItemArchiveProps, } from './SelectedItem/SelectedItemArchive';
47
49
  export { ShortDropdownContent, type ShortDropdownContentProps, } from './ShortDropdownContent/ShortDropdownContent';
48
50
  export { chipStyles, TooltipedChip, type TooltipedChipProps, } from './TooltipedChip/TooltipedChip';
49
- export { type DropdownItem } from './types';
51
+ export { type AllSelectedChipTextVariant, type DropdownItem, type GetAllSelectedChipText, } from './types';
@@ -1,14 +1,15 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, useCallback } from "react";
3
3
  import { cn } from "../../common/css/cn.js";
4
+ import { FieldRow } from "../_shared/FieldRow/FieldRow.js";
5
+ import { Info } from "../_shared/Info/Info.js";
4
6
  import { Input } from "./Input/Input.js";
5
7
  import { useId } from "../../hooks/useId/index.js";
6
8
  import { Dropdown, useDropdown } from "../Dropdown/Dropdown.js";
7
- import { FieldRow } from "../FieldRow/FieldRow.js";
8
- import { Info } from "../Info/Info.js";
9
9
  import { Label } from "../Label/Label.js";
10
10
  import { AsyncDropdownContextProvider, useAsyncDropdownContext } from "./AsyncDropdownContext/AsyncDropdownContextProvider.js";
11
11
  import { MultiselectDropdownContent } from "./DropdownContent/MultiselectDropdownContent.js";
12
+ import { isAllItemsSelected } from "./lib/helpers.js";
12
13
  import { useUpdateEffect } from "./lib/useUpdateEffect.js";
13
14
  import { ShortDropdownContent } from "./ShortDropdownContent/ShortDropdownContent.js";
14
15
  import { MultiselectTextField } from "./TextField/MultiselectTextField.js";
@@ -39,6 +40,7 @@ const Multiselect = /*#__PURE__*/ forwardRef((props, ref)=>{
39
40
  props.onCreateButtonClick(searchInputValue);
40
41
  if (props.closeDropdownOnCreateButtonClick) handleClose();
41
42
  };
43
+ const isAllSelected = props.showSelectAllCheckbox && isAllItemsSelected(props.items, props.values);
42
44
  return /*#__PURE__*/ jsxs("div", {
43
45
  ref: ref,
44
46
  className: cn(Multiselect_module.container, props.className ?? ''),
@@ -80,6 +82,10 @@ const Multiselect = /*#__PURE__*/ forwardRef((props, ref)=>{
80
82
  getOtherText: props.getOtherText,
81
83
  tooltipDelay: props.tooltipDelay,
82
84
  disabled: props.disabled,
85
+ canShowAllSelectedChip: props.showSelectAllCheckbox,
86
+ isAllSelected: isAllSelected,
87
+ allSelectedChipTextVariant: props.allSelectedChipTextVariant,
88
+ getAllSelectedChipText: props.getAllSelectedChipText,
83
89
  wrapSelectedItems: props.wrapSelectedItems,
84
90
  renderSelectedItem: props.renderSelectedItem,
85
91
  triggerAriaProps: triggerAriaProps
@@ -96,6 +102,10 @@ const Multiselect = /*#__PURE__*/ forwardRef((props, ref)=>{
96
102
  onItemDelete: handleItemDelete,
97
103
  tooltipDelay: props.tooltipDelay,
98
104
  disabled: props.disabled,
105
+ canShowAllSelectedChip: props.showSelectAllCheckbox,
106
+ isAllSelected: isAllSelected,
107
+ allSelectedChipTextVariant: props.allSelectedChipTextVariant,
108
+ getAllSelectedChipText: props.getAllSelectedChipText,
99
109
  renderSelectedItem: props.renderSelectedItem,
100
110
  triggerAriaProps: triggerAriaProps
101
111
  }),
@@ -117,6 +127,8 @@ const Multiselect = /*#__PURE__*/ forwardRef((props, ref)=>{
117
127
  onChange: props.onChange,
118
128
  values: props.values,
119
129
  getManyItemsChipText: props.getManyItemsChipText,
130
+ allSelectedChipTextVariant: props.allSelectedChipTextVariant,
131
+ getAllSelectedChipText: props.getAllSelectedChipText,
120
132
  getNotFoundText: props.getNotFoundText,
121
133
  showCreateButton: props.showCreateButton,
122
134
  getCreateButtonText: props.getCreateButtonText,
@@ -4,6 +4,7 @@ import { Button } from "../../Button/Button.js";
4
4
  import { Checkbox } from "../../Checkbox/Checkbox.js";
5
5
  import { Add16Icon } from "../../../icon/index.js";
6
6
  import { selectAllCheckboxDefaultText } from "../lib/consts.js";
7
+ import { canSelectAllItems } from "../lib/helpers.js";
7
8
  import { useItemKeyDown } from "../lib/useItemKeyDown.js";
8
9
  import { SelectAllCheckbox } from "../SelectAllCheckbox/SelectAllCheckbox.js";
9
10
  import { TooltipedOptionText } from "../TooltipedOptionText/TooltipedOptionText.js";
@@ -20,7 +21,7 @@ const ShortDropdownContent = (props)=>{
20
21
  className: ShortDropdownContent_module.itemsList,
21
22
  "data-test-id": props.testId ? `${props.testId}-items-list` : '',
22
23
  children: [
23
- props.showSelectAllCheckbox && /*#__PURE__*/ jsx(SelectAllCheckbox, {
24
+ props.showSelectAllCheckbox && canSelectAllItems(props.items) && /*#__PURE__*/ jsx(SelectAllCheckbox, {
24
25
  values: props.values,
25
26
  items: props.items,
26
27
  onChange: props.onChange,
@@ -1,5 +1,5 @@
1
1
  import { type AriaAttributes, type Ref } from 'react';
2
- import { type InputValue, type RenderSelectedItem } from '../types';
2
+ import { type AllSelectedChipTextVariant, type GetAllSelectedChipText, type InputValue, type RenderSelectedItem } from '../types';
3
3
  interface MultiselectTextFieldProps {
4
4
  id?: HTMLTextAreaElement['id'];
5
5
  selectedItems: InputValue[];
@@ -12,6 +12,10 @@ interface MultiselectTextFieldProps {
12
12
  onItemDelete?: (value: InputValue['value']) => void;
13
13
  tooltipDelay?: number;
14
14
  disabled?: boolean;
15
+ canShowAllSelectedChip?: boolean;
16
+ isAllSelected?: boolean;
17
+ allSelectedChipTextVariant?: AllSelectedChipTextVariant;
18
+ getAllSelectedChipText?: GetAllSelectedChipText;
15
19
  renderSelectedItem?: RenderSelectedItem;
16
20
  triggerAriaProps?: Pick<AriaAttributes, 'aria-controls' | 'aria-expanded' | 'aria-haspopup'>;
17
21
  }
@@ -3,10 +3,12 @@ import { useEffect, useRef, useState } from "react";
3
3
  import { cn } from "../../../common/css/cn.js";
4
4
  import { mergeRefs } from "../../../common/react/mergeRefs.js";
5
5
  import { Textfield } from "../../Textfield/Textfield.js";
6
+ import { AllSelectedChip } from "../AllSelectedChip/AllSelectedChip.js";
6
7
  import { useAsyncDropdownContext } from "../AsyncDropdownContext/AsyncDropdownContextProvider.js";
7
8
  import { minChipsWidth } from "../lib/consts.js";
9
+ import { getAllSelectedChipState, getDefaultAllSelectedChipText } from "../lib/helpers.js";
8
10
  import { useChipsKeyDown } from "../lib/useChipsKeyDown.js";
9
- import { TooltipedChip } from "../TooltipedChip/TooltipedChip.js";
11
+ import { TooltipedChip, chipStyles } from "../TooltipedChip/TooltipedChip.js";
10
12
  import MultiselectTextField_module from "./MultiselectTextField.module.js";
11
13
  const minHeight = 90;
12
14
  const defaultPadding = {
@@ -23,6 +25,12 @@ const MultiselectTextField = (props)=>{
23
25
  ]);
24
26
  const asyncDropdownContext = useAsyncDropdownContext();
25
27
  const selectedItems = asyncDropdownContext?.selectedValues ?? props.selectedItems;
28
+ const allSelectedChipState = getAllSelectedChipState({
29
+ asyncItems: asyncDropdownContext?.cachedItems,
30
+ canShowAllSelectedChip: props.canShowAllSelectedChip,
31
+ isAllSelected: props.isAllSelected,
32
+ selectedItems
33
+ });
26
34
  const [height, setHeight] = useState(`${minHeight}px`);
27
35
  const [padding, setPadding] = useState(defaultPadding);
28
36
  const chipsContainerStyle = {
@@ -96,7 +104,12 @@ const MultiselectTextField = (props)=>{
96
104
  /*#__PURE__*/ jsx("div", {
97
105
  className: MultiselectTextField_module.chipsContainer,
98
106
  style: chipsContainerStyle,
99
- children: selectedItems.map((item, index)=>/*#__PURE__*/ jsx(TooltipedChip, {
107
+ children: allSelectedChipState.isAllSelected ? /*#__PURE__*/ jsx(AllSelectedChip, {
108
+ label: props.getAllSelectedChipText?.(allSelectedChipState.itemsCount) ?? getDefaultAllSelectedChipText(allSelectedChipState.itemsCount, props.allSelectedChipTextVariant),
109
+ disabled: props.disabled,
110
+ className: cn(chipStyles.chip, chipStyles.multiselectChip, MultiselectTextField_module.chip),
111
+ testId: props.testId ? `${props.testId}-all-selected` : void 0
112
+ }) : selectedItems.map((item, index)=>/*#__PURE__*/ jsx(TooltipedChip, {
100
113
  minWidth: minChipsWidth,
101
114
  text: item.label,
102
115
  ref: (ref)=>chipRefs.current[index] = ref,
@@ -1,3 +1,3 @@
1
1
  export declare const minChipsWidth = 64;
2
2
  export declare const chipsContainerGap = 4;
3
- export declare const selectAllCheckboxDefaultText = "\u0412\u0441\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B";
3
+ export declare const selectAllCheckboxDefaultText = "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435";
@@ -1,4 +1,4 @@
1
1
  const minChipsWidth = 64;
2
2
  const chipsContainerGap = 4;
3
- const selectAllCheckboxDefaultText = 'Все элементы';
3
+ const selectAllCheckboxDefaultText = 'Выбрать все';
4
4
  export { chipsContainerGap, minChipsWidth, selectAllCheckboxDefaultText };
@@ -0,0 +1,24 @@
1
+ import { type Key } from 'react';
2
+ import type { AllSelectedChipTextVariant } from '../types';
3
+ type AllSelectedChipStateParams<T extends Key> = {
4
+ asyncItems?: {
5
+ value: T;
6
+ }[];
7
+ canShowAllSelectedChip?: boolean;
8
+ isAllSelected?: boolean;
9
+ selectedItems: {
10
+ value: T;
11
+ }[];
12
+ };
13
+ export declare const canSelectAllItems: <T extends Key>(items: {
14
+ value: T;
15
+ }[]) => boolean;
16
+ export declare const isAllItemsSelected: <T extends Key>(items: {
17
+ value: T;
18
+ }[], values: T[]) => boolean;
19
+ export declare const getAllSelectedChipState: <T extends Key>({ asyncItems, canShowAllSelectedChip, isAllSelected, selectedItems, }: AllSelectedChipStateParams<T>) => {
20
+ isAllSelected: boolean;
21
+ itemsCount: number;
22
+ };
23
+ export declare const getDefaultAllSelectedChipText: (itemsCount: number, variant?: AllSelectedChipTextVariant) => string;
24
+ export {};
@@ -0,0 +1,15 @@
1
+ const canSelectAllItems = (items)=>items.length > 1;
2
+ const isAllItemsSelected = (items, values)=>canSelectAllItems(items) && items.every((item)=>values.includes(item.value));
3
+ const getAllSelectedChipState = ({ asyncItems, canShowAllSelectedChip, isAllSelected, selectedItems })=>{
4
+ const selectedItemValues = selectedItems.map((item)=>item.value);
5
+ const isAllSelectedInAsyncContext = canShowAllSelectedChip && !!asyncItems && isAllItemsSelected(asyncItems, selectedItemValues);
6
+ return {
7
+ isAllSelected: Boolean(isAllSelected || isAllSelectedInAsyncContext),
8
+ itemsCount: asyncItems?.length || selectedItems.length
9
+ };
10
+ };
11
+ const getDefaultAllSelectedChipText = (itemsCount, variant = 'full')=>{
12
+ if ('short' === variant) return 'Выбраны все';
13
+ return `Выбраны все ${itemsCount}`;
14
+ };
15
+ export { canSelectAllItems, getAllSelectedChipState, getDefaultAllSelectedChipText, isAllItemsSelected };
@@ -9,6 +9,8 @@ export interface DropdownItem<T extends Key, DTO = unknown> {
9
9
  label: string;
10
10
  dto?: DTO;
11
11
  }
12
+ export type GetAllSelectedChipText = (itemsCount: number) => string;
13
+ export type AllSelectedChipTextVariant = 'full' | 'short';
12
14
  export type RenderSelectedItemProps = {
13
15
  element: ReactNode;
14
16
  chipRef: ForwardedRef<HTMLButtonElement> | undefined;
@@ -0,0 +1,34 @@
1
+ import { type HTMLAttributes, type Key, type ReactNode } from 'react';
2
+ import { type IHasTestId } from '../../common';
3
+ export interface PanelItem {
4
+ id: Key;
5
+ element: ReactNode;
6
+ width: number;
7
+ }
8
+ export interface PanelProps extends HTMLAttributes<HTMLDivElement>, IHasTestId {
9
+ items: PanelItem[];
10
+ /**
11
+ * maximum - 40
12
+ *
13
+ * @default 6
14
+ */
15
+ columnsCount?: number;
16
+ /**
17
+ * @default 12
18
+ */
19
+ rowGap?: number;
20
+ /**
21
+ * @default 20
22
+ */
23
+ columnGap?: number;
24
+ /**
25
+ * @default 38
26
+ */
27
+ minRowHeight?: number;
28
+ }
29
+ declare const ForwardedRefPanel: import("react").ForwardRefExoticComponent<PanelProps & import("react").RefAttributes<HTMLDivElement>>;
30
+ declare const Empty: (props: HTMLAttributes<HTMLDivElement>) => import("react/jsx-runtime").JSX.Element;
31
+ export declare const Panel: typeof ForwardedRefPanel & {
32
+ EmptyItem: typeof Empty;
33
+ };
34
+ export {};
@@ -0,0 +1,39 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { cn, getOptionalTestId } from "../../common/index.js";
4
+ import Panel_module from "./Panel.module.js";
5
+ const ForwardedRefPanel = /*#__PURE__*/ forwardRef(({ items, columnsCount: columnsCountProp = 6, rowGap = 12, columnGap = 20, minRowHeight = 38, testId, ...restProps }, ref)=>{
6
+ const columnsCount = Math.min(columnsCountProp, 40);
7
+ const containerStyles = {
8
+ '--panel-columns-count': columnsCount,
9
+ '--panel-row-gap': `${rowGap}px`,
10
+ '--panel-column-gap': `${columnGap}px`,
11
+ '--panel-min-row-height': `${minRowHeight}px`
12
+ };
13
+ const getItemStyles = (bentoItem)=>({
14
+ '--panel-item-width': Math.min(Math.round(bentoItem.width), columnsCount)
15
+ });
16
+ return /*#__PURE__*/ jsx("div", {
17
+ ...restProps,
18
+ ref: ref,
19
+ className: cn(Panel_module.container, restProps.className),
20
+ style: {
21
+ ...restProps.style,
22
+ ...containerStyles
23
+ },
24
+ "data-test-id": testId,
25
+ children: items.map((panelItem)=>/*#__PURE__*/ jsx("div", {
26
+ className: Panel_module.item,
27
+ style: getItemStyles(panelItem),
28
+ "data-test-id": getOptionalTestId(testId, `item-${panelItem.id}`),
29
+ children: panelItem.element
30
+ }, panelItem.id))
31
+ });
32
+ });
33
+ ForwardedRefPanel.displayName = 'Panel';
34
+ const Empty = (props)=>/*#__PURE__*/ jsx("div", {
35
+ ...props
36
+ });
37
+ const Panel = ForwardedRefPanel;
38
+ Panel.EmptyItem = Empty;
39
+ export { Panel };
@@ -0,0 +1,6 @@
1
+ import "./Panel_module.css";
2
+ const Panel_module = {
3
+ container: "container-iTBnxl",
4
+ item: "item-mDdH69"
5
+ };
6
+ export default Panel_module;
@@ -0,0 +1,17 @@
1
+ .container-iTBnxl {
2
+ --panel-columns-count: 6;
3
+ --panel-row-gap: 12px;
4
+ --panel-column-gap: 20px;
5
+ --panel-min-row-height: 38px;
6
+ grid-template-columns: repeat(var(--panel-columns-count), minmax(50px, 1fr));
7
+ grid-auto-rows: minmax(var(--panel-min-row-height), auto);
8
+ gap: var(--panel-row-gap) var(--panel-column-gap);
9
+ display: grid;
10
+ }
11
+
12
+ .item-mDdH69 {
13
+ --panel-item-width: 1;
14
+ grid-column: auto/span var(--panel-item-width);
15
+ overflow: hidden;
16
+ }
17
+
@@ -2,9 +2,9 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, useMemo } from "react";
3
3
  import { cn } from "../../common/css/cn.js";
4
4
  import { getOptionalTestId } from "../../common/testId/index.js";
5
+ import { Info } from "../_shared/Info/Info.js";
5
6
  import { Indicator } from "../Indicator/Indicator.js";
6
7
  import { getIndicatorProps } from "../Indicator/Indicator.helpers.js";
7
- import { Info } from "../Info/Info.js";
8
8
  import { RadiobuttonContent } from "./components/RadiobuttonContent.js";
9
9
  import { RadiobuttonHelp } from "./components/RadiobuttonHelp.js";
10
10
  import Radiobutton_module from "./Radiobutton.module.js";
@@ -52,6 +52,11 @@
52
52
  order: 1;
53
53
  }
54
54
 
55
+ .input-Z8mheX[type="radio"] {
56
+ margin-right: initial;
57
+ height: initial;
58
+ }
59
+
55
60
  .input-Z8mheX:focus {
56
61
  outline: none;
57
62
  }
@@ -7,7 +7,7 @@
7
7
  }
8
8
 
9
9
  .container-Ukb21O:focus-within {
10
- outline: 1px solid var(--dark-grey-dark-900);
10
+ outline: 1px solid var(--border-focused, #091739);
11
11
  color: var(--dark-grey-dark-900);
12
12
  border: none;
13
13
  }
@@ -1,11 +1,10 @@
1
1
  import { type ReactElement, type ReactNode } from 'react';
2
- import type { ISelectOption } from '../types';
3
2
  interface ArchivedInputValueProps {
4
- value: ISelectOption;
5
3
  input: ReactNode;
6
4
  isShowIcon: boolean;
7
- overlayText?: ReactNode;
5
+ inputHintText?: string;
8
6
  disabled?: boolean;
7
+ testId?: string;
9
8
  }
10
- export declare const ArchivedInputValue: (props: ArchivedInputValueProps) => ReactElement;
9
+ export declare const ArchivedInputValue: ({ input, isShowIcon, inputHintText, disabled, testId, }: ArchivedInputValueProps) => ReactElement;
11
10
  export {};
@@ -5,40 +5,35 @@ import { Hint } from "../../Hint/Hint.js";
5
5
  import { Text, TextColor } from "../../Text/Text.js";
6
6
  import { Archived16Icon } from "../../../icon/index.js";
7
7
  import ArchivedInputValue_module from "./ArchivedInputValue.module.js";
8
- const ArchivedInputValue = ({ input, value, isShowIcon, overlayText, disabled })=>{
8
+ const ArchivedInputValue = ({ input, isShowIcon, inputHintText = 'В архиве', disabled, testId })=>{
9
9
  const [visible, setVisible] = useState(false);
10
10
  const handleVisibleChange = (show)=>{
11
- setVisible(isShowIcon && !!value?.isArchived && show);
11
+ setVisible(isShowIcon && show);
12
12
  };
13
- return /*#__PURE__*/ jsxs(Fragment, {
14
- children: [
15
- /*#__PURE__*/ jsx(Hint, {
16
- visible: visible,
17
- onVisibleChange: handleVisibleChange,
18
- mouseEnterDelay: 0.3,
19
- overlay: /*#__PURE__*/ jsx(Fragment, {
20
- children: /*#__PURE__*/ jsx(Text.Body, {
21
- colorToken: TextColor.invert,
22
- preline: true,
23
- children: overlayText
24
- })
25
- }),
26
- children: input
13
+ return /*#__PURE__*/ jsx(Fragment, {
14
+ children: /*#__PURE__*/ jsx(Hint, {
15
+ visible: visible,
16
+ onVisibleChange: handleVisibleChange,
17
+ mouseEnterDelay: 0.3,
18
+ overlay: /*#__PURE__*/ jsx(Fragment, {
19
+ children: /*#__PURE__*/ jsx(Text.Body, {
20
+ colorToken: TextColor.invert,
21
+ preline: true,
22
+ children: inputHintText
23
+ })
27
24
  }),
28
- isShowIcon && value?.isArchived && /*#__PURE__*/ jsxs("div", {
29
- className: ArchivedInputValue_module.rightIconContainer,
25
+ children: /*#__PURE__*/ jsxs("div", {
26
+ className: ArchivedInputValue_module.textContainer,
30
27
  children: [
31
- /*#__PURE__*/ jsx(Text.Body, {
32
- className: ArchivedInputValue_module.rightIconText,
33
- children: value.label
34
- }),
35
- /*#__PURE__*/ jsx("div", {
28
+ input,
29
+ isShowIcon && /*#__PURE__*/ jsx("div", {
36
30
  className: cn(ArchivedInputValue_module.rightIcon, disabled && ArchivedInputValue_module.rightIconDisabled),
31
+ "data-test-id": testId ? `${testId}-archived-icon` : void 0,
37
32
  children: /*#__PURE__*/ jsx(Archived16Icon, {})
38
33
  })
39
34
  ]
40
35
  })
41
- ]
36
+ })
42
37
  });
43
38
  };
44
39
  export { ArchivedInputValue };