@vkontakte/vkui 5.0.2 → 5.0.3

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 (102) hide show
  1. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
  2. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  3. package/dist/cjs/components/CustomScrollView/CustomScrollView.js +3 -1
  4. package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
  5. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.d.ts +1 -0
  6. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +2 -1
  7. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  8. package/dist/cjs/components/FocusVisible/FocusVisible.js +2 -2
  9. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +3 -4
  10. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  11. package/dist/cjs/components/Popover/Popover.js +10 -1
  12. package/dist/cjs/components/Popover/Popover.js.map +1 -1
  13. package/dist/cjs/components/SplitCol/SplitCol.js +43 -26
  14. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  15. package/dist/cjs/components/Tooltip/Tooltip.d.ts +4 -0
  16. package/dist/cjs/components/Tooltip/Tooltip.js +3 -2
  17. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  18. package/dist/cjs/hooks/useEventListener.js +6 -4
  19. package/dist/cjs/hooks/useEventListener.js.map +1 -1
  20. package/dist/cjs/hooks/useMediaQueries.js +1 -0
  21. package/dist/cjs/hooks/useMediaQueries.js.map +1 -1
  22. package/dist/cjs/lib/adaptivity/types.d.ts +1 -1
  23. package/dist/cjs/lib/adaptivity/types.js.map +1 -1
  24. package/dist/cjs/lib/browser.js +0 -1
  25. package/dist/cjs/lib/browser.js.map +1 -1
  26. package/dist/cjs/shared/breakpoints.d.ts +1 -0
  27. package/dist/cjs/shared/breakpoints.js +1 -0
  28. package/dist/cjs/shared/breakpoints.js.map +1 -1
  29. package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
  30. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  31. package/dist/components/CustomScrollView/CustomScrollView.js +3 -1
  32. package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
  33. package/dist/components/CustomSelectOption/CustomSelectOption.d.ts +1 -0
  34. package/dist/components/CustomSelectOption/CustomSelectOption.js +2 -1
  35. package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  36. package/dist/components/FocusVisible/FocusVisible.js +2 -2
  37. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +3 -4
  38. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  39. package/dist/components/Popover/Popover.js +10 -1
  40. package/dist/components/Popover/Popover.js.map +1 -1
  41. package/dist/components/SplitCol/SplitCol.js +43 -26
  42. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  43. package/dist/components/Tooltip/Tooltip.d.ts +4 -0
  44. package/dist/components/Tooltip/Tooltip.js +3 -2
  45. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  46. package/dist/components.css +4 -4
  47. package/dist/components.css.map +1 -1
  48. package/dist/cssm/components/Alert/Alert.module.css +1 -1
  49. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
  50. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  51. package/dist/cssm/components/ChipsSelect/ChipsSelect.module.css +1 -1
  52. package/dist/cssm/components/CustomScrollView/CustomScrollView.js +3 -1
  53. package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
  54. package/dist/cssm/components/CustomSelect/CustomSelect.module.css +1 -1
  55. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.d.ts +1 -0
  56. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +2 -1
  57. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  58. package/dist/cssm/components/FocusVisible/FocusVisible.js +2 -2
  59. package/dist/cssm/components/FocusVisible/FocusVisible.module.css +1 -1
  60. package/dist/cssm/components/FormField/FormField.module.css +1 -1
  61. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.module.css +1 -1
  62. package/dist/cssm/components/Input/Input.module.css +1 -1
  63. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +3 -4
  64. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  65. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +1 -1
  66. package/dist/cssm/components/Popover/Popover.js +10 -1
  67. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  68. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +1 -1
  69. package/dist/cssm/components/SplitCol/SplitCol.js +43 -26
  70. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  71. package/dist/cssm/components/Tappable/Tappable.module.css +1 -1
  72. package/dist/cssm/components/Textarea/Textarea.module.css +1 -1
  73. package/dist/cssm/components/Tooltip/Tooltip.d.ts +4 -0
  74. package/dist/cssm/components/Tooltip/Tooltip.js +3 -2
  75. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  76. package/dist/cssm/components/WriteBar/WriteBar.module.css +1 -1
  77. package/dist/cssm/hooks/useEventListener.js +6 -4
  78. package/dist/cssm/hooks/useEventListener.js.map +1 -1
  79. package/dist/cssm/hooks/useMediaQueries.js +1 -0
  80. package/dist/cssm/hooks/useMediaQueries.js.map +1 -1
  81. package/dist/cssm/lib/adaptivity/types.d.ts +1 -1
  82. package/dist/cssm/lib/adaptivity/types.js.map +1 -1
  83. package/dist/cssm/lib/browser.js +0 -1
  84. package/dist/cssm/lib/browser.js.map +1 -1
  85. package/dist/cssm/shared/breakpoints.d.ts +1 -0
  86. package/dist/cssm/shared/breakpoints.js +1 -0
  87. package/dist/cssm/shared/breakpoints.js.map +1 -1
  88. package/dist/cssm/styles/components.css +4 -4
  89. package/dist/hooks/useEventListener.js +6 -4
  90. package/dist/hooks/useEventListener.js.map +1 -1
  91. package/dist/hooks/useMediaQueries.js +1 -0
  92. package/dist/hooks/useMediaQueries.js.map +1 -1
  93. package/dist/lib/adaptivity/types.d.ts +1 -1
  94. package/dist/lib/adaptivity/types.js.map +1 -1
  95. package/dist/lib/browser.js +0 -1
  96. package/dist/lib/browser.js.map +1 -1
  97. package/dist/shared/breakpoints.d.ts +1 -0
  98. package/dist/shared/breakpoints.js +1 -0
  99. package/dist/shared/breakpoints.js.map +1 -1
  100. package/dist/vkui.css +4 -4
  101. package/dist/vkui.css.map +1 -1
  102. package/package.json +1 -1
@@ -1 +1 @@
1
- .vkuiAlert{animation:vkui-animation-android-alert-intro .2s var(--vkui--animation_easing_platform);border-radius:var(--vkui--size_border_radius_paper--regular);box-shadow:var(--vkui--elevation4);color:var(--vkui--color_text_primary);margin:auto 24px;max-width:416px;min-width:280px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vkuiAlert--desktop{width:100%}.vkuiAlert--closing{opacity:0;transform:scale(.95);transition:transform .2s var(--vkui--animation_easing_platform),opacity .2s var(--vkui--animation_easing_platform)}.vkuiAlert:before{background-color:var(--vkui--color_background_modal);border-radius:inherit;content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.vkuiAlert__content{padding:24px 24px 20px;position:relative;z-index:2}.vkuiAlert__action{background:transparent;white-space:nowrap}.vkuiAlert__actions{display:flex;max-width:100%;padding:0 16px 16px;position:relative;z-index:2}.vkuiAlert__header{margin-bottom:8px}.vkuiAlert__text{color:var(--vkui--color_text_secondary)}.vkuiAlert--h .vkuiAlert__actions{justify-content:flex-end}.vkuiAlert--h .vkuiAlert__button{margin-left:8px}.vkuiAlert--v .vkuiAlert__actions{align-items:flex-end;flex-direction:column}.vkuiAlert--v .vkuiAlert__button{margin-bottom:4px;margin-top:4px}.vkuiAlert--v .vkuiAlert__button:first-child{margin-top:0}.vkuiAlert--v .vkuiAlert__button:last-child{margin-bottom:0}.vkuiAlert--ios{animation:vkui-animation-ios-alert-intro .3s var(--vkui--animation_easing_platform);box-shadow:none;min-width:270px;overflow:hidden;width:270px}.vkuiAlert--ios.vkuiAlert--closing{opacity:0;transform:none;transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiAlert--ios .vkuiAlert__content{padding:19px 16px 20px;text-align:center}.vkuiAlert--ios .vkuiAlert__header:not(:last-child){margin-bottom:7px}.vkuiAlert--ios .vkuiAlert__text{color:inherit}.vkuiAlert--ios .vkuiAlert__content:after{background:var(--vkui--color_separator_primary_alpha);bottom:0;content:"";height:1px;left:0;position:absolute;right:0;transform-origin:center bottom}.vkuiAlert--ios .vkuiAlert__actions{padding:initial}.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__actions{align-items:normal;flex-direction:column}.vkuiAlert--ios .vkuiAlert__action{border:0;border-radius:0;color:var(--vkui--color_text_accent);display:block;font-family:var(--vkui--font_family_base);font-size:17px;height:44px;line-height:44px;margin:0;overflow:hidden;padding:0 6px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis}.vkuiAlert--ios .vkuiAlert__action:active{z-index:1}.vkuiAlert--ios .vkuiAlert__action:after{background:var(--vkui--color_separator_primary_alpha);content:"";position:absolute}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:after{height:100%;right:0;top:0;transform-origin:right center;width:1px}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:last-child:after{content:none}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action{flex-basis:0;flex-grow:1;flex-shrink:1}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:first-child{border-bottom-left-radius:12px}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:last-child{border-bottom-right-radius:12px}.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:after{bottom:0;height:1px;left:0;transform-origin:center bottom;width:100%}.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:last-child:after{content:none}.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:last-child{border-radius:0 0 12px 12px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiAlert--ios .vkuiAlert__content:after,.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:after{transform:scaleY(.5)}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:after{transform:scaleX(.5)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiAlert--ios .vkuiAlert__content:after,.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:after{transform:scaleY(.33)}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:after{transform:scaleX(.33)}}.vkuiAlert--ios .vkuiAlert__action--mode-cancel{font-weight:600}.vkuiAlert--ios .vkuiAlert__action--mode-destructive{color:var(--vkui--color_text_negative)}.vkuiAlert--vkcom{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 96px rgba(0,0,0,.16);width:400px}.vkuiAlert--vkcom .vkuiAlert__content{padding:24px}.vkuiAlert--vkcom .vkuiAlert__actions{padding:0 24px 16px}.vkuiAlert--vkcom .vkuiAlert__button{order:2}.vkuiAlert--vkcom .vkuiAlert__button--mode-cancel{order:1}@keyframes vkui-animation-ios-alert-intro{0%{opacity:0;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes vkui-animation-android-alert-intro{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
1
+ .vkuiAlert{animation:vkui-animation-android-alert-intro .2s var(--vkui--animation_easing_platform);border-radius:var(--vkui--size_border_radius_paper--regular);box-shadow:var(--vkui--elevation4);color:var(--vkui--color_text_primary);margin:auto 24px;max-width:416px;min-width:280px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vkuiAlert--desktop{width:100%}.vkuiAlert--closing{opacity:0;transform:scale(.95);transition:transform .2s var(--vkui--animation_easing_platform),opacity .2s var(--vkui--animation_easing_platform)}.vkuiAlert:before{background-color:var(--vkui--color_background_modal);border-radius:inherit;content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.vkuiAlert__content{padding:24px 24px 20px;position:relative;z-index:2}.vkuiAlert__action{background:transparent;white-space:nowrap}.vkuiAlert__actions{display:flex;max-width:100%;padding:0 16px 16px;position:relative;z-index:2}.vkuiAlert__header{margin-bottom:8px}.vkuiAlert__text{color:var(--vkui--color_text_secondary)}.vkuiAlert--h .vkuiAlert__actions{justify-content:flex-end}.vkuiAlert--h .vkuiAlert__button{margin-left:8px}.vkuiAlert--v .vkuiAlert__actions{align-items:flex-end;flex-direction:column}.vkuiAlert--v .vkuiAlert__button{margin-bottom:4px;margin-top:4px}.vkuiAlert--v .vkuiAlert__button:first-child{margin-top:0}.vkuiAlert--v .vkuiAlert__button:last-child{margin-bottom:0}.vkuiAlert--ios{animation:vkui-animation-ios-alert-intro .3s var(--vkui--animation_easing_platform);box-shadow:none;min-width:270px;overflow:hidden;width:270px}.vkuiAlert--ios.vkuiAlert--closing{opacity:0;transform:none;transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiAlert--ios .vkuiAlert__content{padding:19px 16px 20px;text-align:center}.vkuiAlert--ios .vkuiAlert__header:not(:last-child){margin-bottom:7px}.vkuiAlert--ios .vkuiAlert__text{color:inherit}.vkuiAlert--ios .vkuiAlert__content:after{background:var(--vkui--color_separator_primary_alpha);bottom:0;content:"";height:1px;left:0;position:absolute;right:0;transform-origin:center bottom}.vkuiAlert--ios .vkuiAlert__actions{padding:initial}.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__actions{align-items:normal;flex-direction:column}.vkuiAlert--ios .vkuiAlert__action{border:0;border-radius:0;color:var(--vkui--color_text_accent);display:block;font-family:var(--vkui--font_family_base);font-size:17px;height:44px;line-height:44px;margin:0;overflow:hidden;padding:0 6px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis}.vkuiAlert--ios .vkuiAlert__action:active{z-index:1}.vkuiAlert--ios .vkuiAlert__action:after{background:var(--vkui--color_separator_primary_alpha);content:"";position:absolute}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:after{height:100%;right:0;top:0;transform-origin:right center;width:1px}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:last-child:after{content:none}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action{flex-basis:0;flex-grow:1;flex-shrink:1}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:first-child{border-bottom-left-radius:var(--vkui--size_border_radius_paper--regular)}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:last-child{border-bottom-right-radius:var(--vkui--size_border_radius_paper--regular)}.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:after{bottom:0;height:1px;left:0;transform-origin:center bottom;width:100%}.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:last-child:after{content:none}.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:last-child{border-radius:0 0 12px 12px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiAlert--ios .vkuiAlert__content:after,.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:after{transform:scaleY(.5)}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:after{transform:scaleX(.5)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiAlert--ios .vkuiAlert__content:after,.vkuiAlert--ios.vkuiAlert--v .vkuiAlert__action:after{transform:scaleY(.33)}.vkuiAlert--ios.vkuiAlert--h .vkuiAlert__action:after{transform:scaleX(.33)}}.vkuiAlert--ios .vkuiAlert__action--mode-cancel{font-weight:600}.vkuiAlert--ios .vkuiAlert__action--mode-destructive{color:var(--vkui--color_text_negative)}.vkuiAlert--vkcom{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 96px rgba(0,0,0,.16);width:400px}.vkuiAlert--vkcom .vkuiAlert__content{padding:24px}.vkuiAlert--vkcom .vkuiAlert__actions{padding:0 24px 16px}.vkuiAlert--vkcom .vkuiAlert__button{order:2}.vkuiAlert--vkcom .vkuiAlert__button--mode-cancel{order:1}@keyframes vkui-animation-ios-alert-intro{0%{opacity:0;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes vkui-animation-android-alert-intro{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
@@ -235,7 +235,7 @@ export var ChipsSelect = function ChipsSelect(props) {
235
235
  return !prevOpened;
236
236
  });
237
237
  };
238
- return /*#__PURE__*/React.createElement(FormField, {
238
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormField, {
239
239
  getRootRef: rootRef,
240
240
  style: style,
241
241
  className: classNamesString("vkuiChipsSelect", opened && (isPopperDirectionTop ? "vkuiChipsSelect--pop-up" : "vkuiChipsSelect--pop-down"), className),
@@ -270,7 +270,7 @@ export var ChipsSelect = function ChipsSelect(props) {
270
270
  getRef: getRef,
271
271
  disabled: disabled,
272
272
  onInputChange: handleInputChange
273
- })), opened && /*#__PURE__*/React.createElement(CustomSelectDropdown, {
273
+ }))), opened && /*#__PURE__*/React.createElement(CustomSelectDropdown, {
274
274
  targetRef: rootRef,
275
275
  placement: popupDirection,
276
276
  scrollBoxRef: scrollBoxRef,
@@ -1 +1 @@
1
- {"version":3,"file":"ChipsSelect.js","names":["React","DropdownIcon","classNamesString","ChipsInputBase","chipsInputDefaultProps","CustomSelectOption","useChipsSelect","noop","useDOM","Footnote","useExternRef","useGlobalEventListener","defaultFilterFn","CustomSelectDropdown","FormField","IconButton","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","chipsSelectDefaultProps","emptyText","creatableText","onChangeStart","creatable","fetching","showSelected","closeAfterSelect","options","filterFn","renderOption","props","ChipsSelect","propsWithDefault","style","onFocus","onKeyDown","className","getRef","getRootRef","disabled","placeholder","tabIndex","getOptionValue","getOptionLabel","getNewOptionData","renderChip","popupDirection","inputValue","before","fixDropdownWidth","forceDropdownPortal","restProps","document","useState","undefined","popperPlacement","setPopperPlacement","scrollBoxRef","useRef","rootRef","fieldValue","selectedOptions","opened","setOpened","addOptionFromInput","filteredOptions","addOption","handleInputChange","clearInput","focusedOption","setFocusedOption","focusedOptionIndex","setFocusedOptionIndex","showCreatable","Boolean","length","handleFocus","e","handleClickOutside","target","current","contains","chipsSelectOptions","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","handleKeyDown","key","defaultPrevented","preventDefault","option","includes","useEffect","findIndex","value","renderChipWrapper","renderChipProps","onRemoveWrapper","stopPropagation","onRemove","isPopperDirectionTop","onPlacementChange","useCallback","placement","onDropdownMouseLeave","observableRefs","useMemo","toggleOpened","prevOpened","readOnly","map","label","hovered","selected","find","selectedOption","children","onMouseDown","onMouseEnter"],"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { ChipOption, ChipValue, RenderChip } from \"../Chip/Chip\";\nimport { ChipsInputProps } from \"../ChipsInput/ChipsInput\";\nimport {\n ChipsInputBase,\n chipsInputDefaultProps,\n} from \"../ChipsInputBase/ChipsInputBase\";\nimport {\n CustomSelectOption,\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { useChipsSelect } from \"../../hooks/useChipsSelect\";\nimport { noop } from \"../../lib/utils\";\nimport { useDOM } from \"../../lib/dom\";\nimport { Footnote } from \"../Typography/Footnote/Footnote\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useGlobalEventListener } from \"../../hooks/useGlobalEventListener\";\nimport { defaultFilterFn } from \"../../lib/select\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport { FormField } from \"../FormField/FormField\";\nimport { IconButton } from \"../IconButton/IconButton\";\nimport styles from \"./ChipsSelect.module.css\";\n\nexport interface ChipsSelectProps<Option extends ChipOption>\n extends Omit<ChipsInputProps<Option>, \"after\"> {\n popupDirection?: \"top\" | \"bottom\";\n options?: Option[];\n filterFn?:\n | false\n | ((\n value?: string,\n option?: Option,\n getOptionLabel?: Pick<\n ChipsInputProps<Option>,\n \"getOptionLabel\"\n >[\"getOptionLabel\"]\n ) => boolean);\n /**\n * Возможность создавать чипы которых нет в списке (по enter или с помощью пункта в меню, см creatableText)\n */\n creatable?: boolean;\n /**\n * Отрисовка лоадера вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Показывать или скрывать уже выбранные опции\n */\n showSelected?: boolean;\n /**\n * Текст для пункта создающего чипы при клике, так же отвечает за то будет ли показан этот пункт (показывается после того как в списке не отсанется опций)\n */\n creatableText?: string;\n /**\n * Текст который показывается если список опций пуст\n */\n emptyText?: string;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (\n e: React.MouseEvent | React.KeyboardEvent,\n option: Option\n ) => void;\n /**\n * Закрытие выпадающего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n}\n\ntype FocusActionType = \"next\" | \"prev\";\n\nconst FOCUS_ACTION_NEXT: FocusActionType = \"next\";\nconst FOCUS_ACTION_PREV: FocusActionType = \"prev\";\n\nconst chipsSelectDefaultProps: ChipsSelectProps<any> = {\n ...chipsInputDefaultProps,\n emptyText: \"Ничего не найдено\",\n creatableText: \"Создать значение\",\n onChangeStart: noop,\n creatable: false,\n fetching: false,\n showSelected: true,\n closeAfterSelect: true,\n options: [],\n filterFn: defaultFilterFn,\n renderOption(props) {\n return <CustomSelectOption {...props} />;\n },\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ChipsSelect\n */\nexport const ChipsSelect = <Option extends ChipOption>(\n props: ChipsSelectProps<Option>\n) => {\n const propsWithDefault = { ...chipsSelectDefaultProps, ...props };\n const {\n style,\n onFocus,\n onKeyDown,\n className,\n fetching,\n renderOption,\n emptyText,\n getRef,\n getRootRef,\n disabled,\n placeholder,\n tabIndex,\n getOptionValue,\n getOptionLabel,\n showSelected,\n getNewOptionData,\n renderChip,\n popupDirection,\n creatable,\n filterFn,\n inputValue,\n creatableText,\n closeAfterSelect,\n onChangeStart,\n before,\n options,\n fixDropdownWidth,\n forceDropdownPortal,\n ...restProps\n } = propsWithDefault;\n\n const { document } = useDOM();\n\n const [popperPlacement, setPopperPlacement] = React.useState<\n Placement | undefined\n >(undefined);\n\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const rootRef = useExternRef(getRef);\n const {\n fieldValue,\n selectedOptions = [],\n opened,\n setOpened,\n addOptionFromInput,\n filteredOptions,\n addOption,\n handleInputChange,\n clearInput,\n focusedOption,\n setFocusedOption,\n focusedOptionIndex,\n setFocusedOptionIndex,\n } = useChipsSelect(propsWithDefault);\n\n const showCreatable = Boolean(\n creatable && creatableText && !filteredOptions.length && fieldValue\n );\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setOpened(true);\n setFocusedOptionIndex(0);\n onFocus!(e);\n };\n\n const handleClickOutside = (e: MouseEvent) => {\n if (\n e.target !== rootRef.current &&\n !rootRef.current?.contains(e.target as Node)\n ) {\n setOpened(false);\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number) => {\n const { length } = filteredOptions;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: FocusActionType) => {\n let index = typeof nextIndex !== \"number\" ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n index = index + 1;\n } else if (type === FOCUS_ACTION_PREV) {\n index = index - 1;\n }\n\n if (focusedOptionIndex != null) {\n focusOptionByIndex(index, focusedOptionIndex);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown!(e);\n\n if (e.key === \"ArrowUp\" && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_PREV);\n }\n }\n\n if (e.key === \"ArrowDown\" && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_NEXT);\n }\n }\n\n if (\n e.key === \"Enter\" &&\n !e.defaultPrevented &&\n opened &&\n focusedOptionIndex != null\n ) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (option) {\n onChangeStart!(e, option);\n\n if (!e.defaultPrevented) {\n addOption(option);\n setFocusedOptionIndex(null);\n clearInput();\n closeAfterSelect && setOpened(false);\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n }\n\n if ([\"Escape\", \"Tab\"].includes(e.key) && !e.defaultPrevented && opened) {\n setOpened(false);\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex != null && filteredOptions[focusedOptionIndex]) {\n setFocusedOption(filteredOptions[focusedOptionIndex]);\n } else if (focusedOptionIndex === null || focusedOptionIndex === 0) {\n setFocusedOption(null);\n }\n }, [focusedOptionIndex, filteredOptions, setFocusedOption]);\n\n React.useEffect(() => {\n const index = focusedOption\n ? filteredOptions.findIndex(({ value }) => value === focusedOption.value)\n : -1;\n\n if (\n index === -1 &&\n !!filteredOptions.length &&\n !showCreatable &&\n closeAfterSelect\n ) {\n setFocusedOption(filteredOptions[0]);\n }\n }, [\n filteredOptions,\n focusedOption,\n showCreatable,\n closeAfterSelect,\n setFocusedOption,\n ]);\n\n useGlobalEventListener(document, \"click\", handleClickOutside);\n\n const renderChipWrapper = (\n renderChipProps: RenderChip<Option> | undefined\n ) => {\n if (renderChipProps === undefined) {\n return null;\n }\n const onRemoveWrapper = (\n e: React.MouseEvent | undefined,\n value: ChipValue | undefined\n ) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n renderChipProps.onRemove?.(e, value);\n };\n\n return renderChip!({\n ...renderChipProps,\n onRemove: onRemoveWrapper,\n });\n };\n\n const isPopperDirectionTop = popperPlacement?.includes(\"top\");\n\n const onPlacementChange = React.useCallback(\n (placement?: Placement) => {\n setPopperPlacement(placement);\n },\n [setPopperPlacement]\n );\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n const observableRefs = React.useMemo(\n () => [scrollBoxRef, rootRef],\n [rootRef, scrollBoxRef]\n );\n\n const toggleOpened = () => {\n setOpened((prevOpened) => !prevOpened);\n };\n\n return (\n <FormField\n getRootRef={rootRef}\n style={style}\n className={classNamesString(\n styles[\"ChipsSelect\"],\n opened &&\n (isPopperDirectionTop\n ? styles[\"ChipsSelect--pop-up\"]\n : styles[\"ChipsSelect--pop-down\"]),\n className\n )}\n disabled={disabled}\n role=\"application\"\n aria-disabled={disabled}\n aria-readonly={restProps.readOnly}\n after={\n <IconButton\n className={styles[\"ChipsSelect__dropdown\"]}\n activeMode=\"\"\n hoverMode=\"\"\n // TODO: add label customization\n aria-label={opened ? \"Скрыть\" : \"Развернуть\"}\n onClick={toggleOpened}\n >\n <DropdownIcon\n className={styles[\"ChipsSelect__icon\"]}\n opened={opened}\n />\n </IconButton>\n }\n before={before}\n >\n <ChipsInputBase\n {...restProps}\n tabIndex={tabIndex}\n value={selectedOptions}\n inputValue={fieldValue}\n getNewOptionData={getNewOptionData}\n getOptionLabel={getOptionLabel}\n getOptionValue={getOptionValue}\n renderChip={renderChipWrapper}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n getRef={getRef}\n disabled={disabled}\n onInputChange={handleInputChange}\n />\n {opened && (\n <CustomSelectDropdown\n targetRef={rootRef}\n placement={popupDirection}\n scrollBoxRef={scrollBoxRef}\n observableRefs={observableRefs}\n onPlacementChange={onPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n className={styles[\"ChipsSelect__options\"]}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n >\n {showCreatable && (\n <CustomSelectOption\n hovered={focusedOptionIndex === 0}\n onMouseDown={addOptionFromInput}\n onMouseEnter={() => setFocusedOptionIndex(0)}\n >\n {creatableText}\n </CustomSelectOption>\n )}\n {!filteredOptions?.length && !showCreatable && emptyText ? (\n <Footnote className={styles[\"ChipsSelect__empty\"]}>\n {emptyText}\n </Footnote>\n ) : (\n filteredOptions.map((option: Option, index: number) => {\n const label = getOptionLabel!(option);\n const hovered =\n focusedOption &&\n getOptionValue!(option) === getOptionValue!(focusedOption);\n const selected = selectedOptions.find(\n (selectedOption: Option) => {\n return (\n getOptionValue!(selectedOption) === getOptionValue!(option)\n );\n }\n );\n const value = getOptionValue!(option);\n\n return (\n <React.Fragment key={`${typeof value}-${value}`}>\n {renderOption!({\n className: styles[\"ChipsSelect__option\"],\n option,\n hovered: Boolean(hovered),\n children: label,\n selected: !!selected,\n getRootRef: (e) => {\n if (e) {\n return (chipsSelectOptions[index] = e);\n }\n return undefined;\n },\n onMouseDown: (e: React.MouseEvent<HTMLDivElement>) => {\n onChangeStart?.(e, option);\n\n if (!e.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter: () => setFocusedOptionIndex(index),\n })}\n </React.Fragment>\n );\n })\n )}\n </CustomSelectDropdown>\n )}\n </FormField>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChipsSelect.js","names":["React","DropdownIcon","classNamesString","ChipsInputBase","chipsInputDefaultProps","CustomSelectOption","useChipsSelect","noop","useDOM","Footnote","useExternRef","useGlobalEventListener","defaultFilterFn","CustomSelectDropdown","FormField","IconButton","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","chipsSelectDefaultProps","emptyText","creatableText","onChangeStart","creatable","fetching","showSelected","closeAfterSelect","options","filterFn","renderOption","props","ChipsSelect","propsWithDefault","style","onFocus","onKeyDown","className","getRef","getRootRef","disabled","placeholder","tabIndex","getOptionValue","getOptionLabel","getNewOptionData","renderChip","popupDirection","inputValue","before","fixDropdownWidth","forceDropdownPortal","restProps","document","useState","undefined","popperPlacement","setPopperPlacement","scrollBoxRef","useRef","rootRef","fieldValue","selectedOptions","opened","setOpened","addOptionFromInput","filteredOptions","addOption","handleInputChange","clearInput","focusedOption","setFocusedOption","focusedOptionIndex","setFocusedOptionIndex","showCreatable","Boolean","length","handleFocus","e","handleClickOutside","target","current","contains","chipsSelectOptions","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","handleKeyDown","key","defaultPrevented","preventDefault","option","includes","useEffect","findIndex","value","renderChipWrapper","renderChipProps","onRemoveWrapper","stopPropagation","onRemove","isPopperDirectionTop","onPlacementChange","useCallback","placement","onDropdownMouseLeave","observableRefs","useMemo","toggleOpened","prevOpened","readOnly","map","label","hovered","selected","find","selectedOption","children","onMouseDown","onMouseEnter"],"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { ChipOption, ChipValue, RenderChip } from \"../Chip/Chip\";\nimport { ChipsInputProps } from \"../ChipsInput/ChipsInput\";\nimport {\n ChipsInputBase,\n chipsInputDefaultProps,\n} from \"../ChipsInputBase/ChipsInputBase\";\nimport {\n CustomSelectOption,\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { useChipsSelect } from \"../../hooks/useChipsSelect\";\nimport { noop } from \"../../lib/utils\";\nimport { useDOM } from \"../../lib/dom\";\nimport { Footnote } from \"../Typography/Footnote/Footnote\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useGlobalEventListener } from \"../../hooks/useGlobalEventListener\";\nimport { defaultFilterFn } from \"../../lib/select\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport { FormField } from \"../FormField/FormField\";\nimport { IconButton } from \"../IconButton/IconButton\";\nimport styles from \"./ChipsSelect.module.css\";\n\nexport interface ChipsSelectProps<Option extends ChipOption>\n extends Omit<ChipsInputProps<Option>, \"after\"> {\n popupDirection?: \"top\" | \"bottom\";\n options?: Option[];\n filterFn?:\n | false\n | ((\n value?: string,\n option?: Option,\n getOptionLabel?: Pick<\n ChipsInputProps<Option>,\n \"getOptionLabel\"\n >[\"getOptionLabel\"]\n ) => boolean);\n /**\n * Возможность создавать чипы которых нет в списке (по enter или с помощью пункта в меню, см creatableText)\n */\n creatable?: boolean;\n /**\n * Отрисовка лоадера вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Показывать или скрывать уже выбранные опции\n */\n showSelected?: boolean;\n /**\n * Текст для пункта создающего чипы при клике, так же отвечает за то будет ли показан этот пункт (показывается после того как в списке не отсанется опций)\n */\n creatableText?: string;\n /**\n * Текст который показывается если список опций пуст\n */\n emptyText?: string;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (\n e: React.MouseEvent | React.KeyboardEvent,\n option: Option\n ) => void;\n /**\n * Закрытие выпадающего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n}\n\ntype FocusActionType = \"next\" | \"prev\";\n\nconst FOCUS_ACTION_NEXT: FocusActionType = \"next\";\nconst FOCUS_ACTION_PREV: FocusActionType = \"prev\";\n\nconst chipsSelectDefaultProps: ChipsSelectProps<any> = {\n ...chipsInputDefaultProps,\n emptyText: \"Ничего не найдено\",\n creatableText: \"Создать значение\",\n onChangeStart: noop,\n creatable: false,\n fetching: false,\n showSelected: true,\n closeAfterSelect: true,\n options: [],\n filterFn: defaultFilterFn,\n renderOption(props) {\n return <CustomSelectOption {...props} />;\n },\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ChipsSelect\n */\nexport const ChipsSelect = <Option extends ChipOption>(\n props: ChipsSelectProps<Option>\n) => {\n const propsWithDefault = { ...chipsSelectDefaultProps, ...props };\n const {\n style,\n onFocus,\n onKeyDown,\n className,\n fetching,\n renderOption,\n emptyText,\n getRef,\n getRootRef,\n disabled,\n placeholder,\n tabIndex,\n getOptionValue,\n getOptionLabel,\n showSelected,\n getNewOptionData,\n renderChip,\n popupDirection,\n creatable,\n filterFn,\n inputValue,\n creatableText,\n closeAfterSelect,\n onChangeStart,\n before,\n options,\n fixDropdownWidth,\n forceDropdownPortal,\n ...restProps\n } = propsWithDefault;\n\n const { document } = useDOM();\n\n const [popperPlacement, setPopperPlacement] = React.useState<\n Placement | undefined\n >(undefined);\n\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const rootRef = useExternRef(getRef);\n const {\n fieldValue,\n selectedOptions = [],\n opened,\n setOpened,\n addOptionFromInput,\n filteredOptions,\n addOption,\n handleInputChange,\n clearInput,\n focusedOption,\n setFocusedOption,\n focusedOptionIndex,\n setFocusedOptionIndex,\n } = useChipsSelect(propsWithDefault);\n\n const showCreatable = Boolean(\n creatable && creatableText && !filteredOptions.length && fieldValue\n );\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setOpened(true);\n setFocusedOptionIndex(0);\n onFocus!(e);\n };\n\n const handleClickOutside = (e: MouseEvent) => {\n if (\n e.target !== rootRef.current &&\n !rootRef.current?.contains(e.target as Node)\n ) {\n setOpened(false);\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number) => {\n const { length } = filteredOptions;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: FocusActionType) => {\n let index = typeof nextIndex !== \"number\" ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n index = index + 1;\n } else if (type === FOCUS_ACTION_PREV) {\n index = index - 1;\n }\n\n if (focusedOptionIndex != null) {\n focusOptionByIndex(index, focusedOptionIndex);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown!(e);\n\n if (e.key === \"ArrowUp\" && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_PREV);\n }\n }\n\n if (e.key === \"ArrowDown\" && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_NEXT);\n }\n }\n\n if (\n e.key === \"Enter\" &&\n !e.defaultPrevented &&\n opened &&\n focusedOptionIndex != null\n ) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (option) {\n onChangeStart!(e, option);\n\n if (!e.defaultPrevented) {\n addOption(option);\n setFocusedOptionIndex(null);\n clearInput();\n closeAfterSelect && setOpened(false);\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n }\n\n if ([\"Escape\", \"Tab\"].includes(e.key) && !e.defaultPrevented && opened) {\n setOpened(false);\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex != null && filteredOptions[focusedOptionIndex]) {\n setFocusedOption(filteredOptions[focusedOptionIndex]);\n } else if (focusedOptionIndex === null || focusedOptionIndex === 0) {\n setFocusedOption(null);\n }\n }, [focusedOptionIndex, filteredOptions, setFocusedOption]);\n\n React.useEffect(() => {\n const index = focusedOption\n ? filteredOptions.findIndex(({ value }) => value === focusedOption.value)\n : -1;\n\n if (\n index === -1 &&\n !!filteredOptions.length &&\n !showCreatable &&\n closeAfterSelect\n ) {\n setFocusedOption(filteredOptions[0]);\n }\n }, [\n filteredOptions,\n focusedOption,\n showCreatable,\n closeAfterSelect,\n setFocusedOption,\n ]);\n\n useGlobalEventListener(document, \"click\", handleClickOutside);\n\n const renderChipWrapper = (\n renderChipProps: RenderChip<Option> | undefined\n ) => {\n if (renderChipProps === undefined) {\n return null;\n }\n const onRemoveWrapper = (\n e: React.MouseEvent | undefined,\n value: ChipValue | undefined\n ) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n renderChipProps.onRemove?.(e, value);\n };\n\n return renderChip!({\n ...renderChipProps,\n onRemove: onRemoveWrapper,\n });\n };\n\n const isPopperDirectionTop = popperPlacement?.includes(\"top\");\n\n const onPlacementChange = React.useCallback(\n (placement?: Placement) => {\n setPopperPlacement(placement);\n },\n [setPopperPlacement]\n );\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n const observableRefs = React.useMemo(\n () => [scrollBoxRef, rootRef],\n [rootRef, scrollBoxRef]\n );\n\n const toggleOpened = () => {\n setOpened((prevOpened) => !prevOpened);\n };\n\n return (\n <>\n <FormField\n getRootRef={rootRef}\n style={style}\n className={classNamesString(\n styles[\"ChipsSelect\"],\n opened &&\n (isPopperDirectionTop\n ? styles[\"ChipsSelect--pop-up\"]\n : styles[\"ChipsSelect--pop-down\"]),\n className\n )}\n disabled={disabled}\n role=\"application\"\n aria-disabled={disabled}\n aria-readonly={restProps.readOnly}\n after={\n <IconButton\n className={styles[\"ChipsSelect__dropdown\"]}\n activeMode=\"\"\n hoverMode=\"\"\n // TODO: add label customization\n aria-label={opened ? \"Скрыть\" : \"Развернуть\"}\n onClick={toggleOpened}\n >\n <DropdownIcon\n className={styles[\"ChipsSelect__icon\"]}\n opened={opened}\n />\n </IconButton>\n }\n before={before}\n >\n <ChipsInputBase\n {...restProps}\n tabIndex={tabIndex}\n value={selectedOptions}\n inputValue={fieldValue}\n getNewOptionData={getNewOptionData}\n getOptionLabel={getOptionLabel}\n getOptionValue={getOptionValue}\n renderChip={renderChipWrapper}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n getRef={getRef}\n disabled={disabled}\n onInputChange={handleInputChange}\n />\n </FormField>\n {opened && (\n <CustomSelectDropdown\n targetRef={rootRef}\n placement={popupDirection}\n scrollBoxRef={scrollBoxRef}\n observableRefs={observableRefs}\n onPlacementChange={onPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n className={styles[\"ChipsSelect__options\"]}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n >\n {showCreatable && (\n <CustomSelectOption\n hovered={focusedOptionIndex === 0}\n onMouseDown={addOptionFromInput}\n onMouseEnter={() => setFocusedOptionIndex(0)}\n >\n {creatableText}\n </CustomSelectOption>\n )}\n {!filteredOptions?.length && !showCreatable && emptyText ? (\n <Footnote className={styles[\"ChipsSelect__empty\"]}>\n {emptyText}\n </Footnote>\n ) : (\n filteredOptions.map((option: Option, index: number) => {\n const label = getOptionLabel!(option);\n const hovered =\n focusedOption &&\n getOptionValue!(option) === getOptionValue!(focusedOption);\n const selected = selectedOptions.find(\n (selectedOption: Option) => {\n return (\n getOptionValue!(selectedOption) === getOptionValue!(option)\n );\n }\n );\n const value = getOptionValue!(option);\n\n return (\n <React.Fragment key={`${typeof value}-${value}`}>\n {renderOption!({\n className: styles[\"ChipsSelect__option\"],\n option,\n hovered: Boolean(hovered),\n children: label,\n selected: !!selected,\n getRootRef: (e) => {\n if (e) {\n return (chipsSelectOptions[index] = e);\n }\n return undefined;\n },\n onMouseDown: (e: React.MouseEvent<HTMLDivElement>) => {\n onChangeStart?.(e, option);\n\n if (!e.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter: () => setFocusedOptionIndex(index),\n })}\n </React.Fragment>\n );\n })\n )}\n </CustomSelectDropdown>\n )}\n </>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- .vkuiChipsSelect{position:relative}.vkuiChipsSelect__dropdown{cursor:pointer}.vkuiChipsSelect__icon{pointer-events:none}.vkuiChipsSelect__empty{color:var(--vkui--color_text_secondary);padding:12px 0;text-align:center}
1
+ .vkuiChipsSelect{position:relative}.vkuiChipsSelect__dropdown{cursor:pointer}.vkuiChipsSelect__icon{pointer-events:none}.vkuiChipsSelect__empty{color:var(--vkui--color_text_secondary);padding:12px 0;text-align:center}.vkuiChipsSelect--pop-down{border-bottom-left-radius:0;border-bottom-right-radius:0}.vkuiChipsSelect--pop-up{border-top-left-radius:0;border-top-right-radius:0}
@@ -5,6 +5,7 @@ import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect";
5
5
  import { useExternRef } from "../../hooks/useExternRef";
6
6
  import { useEventListener } from "../../hooks/useEventListener";
7
7
  import { useTrackerVisibility } from "./useTrackerVisibility";
8
+ import { stopPropagation } from "../../lib/utils";
8
9
  import "./CustomScrollView.module.css";
9
10
  export var CustomScrollView = function CustomScrollView(_ref) {
10
11
  var className = _ref.className,
@@ -139,7 +140,8 @@ export var CustomScrollView = function CustomScrollView(_ref) {
139
140
  className: classNamesString("vkuiCustomScrollView", className)
140
141
  }, /*#__PURE__*/React.createElement("div", {
141
142
  className: "vkuiCustomScrollView__barY",
142
- ref: barY
143
+ ref: barY,
144
+ onClick: stopPropagation
143
145
  }, /*#__PURE__*/React.createElement("div", {
144
146
  className: classNamesString("vkuiCustomScrollView__trackerY", !trackerVisible && "vkuiCustomScrollView__trackerY--hidden"),
145
147
  onMouseEnter: autoHideScrollbar ? onTrackerMouseEnter : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"CustomScrollView.js","names":["React","useDOM","classNamesString","useIsomorphicLayoutEffect","useExternRef","useEventListener","useTrackerVisibility","CustomScrollView","className","children","externalBoxRef","boxRef","windowResize","autoHideScrollbar","autoHideScrollbarDelay","document","window","ratio","useRef","NaN","lastTrackerTop","clientHeight","trackerHeight","scrollHeight","transformProp","startY","trackerTop","barY","trackerY","setTrackerPosition","scrollTop","current","style","setTrackerPositionFromScroll","progress","resize","localClientHeight","localScrollHeight","localRatio","localTrackerHeight","Math","max","display","height","resizeHandler","add","prop","undefined","setScrollPositionFromTracker","onMove","e","preventDefault","diff","clientY","position","min","trackerVisible","onTargetScroll","onTrackerDragStart","onTrackerDragStop","onTrackerMouseEnter","onTrackerMouseLeave","onUp","unsubscribe","scroll","listeners","subscribe","el","forEach","l","remove","onDragStart"],"sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { DOMProps, useDOM } from \"../../lib/dom\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport {\n TrackerOptionsProps,\n useTrackerVisibility,\n} from \"./useTrackerVisibility\";\nimport styles from \"./CustomScrollView.module.css\";\n\nexport interface CustomScrollViewProps extends DOMProps, TrackerOptionsProps {\n windowResize?: boolean;\n boxRef?: React.Ref<HTMLDivElement>;\n className?: HTMLDivElement[\"className\"];\n children: React.ReactNode;\n}\n\nexport const CustomScrollView = ({\n className,\n children,\n boxRef: externalBoxRef,\n windowResize,\n autoHideScrollbar = false,\n autoHideScrollbarDelay,\n}: CustomScrollViewProps) => {\n const { document, window } = useDOM();\n\n const ratio = React.useRef(NaN);\n const lastTrackerTop = React.useRef(0);\n const clientHeight = React.useRef(0);\n const trackerHeight = React.useRef(0);\n const scrollHeight = React.useRef(0);\n const transformProp = React.useRef(\"\");\n const startY = React.useRef(0);\n const trackerTop = React.useRef(0);\n\n const boxRef = useExternRef(externalBoxRef);\n\n const barY = React.useRef<HTMLDivElement>(null);\n const trackerY = React.useRef<HTMLDivElement>(null);\n\n const setTrackerPosition = (scrollTop: number) => {\n lastTrackerTop.current = scrollTop;\n if (trackerY.current !== null) {\n (trackerY.current.style as any)[\n transformProp.current\n ] = `translate(0, ${scrollTop}px)`;\n }\n };\n\n const setTrackerPositionFromScroll = (scrollTop: number) => {\n const progress = scrollTop / (scrollHeight.current - clientHeight.current);\n setTrackerPosition(\n (clientHeight.current - trackerHeight.current) * progress\n );\n };\n\n const resize = () => {\n if (!boxRef.current || !barY.current || !trackerY.current) {\n return;\n }\n const localClientHeight = boxRef.current.clientHeight;\n const localScrollHeight = boxRef.current.scrollHeight;\n const localRatio = localClientHeight / localScrollHeight;\n const localTrackerHeight = Math.max(localClientHeight * localRatio, 40);\n\n ratio.current = localRatio;\n clientHeight.current = localClientHeight;\n scrollHeight.current = localScrollHeight;\n trackerHeight.current = localTrackerHeight;\n\n if (localRatio >= 1) {\n barY.current.style.display = \"none\";\n } else {\n barY.current.style.display = \"\";\n trackerY.current.style.height = `${localTrackerHeight}px`;\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n }\n };\n\n const resizeHandler = useEventListener(\"resize\", resize);\n\n useIsomorphicLayoutEffect(() => {\n if (windowResize && window) {\n resizeHandler.add(window);\n }\n }, [windowResize, window]);\n\n useIsomorphicLayoutEffect(() => {\n let style = trackerY.current?.style;\n let prop = \"\";\n if (style !== undefined) {\n if (\"transform\" in style) {\n prop = \"transform\";\n } else if (\"webkitTransform\" in style) {\n prop = \"webkitTransform\";\n }\n }\n transformProp.current = prop;\n }, []);\n\n useIsomorphicLayoutEffect(resize);\n\n const setScrollPositionFromTracker = (trackerTop: number) => {\n const progress =\n trackerTop / (clientHeight.current - trackerHeight.current);\n if (boxRef.current !== null) {\n boxRef.current.scrollTop =\n (scrollHeight.current - clientHeight.current) * progress;\n }\n };\n\n const onMove = (e: MouseEvent) => {\n e.preventDefault();\n const diff = e.clientY - startY.current;\n const position = Math.min(\n Math.max(trackerTop.current + diff, 0),\n clientHeight.current - trackerHeight.current\n );\n\n setScrollPositionFromTracker(position);\n };\n\n const {\n trackerVisible,\n onTargetScroll,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n } = useTrackerVisibility(autoHideScrollbar, autoHideScrollbarDelay);\n\n const onUp = (e: MouseEvent) => {\n e.preventDefault();\n\n if (autoHideScrollbar) {\n onTrackerDragStop();\n }\n\n unsubscribe();\n };\n\n const scroll = () => {\n if (ratio.current >= 1 || !boxRef.current) {\n return;\n }\n\n if (autoHideScrollbar) {\n onTargetScroll();\n }\n\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n };\n\n const listeners = [\n useEventListener(\"mousemove\", onMove),\n useEventListener(\"mouseup\", onUp),\n ];\n\n function subscribe(el: Document | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n const onDragStart = (e: React.MouseEvent) => {\n e.preventDefault();\n startY.current = e.clientY;\n trackerTop.current = lastTrackerTop.current;\n\n if (autoHideScrollbar) {\n onTrackerDragStart();\n }\n\n subscribe(document);\n };\n\n return (\n <div className={classNamesString(styles[\"CustomScrollView\"], className)}>\n <div className={styles[\"CustomScrollView__barY\"]} ref={barY}>\n <div\n className={classNamesString(\n styles[\"CustomScrollView__trackerY\"],\n !trackerVisible && styles[`CustomScrollView__trackerY--hidden`]\n )}\n onMouseEnter={autoHideScrollbar ? onTrackerMouseEnter : undefined}\n onMouseLeave={autoHideScrollbar ? onTrackerMouseLeave : undefined}\n ref={trackerY}\n onMouseDown={onDragStart}\n />\n </div>\n\n <div\n className={styles[\"CustomScrollView__box\"]}\n tabIndex={-1}\n ref={boxRef}\n onScroll={scroll}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"CustomScrollView.js","names":["React","useDOM","classNamesString","useIsomorphicLayoutEffect","useExternRef","useEventListener","useTrackerVisibility","stopPropagation","CustomScrollView","className","children","externalBoxRef","boxRef","windowResize","autoHideScrollbar","autoHideScrollbarDelay","document","window","ratio","useRef","NaN","lastTrackerTop","clientHeight","trackerHeight","scrollHeight","transformProp","startY","trackerTop","barY","trackerY","setTrackerPosition","scrollTop","current","style","setTrackerPositionFromScroll","progress","resize","localClientHeight","localScrollHeight","localRatio","localTrackerHeight","Math","max","display","height","resizeHandler","add","prop","undefined","setScrollPositionFromTracker","onMove","e","preventDefault","diff","clientY","position","min","trackerVisible","onTargetScroll","onTrackerDragStart","onTrackerDragStop","onTrackerMouseEnter","onTrackerMouseLeave","onUp","unsubscribe","scroll","listeners","subscribe","el","forEach","l","remove","onDragStart"],"sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { DOMProps, useDOM } from \"../../lib/dom\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport {\n TrackerOptionsProps,\n useTrackerVisibility,\n} from \"./useTrackerVisibility\";\nimport { stopPropagation } from \"../../lib/utils\";\nimport styles from \"./CustomScrollView.module.css\";\n\nexport interface CustomScrollViewProps extends DOMProps, TrackerOptionsProps {\n windowResize?: boolean;\n boxRef?: React.Ref<HTMLDivElement>;\n className?: HTMLDivElement[\"className\"];\n children: React.ReactNode;\n}\n\nexport const CustomScrollView = ({\n className,\n children,\n boxRef: externalBoxRef,\n windowResize,\n autoHideScrollbar = false,\n autoHideScrollbarDelay,\n}: CustomScrollViewProps) => {\n const { document, window } = useDOM();\n\n const ratio = React.useRef(NaN);\n const lastTrackerTop = React.useRef(0);\n const clientHeight = React.useRef(0);\n const trackerHeight = React.useRef(0);\n const scrollHeight = React.useRef(0);\n const transformProp = React.useRef(\"\");\n const startY = React.useRef(0);\n const trackerTop = React.useRef(0);\n\n const boxRef = useExternRef(externalBoxRef);\n\n const barY = React.useRef<HTMLDivElement>(null);\n const trackerY = React.useRef<HTMLDivElement>(null);\n\n const setTrackerPosition = (scrollTop: number) => {\n lastTrackerTop.current = scrollTop;\n if (trackerY.current !== null) {\n (trackerY.current.style as any)[\n transformProp.current\n ] = `translate(0, ${scrollTop}px)`;\n }\n };\n\n const setTrackerPositionFromScroll = (scrollTop: number) => {\n const progress = scrollTop / (scrollHeight.current - clientHeight.current);\n setTrackerPosition(\n (clientHeight.current - trackerHeight.current) * progress\n );\n };\n\n const resize = () => {\n if (!boxRef.current || !barY.current || !trackerY.current) {\n return;\n }\n const localClientHeight = boxRef.current.clientHeight;\n const localScrollHeight = boxRef.current.scrollHeight;\n const localRatio = localClientHeight / localScrollHeight;\n const localTrackerHeight = Math.max(localClientHeight * localRatio, 40);\n\n ratio.current = localRatio;\n clientHeight.current = localClientHeight;\n scrollHeight.current = localScrollHeight;\n trackerHeight.current = localTrackerHeight;\n\n if (localRatio >= 1) {\n barY.current.style.display = \"none\";\n } else {\n barY.current.style.display = \"\";\n trackerY.current.style.height = `${localTrackerHeight}px`;\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n }\n };\n\n const resizeHandler = useEventListener(\"resize\", resize);\n\n useIsomorphicLayoutEffect(() => {\n if (windowResize && window) {\n resizeHandler.add(window);\n }\n }, [windowResize, window]);\n\n useIsomorphicLayoutEffect(() => {\n let style = trackerY.current?.style;\n let prop = \"\";\n if (style !== undefined) {\n if (\"transform\" in style) {\n prop = \"transform\";\n } else if (\"webkitTransform\" in style) {\n prop = \"webkitTransform\";\n }\n }\n transformProp.current = prop;\n }, []);\n\n useIsomorphicLayoutEffect(resize);\n\n const setScrollPositionFromTracker = (trackerTop: number) => {\n const progress =\n trackerTop / (clientHeight.current - trackerHeight.current);\n if (boxRef.current !== null) {\n boxRef.current.scrollTop =\n (scrollHeight.current - clientHeight.current) * progress;\n }\n };\n\n const onMove = (e: MouseEvent) => {\n e.preventDefault();\n const diff = e.clientY - startY.current;\n const position = Math.min(\n Math.max(trackerTop.current + diff, 0),\n clientHeight.current - trackerHeight.current\n );\n\n setScrollPositionFromTracker(position);\n };\n\n const {\n trackerVisible,\n onTargetScroll,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n } = useTrackerVisibility(autoHideScrollbar, autoHideScrollbarDelay);\n\n const onUp = (e: MouseEvent) => {\n e.preventDefault();\n\n if (autoHideScrollbar) {\n onTrackerDragStop();\n }\n\n unsubscribe();\n };\n\n const scroll = () => {\n if (ratio.current >= 1 || !boxRef.current) {\n return;\n }\n\n if (autoHideScrollbar) {\n onTargetScroll();\n }\n\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n };\n\n const listeners = [\n useEventListener(\"mousemove\", onMove),\n useEventListener(\"mouseup\", onUp),\n ];\n\n function subscribe(el: Document | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n const onDragStart = (e: React.MouseEvent) => {\n e.preventDefault();\n startY.current = e.clientY;\n trackerTop.current = lastTrackerTop.current;\n\n if (autoHideScrollbar) {\n onTrackerDragStart();\n }\n\n subscribe(document);\n };\n\n return (\n <div className={classNamesString(styles[\"CustomScrollView\"], className)}>\n <div\n className={styles[\"CustomScrollView__barY\"]}\n ref={barY}\n onClick={stopPropagation}\n >\n <div\n className={classNamesString(\n styles[\"CustomScrollView__trackerY\"],\n !trackerVisible && styles[`CustomScrollView__trackerY--hidden`]\n )}\n onMouseEnter={autoHideScrollbar ? onTrackerMouseEnter : undefined}\n onMouseLeave={autoHideScrollbar ? onTrackerMouseLeave : undefined}\n ref={trackerY}\n onMouseDown={onDragStart}\n />\n </div>\n\n <div\n className={styles[\"CustomScrollView__box\"]}\n tabIndex={-1}\n ref={boxRef}\n onScroll={scroll}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- .vkuiCustomSelect{cursor:pointer;display:block;position:relative;width:100%}.vkuiCustomSelect__control{display:none}.vkuiCustomSelect__empty{color:var(--vkui--color_text_secondary);padding:12px 0;text-align:center}.vkuiCustomSelect__fetching{align-items:center;display:flex;justify-content:center}
1
+ .vkuiCustomSelect{cursor:pointer;display:block;position:relative;width:100%}.vkuiCustomSelect--pop-down{border-bottom-left-radius:0;border-bottom-right-radius:0}.vkuiCustomSelect--pop-up{border-top-left-radius:0;border-top-right-radius:0}.vkuiCustomSelect__control{display:none}.vkuiCustomSelect__empty{color:var(--vkui--color_text_secondary);padding:12px 0;text-align:center}.vkuiCustomSelect__fetching{align-items:center;display:flex;justify-content:center}
@@ -3,6 +3,7 @@ import { HasRootRef } from "../../types";
3
3
  export interface CustomSelectOptionProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement> {
4
4
  /**
5
5
  * Вставляет основной контент.
6
+ * @deprecated since v6.0.0
6
7
  */
7
8
  option?: any;
8
9
  /**
@@ -40,7 +40,8 @@ export var CustomSelectOption = function CustomSelectOption(_ref) {
40
40
  }, styleProp) : styleProp;
41
41
  }, [hierarchy, styleProp]);
42
42
  if (!!option && process.env.NODE_ENV === "development") {
43
- warn("Свойство option было добавлено по ошибке и будет удалено в 5.0.0.");
43
+ // TODO v6.0.0. Удалить св-во `option`
44
+ warn("Свойство option было добавлено по ошибке и будет удалено в v6.0.0.");
44
45
  }
45
46
  return /*#__PURE__*/React.createElement(Paragraph, _extends({}, restProps, {
46
47
  Component: "div",
@@ -1 +1 @@
1
- {"version":3,"file":"CustomSelectOption.js","names":["React","Icon16Done","classNamesString","hasReactNode","Paragraph","Footnote","useAdaptivity","warnOnce","getSizeYClassName","warn","CustomSelectOption","children","hierarchy","hovered","selected","before","after","option","description","disabled","styleProp","style","className","restProps","title","undefined","sizeY","useMemo","process","env","NODE_ENV"],"sources":["../../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Icon16Done } from \"@vkontakte/icons\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Paragraph } from \"../Typography/Paragraph/Paragraph\";\nimport { Footnote } from \"../Typography/Footnote/Footnote\";\nimport { HasRootRef } from \"../../types\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { getSizeYClassName } from \"../../helpers/getSizeYClassName\";\nimport styles from \"./CustomSelectOption.module.css\";\n\nexport interface CustomSelectOptionProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * Вставляет основной контент.\n */\n option?: any;\n /**\n * Добавляет описание под основным блоком.\n */\n description?: React.ReactNode;\n /**\n * Вставляет элемент в начало блока перед основным контентом.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n before?: React.ReactNode;\n /**\n * Вставляет элемент в конец блока после основного контента.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n after?: React.ReactNode;\n /**\n * Позволяет создавать вложенность.\n */\n hierarchy?: number;\n /**\n * Включает состояние выбранного элемента списка.\n */\n selected?: boolean;\n /**\n * Включает состояние наведения.\n */\n hovered?: boolean;\n /**\n * Включает состояние фокуса.\n */\n focused?: boolean;\n /**\n * Блокирует весь блок.\n */\n disabled?: boolean;\n}\n\nconst warn = warnOnce(\"CustomSelectOption\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelectOption\n */\nexport const CustomSelectOption = ({\n children,\n hierarchy = 0,\n hovered,\n selected,\n before,\n after,\n option,\n description,\n disabled,\n style: styleProp,\n className,\n ...restProps\n}: CustomSelectOptionProps) => {\n const title = typeof children === \"string\" ? children : undefined;\n const { sizeY } = useAdaptivity();\n const style = React.useMemo(\n () =>\n hierarchy > 0\n ? {\n \"--vkui_internal--custom_select_option_hierarchy_level\": hierarchy,\n ...styleProp,\n }\n : styleProp,\n [hierarchy, styleProp]\n );\n\n if (!!option && process.env.NODE_ENV === \"development\") {\n warn(\"Свойство option было добавлено по ошибке и будет удалено в 5.0.0.\");\n }\n\n return (\n <Paragraph\n {...restProps}\n Component=\"div\"\n role=\"option\"\n title={title}\n aria-disabled={disabled}\n aria-selected={selected}\n className={classNamesString(\n styles[\"CustomSelectOption\"],\n getSizeYClassName(styles[\"CustomSelectOption\"], sizeY),\n hovered && !disabled && styles[\"CustomSelectOption--hover\"],\n // Note: пустой класс\n selected && styles[\"CustomSelectOption--selected\"],\n disabled && styles[\"CustomSelectOption--disabled\"],\n hierarchy > 0 && styles[\"CustomSelectOption--hierarchy\"],\n className\n )}\n style={style}\n >\n {hasReactNode(before) && (\n <div className={styles[\"CustomSelectOption__before\"]}>{before}</div>\n )}\n <div className={styles[\"CustomSelectOption__main\"]}>\n <div className={styles[\"CustomSelectOption__children\"]}>{children}</div>\n {hasReactNode(description) && (\n <Footnote className={styles[\"CustomSelectOption__description\"]}>\n {description}\n </Footnote>\n )}\n </div>\n <div className={styles[\"CustomSelectOption__after\"]}>\n {hasReactNode(after) && (\n <div className={styles[\"CustomSelectOption__afterIn\"]}>{after}</div>\n )}\n {selected && (\n <Icon16Done className={styles[\"CustomSelectOption__selectedIcon\"]} />\n )}\n </div>\n </Paragraph>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,gBAAgB,QAAQ,sBAAsB;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,SAAS,QAAQ,mCAAmC;AAC7D,SAASC,QAAQ,QAAQ,iCAAiC;AAE1D,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,iBAAiB,QAAQ,iCAAiC;AAAC;AA8CpE,IAAMC,IAAI,GAAGF,QAAQ,CAAC,oBAAoB,CAAC;;AAE3C;AACA;AACA;AACA,OAAO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAkB,OAaA;EAAA,IAZ7BC,QAAQ,QAARA,QAAQ;IAAA,sBACRC,SAAS;IAATA,SAAS,+BAAG,CAAC;IACbC,OAAO,QAAPA,OAAO;IACPC,QAAQ,QAARA,QAAQ;IACRC,MAAM,QAANA,MAAM;IACNC,KAAK,QAALA,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,WAAW,QAAXA,WAAW;IACXC,QAAQ,QAARA,QAAQ;IACDC,SAAS,QAAhBC,KAAK;IACLC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,KAAK,GAAG,OAAOb,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,GAAGc,SAAS;EACjE,qBAAkBnB,aAAa,EAAE;IAAzBoB,KAAK,kBAALA,KAAK;EACb,IAAML,KAAK,GAAGrB,KAAK,CAAC2B,OAAO,CACzB;IAAA,OACEf,SAAS,GAAG,CAAC;MAEP,uDAAuD,EAAEA;IAAS,GAC/DQ,SAAS,IAEdA,SAAS;EAAA,GACf,CAACR,SAAS,EAAEQ,SAAS,CAAC,CACvB;EAED,IAAI,CAAC,CAACH,MAAM,IAAIW,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IACtDrB,IAAI,CAAC,mEAAmE,CAAC;EAC3E;EAEA,oBACE,oBAAC,SAAS,eACJc,SAAS;IACb,SAAS,EAAC,KAAK;IACf,IAAI,EAAC,QAAQ;IACb,KAAK,EAAEC,KAAM;IACb,iBAAeL,QAAS;IACxB,iBAAeL,QAAS;IACxB,SAAS,EAAEZ,gBAAgB,2BAEzBM,iBAAiB,2BAA+BkB,KAAK,CAAC,EACtDb,OAAO,IAAI,CAACM,QAAQ,mCAAuC;IAC3D;IACAL,QAAQ,sCAA0C,EAClDK,QAAQ,sCAA0C,EAClDP,SAAS,GAAG,CAAC,uCAA2C,EACxDU,SAAS,CACT;IACF,KAAK,EAAED;EAAM,IAEZlB,YAAY,CAACY,MAAM,CAAC,iBACnB;IAAK,SAAS;EAAuC,GAAEA,MAAM,CAC9D,eACD;IAAK,SAAS;EAAqC,gBACjD;IAAK,SAAS;EAAyC,GAAEJ,QAAQ,CAAO,EACvER,YAAY,CAACe,WAAW,CAAC,iBACxB,oBAAC,QAAQ;IAAC,SAAS;EAA4C,GAC5DA,WAAW,CAEf,CACG,eACN;IAAK,SAAS;EAAsC,GACjDf,YAAY,CAACa,KAAK,CAAC,iBAClB;IAAK,SAAS;EAAwC,GAAEA,KAAK,CAC9D,EACAF,QAAQ,iBACP,oBAAC,UAAU;IAAC,SAAS;EAA6C,EACnE,CACG,CACI;AAEhB,CAAC"}
1
+ {"version":3,"file":"CustomSelectOption.js","names":["React","Icon16Done","classNamesString","hasReactNode","Paragraph","Footnote","useAdaptivity","warnOnce","getSizeYClassName","warn","CustomSelectOption","children","hierarchy","hovered","selected","before","after","option","description","disabled","styleProp","style","className","restProps","title","undefined","sizeY","useMemo","process","env","NODE_ENV"],"sources":["../../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Icon16Done } from \"@vkontakte/icons\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Paragraph } from \"../Typography/Paragraph/Paragraph\";\nimport { Footnote } from \"../Typography/Footnote/Footnote\";\nimport { HasRootRef } from \"../../types\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { getSizeYClassName } from \"../../helpers/getSizeYClassName\";\nimport styles from \"./CustomSelectOption.module.css\";\n\nexport interface CustomSelectOptionProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * Вставляет основной контент.\n * @deprecated since v6.0.0\n */\n option?: any;\n /**\n * Добавляет описание под основным блоком.\n */\n description?: React.ReactNode;\n /**\n * Вставляет элемент в начало блока перед основным контентом.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n before?: React.ReactNode;\n /**\n * Вставляет элемент в конец блока после основного контента.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n after?: React.ReactNode;\n /**\n * Позволяет создавать вложенность.\n */\n hierarchy?: number;\n /**\n * Включает состояние выбранного элемента списка.\n */\n selected?: boolean;\n /**\n * Включает состояние наведения.\n */\n hovered?: boolean;\n /**\n * Включает состояние фокуса.\n */\n focused?: boolean;\n /**\n * Блокирует весь блок.\n */\n disabled?: boolean;\n}\n\nconst warn = warnOnce(\"CustomSelectOption\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelectOption\n */\nexport const CustomSelectOption = ({\n children,\n hierarchy = 0,\n hovered,\n selected,\n before,\n after,\n option,\n description,\n disabled,\n style: styleProp,\n className,\n ...restProps\n}: CustomSelectOptionProps) => {\n const title = typeof children === \"string\" ? children : undefined;\n const { sizeY } = useAdaptivity();\n const style = React.useMemo(\n () =>\n hierarchy > 0\n ? {\n \"--vkui_internal--custom_select_option_hierarchy_level\": hierarchy,\n ...styleProp,\n }\n : styleProp,\n [hierarchy, styleProp]\n );\n\n if (!!option && process.env.NODE_ENV === \"development\") {\n // TODO v6.0.0. Удалить св-во `option`\n warn(\"Свойство option было добавлено по ошибке и будет удалено в v6.0.0.\");\n }\n\n return (\n <Paragraph\n {...restProps}\n Component=\"div\"\n role=\"option\"\n title={title}\n aria-disabled={disabled}\n aria-selected={selected}\n className={classNamesString(\n styles[\"CustomSelectOption\"],\n getSizeYClassName(styles[\"CustomSelectOption\"], sizeY),\n hovered && !disabled && styles[\"CustomSelectOption--hover\"],\n // Note: пустой класс\n selected && styles[\"CustomSelectOption--selected\"],\n disabled && styles[\"CustomSelectOption--disabled\"],\n hierarchy > 0 && styles[\"CustomSelectOption--hierarchy\"],\n className\n )}\n style={style}\n >\n {hasReactNode(before) && (\n <div className={styles[\"CustomSelectOption__before\"]}>{before}</div>\n )}\n <div className={styles[\"CustomSelectOption__main\"]}>\n <div className={styles[\"CustomSelectOption__children\"]}>{children}</div>\n {hasReactNode(description) && (\n <Footnote className={styles[\"CustomSelectOption__description\"]}>\n {description}\n </Footnote>\n )}\n </div>\n <div className={styles[\"CustomSelectOption__after\"]}>\n {hasReactNode(after) && (\n <div className={styles[\"CustomSelectOption__afterIn\"]}>{after}</div>\n )}\n {selected && (\n <Icon16Done className={styles[\"CustomSelectOption__selectedIcon\"]} />\n )}\n </div>\n </Paragraph>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,gBAAgB,QAAQ,sBAAsB;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,SAAS,QAAQ,mCAAmC;AAC7D,SAASC,QAAQ,QAAQ,iCAAiC;AAE1D,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,iBAAiB,QAAQ,iCAAiC;AAAC;AA+CpE,IAAMC,IAAI,GAAGF,QAAQ,CAAC,oBAAoB,CAAC;;AAE3C;AACA;AACA;AACA,OAAO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAkB,OAaA;EAAA,IAZ7BC,QAAQ,QAARA,QAAQ;IAAA,sBACRC,SAAS;IAATA,SAAS,+BAAG,CAAC;IACbC,OAAO,QAAPA,OAAO;IACPC,QAAQ,QAARA,QAAQ;IACRC,MAAM,QAANA,MAAM;IACNC,KAAK,QAALA,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,WAAW,QAAXA,WAAW;IACXC,QAAQ,QAARA,QAAQ;IACDC,SAAS,QAAhBC,KAAK;IACLC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,KAAK,GAAG,OAAOb,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,GAAGc,SAAS;EACjE,qBAAkBnB,aAAa,EAAE;IAAzBoB,KAAK,kBAALA,KAAK;EACb,IAAML,KAAK,GAAGrB,KAAK,CAAC2B,OAAO,CACzB;IAAA,OACEf,SAAS,GAAG,CAAC;MAEP,uDAAuD,EAAEA;IAAS,GAC/DQ,SAAS,IAEdA,SAAS;EAAA,GACf,CAACR,SAAS,EAAEQ,SAAS,CAAC,CACvB;EAED,IAAI,CAAC,CAACH,MAAM,IAAIW,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IACtD;IACArB,IAAI,CAAC,oEAAoE,CAAC;EAC5E;EAEA,oBACE,oBAAC,SAAS,eACJc,SAAS;IACb,SAAS,EAAC,KAAK;IACf,IAAI,EAAC,QAAQ;IACb,KAAK,EAAEC,KAAM;IACb,iBAAeL,QAAS;IACxB,iBAAeL,QAAS;IACxB,SAAS,EAAEZ,gBAAgB,2BAEzBM,iBAAiB,2BAA+BkB,KAAK,CAAC,EACtDb,OAAO,IAAI,CAACM,QAAQ,mCAAuC;IAC3D;IACAL,QAAQ,sCAA0C,EAClDK,QAAQ,sCAA0C,EAClDP,SAAS,GAAG,CAAC,uCAA2C,EACxDU,SAAS,CACT;IACF,KAAK,EAAED;EAAM,IAEZlB,YAAY,CAACY,MAAM,CAAC,iBACnB;IAAK,SAAS;EAAuC,GAAEA,MAAM,CAC9D,eACD;IAAK,SAAS;EAAqC,gBACjD;IAAK,SAAS;EAAyC,GAAEJ,QAAQ,CAAO,EACvER,YAAY,CAACe,WAAW,CAAC,iBACxB,oBAAC,QAAQ;IAAC,SAAS;EAA4C,GAC5DA,WAAW,CAEf,CACG,eACN;IAAK,SAAS;EAAsC,GACjDf,YAAY,CAACa,KAAK,CAAC,iBAClB;IAAK,SAAS;EAAwC,GAAEA,KAAK,CAC9D,EACAF,QAAQ,iBACP,oBAAC,UAAU;IAAC,SAAS;EAA6C,EACnE,CACG,CACI;AAEhB,CAAC"}
@@ -12,7 +12,7 @@ export var FocusVisible = function FocusVisible(_ref) {
12
12
  });
13
13
  };
14
14
  var styles = {
15
- "FocusVisible--mode-outside": "vkuiFocusVisible--mode-outside",
16
- "FocusVisible--mode-inside": "vkuiFocusVisible--mode-inside"
15
+ "FocusVisible--mode-inside": "vkuiFocusVisible--mode-inside",
16
+ "FocusVisible--mode-outside": "vkuiFocusVisible--mode-outside"
17
17
  };
18
18
  //# sourceMappingURL=FocusVisible.js.map
@@ -1 +1 @@
1
- [class$="--focus-visible"]>.vkuiFocusVisible{border-radius:inherit;bottom:2px;box-shadow:0 0 0 2px var(--vkui--color_stroke_accent);left:2px;overflow:hidden;pointer-events:none;position:absolute;right:2px;top:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}[class$="--focus-visible"]>.vkuiFocusVisible--mode-outside{bottom:-2px;left:-2px;right:-2px;top:-2px}@media (prefers-reduced-motion:no-preference){[class$="--focus-visible"]>.vkuiFocusVisible{animation:vkui-animation-focus-visible .15s ease-in-out forwards;animation-delay:.01ms;bottom:4px;left:4px;right:4px;top:4px;will-change:top,left,bottom,right}[class$="--focus-visible"]>.vkuiFocusVisible--mode-outside{animation-name:vkui-animation-focus-visible-outside;bottom:0;left:0;right:0;top:0}@keyframes vkui-animation-focus-visible{to{bottom:2px;left:2px;right:2px;top:2px;will-change:auto}}@keyframes vkui-animation-focus-visible-outside{to{bottom:-2px;left:-2px;right:-2px;top:-2px;will-change:auto}}}
1
+ [class$="--focus-visible"]>.vkuiFocusVisible{border-radius:inherit;overflow:hidden;pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}[class$="--focus-visible"]>.vkuiFocusVisible--mode-inside{border-color:var(--vkui--color_stroke_accent);border-style:solid;border-width:2px;bottom:2px;box-sizing:border-box;left:2px;right:2px;top:2px}[class$="--focus-visible"]>.vkuiFocusVisible--mode-outside{bottom:-2px;box-shadow:0 0 0 2px var(--vkui--color_stroke_accent);left:-2px;right:-2px;top:-2px}@media (prefers-reduced-motion:no-preference){[class$="--focus-visible"]>.vkuiFocusVisible{animation:vkui-animation-focus-visible .15s ease-in-out forwards;animation-delay:.01ms;bottom:4px;left:4px;right:4px;top:4px;will-change:top,left,bottom,right}[class$="--focus-visible"]>.vkuiFocusVisible--mode-outside{animation-name:vkui-animation-focus-visible-outside;bottom:0;left:0;right:0;top:0}@keyframes vkui-animation-focus-visible{to{bottom:0;left:0;right:0;top:0;will-change:auto}}@keyframes vkui-animation-focus-visible-outside{to{bottom:-2px;left:-2px;right:-2px;top:-2px;will-change:auto}}}
@@ -1 +1 @@
1
- .vkuiFormField{-webkit-tap-highlight-color:transparent;align-items:center;box-sizing:border-box;display:flex;font-family:var(--vkui--font_family_base);min-height:var(--vkui--size_field_height--regular);position:relative;z-index:1}.vkuiFormField:focus{outline:none}.vkuiFormField--sizeY-compact{min-height:var(--vkui--size_field_height--compact)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiFormField--sizeY-none{min-height:var(--vkui--size_field_height--compact)}}.vkuiFormField>*{border-radius:inherit;z-index:6}.vkuiFormField__after,.vkuiFormField__before{align-content:center;align-items:center;color:var(--vkui--color_icon_secondary);display:flex;flex-shrink:0;height:100%;justify-content:center;min-width:var(--vkui--size_field_height--regular);position:relative;z-index:7}.vkuiFormField--sizeY-compact .vkuiFormField__after,.vkuiFormField--sizeY-compact .vkuiFormField__before{height:var(--vkui--size_field_height--compact);min-width:var(--vkui--size_field_height--compact)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiFormField--sizeY-none .vkuiFormField__after,.vkuiFormField--sizeY-none .vkuiFormField__before{height:var(--vkui--size_field_height--compact);min-width:var(--vkui--size_field_height--compact)}}.vkuiFormField__before{color:var(--vkui--color_icon_accent)}.vkuiFormField__after{color:var(--vkui--color_icon_secondary)}.vkuiFormField__border{border:1px solid transparent;border:var(--vkui_internal--thin_border) solid transparent;border-radius:var(--vkui--size_border_radius--regular);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;transform-origin:left top;width:100%;z-index:1}.vkuiFormField--mode-default .vkuiFormField__border{background-color:var(--vkui--color_field_background);border-color:var(--vkui--color_field_border_alpha)}.vkuiFormField--status-error .vkuiFormField__border,.vkuiFormItem--status-error .vkuiFormField__border{background-color:var(--vkui--color_background_negative_tint);border-color:var(--vkui--color_stroke_negative);z-index:3}.vkuiFormField--status-valid .vkuiFormField__border,.vkuiFormItem--status-valid .vkuiFormField__border{border-color:var(--vkui--color_stroke_positive);z-index:3}.vkuiFormField--disabled{cursor:default;opacity:var(--vkui--opacity_disable_accessibility);pointer-events:none}.vkuiFormField--hover .vkuiFormField__border{background-color:var(--vkui--color_field_background)}.vkuiFormField--mode-default.vkuiFormField--hover .vkuiFormField__border{border-color:var(--vkui--color_field_border_alpha--hover);z-index:4}.vkuiFormField :focus~.vkuiFormField__border,.vkuiFormField:focus-within .vkuiFormField__border{border-color:var(--vkui--color_stroke_accent);z-index:5}.vkuiModalCardBase__header+.vkuiFormField,.vkuiModalCardBase__subheader+.vkuiFormField{margin-top:16px}.vkuiChipsSelect--pop-down .vkuiFormField__border,.vkuiCustomSelect--pop-down .vkuiFormField__border{border-bottom-left-radius:0;border-bottom-right-radius:0}.vkuiChipsSelect--pop-up .vkuiFormField__border,.vkuiCustomSelect--pop-up .vkuiFormField__border{border-top-left-radius:0;border-top-right-radius:0}.vkuiSelect .vkuiFormField__after{pointer-events:none}.vkuiCalendarHeader__picker .vkuiFormField__after{min-width:12px;padding-right:8px}.vkuiChipsInput .vkuiFormField__after{z-index:7}.vkuiFormLayoutGroup--segmented .vkuiFormField{z-index:auto}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>.vkuiFormItem:not(:first-of-type):not(:last-of-type) .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>.vkuiFormItem:not(:first-of-type):not(:last-of-type) .vkuiFormField__border{border-radius:0}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>:first-of-type:not(:last-of-type) .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>:first-of-type:not(:last-of-type) .vkuiFormField__border{border-bottom-right-radius:0;border-top-right-radius:0}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>.vkuiFormItem:not(:first-of-type):last-of-type .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>.vkuiFormItem:not(:first-of-type):last-of-type .vkuiFormField__border{border-bottom-left-radius:0;border-top-left-radius:0}
1
+ .vkuiFormField{-webkit-tap-highlight-color:transparent;align-items:center;box-sizing:border-box;display:flex;font-family:var(--vkui--font_family_base);min-height:var(--vkui--size_field_height--regular);position:relative;z-index:1}.vkuiFormField--sizeY-compact{min-height:var(--vkui--size_field_height--compact)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiFormField--sizeY-none{min-height:var(--vkui--size_field_height--compact)}}.vkuiFormField>*{border-radius:inherit;z-index:6}.vkuiFormField__after,.vkuiFormField__before{align-content:center;align-items:center;color:var(--vkui--color_icon_secondary);display:flex;flex-shrink:0;height:100%;justify-content:center;min-width:var(--vkui--size_field_height--regular);position:relative;z-index:7}.vkuiFormField--sizeY-compact .vkuiFormField__after,.vkuiFormField--sizeY-compact .vkuiFormField__before{height:var(--vkui--size_field_height--compact);min-width:var(--vkui--size_field_height--compact)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiFormField--sizeY-none .vkuiFormField__after,.vkuiFormField--sizeY-none .vkuiFormField__before{height:var(--vkui--size_field_height--compact);min-width:var(--vkui--size_field_height--compact)}}.vkuiFormField__before{color:var(--vkui--color_icon_accent)}.vkuiFormField__after{color:var(--vkui--color_icon_secondary)}.vkuiFormField__border{border:1px solid transparent;border:var(--vkui_internal--thin_border) solid transparent;border-radius:var(--vkui--size_border_radius--regular);box-sizing:border-box;height:100%;left:0;position:absolute;top:0;transform-origin:left top;width:100%;z-index:1}.vkuiFormField--mode-default .vkuiFormField__border{background-color:var(--vkui--color_field_background);border-color:var(--vkui--color_field_border_alpha)}.vkuiFormField--status-error .vkuiFormField__border,.vkuiFormItem--status-error .vkuiFormField__border{background-color:var(--vkui--color_background_negative_tint);border-color:var(--vkui--color_stroke_negative);z-index:3}.vkuiFormField--status-valid .vkuiFormField__border,.vkuiFormItem--status-valid .vkuiFormField__border{border-color:var(--vkui--color_stroke_positive);z-index:3}.vkuiFormField--disabled{cursor:default;opacity:var(--vkui--opacity_disable_accessibility);pointer-events:none}.vkuiFormField--hover .vkuiFormField__border{background-color:var(--vkui--color_field_background)}.vkuiFormField--mode-default.vkuiFormField--hover .vkuiFormField__border{border-color:var(--vkui--color_field_border_alpha--hover);z-index:4}.vkuiFormField :focus{outline:none}.vkuiFormField :focus~.vkuiFormField__border,.vkuiFormField:focus-within .vkuiFormField__border{border-color:var(--vkui--color_stroke_accent);z-index:5}.vkuiModalCardBase__header+.vkuiFormField,.vkuiModalCardBase__subheader+.vkuiFormField{margin-top:16px}.vkuiSelect .vkuiFormField__after{pointer-events:none}.vkuiCalendarHeader__picker .vkuiFormField__after{min-width:12px;padding-right:8px}.vkuiChipsInput .vkuiFormField__after{z-index:7}.vkuiFormLayoutGroup--segmented .vkuiFormField{z-index:auto}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>.vkuiFormItem:not(:first-of-type):not(:last-of-type) .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>.vkuiFormItem:not(:first-of-type):not(:last-of-type) .vkuiFormField__border{border-radius:0}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>:first-of-type:not(:last-of-type) .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>:first-of-type:not(:last-of-type) .vkuiFormField__border{border-bottom-right-radius:0;border-top-right-radius:0}.vkuiFormLayoutGroup--segmented .vkuiRemovable__content>.vkuiFormItem:not(:first-of-type):last-of-type .vkuiFormField__border,.vkuiFormLayoutGroup--segmented>.vkuiFormItem:not(:first-of-type):last-of-type .vkuiFormField__border{border-bottom-left-radius:0;border-top-left-radius:0}
@@ -1 +1 @@
1
- .vkuiHorizontalScrollArrow{background-color:initial;border:none;cursor:pointer;display:flex;flex-direction:column;height:100%;justify-content:center;opacity:0;padding:0;position:absolute;top:0;transition:opacity .15s;transition-timing-function:var(--vkui--animation_easing_platform);-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;z-index:3}.vkuiHorizontalScrollArrow__icon{align-items:center;background-color:var(--vkui--color_background_modal);box-shadow:var(--vkui--elevation3);color:var(--vkui--color_icon_secondary);display:flex;justify-content:center}.vkuiHorizontalScrollArrow--size-m .vkuiHorizontalScrollArrow__icon{border-radius:14px;height:28px;width:28px}.vkuiHorizontalScrollArrow--size-l .vkuiHorizontalScrollArrow__icon{border-radius:24px;height:40px;width:40px}.vkuiHorizontalScrollArrow--direction-left{left:0;padding-left:16px;padding-left:var(--vkui--size_base_padding_horizontal--regular,16px)}.vkuiHorizontalScrollArrow--direction-right{padding-right:16px;padding-right:var(--vkui--size_base_padding_horizontal--regular,16px);right:0}.vkuiGallery:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow{opacity:var(--vkui--opacity_disable_accessibility)}.vkuiGallery:hover .vkuiHorizontalScrollArrow:hover,.vkuiHorizontalScroll--withConstArrows .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll--withConstArrows:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow:hover{opacity:1}
1
+ .vkuiHorizontalScrollArrow{background-color:initial;border:none;cursor:pointer;display:flex;flex-direction:column;height:100%;justify-content:center;opacity:0;padding:0;position:absolute;top:0;transition:opacity .15s;transition-timing-function:var(--vkui--animation_easing_platform);-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;z-index:3}.vkuiHorizontalScrollArrow__icon{align-items:center;background-color:var(--vkui--color_background_modal);box-shadow:var(--vkui--elevation3);color:var(--vkui--color_icon_secondary);display:flex;justify-content:center}.vkuiHorizontalScrollArrow--size-m .vkuiHorizontalScrollArrow__icon{border-radius:14px;height:28px;width:28px}.vkuiHorizontalScrollArrow--size-l .vkuiHorizontalScrollArrow__icon{border-radius:24px;height:40px;width:40px}.vkuiHorizontalScrollArrow--direction-left{left:0;padding-left:16px;padding-left:var(--vkui--size_base_padding_horizontal--regular,16px)}.vkuiHorizontalScrollArrow--direction-right{padding-right:16px;padding-right:var(--vkui--size_base_padding_horizontal--regular,16px);right:0}.vkuiBaseGallery:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow{opacity:var(--vkui--opacity_disable_accessibility)}.vkuiBaseGallery:hover .vkuiHorizontalScrollArrow:hover,.vkuiHorizontalScroll--withConstArrows .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll--withConstArrows:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow:hover{opacity:1}
@@ -1 +1 @@
1
- .vkuiInput{font-size:16px;line-height:20px;position:relative}.vkuiInput--align-center .vkuiInput__el{text-align:center}.vkuiInput--align-right .vkuiInput__el{text-align:right}.vkuiInput__el{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;box-shadow:none;box-sizing:border-box;color:var(--vkui--color_text_primary);display:block;font-family:inherit;font-size:var(--vkui--font_text--font_size--regular);font-weight:var(--vkui--font_text--font_weight--regular);line-height:var(--vkui--font_text--line_height--regular);margin:0;padding-left:12px;padding-right:12px;position:relative;text-overflow:ellipsis;width:100%;z-index:6}.vkuiInput--sizeY-compact .vkuiInput__el{font-size:var(--vkui--font_text--font_size--compact);line-height:var(--vkui--font_text--line_height--compact)}.vkuiInput--hasBefore .vkuiInput__el{padding-left:0}.vkuiInput--hasAfter .vkuiInput__el{padding-right:0}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiInput--sizeY-none .vkuiInput__el{font-size:var(--vkui--font_text--font_size--compact);line-height:var(--vkui--font_text--line_height--compact)}}.vkuiInput__el:disabled{opacity:var(--vkui--opacity_disable_accessibility)}.vkuiInput__el::-webkit-input-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-moz-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-ms-input-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el:disabled::-webkit-input-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-moz-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-ms-input-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:focus{outline:none}
1
+ .vkuiInput{font-size:16px;line-height:20px;position:relative}.vkuiInput--align-center .vkuiInput__el{text-align:center}.vkuiInput--align-right .vkuiInput__el{text-align:right}.vkuiInput__el{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;box-shadow:none;box-sizing:border-box;color:var(--vkui--color_text_primary);display:block;font-family:inherit;font-size:var(--vkui--font_text--font_size--regular);font-weight:var(--vkui--font_text--font_weight--regular);line-height:var(--vkui--font_text--line_height--regular);margin:0;padding-left:12px;padding-right:12px;position:relative;text-overflow:ellipsis;width:100%;z-index:6}.vkuiInput--sizeY-compact .vkuiInput__el{font-size:var(--vkui--font_text--font_size--compact);line-height:var(--vkui--font_text--line_height--compact)}.vkuiInput--hasBefore .vkuiInput__el{padding-left:0}.vkuiInput--hasAfter .vkuiInput__el{padding-right:0}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiInput--sizeY-none .vkuiInput__el{font-size:var(--vkui--font_text--font_size--compact);line-height:var(--vkui--font_text--line_height--compact)}}.vkuiInput__el:disabled{opacity:var(--vkui--opacity_disable_accessibility)}.vkuiInput__el::-webkit-input-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-moz-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-ms-input-placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::placeholder{color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el:disabled::-webkit-input-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-moz-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-ms-input-placeholder{color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::placeholder{color:var(--vkui--color_text_secondary)}
@@ -71,10 +71,9 @@ export var PanelHeaderButton = function PanelHeaderButton(_ref2) {
71
71
  className: classNamesString("vkuiPanelHeaderButton", getPlatformClassName("vkuiPanelHeaderButton", platform), isPrimitive && "vkuiPanelHeaderButton--primitive", !isPrimitive && !isPrimitiveLabel && "vkuiPanelHeaderButton--notPrimitive", className)
72
72
  }), isPrimitive ? /*#__PURE__*/React.createElement(ButtonTypography, {
73
73
  primary: primary
74
- }, children) : children, /*#__PURE__*/React.createElement("div", {
74
+ }, children) : children, isPrimitiveLabel ? /*#__PURE__*/React.createElement(ButtonTypography, {
75
+ primary: primary,
75
76
  className: "vkuiPanelHeaderButton__label"
76
- }, isPrimitiveLabel ? /*#__PURE__*/React.createElement(ButtonTypography, {
77
- primary: primary
78
- }, label) : label));
77
+ }, label) : label);
79
78
  };
80
79
  //# sourceMappingURL=PanelHeaderButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PanelHeaderButton.js","names":["React","Tappable","getPlatformClassName","classNamesString","warnOnce","usePlatform","getTitleFromChildren","isPrimitiveReactNode","Platform","Text","Title","ButtonTypography","primary","children","platform","IOS","VKCOM","undefined","warn","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","href"],"sources":["../../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { TappableProps, Tappable } from \"../Tappable/Tappable\";\nimport { getPlatformClassName } from \"../../helpers/getPlatformClassName\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getTitleFromChildren, isPrimitiveReactNode } from \"../../lib/utils\";\nimport { Platform } from \"../../lib/platform\";\nimport { Text } from \"../Typography/Text/Text\";\nimport { Title } from \"../Typography/Title/Title\";\nimport styles from \"./PanelHeaderButton.module.css\";\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, \"label\"> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps[\"primary\"];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? \"1\" : \"3\"}>\n {children}\n </Title>\n );\n }\n\n return (\n <Text weight={platform === Platform.VKCOM ? undefined : \"2\"}>\n {children}\n </Text>\n );\n};\n\nconst warn = warnOnce(\"PanelHeaderButton\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n className,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case Platform.IOS:\n hoverMode = \"background\";\n activeMode = \"opacity\";\n break;\n case Platform.VKCOM:\n hoverMode = styles[\"PanelHeaderButton--hover\"];\n activeMode = styles[\"PanelHeaderButton--active\"];\n break;\n default:\n hoverMode = \"background\";\n activeMode = \"background\";\n }\n\n if (process.env.NODE_ENV === \"development\") {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps[\"aria-label\"] ||\n restProps[\"aria-labelledby\"]\n );\n\n if (!hasAccessibleName) {\n warn(\n \"a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.\",\n \"error\"\n );\n }\n }\n\n return (\n <Tappable\n {...restProps}\n hoverMode={hoverMode}\n Component={restProps.href ? \"a\" : \"button\"}\n activeEffectDelay={200}\n activeMode={activeMode}\n className={classNamesString(\n styles[\"PanelHeaderButton\"],\n getPlatformClassName(styles[\"PanelHeaderButton\"], platform),\n isPrimitive && styles[\"PanelHeaderButton--primitive\"],\n !isPrimitive &&\n !isPrimitiveLabel &&\n styles[\"PanelHeaderButton--notPrimitive\"],\n className\n )}\n >\n {isPrimitive ? (\n <ButtonTypography primary={primary}>{children}</ButtonTypography>\n ) : (\n children\n )}\n <div className={styles[\"PanelHeaderButton__label\"]}>\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary}>{label}</ButtonTypography>\n ) : (\n label\n )}\n </div>\n </Tappable>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"PanelHeaderButton.js","names":["React","Tappable","getPlatformClassName","classNamesString","warnOnce","usePlatform","getTitleFromChildren","isPrimitiveReactNode","Platform","Text","Title","ButtonTypography","primary","children","platform","IOS","VKCOM","undefined","warn","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","href"],"sources":["../../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { TappableProps, Tappable } from \"../Tappable/Tappable\";\nimport { getPlatformClassName } from \"../../helpers/getPlatformClassName\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getTitleFromChildren, isPrimitiveReactNode } from \"../../lib/utils\";\nimport { Platform } from \"../../lib/platform\";\nimport { Text } from \"../Typography/Text/Text\";\nimport { Title } from \"../Typography/Title/Title\";\nimport styles from \"./PanelHeaderButton.module.css\";\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, \"label\"> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps[\"primary\"];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? \"1\" : \"3\"}>\n {children}\n </Title>\n );\n }\n\n return (\n <Text weight={platform === Platform.VKCOM ? undefined : \"2\"}>\n {children}\n </Text>\n );\n};\n\nconst warn = warnOnce(\"PanelHeaderButton\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n className,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case Platform.IOS:\n hoverMode = \"background\";\n activeMode = \"opacity\";\n break;\n case Platform.VKCOM:\n hoverMode = styles[\"PanelHeaderButton--hover\"];\n activeMode = styles[\"PanelHeaderButton--active\"];\n break;\n default:\n hoverMode = \"background\";\n activeMode = \"background\";\n }\n\n if (process.env.NODE_ENV === \"development\") {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps[\"aria-label\"] ||\n restProps[\"aria-labelledby\"]\n );\n\n if (!hasAccessibleName) {\n warn(\n \"a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.\",\n \"error\"\n );\n }\n }\n\n return (\n <Tappable\n {...restProps}\n hoverMode={hoverMode}\n Component={restProps.href ? \"a\" : \"button\"}\n activeEffectDelay={200}\n activeMode={activeMode}\n className={classNamesString(\n styles[\"PanelHeaderButton\"],\n getPlatformClassName(styles[\"PanelHeaderButton\"], platform),\n isPrimitive && styles[\"PanelHeaderButton--primitive\"],\n !isPrimitive &&\n !isPrimitiveLabel &&\n styles[\"PanelHeaderButton--notPrimitive\"],\n className\n )}\n >\n {isPrimitive ? (\n <ButtonTypography primary={primary}>{children}</ButtonTypography>\n ) : (\n children\n )}\n {isPrimitiveLabel ? (\n <ButtonTypography\n primary={primary}\n className={styles[\"PanelHeaderButton__label\"]}\n >\n {label}\n </ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- .vkuiPanelHeaderButton{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;box-shadow:none;color:currentColor;display:block;margin:0;padding:0;position:relative}.vkuiPanelHeaderButton[disabled]{opacity:.6}.vkuiPanelHeaderButton .vkuiCounter{padding:0;position:absolute;right:2px;top:8px}.vkuiPanelHeaderButton--primitive{height:48px;line-height:48px;padding:0 12px}.vkuiPanelHeaderButton--ios{align-items:center;display:flex;font-size:17px;position:relative}.vkuiPanelHeaderButton--ios.vkuiPanelHeaderButton--primitive{height:44px;line-height:44px}.vkuiPanelHeaderButton--ios .vkuiIcon--24{padding:10px}.vkuiPanelHeaderButton--ios .vkuiIcon--28{padding:8px}.vkuiPanelHeaderButton--android.vkuiPanelHeaderButton--notPrimitive{border-radius:50%}.vkuiPanelHeaderButton--android .vkuiIcon--24{padding:12px}.vkuiPanelHeaderButton--android .vkuiIcon--28{padding:10px}.vkuiPanelHeaderButton--vkcom{color:var(--vkui--color_text_secondary)}.vkuiPanelHeaderButton--vkcom>:not(.vkuiCounter){opacity:.7;transition:opacity .3s}.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--active>:not(.vkuiCounter),.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--hover>:not(.vkuiCounter){opacity:1}.vkuiPanelHeaderButton--vkcom{align-items:center;display:flex;padding:10px}.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--notPrimitive{border-radius:50%}@media (max-width:767px){.vkuiPanelHeaderBack--sizeX-none.vkuiPanelHeaderBack--ios .vkuiPanelHeaderButton__label{display:none}}
1
+ .vkuiPanelHeaderButton{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;box-shadow:none;color:currentColor;display:block;margin:0;padding:0;position:relative}.vkuiPanelHeaderButton[disabled]{opacity:.6}.vkuiPanelHeaderButton .vkuiCounter{padding:0;position:absolute;right:2px;top:8px}.vkuiPanelHeaderButton--primitive{height:48px;line-height:48px;padding:0 12px}.vkuiPanelHeaderButton--ios{align-items:center;display:flex;font-size:17px;position:relative}.vkuiPanelHeaderButton--ios.vkuiPanelHeaderButton--primitive{height:44px;line-height:44px}.vkuiPanelHeaderButton--ios .vkuiIcon--24{padding:10px}.vkuiPanelHeaderButton--ios .vkuiIcon--28{padding:8px}.vkuiPanelHeaderButton--android.vkuiPanelHeaderButton--notPrimitive{border-radius:50%}.vkuiPanelHeaderButton--android .vkuiIcon--24{padding:12px}.vkuiPanelHeaderButton--android .vkuiIcon--28{padding:10px}.vkuiPanelHeaderButton--vkcom{color:var(--vkui--color_text_secondary)}.vkuiPanelHeaderButton--vkcom>:not(.vkuiCounter){opacity:.7;transition:opacity .3s}.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--active>:not(.vkuiCounter),.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--hover>:not(.vkuiCounter){opacity:1}.vkuiPanelHeaderButton--vkcom{align-items:center;display:flex;padding:10px}.vkuiPanelHeaderButton--vkcom.vkuiPanelHeaderButton--notPrimitive{border-radius:50%}.vkuiPanelHeaderBack--sizeX-compact.vkuiPanelHeaderBack--ios .vkuiPanelHeaderButton__label{display:none}@media (max-width:767px){.vkuiPanelHeaderBack--sizeX-none.vkuiPanelHeaderBack--ios .vkuiPanelHeaderButton__label{display:none}}
@@ -98,11 +98,20 @@ export var Popover = function Popover(_ref) {
98
98
  return;
99
99
  }
100
100
  targetClickEvent.add(childRef.current);
101
+ }, [childRef, targetClickEvent]);
102
+ React.useEffect(function () {
103
+ if (!childRef.current) {
104
+ return;
105
+ }
101
106
  if (hoverable) {
102
107
  targetEnterListener.add(childRef.current);
103
108
  targetLeaveListener.add(childRef.current);
104
109
  }
105
- }, [childRef, hoverable, targetClickEvent, targetEnterListener, targetLeaveListener]);
110
+ return function () {
111
+ targetEnterListener.remove();
112
+ targetLeaveListener.remove();
113
+ };
114
+ }, [childRef, hoverable, targetEnterListener, targetLeaveListener]);
106
115
  return /*#__PURE__*/React.createElement(React.Fragment, null, child, shown && /*#__PURE__*/React.createElement(Popper, _extends({}, restProps, {
107
116
  className: classNamesString("vkuiPopover", className),
108
117
  targetRef: childRef,
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","names":["React","useDOM","classNamesString","Popper","FocusTrap","useTimeout","useExternRef","useEventListener","useGlobalEventListener","usePatchChildrenRef","Popover","action","shownProp","shown","showDelay","hideDelay","offsetDistance","content","children","styleProp","style","className","getRef","onShownChange","restProps","document","hoverable","hovered","useRef","useState","computedShown","setComputedShown","dropdownNode","setPopperNode","patchedPopperRef","childRef","child","setShown","value","showTimeout","hideTimeout","handleTargetEnter","current","clear","set","handleTargetClick","handleTargetLeave","handleContentKeyDownEscape","handleOutsideClick","e","contains","target","targetEnterListener","targetClickEvent","targetLeaveListener","useEffect","add","wrapperClassName","undefined"],"sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useDOM } from \"../../lib/dom\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { PopperCommonProps, Popper } from \"../Popper/Popper\";\nimport { FocusTrap } from \"../FocusTrap/FocusTrap\";\nimport { useTimeout } from \"../../hooks/useTimeout\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useGlobalEventListener } from \"../../hooks/useGlobalEventListener\";\nimport { usePatchChildrenRef } from \"../../hooks/usePatchChildrenRef\";\nimport styles from \"./Popover.module.css\";\n\nexport interface PopoverProps\n extends Omit<PopperCommonProps, \"arrow\" | \"arrowClassName\"> {\n /**\n * Механика вызова всплывающего окна.\n *\n * - `\"click\"` – показывается/скрывается только при нажатии.\n * - `\"hover\"` – помимо нажатия, будет показываться/скрывается при наведении/отведении мыши.\n *\n * > ⚠️`\"hover\"` на тач-устройствах будет работать как `\"click\"`, с одним лишь нюансом, что не будет закрываться\n * > при повторном нажатии на целевой элемент. Для закрытия необходимо нажать на область вне целевого элемента\n * > и выпадающего окна.\n */\n action?: \"click\" | \"hover\";\n /**\n * Если передан, то всплывающее окно будет показан/скрыт в зависимости от значения свойства.\n */\n shown?: boolean;\n /**\n * Количество миллисекунд, после которых произойдёт показ всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n showDelay?: number;\n /**\n * Количество миллисекунд, после которых произойдёт скрытие всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n hideDelay?: number;\n /**\n * Содержимое всплывающего окна.\n */\n content?: React.ReactNode;\n /**\n * Целевой элемент. Всплывающее окно появится возле него.\n *\n * > ⚠️ Если это пользовательский компонент, то он должен предоставлять параметры либо `getRootRef`, либо `ref` для получения ссылки на DOM-узел.\n */\n children?: React.ReactElement;\n /**\n * Вызывается при каждом изменении видимости всплывающего окна.\n */\n onShownChange?(shown: boolean): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popover\n */\nexport const Popover = ({\n action = \"click\",\n shown: shownProp,\n showDelay = 150,\n hideDelay = 150,\n offsetDistance = 8,\n content,\n children,\n style: styleProp,\n className,\n getRef,\n onShownChange,\n ...restProps\n}: PopoverProps) => {\n const { document } = useDOM();\n\n const hoverable = action === \"hover\";\n const hovered = React.useRef(false);\n const [computedShown, setComputedShown] = React.useState(shownProp || false);\n const [dropdownNode, setPopperNode] = React.useState<HTMLElement | null>(\n null\n );\n\n const shown = typeof shownProp === \"boolean\" ? shownProp : computedShown;\n\n const patchedPopperRef = useExternRef<HTMLDivElement>(setPopperNode, getRef);\n\n const [childRef, child] = usePatchChildrenRef(children);\n\n const setShown = (value: boolean) => {\n if (typeof shownProp !== \"boolean\") {\n setComputedShown(value);\n }\n typeof onShownChange === \"function\" && onShownChange(value);\n };\n\n const showTimeout = useTimeout(() => setShown(true), showDelay);\n\n const hideTimeout = useTimeout(() => setShown(false), hideDelay);\n\n const handleTargetEnter = () => {\n hovered.current = true;\n hideTimeout.clear();\n showTimeout.set();\n };\n\n const handleTargetClick = () => {\n if (hovered.current && shown) {\n return;\n }\n setShown(!shown);\n };\n\n const handleTargetLeave = () => {\n hovered.current = false;\n showTimeout.clear();\n hideTimeout.set();\n };\n\n const handleContentKeyDownEscape = () => {\n setShown(false);\n };\n\n const handleOutsideClick = (e: MouseEvent) => {\n if (\n dropdownNode &&\n !childRef.current?.contains(e.target as Node) &&\n !dropdownNode.contains(e.target as Node)\n ) {\n setShown(false);\n }\n };\n\n useGlobalEventListener(document, \"click\", handleOutsideClick);\n const targetEnterListener = useEventListener(\"mouseenter\", handleTargetEnter);\n const targetClickEvent = useEventListener(\"click\", handleTargetClick);\n const targetLeaveListener = useEventListener(\"mouseleave\", handleTargetLeave);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n targetClickEvent.add(childRef.current);\n\n if (hoverable) {\n targetEnterListener.add(childRef.current);\n targetLeaveListener.add(childRef.current);\n }\n }, [\n childRef,\n hoverable,\n targetClickEvent,\n targetEnterListener,\n targetLeaveListener,\n ]);\n\n return (\n <React.Fragment>\n {child}\n {shown && (\n <Popper\n {...restProps}\n className={classNamesString(styles[\"Popover\"], className)}\n targetRef={childRef}\n getRef={patchedPopperRef}\n offsetDistance={offsetDistance}\n style={\n // Reason: Typescript ругается на CSS Custom Properties в объекте\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {\n ...styleProp,\n \"--vkui_internal--popover_safe_zone_padding\": `${offsetDistance}px`,\n } as React.CSSProperties\n }\n renderContent={({ className: wrapperClassName }) => (\n <FocusTrap\n className={wrapperClassName}\n onClose={handleContentKeyDownEscape}\n >\n {content}\n </FocusTrap>\n )}\n onMouseOver={hoverable ? hideTimeout.clear : undefined}\n onMouseOut={hoverable ? handleTargetLeave : undefined}\n />\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Popover.js","names":["React","useDOM","classNamesString","Popper","FocusTrap","useTimeout","useExternRef","useEventListener","useGlobalEventListener","usePatchChildrenRef","Popover","action","shownProp","shown","showDelay","hideDelay","offsetDistance","content","children","styleProp","style","className","getRef","onShownChange","restProps","document","hoverable","hovered","useRef","useState","computedShown","setComputedShown","dropdownNode","setPopperNode","patchedPopperRef","childRef","child","setShown","value","showTimeout","hideTimeout","handleTargetEnter","current","clear","set","handleTargetClick","handleTargetLeave","handleContentKeyDownEscape","handleOutsideClick","e","contains","target","targetEnterListener","targetClickEvent","targetLeaveListener","useEffect","add","remove","wrapperClassName","undefined"],"sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useDOM } from \"../../lib/dom\";\nimport { classNamesString } from \"../../lib/classNames\";\nimport { PopperCommonProps, Popper } from \"../Popper/Popper\";\nimport { FocusTrap } from \"../FocusTrap/FocusTrap\";\nimport { useTimeout } from \"../../hooks/useTimeout\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useGlobalEventListener } from \"../../hooks/useGlobalEventListener\";\nimport { usePatchChildrenRef } from \"../../hooks/usePatchChildrenRef\";\nimport styles from \"./Popover.module.css\";\n\nexport interface PopoverProps\n extends Omit<PopperCommonProps, \"arrow\" | \"arrowClassName\"> {\n /**\n * Механика вызова всплывающего окна.\n *\n * - `\"click\"` – показывается/скрывается только при нажатии.\n * - `\"hover\"` – помимо нажатия, будет показываться/скрывается при наведении/отведении мыши.\n *\n * > ⚠️`\"hover\"` на тач-устройствах будет работать как `\"click\"`, с одним лишь нюансом, что не будет закрываться\n * > при повторном нажатии на целевой элемент. Для закрытия необходимо нажать на область вне целевого элемента\n * > и выпадающего окна.\n */\n action?: \"click\" | \"hover\";\n /**\n * Если передан, то всплывающее окно будет показан/скрыт в зависимости от значения свойства.\n */\n shown?: boolean;\n /**\n * Количество миллисекунд, после которых произойдёт показ всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n showDelay?: number;\n /**\n * Количество миллисекунд, после которых произойдёт скрытие всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n hideDelay?: number;\n /**\n * Содержимое всплывающего окна.\n */\n content?: React.ReactNode;\n /**\n * Целевой элемент. Всплывающее окно появится возле него.\n *\n * > ⚠️ Если это пользовательский компонент, то он должен предоставлять параметры либо `getRootRef`, либо `ref` для получения ссылки на DOM-узел.\n */\n children?: React.ReactElement;\n /**\n * Вызывается при каждом изменении видимости всплывающего окна.\n */\n onShownChange?(shown: boolean): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popover\n */\nexport const Popover = ({\n action = \"click\",\n shown: shownProp,\n showDelay = 150,\n hideDelay = 150,\n offsetDistance = 8,\n content,\n children,\n style: styleProp,\n className,\n getRef,\n onShownChange,\n ...restProps\n}: PopoverProps) => {\n const { document } = useDOM();\n\n const hoverable = action === \"hover\";\n const hovered = React.useRef(false);\n const [computedShown, setComputedShown] = React.useState(shownProp || false);\n const [dropdownNode, setPopperNode] = React.useState<HTMLElement | null>(\n null\n );\n\n const shown = typeof shownProp === \"boolean\" ? shownProp : computedShown;\n\n const patchedPopperRef = useExternRef<HTMLDivElement>(setPopperNode, getRef);\n\n const [childRef, child] = usePatchChildrenRef(children);\n\n const setShown = (value: boolean) => {\n if (typeof shownProp !== \"boolean\") {\n setComputedShown(value);\n }\n typeof onShownChange === \"function\" && onShownChange(value);\n };\n\n const showTimeout = useTimeout(() => setShown(true), showDelay);\n\n const hideTimeout = useTimeout(() => setShown(false), hideDelay);\n\n const handleTargetEnter = () => {\n hovered.current = true;\n hideTimeout.clear();\n showTimeout.set();\n };\n\n const handleTargetClick = () => {\n if (hovered.current && shown) {\n return;\n }\n setShown(!shown);\n };\n\n const handleTargetLeave = () => {\n hovered.current = false;\n showTimeout.clear();\n hideTimeout.set();\n };\n\n const handleContentKeyDownEscape = () => {\n setShown(false);\n };\n\n const handleOutsideClick = (e: MouseEvent) => {\n if (\n dropdownNode &&\n !childRef.current?.contains(e.target as Node) &&\n !dropdownNode.contains(e.target as Node)\n ) {\n setShown(false);\n }\n };\n\n useGlobalEventListener(document, \"click\", handleOutsideClick);\n const targetEnterListener = useEventListener(\"mouseenter\", handleTargetEnter);\n const targetClickEvent = useEventListener(\"click\", handleTargetClick);\n const targetLeaveListener = useEventListener(\"mouseleave\", handleTargetLeave);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n targetClickEvent.add(childRef.current);\n }, [childRef, targetClickEvent]);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n if (hoverable) {\n targetEnterListener.add(childRef.current);\n targetLeaveListener.add(childRef.current);\n }\n\n return () => {\n targetEnterListener.remove();\n targetLeaveListener.remove();\n };\n }, [childRef, hoverable, targetEnterListener, targetLeaveListener]);\n\n return (\n <React.Fragment>\n {child}\n {shown && (\n <Popper\n {...restProps}\n className={classNamesString(styles[\"Popover\"], className)}\n targetRef={childRef}\n getRef={patchedPopperRef}\n offsetDistance={offsetDistance}\n style={\n // Reason: Typescript ругается на CSS Custom Properties в объекте\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {\n ...styleProp,\n \"--vkui_internal--popover_safe_zone_padding\": `${offsetDistance}px`,\n } as React.CSSProperties\n }\n renderContent={({ className: wrapperClassName }) => (\n <FocusTrap\n className={wrapperClassName}\n onClose={handleContentKeyDownEscape}\n >\n {content}\n </FocusTrap>\n )}\n onMouseOver={hoverable ? hideTimeout.clear : undefined}\n onMouseOut={hoverable ? handleTargetLeave : undefined}\n />\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- .vkuiSimpleCell{align-items:center;color:var(--vkui--color_text_primary);display:flex;min-height:48px;padding-left:16px;padding-right:16px;text-decoration:none;white-space:nowrap}.vkuiSimpleCell--mult{white-space:normal}.vkuiSimpleCell--mult .vkuiSimpleCell__children{text-overflow:clip}.vkuiSimpleCell__main{flex-grow:1;max-width:100%;min-width:0;overflow:hidden}.vkuiSimpleCell>.vkuiIcon{color:var(--vkui--color_icon_accent);flex-shrink:0;padding-bottom:10px;padding-right:12px;padding-top:10px}.vkuiSimpleCell>.vkuiIcon--28{padding-right:16px}.vkuiSimpleCell__subhead{color:var(--vkui--color_text_subhead)}.vkuiSimpleCell__text{overflow:hidden;text-overflow:ellipsis}.vkuiSimpleCell__extraSubtitle,.vkuiSimpleCell__subtitle{color:var(--vkui--color_text_secondary)}.vkuiSimpleCell .vkuiSimpleCell__content{align-content:flex-start;align-items:center;display:flex;justify-content:space-between;max-width:100%}.vkuiSimpleCell:not(.vkuiSimpleCell--mult) .vkuiSimpleCell__content{justify-content:flex-start}.vkuiSimpleCell__children{color:inherit;display:block;overflow:hidden;text-overflow:ellipsis}.vkuiSimpleCell--mult .vkuiSimpleCell__children,.vkuiSimpleCell--mult .vkuiSimpleCell__subtitle{flex:1 1 auto}.vkuiSimpleCell__badge{color:var(--vkui--color_icon_accent);display:inline-block;flex-grow:0;flex-shrink:0}.vkuiSimpleCell__content>:not(:last-child){margin-right:4px}.vkuiSimpleCell__indicator{color:var(--vkui--color_text_secondary);min-width:0;overflow:hidden;padding-left:4px;text-overflow:ellipsis;white-space:nowrap}.vkuiSimpleCell__after{align-items:center;color:var(--vkui--color_icon_accent);display:flex;flex-shrink:0}.vkuiSimpleCell__after>.vkuiIcon{padding-left:8px}.vkuiSimpleCell__after>.vkuiIcon:last-child{padding-right:2px}.vkuiSimpleCell__after .vkuiIconButton:last-child{margin-right:-12px}.vkuiSimpleCell__typography{font-family:var(--vkui--font_footnote--font_family--regular);font-size:var(--vkui--font_footnote--font_size--regular);font-weight:var(--vkui--font_footnote--font_weight--regular);line-height:var(--vkui--font_footnote--line_height--regular)}.vkuiSimpleCell--ios .vkuiSimpleCell__indicator,.vkuiSimpleCell--ios .vkuiSimpleCell__main{padding-bottom:11px;padding-top:9px}.vkuiSimpleCell--ios>.vkuiIcon--28{padding-left:4px}.vkuiSimpleCell--ios .vkuiSimpleCell__after .vkuiIcon--chevron_24{color:var(--vkui--color_icon_tertiary);padding-left:12px;padding-right:4px}.vkuiSimpleCell--ios .vkuiSimpleCell__after .vkuiIconButton:last-child{margin-right:-9px}.vkuiSimpleCell--sizeY-regular.vkuiSimpleCell--ios>.vkuiAvatar:not(.vkuiAvatar--size-32)~.vkuiSimpleCell__indicator,.vkuiSimpleCell--sizeY-regular.vkuiSimpleCell--ios>.vkuiAvatar:not(.vkuiAvatar--size-32)~.vkuiSimpleCell__main .vkuiSimpleCell__children{font-size:16px;line-height:20px}@media (max-width:767px) and (min-height:415px),(pointer:coarse) and (min-height:415px),(pointer:none) and (min-height:415px){.vkuiSimpleCell--sizeY-none.vkuiSimpleCell--ios>.vkuiAvatar:not(.vkuiAvatar--size-32)~.vkuiSimpleCell__indicator,.vkuiSimpleCell--sizeY-none.vkuiSimpleCell--ios>.vkuiAvatar:not(.vkuiAvatar--size-32)~.vkuiSimpleCell__main .vkuiSimpleCell__children{font-size:16px;line-height:20px}}.vkuiSimpleCell--android .vkuiSimpleCell__indicator,.vkuiSimpleCell--android .vkuiSimpleCell__main,.vkuiSimpleCell--vkcom .vkuiSimpleCell__indicator,.vkuiSimpleCell--vkcom .vkuiSimpleCell__main{padding-bottom:10px;padding-top:11px}.vkuiSimpleCell--sizeY-compact{min-height:44px}.vkuiSimpleCell--sizeY-compact .vkuiSimpleCell__indicator,.vkuiSimpleCell--sizeY-compact .vkuiSimpleCell__main{padding-bottom:10px;padding-top:10px}.vkuiSimpleCell--sizeY-compact .vkuiSimpleCell__description,.vkuiSimpleCell--sizeY-compact>.vkuiAvatar--size-28~.vkuiSimpleCell__main .vkuiSimpleCell__description,.vkuiSimpleCell--sizeY-compact>.vkuiAvatar--size-32~.vkuiSimpleCell__main .vkuiSimpleCell__description{margin-top:1px}.vkuiSimpleCell--sizeY-compact .vkuiSimpleCell__badge .vkuiBadge{transform:translateY(.5px)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiSimpleCell--sizeY-none{min-height:44px}.vkuiSimpleCell--sizeY-none .vkuiSimpleCell__indicator,.vkuiSimpleCell--sizeY-none .vkuiSimpleCell__main{padding-bottom:10px;padding-top:10px}.vkuiSimpleCell--sizeY-none .vkuiSimpleCell__description,.vkuiSimpleCell--sizeY-none>.vkuiAvatar--size-28~.vkuiSimpleCell__main .vkuiSimpleCell__description,.vkuiSimpleCell--sizeY-none>.vkuiAvatar--size-32~.vkuiSimpleCell__main .vkuiSimpleCell__description{margin-top:1px}.vkuiSimpleCell--sizeY-none .vkuiSimpleCell__badge .vkuiBadge{transform:translateY(.5px)}}.vkuiFormItem>.vkuiSimpleCell{margin:0 calc(-1 * var(--vkui--size_base_padding_horizontal--regular))}.vkuiSimpleCell__main>:not(:first-child){margin-top:2px}
1
+ .vkuiSimpleCell{align-items:center;color:var(--vkui--color_text_primary);display:flex;min-height:48px;padding-left:var(--vkui--size_base_padding_horizontal--regular);padding-right:var(--vkui--size_base_padding_horizontal--regular);text-decoration:none;white-space:nowrap}.vkuiSimpleCell--mult{white-space:normal}.vkuiSimpleCell--mult .vkuiSimpleCell__children{text-overflow:clip}.vkuiSimpleCell__main{flex-grow:1;max-width:100%;min-width:0;overflow:hidden}.vkuiSimpleCell>.vkuiIcon{color:var(--vkui--color_icon_accent);flex-shrink:0;padding-bottom:10px;padding-right:12px;padding-top:10px}.vkuiSimpleCell>.vkuiIcon--28{padding-right:16px}.vkuiSimpleCell__subhead{color:var(--vkui--color_text_subhead)}.vkuiSimpleCell__text{overflow:hidden;text-overflow:ellipsis}.vkuiSimpleCell__extraSubtitle,.vkuiSimpleCell__subtitle{color:var(--vkui--color_text_secondary)}.vkuiSimpleCell .vkuiSimpleCell__content{align-content:flex-start;align-items:center;display:flex;justify-content:space-between;max-width:100%}.vkuiSimpleCell:not(.vkuiSimpleCell--mult) .vkuiSimpleCell__content{justify-content:flex-start}.vkuiSimpleCell__children{color:inherit;display:block;overflow:hidden;text-overflow:ellipsis}.vkuiSimpleCell--mult .vkuiSimpleCell__children,.vkuiSimpleCell--mult .vkuiSimpleCell__subtitle{flex:1 1 auto}.vkuiSimpleCell__badge{color:var(--vkui--color_icon_accent);display:inline-block;flex-grow:0;flex-shrink:0}.vkuiSimpleCell__content>:not(:last-child){margin-right:4px}.vkuiSimpleCell__indicator{color:var(--vkui--color_text_secondary);min-width:0;overflow:hidden;padding-left:4px;text-overflow:ellipsis;white-space:nowrap}.vkuiSimpleCell__after{align-items:center;color:var(--vkui--color_icon_accent);display:flex;flex-shrink:0}.vkuiSimpleCell__after>.vkuiIcon{padding-left:8px}.vkuiSimpleCell__after>.vkuiIcon:last-child{padding-right:2px}.vkuiSimpleCell__after .vkuiIconButton:last-child{margin-right:-12px}.vkuiSimpleCell__typography{font-family:var(--vkui--font_footnote--font_family--regular);font-size:var(--vkui--font_footnote--font_size--regular);font-weight:var(--vkui--font_footnote--font_weight--regular);line-height:var(--vkui--font_footnote--line_height--regular)}.vkuiSimpleCell--ios .vkuiSimpleCell__indicator,.vkuiSimpleCell--ios .vkuiSimpleCell__main{padding-bottom:11px;padding-top:9px}.vkuiSimpleCell--ios>.vkuiIcon--28{padding-left:4px}.vkuiSimpleCell--ios .vkuiSimpleCell__after .vkuiIcon--chevron_24{color:var(--vkui--color_icon_tertiary);padding-left:12px;padding-right:4px}.vkuiSimpleCell--ios .vkuiSimpleCell__after .vkuiIconButton:last-child{margin-right:-9px}.vkuiSimpleCell--sizeY-regular.vkuiSimpleCell--ios>.vkuiAvatar:not(.vkuiAvatar--size-32)~.vkuiSimpleCell__indicator,.vkuiSimpleCell--sizeY-regular.vkuiSimpleCell--ios>.vkuiAvatar:not(.vkuiAvatar--size-32)~.vkuiSimpleCell__main .vkuiSimpleCell__children{font-size:16px;line-height:20px}@media (max-width:767px) and (min-height:415px),(pointer:coarse) and (min-height:415px),(pointer:none) and (min-height:415px){.vkuiSimpleCell--sizeY-none.vkuiSimpleCell--ios>.vkuiAvatar:not(.vkuiAvatar--size-32)~.vkuiSimpleCell__indicator,.vkuiSimpleCell--sizeY-none.vkuiSimpleCell--ios>.vkuiAvatar:not(.vkuiAvatar--size-32)~.vkuiSimpleCell__main .vkuiSimpleCell__children{font-size:16px;line-height:20px}}.vkuiSimpleCell--android .vkuiSimpleCell__indicator,.vkuiSimpleCell--android .vkuiSimpleCell__main,.vkuiSimpleCell--vkcom .vkuiSimpleCell__indicator,.vkuiSimpleCell--vkcom .vkuiSimpleCell__main{padding-bottom:10px;padding-top:11px}.vkuiSimpleCell--sizeY-compact{min-height:44px}.vkuiSimpleCell--sizeY-compact .vkuiSimpleCell__indicator,.vkuiSimpleCell--sizeY-compact .vkuiSimpleCell__main{padding-bottom:10px;padding-top:10px}.vkuiSimpleCell--sizeY-compact .vkuiSimpleCell__description,.vkuiSimpleCell--sizeY-compact>.vkuiAvatar--size-28~.vkuiSimpleCell__main .vkuiSimpleCell__description,.vkuiSimpleCell--sizeY-compact>.vkuiAvatar--size-32~.vkuiSimpleCell__main .vkuiSimpleCell__description{margin-top:1px}.vkuiSimpleCell--sizeY-compact .vkuiSimpleCell__badge .vkuiBadge{transform:translateY(.5px)}@media (max-height:414px),(pointer:fine) and (min-width:768px){.vkuiSimpleCell--sizeY-none{min-height:44px}.vkuiSimpleCell--sizeY-none .vkuiSimpleCell__indicator,.vkuiSimpleCell--sizeY-none .vkuiSimpleCell__main{padding-bottom:10px;padding-top:10px}.vkuiSimpleCell--sizeY-none .vkuiSimpleCell__description,.vkuiSimpleCell--sizeY-none>.vkuiAvatar--size-28~.vkuiSimpleCell__main .vkuiSimpleCell__description,.vkuiSimpleCell--sizeY-none>.vkuiAvatar--size-32~.vkuiSimpleCell__main .vkuiSimpleCell__description{margin-top:1px}.vkuiSimpleCell--sizeY-none .vkuiSimpleCell__badge .vkuiBadge{transform:translateY(.5px)}}.vkuiFormItem>.vkuiSimpleCell{margin:0 calc(-1 * var(--vkui--size_base_padding_horizontal--regular))}.vkuiSimpleCell__main>:not(:first-child){margin-top:2px}