@vkontakte/vkui 6.2.0 → 6.2.1

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 (132) hide show
  1. package/dist/cjs/components/Avatar/Avatar.d.ts +1 -4
  2. package/dist/cjs/components/Avatar/Avatar.d.ts.map +1 -1
  3. package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js +2 -2
  4. package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  5. package/dist/cjs/components/ChipsInputBase/constants.js +2 -3
  6. package/dist/cjs/components/ChipsInputBase/constants.js.map +1 -1
  7. package/dist/cjs/components/CustomSelect/CustomSelect.js +4 -5
  8. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  9. package/dist/cjs/components/GridAvatar/GridAvatar.js +1 -1
  10. package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -1
  11. package/dist/cjs/components/Image/Image.d.ts +2 -4
  12. package/dist/cjs/components/Image/Image.d.ts.map +1 -1
  13. package/dist/cjs/components/ImageBase/ImageBase.d.ts +1 -4
  14. package/dist/cjs/components/ImageBase/ImageBase.d.ts.map +1 -1
  15. package/dist/cjs/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts +4 -38
  16. package/dist/cjs/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts.map +1 -1
  17. package/dist/cjs/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js +60 -19
  18. package/dist/cjs/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
  19. package/dist/cjs/components/ImageBase/ImageBaseOverlay/hooks.d.ts +6 -0
  20. package/dist/cjs/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -0
  21. package/dist/cjs/components/ImageBase/ImageBaseOverlay/hooks.js +37 -0
  22. package/dist/cjs/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -0
  23. package/dist/cjs/components/ImageBase/ImageBaseOverlay/types.d.ts +54 -0
  24. package/dist/cjs/components/ImageBase/ImageBaseOverlay/types.d.ts.map +1 -0
  25. package/dist/cjs/components/ImageBase/ImageBaseOverlay/types.js +8 -0
  26. package/dist/cjs/components/ImageBase/ImageBaseOverlay/types.js.map +1 -0
  27. package/dist/cjs/components/Popover/Popover.d.ts +2 -2
  28. package/dist/cjs/components/Popover/Popover.d.ts.map +1 -1
  29. package/dist/cjs/components/Popover/Popover.js +4 -2
  30. package/dist/cjs/components/Popover/Popover.js.map +1 -1
  31. package/dist/cjs/hooks/useEnsuredControl.js +1 -1
  32. package/dist/cjs/hooks/useEnsuredControl.js.map +1 -1
  33. package/dist/cjs/lib/tokens/TokensClassProvider.d.ts.map +1 -1
  34. package/dist/cjs/lib/tokens/TokensClassProvider.js +1 -1
  35. package/dist/cjs/lib/tokens/TokensClassProvider.js.map +1 -1
  36. package/dist/components/Avatar/Avatar.d.ts +1 -4
  37. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  38. package/dist/components/ChipsInputBase/ChipsInputBase.js +2 -2
  39. package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  40. package/dist/components/ChipsInputBase/constants.js +2 -3
  41. package/dist/components/ChipsInputBase/constants.js.map +1 -1
  42. package/dist/components/CustomSelect/CustomSelect.js +4 -5
  43. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  44. package/dist/components/GridAvatar/GridAvatar.js +1 -1
  45. package/dist/components/GridAvatar/GridAvatar.js.map +1 -1
  46. package/dist/components/Image/Image.d.ts +2 -4
  47. package/dist/components/Image/Image.d.ts.map +1 -1
  48. package/dist/components/ImageBase/ImageBase.d.ts +1 -4
  49. package/dist/components/ImageBase/ImageBase.d.ts.map +1 -1
  50. package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts +4 -38
  51. package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts.map +1 -1
  52. package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js +64 -23
  53. package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
  54. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts +6 -0
  55. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -0
  56. package/dist/components/ImageBase/ImageBaseOverlay/hooks.js +26 -0
  57. package/dist/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -0
  58. package/dist/components/ImageBase/ImageBaseOverlay/types.d.ts +54 -0
  59. package/dist/components/ImageBase/ImageBaseOverlay/types.d.ts.map +1 -0
  60. package/dist/components/ImageBase/ImageBaseOverlay/types.js +3 -0
  61. package/dist/components/ImageBase/ImageBaseOverlay/types.js.map +1 -0
  62. package/dist/components/Popover/Popover.d.ts +2 -2
  63. package/dist/components/Popover/Popover.d.ts.map +1 -1
  64. package/dist/components/Popover/Popover.js +4 -2
  65. package/dist/components/Popover/Popover.js.map +1 -1
  66. package/dist/components.css +2 -2
  67. package/dist/components.css.map +1 -1
  68. package/dist/components.js.tmp +235 -117
  69. package/dist/cssm/components/Avatar/Avatar.d.ts +1 -4
  70. package/dist/cssm/components/Avatar/Avatar.d.ts.map +1 -1
  71. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +2 -2
  72. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  73. package/dist/cssm/components/ChipsInputBase/constants.js +2 -2
  74. package/dist/cssm/components/ChipsInputBase/constants.js.map +1 -1
  75. package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +2 -0
  76. package/dist/cssm/components/CustomSelect/CustomSelect.js +4 -4
  77. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  78. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.module.css +1 -0
  79. package/dist/cssm/components/GridAvatar/GridAvatar.js +1 -1
  80. package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -1
  81. package/dist/cssm/components/Image/Image.d.ts +2 -4
  82. package/dist/cssm/components/Image/Image.d.ts.map +1 -1
  83. package/dist/cssm/components/ImageBase/ImageBase.d.ts +1 -4
  84. package/dist/cssm/components/ImageBase/ImageBase.d.ts.map +1 -1
  85. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts +4 -38
  86. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts.map +1 -1
  87. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js +54 -18
  88. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
  89. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css +10 -0
  90. package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.d.ts +6 -0
  91. package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -0
  92. package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.js +26 -0
  93. package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -0
  94. package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.d.ts +54 -0
  95. package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.d.ts.map +1 -0
  96. package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.js +3 -0
  97. package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.js.map +1 -0
  98. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.module.css +5 -6
  99. package/dist/cssm/components/Popover/Popover.d.ts +2 -2
  100. package/dist/cssm/components/Popover/Popover.d.ts.map +1 -1
  101. package/dist/cssm/components/Popover/Popover.js +3 -2
  102. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  103. package/dist/cssm/hooks/useEnsuredControl.js +1 -1
  104. package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
  105. package/dist/cssm/lib/tokens/TokensClassProvider.d.ts.map +1 -1
  106. package/dist/cssm/lib/tokens/TokensClassProvider.js +2 -1
  107. package/dist/cssm/lib/tokens/TokensClassProvider.js.map +1 -1
  108. package/dist/cssm/lib/tokens/TokensClassProvider.module.css +4 -0
  109. package/dist/hooks/useEnsuredControl.js +1 -1
  110. package/dist/hooks/useEnsuredControl.js.map +1 -1
  111. package/dist/lib/tokens/TokensClassProvider.d.ts.map +1 -1
  112. package/dist/lib/tokens/TokensClassProvider.js +1 -1
  113. package/dist/lib/tokens/TokensClassProvider.js.map +1 -1
  114. package/dist/vkui.css +2 -2
  115. package/dist/vkui.css.map +1 -1
  116. package/dist/vkui.js.tmp +235 -117
  117. package/package.json +1 -1
  118. package/src/components/ChipsInputBase/ChipsInputBase.tsx +2 -2
  119. package/src/components/ChipsInputBase/constants.tsx +2 -2
  120. package/src/components/CustomScrollView/CustomScrollView.module.css +2 -0
  121. package/src/components/CustomSelect/CustomSelect.tsx +7 -7
  122. package/src/components/CustomSelectOption/CustomSelectOption.module.css +1 -0
  123. package/src/components/GridAvatar/GridAvatar.tsx +1 -1
  124. package/src/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css +10 -0
  125. package/src/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.tsx +89 -65
  126. package/src/components/ImageBase/ImageBaseOverlay/hooks.ts +26 -0
  127. package/src/components/ImageBase/ImageBaseOverlay/types.ts +58 -0
  128. package/src/components/ModalDismissButton/ModalDismissButton.module.css +5 -6
  129. package/src/components/Popover/Popover.tsx +3 -0
  130. package/src/hooks/useEnsuredControl.ts +1 -1
  131. package/src/lib/tokens/TokensClassProvider.module.css +4 -0
  132. package/src/lib/tokens/TokensClassProvider.tsx +6 -1
@@ -4983,15 +4983,19 @@ var getAppearanceTokenClassNameByPlatform = function(platform, tokensClassNames)
4983
4983
  return tokensClassName ? tokensClassName : DEFAULT_TOKENS_CLASS_NAMES[platform][appearance];
4984
4984
  };
4985
4985
 
4986
+ ;// CONCATENATED MODULE: ./src/lib/tokens/TokensClassProvider.module.css
4987
+ // extracted by mini-css-extract-plugin
4988
+
4986
4989
  ;// CONCATENATED MODULE: ./src/lib/tokens/TokensClassProvider.tsx
4987
4990
 
4988
4991
 
4989
4992
 
4993
+
4990
4994
  var InjectTokenClassNameToChild = function(param) {
4991
4995
  var children = param.children;
4992
4996
  var tokensClassName = useTokensClassName();
4993
4997
  return /*#__PURE__*/ React.cloneElement(children, {
4994
- className: classNames(tokensClassName, children.props.className)
4998
+ className: classNames(tokensClassName, "vkuiTokensClassProvider--default-color", children.props.className)
4995
4999
  });
4996
5000
  };
4997
5001
  var TokensClassProvider_TokensClassProvider = function(param) {
@@ -9247,6 +9251,165 @@ function useAppearance_useAppearance() {
9247
9251
  return appearance !== null && appearance !== void 0 ? appearance : appearance_DEFAULT_APPEARANCE;
9248
9252
  }
9249
9253
 
9254
+ ;// CONCATENATED MODULE: ./src/hooks/useFocusWithin.ts
9255
+ function useFocusWithin_array_like_to_array(arr, len) {
9256
+ if (len == null || len > arr.length) len = arr.length;
9257
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
9258
+ return arr2;
9259
+ }
9260
+ function useFocusWithin_array_with_holes(arr) {
9261
+ if (Array.isArray(arr)) return arr;
9262
+ }
9263
+ function useFocusWithin_iterable_to_array_limit(arr, i) {
9264
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
9265
+ if (_i == null) return;
9266
+ var _arr = [];
9267
+ var _n = true;
9268
+ var _d = false;
9269
+ var _s, _e;
9270
+ try {
9271
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
9272
+ _arr.push(_s.value);
9273
+ if (i && _arr.length === i) break;
9274
+ }
9275
+ } catch (err) {
9276
+ _d = true;
9277
+ _e = err;
9278
+ } finally{
9279
+ try {
9280
+ if (!_n && _i["return"] != null) _i["return"]();
9281
+ } finally{
9282
+ if (_d) throw _e;
9283
+ }
9284
+ }
9285
+ return _arr;
9286
+ }
9287
+ function useFocusWithin_non_iterable_rest() {
9288
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
9289
+ }
9290
+ function useFocusWithin_sliced_to_array(arr, i) {
9291
+ return useFocusWithin_array_with_holes(arr) || useFocusWithin_iterable_to_array_limit(arr, i) || useFocusWithin_unsupported_iterable_to_array(arr, i) || useFocusWithin_non_iterable_rest();
9292
+ }
9293
+ function useFocusWithin_unsupported_iterable_to_array(o, minLen) {
9294
+ if (!o) return;
9295
+ if (typeof o === "string") return useFocusWithin_array_like_to_array(o, minLen);
9296
+ var n = Object.prototype.toString.call(o).slice(8, -1);
9297
+ if (n === "Object" && o.constructor) n = o.constructor.name;
9298
+ if (n === "Map" || n === "Set") return Array.from(n);
9299
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return useFocusWithin_array_like_to_array(o, minLen);
9300
+ }
9301
+
9302
+
9303
+
9304
+ var isFocusWithin = function(ref, document) {
9305
+ return ref.contains(document.activeElement);
9306
+ };
9307
+ function useFocusWithin_useFocusWithin(ref) {
9308
+ var document = dom_useDOM().document;
9309
+ var _React_useState = useFocusWithin_sliced_to_array(react.useState(function() {
9310
+ return ref.current && document ? isFocusWithin(ref.current, document) : false;
9311
+ }), 2), focusWithin = _React_useState[0], setFocusWithin = _React_useState[1];
9312
+ useIsomorphicLayoutEffect_useIsomorphicLayoutEffect(function handleAutoFocus() {
9313
+ /* istanbul ignore if: невозможный кейс, т.к. в SSR эффекты не вызываются. Проверка на будущее, если вдруг эффект будет вызываться. */ if (!document) {
9314
+ return;
9315
+ }
9316
+ var handleFocusOrBlurEvents = function() {
9317
+ if (ref.current) {
9318
+ setFocusWithin(isFocusWithin(ref.current, document));
9319
+ }
9320
+ };
9321
+ // Вызываем в начале, чтобы проверить autoFocus
9322
+ void handleFocusOrBlurEvents();
9323
+ document.addEventListener('focus', handleFocusOrBlurEvents, {
9324
+ capture: true
9325
+ });
9326
+ document.addEventListener('blur', handleFocusOrBlurEvents, {
9327
+ capture: true
9328
+ });
9329
+ return function() {
9330
+ document.removeEventListener('focus', handleFocusOrBlurEvents, {
9331
+ capture: true
9332
+ });
9333
+ document.removeEventListener('blur', handleFocusOrBlurEvents, {
9334
+ capture: true
9335
+ });
9336
+ };
9337
+ }, []);
9338
+ return focusWithin;
9339
+ }
9340
+
9341
+ ;// CONCATENATED MODULE: ./src/components/ImageBase/ImageBaseOverlay/hooks.ts
9342
+ function hooks_array_like_to_array(arr, len) {
9343
+ if (len == null || len > arr.length) len = arr.length;
9344
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
9345
+ return arr2;
9346
+ }
9347
+ function hooks_array_with_holes(arr) {
9348
+ if (Array.isArray(arr)) return arr;
9349
+ }
9350
+ function hooks_iterable_to_array_limit(arr, i) {
9351
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
9352
+ if (_i == null) return;
9353
+ var _arr = [];
9354
+ var _n = true;
9355
+ var _d = false;
9356
+ var _s, _e;
9357
+ try {
9358
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
9359
+ _arr.push(_s.value);
9360
+ if (i && _arr.length === i) break;
9361
+ }
9362
+ } catch (err) {
9363
+ _d = true;
9364
+ _e = err;
9365
+ } finally{
9366
+ try {
9367
+ if (!_n && _i["return"] != null) _i["return"]();
9368
+ } finally{
9369
+ if (_d) throw _e;
9370
+ }
9371
+ }
9372
+ return _arr;
9373
+ }
9374
+ function hooks_non_iterable_rest() {
9375
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
9376
+ }
9377
+ function hooks_sliced_to_array(arr, i) {
9378
+ return hooks_array_with_holes(arr) || hooks_iterable_to_array_limit(arr, i) || hooks_unsupported_iterable_to_array(arr, i) || hooks_non_iterable_rest();
9379
+ }
9380
+ function hooks_unsupported_iterable_to_array(o, minLen) {
9381
+ if (!o) return;
9382
+ if (typeof o === "string") return hooks_array_like_to_array(o, minLen);
9383
+ var n = Object.prototype.toString.call(o).slice(8, -1);
9384
+ if (n === "Object" && o.constructor) n = o.constructor.name;
9385
+ if (n === "Map" || n === "Set") return Array.from(n);
9386
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return hooks_array_like_to_array(o, minLen);
9387
+ }
9388
+
9389
+
9390
+
9391
+ function useNonInteractiveOverlayProps(rootRef) {
9392
+ var focusWithin = useFocusWithin_useFocusWithin(rootRef);
9393
+ var _React_useState = hooks_sliced_to_array(react.useState(false), 2), nonInteractiveFocusShown = _React_useState[0], setNonInteractiveFocusShown = _React_useState[1];
9394
+ function onClick(event) {
9395
+ if (event.detail > 0) {
9396
+ // Если мы попали на вложенный в оверлей элемент через focus,
9397
+ // то при клике мышкой мы должны начать реагировать на hover-состояние,
9398
+ // даже если фокус всё ещё остался на вложенном элементе (был по нему клик)
9399
+ setNonInteractiveFocusShown(false);
9400
+ }
9401
+ }
9402
+ useIsomorphicLayoutEffect_useIsomorphicLayoutEffect(function() {
9403
+ setNonInteractiveFocusShown(focusWithin);
9404
+ }, [
9405
+ focusWithin
9406
+ ]);
9407
+ return {
9408
+ shown: nonInteractiveFocusShown && focusWithin,
9409
+ onClick: onClick
9410
+ };
9411
+ }
9412
+
9250
9413
  ;// CONCATENATED MODULE: ./src/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css
9251
9414
  // extracted by mini-css-extract-plugin
9252
9415
 
@@ -9339,30 +9502,70 @@ function ImageBaseOverlay_object_without_properties_loose(source, excluded) {
9339
9502
 
9340
9503
 
9341
9504
 
9505
+
9506
+
9507
+
9508
+ var ImageBaseOverlayInteractive = function(_param) {
9509
+ var children = _param.children, className = _param.className, getRootRef = _param.getRootRef, disableInteractive = _param.disableInteractive, overlayShown = _param.overlayShown, restProps = ImageBaseOverlay_object_without_properties(_param, [
9510
+ "children",
9511
+ "className",
9512
+ "getRootRef",
9513
+ "disableInteractive",
9514
+ "overlayShown"
9515
+ ]);
9516
+ var _useFocusVisible = useFocusVisible_useFocusVisible(), focusVisible = _useFocusVisible.focusVisible, focusEvents = ImageBaseOverlay_object_without_properties(_useFocusVisible, [
9517
+ "focusVisible"
9518
+ ]);
9519
+ var focusVisibleClassNames = useFocusVisibleClassName_useFocusVisibleClassName({
9520
+ focusVisible: focusVisible,
9521
+ mode: 'inside'
9522
+ });
9523
+ var keyboardHandlers = useKeyboard_useKeyboard();
9524
+ if (false) { var size; }
9525
+ return /*#__PURE__*/ react.createElement("div", ImageBaseOverlay_object_spread(ImageBaseOverlay_object_spread_props(ImageBaseOverlay_object_spread({}, restProps), {
9526
+ tabIndex: 0,
9527
+ role: "button",
9528
+ className: classNames_classNames("vkuiImageBaseOverlay--clickable", (focusVisible || overlayShown) && "vkuiImageBaseOverlay--visible", focusVisibleClassNames, className),
9529
+ ref: getRootRef
9530
+ }), focusEvents, keyboardHandlers), children);
9531
+ };
9532
+ var ImageBaseOverlayNonInteractive = function(_param) {
9533
+ var className = _param.className, getRootRef = _param.getRootRef, disableInteractive = _param.disableInteractive, overlayShownProps = _param.overlayShown, restProps = ImageBaseOverlay_object_without_properties(_param, [
9534
+ "className",
9535
+ "getRootRef",
9536
+ "disableInteractive",
9537
+ "overlayShown"
9538
+ ]);
9539
+ var rootRef = useExternRef_useExternRef(getRootRef);
9540
+ var _useNonInteractiveOverlayProps = useNonInteractiveOverlayProps(rootRef), overlayShown = _useNonInteractiveOverlayProps.shown, onOverlayClick = _useNonInteractiveOverlayProps.onClick;
9541
+ return /*#__PURE__*/ react.createElement("div", ImageBaseOverlay_object_spread_props(ImageBaseOverlay_object_spread({}, restProps), {
9542
+ ref: rootRef,
9543
+ className: classNames_classNames((overlayShown || overlayShownProps) && "vkuiImageBaseOverlay--visible", className),
9544
+ onClick: onOverlayClick
9545
+ }));
9546
+ };
9342
9547
  /**
9343
- * Интерактивный оверлей над картинкой.
9548
+ * Оверлей над картинкой.
9344
9549
  */ var ImageBaseOverlay = function(_param) {
9345
- var className = _param.className, themeProp = _param.theme, visibilityProp = _param.visibility, children = _param.children, onClickProp = _param.onClick, restProps = ImageBaseOverlay_object_without_properties(_param, [
9550
+ var className = _param.className, themeProp = _param.theme, visibilityProp = _param.visibility, restProps = ImageBaseOverlay_object_without_properties(_param, [
9346
9551
  "className",
9347
9552
  "theme",
9348
- "visibility",
9349
- "children",
9350
- "onClick"
9553
+ "visibility"
9351
9554
  ]);
9352
9555
  var appearance = useAppearance_useAppearance();
9353
9556
  var hasPointer = useAdaptivityHasPointer_useAdaptivityHasPointer();
9354
9557
  var theme = themeProp !== null && themeProp !== void 0 ? themeProp : appearance;
9355
9558
  var visibility = visibilityProp !== null && visibilityProp !== void 0 ? visibilityProp : hasPointer ? 'on-hover' : 'always';
9356
- if (false) { var size; }
9357
- var onClick = (onClickProp !== null && onClickProp !== void 0 ? onClickProp : visibility === 'on-hover') ? functions_noop : undefined;
9358
- return /*#__PURE__*/ react.createElement(Tappable_Tappable, ImageBaseOverlay_object_spread_props(ImageBaseOverlay_object_spread({}, restProps), {
9359
- className: classNames_classNames("vkuiImageBaseOverlay", visibility === 'always' && "vkuiImageBaseOverlay--visible", theme === 'light' && "vkuiImageBaseOverlay--theme-light", theme === 'dark' && "vkuiImageBaseOverlay--theme-dark", className),
9360
- hasHover: visibility === 'on-hover',
9361
- hoverMode: visibility === 'on-hover' ? "vkuiImageBaseOverlay--visible" : undefined,
9362
- focusVisibleMode: classNames_classNames(focusVisiblePresetModeClassNames['inside'], "vkuiImageBaseOverlay--visible"),
9363
- hasActive: false,
9364
- onClick: onClick
9365
- }), children);
9559
+ var commonClassNames = classNames_classNames("vkuiImageBaseOverlay", theme === 'light' && "vkuiImageBaseOverlay--theme-light", theme === 'dark' && "vkuiImageBaseOverlay--theme-dark", className);
9560
+ var commonProps = {
9561
+ className: commonClassNames,
9562
+ overlayShown: visibility === 'always'
9563
+ };
9564
+ // Не делаем деструктуризацию пропа, потому что Typescript не вывозит
9565
+ if (restProps.disableInteractive) {
9566
+ return /*#__PURE__*/ react.createElement(ImageBaseOverlayNonInteractive, ImageBaseOverlay_object_spread({}, restProps, commonProps));
9567
+ }
9568
+ return /*#__PURE__*/ react.createElement(ImageBaseOverlayInteractive, ImageBaseOverlay_object_spread({}, restProps, commonProps));
9366
9569
  };
9367
9570
  ImageBaseOverlay.displayName = 'ImageBaseOverlay';
9368
9571
 
@@ -12575,7 +12778,7 @@ function useEnsuredControl_useCustomEnsuredControl(param) {
12575
12778
  var value = param.value, defaultValue = param.defaultValue, disabled = param.disabled, onChangeProp = param.onChange;
12576
12779
  var isControlled = value !== undefined;
12577
12780
  var _React_useState = useEnsuredControl_sliced_to_array(react.useState(defaultValue), 2), localValue = _React_useState[0], setLocalValue = _React_useState[1];
12578
- var preservedControlledValueRef = react.useRef();
12781
+ var preservedControlledValueRef = react.useRef(value);
12579
12782
  useIsomorphicLayoutEffect_useIsomorphicLayoutEffect(function() {
12580
12783
  preservedControlledValueRef.current = value;
12581
12784
  });
@@ -19535,93 +19738,6 @@ function ScreenSpinner_object_without_properties_loose(source, excluded) {
19535
19738
  }, /*#__PURE__*/ React.createElement(Icon, null))));
19536
19739
  };
19537
19740
 
19538
- ;// CONCATENATED MODULE: ./src/hooks/useFocusWithin.ts
19539
- function useFocusWithin_array_like_to_array(arr, len) {
19540
- if (len == null || len > arr.length) len = arr.length;
19541
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
19542
- return arr2;
19543
- }
19544
- function useFocusWithin_array_with_holes(arr) {
19545
- if (Array.isArray(arr)) return arr;
19546
- }
19547
- function useFocusWithin_iterable_to_array_limit(arr, i) {
19548
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
19549
- if (_i == null) return;
19550
- var _arr = [];
19551
- var _n = true;
19552
- var _d = false;
19553
- var _s, _e;
19554
- try {
19555
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
19556
- _arr.push(_s.value);
19557
- if (i && _arr.length === i) break;
19558
- }
19559
- } catch (err) {
19560
- _d = true;
19561
- _e = err;
19562
- } finally{
19563
- try {
19564
- if (!_n && _i["return"] != null) _i["return"]();
19565
- } finally{
19566
- if (_d) throw _e;
19567
- }
19568
- }
19569
- return _arr;
19570
- }
19571
- function useFocusWithin_non_iterable_rest() {
19572
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
19573
- }
19574
- function useFocusWithin_sliced_to_array(arr, i) {
19575
- return useFocusWithin_array_with_holes(arr) || useFocusWithin_iterable_to_array_limit(arr, i) || useFocusWithin_unsupported_iterable_to_array(arr, i) || useFocusWithin_non_iterable_rest();
19576
- }
19577
- function useFocusWithin_unsupported_iterable_to_array(o, minLen) {
19578
- if (!o) return;
19579
- if (typeof o === "string") return useFocusWithin_array_like_to_array(o, minLen);
19580
- var n = Object.prototype.toString.call(o).slice(8, -1);
19581
- if (n === "Object" && o.constructor) n = o.constructor.name;
19582
- if (n === "Map" || n === "Set") return Array.from(n);
19583
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return useFocusWithin_array_like_to_array(o, minLen);
19584
- }
19585
-
19586
-
19587
-
19588
- var isFocusWithin = function(ref, document) {
19589
- return ref.contains(document.activeElement);
19590
- };
19591
- function useFocusWithin_useFocusWithin(ref) {
19592
- var document = dom_useDOM().document;
19593
- var _React_useState = useFocusWithin_sliced_to_array(react.useState(function() {
19594
- return ref.current && document ? isFocusWithin(ref.current, document) : false;
19595
- }), 2), focusWithin = _React_useState[0], setFocusWithin = _React_useState[1];
19596
- useIsomorphicLayoutEffect_useIsomorphicLayoutEffect(function handleAutoFocus() {
19597
- /* istanbul ignore if: невозможный кейс, т.к. в SSR эффекты не вызываются. Проверка на будущее, если вдруг эффект будет вызываться. */ if (!document) {
19598
- return;
19599
- }
19600
- var handleFocusOrBlurEvents = function() {
19601
- if (ref.current) {
19602
- setFocusWithin(isFocusWithin(ref.current, document));
19603
- }
19604
- };
19605
- // Вызываем в начале, чтобы проверить autoFocus
19606
- void handleFocusOrBlurEvents();
19607
- document.addEventListener('focus', handleFocusOrBlurEvents, {
19608
- capture: true
19609
- });
19610
- document.addEventListener('blur', handleFocusOrBlurEvents, {
19611
- capture: true
19612
- });
19613
- return function() {
19614
- document.removeEventListener('focus', handleFocusOrBlurEvents, {
19615
- capture: true
19616
- });
19617
- document.removeEventListener('blur', handleFocusOrBlurEvents, {
19618
- capture: true
19619
- });
19620
- };
19621
- }, []);
19622
- return focusWithin;
19623
- }
19624
-
19625
19741
  ;// CONCATENATED MODULE: ./src/hooks/useGlobalEscKeyDown.ts
19626
19742
 
19627
19743
 
@@ -29063,7 +29179,7 @@ var GridAvatar_warn = warnOnce('GridAvatar');
29063
29179
  "aria-hidden": true
29064
29180
  }, src.map(function(url, index) {
29065
29181
  return index < MAX_GRID_LENGTH ? /*#__PURE__*/ React.createElement("div", {
29066
- key: url,
29182
+ key: index,
29067
29183
  className: "vkuiGridAvatar__item",
29068
29184
  style: {
29069
29185
  backgroundImage: "url(".concat(url, ")")
@@ -35199,12 +35315,11 @@ function constants_getNewOptionDataDefault(value, label) {
35199
35315
  };
35200
35316
  }
35201
35317
  function constants_renderChipDefault(props) {
35202
- var disabled = props.disabled, label = props.label, rest = constants_object_without_properties(props, [
35203
- "disabled",
35318
+ var label = props.label, rest = constants_object_without_properties(props, [
35204
35319
  "label"
35205
35320
  ]);
35206
35321
  return /*#__PURE__*/ React.createElement(Chip, constants_object_spread({
35207
- removable: !disabled
35322
+ removable: !props.disabled
35208
35323
  }, rest), label);
35209
35324
  }
35210
35325
 
@@ -35566,8 +35681,8 @@ var ChipsInputBase_ChipsInputBase = function(_param) {
35566
35681
  'Component': 'div',
35567
35682
  'value': option.value,
35568
35683
  'label': option.label,
35569
- 'disabled': disabled,
35570
- 'readOnly': readOnly,
35684
+ 'disabled': option.disabled || disabled,
35685
+ 'readOnly': option.readOnly || readOnly,
35571
35686
  'className': "vkuiChipsInputBase__chip",
35572
35687
  'onRemove': handleChipRemove,
35573
35688
  // чтобы можно было легче найти этот чип в DOM
@@ -39625,7 +39740,7 @@ var CustomSelect_defaultOptions = (/* unused pure expression or super */ null &&
39625
39740
  var scrollToElement = React.useCallback(function(index) {
39626
39741
  var center = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
39627
39742
  var dropdown = scrollBoxRef.current;
39628
- var item = dropdown ? dropdown.children[index] : null;
39743
+ var item = dropdown && dropdown.firstElementChild ? dropdown.firstElementChild.children[index] : null;
39629
39744
  if (!item || !dropdown) {
39630
39745
  return;
39631
39746
  }
@@ -39918,11 +40033,10 @@ var CustomSelect_defaultOptions = (/* unused pure expression or super */ null &&
39918
40033
  x: 0,
39919
40034
  y: 0
39920
40035
  });
39921
- var focusOptionOnMouseMove = React.useCallback(function(e) {
40036
+ var focusOptionOnMouseMove = React.useCallback(function(e, index) {
39922
40037
  var isMouseChangedPosition = Math.abs(prevMousePositionRef.current.x - e.clientX) >= 1 || Math.abs(prevMousePositionRef.current.y - e.clientY) >= 1;
39923
40038
  if (isMouseChangedPosition) {
39924
- var _e_currentTarget_parentNode;
39925
- focusOptionByIndex(Array.prototype.indexOf.call((_e_currentTarget_parentNode = e.currentTarget.parentNode) === null || _e_currentTarget_parentNode === void 0 ? void 0 : _e_currentTarget_parentNode.children, e.currentTarget), false);
40039
+ focusOptionByIndex(index, false);
39926
40040
  }
39927
40041
  prevMousePositionRef.current = {
39928
40042
  x: e.clientX,
@@ -39952,7 +40066,9 @@ var CustomSelect_defaultOptions = (/* unused pure expression or super */ null &&
39952
40066
  // Причём координаты события меняются на пару пикселей по сравнению с прошлым вызовом,
39953
40067
  // а значит нельзя на них опираться, чтобы запретить обработку такого события.
39954
40068
  // C mousemove такой проблемы нет, что позволяет реализовать поведение при наведении с клавиатуры и при наведении мышью идентично `<select>`.
39955
- onMouseMove: focusOptionOnMouseMove,
40069
+ onMouseMove: function(e) {
40070
+ return focusOptionOnMouseMove(e, index);
40071
+ },
39956
40072
  id: "".concat(popupAriaId, "-").concat(option.value)
39957
40073
  }));
39958
40074
  }, [
@@ -45226,7 +45342,7 @@ function Popover_unsupported_iterable_to_array(o, minLen) {
45226
45342
  * @see https://vkcom.github.io/VKUI/#/Popover
45227
45343
  */ var Popover = function(_param) {
45228
45344
  var // UsePopoverProps
45229
- withArrow = _param.arrow, _param_arrowHeight = _param.arrowHeight, arrowHeight = _param_arrowHeight === void 0 ? DEFAULT_ARROW_HEIGHT : _param_arrowHeight, _param_arrowPadding = _param.arrowPadding, arrowPadding = _param_arrowPadding === void 0 ? DEFAULT_ARROW_PADDING : _param_arrowPadding, tmp = _param.placement, expectedPlacement = tmp === void 0 ? 'bottom-start' : tmp, onPlacementChange = _param.onPlacementChange, _param_disableFlipMiddleware = _param.disableFlipMiddleware, disableFlipMiddleware = _param_disableFlipMiddleware === void 0 ? false : _param_disableFlipMiddleware, _param_trigger = _param.trigger, trigger = _param_trigger === void 0 ? 'click' : _param_trigger, content = _param.content, _param_hoverDelay = _param.hoverDelay, hoverDelay = _param_hoverDelay === void 0 ? 150 : _param_hoverDelay, closeAfterClick = _param.closeAfterClick, _param_offsetByMainAxis = _param.offsetByMainAxis, offsetByMainAxis = _param_offsetByMainAxis === void 0 ? 8 : _param_offsetByMainAxis, _param_offsetByCrossAxis = _param.offsetByCrossAxis, offsetByCrossAxis = _param_offsetByCrossAxis === void 0 ? 0 : _param_offsetByCrossAxis, sameWidth = _param.sameWidth, hideWhenReferenceHidden = _param.hideWhenReferenceHidden, disabled = _param.disabled, disableInteractive = _param.disableInteractive, disableCloseOnClickOutside = _param.disableCloseOnClickOutside, disableCloseOnEscKey = _param.disableCloseOnEscKey, _param_keepMounted = _param.keepMounted, keepMounted = _param_keepMounted === void 0 ? false : _param_keepMounted, _param_defaultShown = _param.// uncontrolled
45345
+ withArrow = _param.arrow, _param_arrowHeight = _param.arrowHeight, arrowHeight = _param_arrowHeight === void 0 ? DEFAULT_ARROW_HEIGHT : _param_arrowHeight, _param_arrowPadding = _param.arrowPadding, arrowPadding = _param_arrowPadding === void 0 ? DEFAULT_ARROW_PADDING : _param_arrowPadding, tmp = _param.placement, expectedPlacement = tmp === void 0 ? 'bottom-start' : tmp, onPlacementChange = _param.onPlacementChange, _param_disableFlipMiddleware = _param.disableFlipMiddleware, disableFlipMiddleware = _param_disableFlipMiddleware === void 0 ? false : _param_disableFlipMiddleware, _param_trigger = _param.trigger, trigger = _param_trigger === void 0 ? 'click' : _param_trigger, content = _param.content, _param_hoverDelay = _param.hoverDelay, hoverDelay = _param_hoverDelay === void 0 ? 150 : _param_hoverDelay, closeAfterClick = _param.closeAfterClick, _param_offsetByMainAxis = _param.offsetByMainAxis, offsetByMainAxis = _param_offsetByMainAxis === void 0 ? 8 : _param_offsetByMainAxis, _param_offsetByCrossAxis = _param.offsetByCrossAxis, offsetByCrossAxis = _param_offsetByCrossAxis === void 0 ? 0 : _param_offsetByCrossAxis, sameWidth = _param.sameWidth, hideWhenReferenceHidden = _param.hideWhenReferenceHidden, disabled = _param.disabled, disableInteractive = _param.disableInteractive, disableCloseOnClickOutside = _param.disableCloseOnClickOutside, disableCloseOnEscKey = _param.disableCloseOnEscKey, _param_keepMounted = _param.keepMounted, keepMounted = _param_keepMounted === void 0 ? false : _param_keepMounted, customMiddlewares = _param.customMiddlewares, _param_defaultShown = _param.// uncontrolled
45230
45346
  defaultShown, defaultShown = _param_defaultShown === void 0 ? false : _param_defaultShown, // controlled
45231
45347
  shownProp = _param.shown, onShownChange = _param.onShownChange, _param_usePortal = _param.// Для AppRootPortal
45232
45348
  usePortal, usePortal = _param_usePortal === void 0 ? true : _param_usePortal, // Для FloatingArrow
@@ -45252,6 +45368,7 @@ function Popover_unsupported_iterable_to_array(o, minLen) {
45252
45368
  "disableCloseOnClickOutside",
45253
45369
  "disableCloseOnEscKey",
45254
45370
  "keepMounted",
45371
+ "customMiddlewares",
45255
45372
  "defaultShown",
45256
45373
  "shown",
45257
45374
  "onShownChange",
@@ -45277,7 +45394,8 @@ function Popover_unsupported_iterable_to_array(o, minLen) {
45277
45394
  offsetByCrossAxis: offsetByCrossAxis,
45278
45395
  sameWidth: sameWidth,
45279
45396
  hideWhenReferenceHidden: hideWhenReferenceHidden,
45280
- disableFlipMiddleware: disableFlipMiddleware
45397
+ disableFlipMiddleware: disableFlipMiddleware,
45398
+ customMiddlewares: customMiddlewares
45281
45399
  }), middlewares = _useFloatingMiddlewaresBootstrap.middlewares, strictPlacement = _useFloatingMiddlewaresBootstrap.strictPlacement;
45282
45400
  var _useFloatingWithInteractions = useFloatingWithInteractions({
45283
45401
  middlewares: middlewares,
@@ -58,10 +58,7 @@ export declare const Avatar: {
58
58
  ({ preset, className, ...restProps }: AvatarBadgeWithPresetProps): import("react/jsx-runtime").JSX.Element;
59
59
  displayName: string;
60
60
  };
61
- Overlay: {
62
- ({ className, theme: themeProp, visibility: visibilityProp, children, onClick: onClickProp, ...restProps }: ImageBaseOverlayProps): import("react/jsx-runtime").JSX.Element;
63
- displayName: string;
64
- };
61
+ Overlay: import("react").FC<ImageBaseOverlayProps>;
65
62
  getInitialsFontSize: typeof getInitialsFontSize;
66
63
  };
67
64
  //# sourceMappingURL=Avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,YAAY,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,IAAI,kBAAkB,GAC5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,QAAA,MAAM,yBAAyB;;;;;;;CAOrB,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG,MAAM,OAAO,yBAAyB,CAAC;AAEnF,MAAM,MAAM,2BAA2B,GACnC,CAAC,OAAO,yBAAyB,CAAC,CAAC,6BAA6B,CAAC,GACjE,MAAM,CAAC;AAYX,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,YAAY,CAAC;IACnF;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,6BAA6B,GAAG,2BAA2B,GAAG,QAAQ,CAAC;CACxF;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;2GAQhB,WAAW;;;;;;;;;;;;;;;CAiCb,CAAC"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,YAAY,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,IAAI,kBAAkB,GAC5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,QAAA,MAAM,yBAAyB;;;;;;;CAOrB,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG,MAAM,OAAO,yBAAyB,CAAC;AAEnF,MAAM,MAAM,2BAA2B,GACnC,CAAC,OAAO,yBAAyB,CAAC,CAAC,6BAA6B,CAAC,GACjE,MAAM,CAAC;AAYX,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,YAAY,CAAC;IACnF;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,6BAA6B,GAAG,2BAA2B,GAAG,QAAQ,CAAC;CACxF;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;2GAQhB,WAAW;;;;;;;;;;;;CAiCb,CAAC"}
@@ -144,8 +144,8 @@ getRef, id: idProp, inputValue = DEFAULT_INPUT_VALUE, placeholder, disabled, rea
144
144
  'Component': 'div',
145
145
  'value': option.value,
146
146
  'label': option.label,
147
- 'disabled': disabled,
148
- 'readOnly': readOnly,
147
+ 'disabled': option.disabled || disabled,
148
+ 'readOnly': option.readOnly || readOnly,
149
149
  'className': styles['ChipsInputBase__chip'],
150
150
  'onRemove': handleChipRemove,
151
151
  // чтобы можно было легче найти этот чип в DOM
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ChipsInputBase/ChipsInputBase.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { isHTMLElement } from '@vkontakte/vkui-floating-ui/utils/dom';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { getHorizontalFocusGoTo, Keys } from '../../lib/accessibility';\nimport {\n contains as checkTargetIsInputEl,\n contains,\n getActiveElementByAnotherElement,\n} from '../../lib/dom';\nimport { FormField } from '../FormField/FormField';\nimport { Text } from '../Typography/Text/Text';\nimport { DEFAULT_INPUT_VALUE, DEFAULT_VALUE, renderChipDefault } from './constants';\nimport {\n getChipOptionIndexByHTMLElement,\n getChipOptionIndexByValueProp,\n getChipOptionValueByHTMLElement,\n getNextChipOptionIndexByNavigateToProp,\n isInputValueEmpty,\n} from './helpers';\nimport type { ChipOption, ChipOptionValue, ChipsInputBasePrivateProps, NavigateTo } from './types';\nimport styles from './ChipsInputBase.module.css';\n\nconst sizeYClassNames = {\n none: styles['ChipsInputBase--sizeY-none'],\n compact: styles['ChipsInputBase--sizeY-compact'],\n} as const;\n\nexport const ChipsInputBase = <O extends ChipOption>({\n // FormFieldProps\n getRootRef,\n style,\n className,\n before,\n after,\n status,\n mode,\n\n // option\n value = DEFAULT_VALUE,\n onAddChipOption,\n onRemoveChipOption: onRemoveChipOptionProp,\n renderChip = renderChipDefault,\n\n // input\n getRef,\n id: idProp,\n inputValue = DEFAULT_INPUT_VALUE,\n placeholder,\n disabled,\n readOnly,\n addOnBlur,\n onBlur,\n onInputChange,\n ...restProps\n}: ChipsInputBasePrivateProps<O>) => {\n const { sizeY = 'none' } = useAdaptivity();\n const idGenerated = React.useId();\n const inputRef = useExternRef(getRef);\n const listboxRef = React.useRef<HTMLDivElement>(null);\n\n const valueLength = value.length;\n const withPlaceholder = valueLength === 0;\n const [lastFocusedChipOptionIndex, setLastFocusedChipOptionIndex] = React.useState(0);\n\n const resetChipOptionFocusToInputEl = (inputEl: HTMLInputElement) => {\n setLastFocusedChipOptionIndex(0);\n inputEl.focus();\n };\n\n const moveFocusToChipOption = (\n currentIndex: number,\n navigateTo: NavigateTo,\n listboxEl: HTMLElement,\n ) => {\n const index = getNextChipOptionIndexByNavigateToProp(currentIndex, navigateTo, valueLength);\n // eslint-disable-next-line no-restricted-properties\n const foundEl = listboxEl.querySelector<HTMLElement>(`[data-index=\"${index}\"]`);\n\n if (foundEl) {\n setLastFocusedChipOptionIndex(index);\n foundEl.focus();\n }\n };\n\n const removeChipOption = (o: O | ChipOptionValue, index: number) => {\n /* istanbul ignore if: невозможный кейс (в SSR вызова этой функции не будет) */\n if (!inputRef.current || !listboxRef.current) {\n return;\n }\n\n if (valueLength > 1) {\n if (index === valueLength - 1) {\n moveFocusToChipOption(index, 'prev', listboxRef.current);\n } else {\n moveFocusToChipOption(index, 'next', listboxRef.current);\n }\n } else {\n resetChipOptionFocusToInputEl(inputRef.current);\n }\n\n onRemoveChipOptionProp(o);\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const targetEl = event.target;\n /* istanbul ignore if: невозможный кейс (в SSR вызова этой функции не будет) */\n if (event.defaultPrevented || !listboxRef.current || !isHTMLElement(targetEl)) {\n return;\n }\n\n switch (event.key) {\n case Keys.ENTER: {\n if (\n !readOnly &&\n checkTargetIsInputEl(targetEl, inputRef.current) &&\n inputRef.current &&\n !isInputValueEmpty(inputRef.current)\n ) {\n event.preventDefault();\n onAddChipOption(inputRef.current.value);\n }\n break;\n }\n case Keys.DELETE:\n case Keys.BACKSPACE: {\n if (!readOnly && valueLength > 0) {\n if (!checkTargetIsInputEl(targetEl, inputRef.current)) {\n event.preventDefault();\n removeChipOption(\n getChipOptionValueByHTMLElement(targetEl),\n getChipOptionIndexByHTMLElement(targetEl),\n );\n } else if (event.key === Keys.BACKSPACE && isInputValueEmpty(inputRef.current)) {\n event.preventDefault();\n moveFocusToChipOption(\n getChipOptionIndexByHTMLElement(targetEl),\n 'last',\n listboxRef.current,\n );\n }\n }\n break;\n }\n case Keys.ARROW_UP:\n case Keys.ARROW_LEFT:\n case Keys.ARROW_DOWN:\n case Keys.ARROW_RIGHT: {\n if (valueLength !== 0 && !checkTargetIsInputEl(targetEl, inputRef.current)) {\n event.preventDefault();\n moveFocusToChipOption(\n getChipOptionIndexByHTMLElement(targetEl),\n getHorizontalFocusGoTo(event.key),\n listboxRef.current,\n );\n }\n break;\n }\n }\n };\n\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(event);\n }\n\n if (addOnBlur && !event.defaultPrevented && inputRef.current) {\n onAddChipOption(inputRef.current.value);\n }\n };\n\n const handleChipRemove = (event: React.MouseEvent, v: ChipOptionValue) => {\n event.preventDefault();\n event.stopPropagation();\n removeChipOption(v, getChipOptionIndexByValueProp(v, value));\n };\n\n const handleRootClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (contains(event.currentTarget, getActiveElementByAnotherElement(event.currentTarget))) {\n return;\n }\n\n if (valueLength > 0 && listboxRef.current) {\n moveFocusToChipOption(0, 'first', listboxRef.current);\n } else if (inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n return (\n <FormField\n Component=\"div\"\n getRootRef={getRootRef}\n style={style}\n disabled={disabled}\n before={before}\n after={after}\n status={status}\n mode={mode}\n className={className}\n onClick={disabled ? undefined : handleRootClick}\n >\n <div\n className={classNames(\n styles['ChipsInputBase'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n withPlaceholder && styles['ChipsInputBase--hasPlaceholder'],\n )}\n // для a11y\n ref={listboxRef}\n role=\"listbox\"\n aria-orientation=\"horizontal\"\n aria-disabled={disabled}\n aria-readonly={readOnly}\n onKeyDown={disabled ? undefined : handleListboxKeyDown}\n >\n {value.map((option, index) => (\n <React.Fragment key={`${typeof option.value}-${option.label}`}>\n {renderChip(\n {\n 'Component': 'div',\n 'value': option.value,\n 'label': option.label,\n 'disabled': disabled,\n 'readOnly': readOnly,\n 'className': styles['ChipsInputBase__chip'],\n 'onRemove': handleChipRemove,\n // чтобы можно было легче найти этот чип в DOM\n 'data-index': index,\n 'data-value': option.value,\n // для a11y\n 'tabIndex': lastFocusedChipOptionIndex === index ? 0 : -1,\n 'role': 'option',\n 'aria-selected': true,\n 'aria-posinset': index + 1,\n 'aria-setsize': valueLength,\n },\n option,\n )}\n </React.Fragment>\n ))}\n <Text\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n {...restProps}\n Component=\"input\"\n type=\"text\"\n id={idProp || `chips-input-base-generated-id-${idGenerated}`}\n getRootRef={inputRef}\n className={styles['ChipsInputBase__el']}\n disabled={disabled}\n readOnly={readOnly}\n placeholder={withPlaceholder ? placeholder : undefined}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n />\n </div>\n </FormField>\n );\n};\n"],"names":["React","classNames","isHTMLElement","useAdaptivity","useExternRef","getHorizontalFocusGoTo","Keys","contains","checkTargetIsInputEl","getActiveElementByAnotherElement","FormField","Text","DEFAULT_INPUT_VALUE","DEFAULT_VALUE","renderChipDefault","getChipOptionIndexByHTMLElement","getChipOptionIndexByValueProp","getChipOptionValueByHTMLElement","getNextChipOptionIndexByNavigateToProp","isInputValueEmpty","styles","sizeYClassNames","none","compact","ChipsInputBase","getRootRef","style","className","before","after","status","mode","value","onAddChipOption","onRemoveChipOption","onRemoveChipOptionProp","renderChip","getRef","id","idProp","inputValue","placeholder","disabled","readOnly","addOnBlur","onBlur","onInputChange","restProps","sizeY","idGenerated","useId","inputRef","listboxRef","useRef","valueLength","length","withPlaceholder","lastFocusedChipOptionIndex","setLastFocusedChipOptionIndex","useState","resetChipOptionFocusToInputEl","inputEl","focus","moveFocusToChipOption","currentIndex","navigateTo","listboxEl","index","foundEl","querySelector","removeChipOption","o","current","handleListboxKeyDown","event","targetEl","target","defaultPrevented","key","ENTER","preventDefault","DELETE","BACKSPACE","ARROW_UP","ARROW_LEFT","ARROW_DOWN","ARROW_RIGHT","handleInputBlur","handleChipRemove","v","stopPropagation","handleRootClick","currentTarget","Component","onClick","undefined","div","ref","role","aria-orientation","aria-disabled","aria-readonly","onKeyDown","map","option","Fragment","label","autoCapitalize","autoComplete","autoCorrect","spellCheck","type","onChange"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/ChipsInputBase/ChipsInputBase.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { isHTMLElement } from '@vkontakte/vkui-floating-ui/utils/dom';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { getHorizontalFocusGoTo, Keys } from '../../lib/accessibility';\nimport {\n contains as checkTargetIsInputEl,\n contains,\n getActiveElementByAnotherElement,\n} from '../../lib/dom';\nimport { FormField } from '../FormField/FormField';\nimport { Text } from '../Typography/Text/Text';\nimport { DEFAULT_INPUT_VALUE, DEFAULT_VALUE, renderChipDefault } from './constants';\nimport {\n getChipOptionIndexByHTMLElement,\n getChipOptionIndexByValueProp,\n getChipOptionValueByHTMLElement,\n getNextChipOptionIndexByNavigateToProp,\n isInputValueEmpty,\n} from './helpers';\nimport type { ChipOption, ChipOptionValue, ChipsInputBasePrivateProps, NavigateTo } from './types';\nimport styles from './ChipsInputBase.module.css';\n\nconst sizeYClassNames = {\n none: styles['ChipsInputBase--sizeY-none'],\n compact: styles['ChipsInputBase--sizeY-compact'],\n} as const;\n\nexport const ChipsInputBase = <O extends ChipOption>({\n // FormFieldProps\n getRootRef,\n style,\n className,\n before,\n after,\n status,\n mode,\n\n // option\n value = DEFAULT_VALUE,\n onAddChipOption,\n onRemoveChipOption: onRemoveChipOptionProp,\n renderChip = renderChipDefault,\n\n // input\n getRef,\n id: idProp,\n inputValue = DEFAULT_INPUT_VALUE,\n placeholder,\n disabled,\n readOnly,\n addOnBlur,\n onBlur,\n onInputChange,\n ...restProps\n}: ChipsInputBasePrivateProps<O>) => {\n const { sizeY = 'none' } = useAdaptivity();\n const idGenerated = React.useId();\n const inputRef = useExternRef(getRef);\n const listboxRef = React.useRef<HTMLDivElement>(null);\n\n const valueLength = value.length;\n const withPlaceholder = valueLength === 0;\n const [lastFocusedChipOptionIndex, setLastFocusedChipOptionIndex] = React.useState(0);\n\n const resetChipOptionFocusToInputEl = (inputEl: HTMLInputElement) => {\n setLastFocusedChipOptionIndex(0);\n inputEl.focus();\n };\n\n const moveFocusToChipOption = (\n currentIndex: number,\n navigateTo: NavigateTo,\n listboxEl: HTMLElement,\n ) => {\n const index = getNextChipOptionIndexByNavigateToProp(currentIndex, navigateTo, valueLength);\n // eslint-disable-next-line no-restricted-properties\n const foundEl = listboxEl.querySelector<HTMLElement>(`[data-index=\"${index}\"]`);\n\n if (foundEl) {\n setLastFocusedChipOptionIndex(index);\n foundEl.focus();\n }\n };\n\n const removeChipOption = (o: O | ChipOptionValue, index: number) => {\n /* istanbul ignore if: невозможный кейс (в SSR вызова этой функции не будет) */\n if (!inputRef.current || !listboxRef.current) {\n return;\n }\n\n if (valueLength > 1) {\n if (index === valueLength - 1) {\n moveFocusToChipOption(index, 'prev', listboxRef.current);\n } else {\n moveFocusToChipOption(index, 'next', listboxRef.current);\n }\n } else {\n resetChipOptionFocusToInputEl(inputRef.current);\n }\n\n onRemoveChipOptionProp(o);\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const targetEl = event.target;\n /* istanbul ignore if: невозможный кейс (в SSR вызова этой функции не будет) */\n if (event.defaultPrevented || !listboxRef.current || !isHTMLElement(targetEl)) {\n return;\n }\n\n switch (event.key) {\n case Keys.ENTER: {\n if (\n !readOnly &&\n checkTargetIsInputEl(targetEl, inputRef.current) &&\n inputRef.current &&\n !isInputValueEmpty(inputRef.current)\n ) {\n event.preventDefault();\n onAddChipOption(inputRef.current.value);\n }\n break;\n }\n case Keys.DELETE:\n case Keys.BACKSPACE: {\n if (!readOnly && valueLength > 0) {\n if (!checkTargetIsInputEl(targetEl, inputRef.current)) {\n event.preventDefault();\n removeChipOption(\n getChipOptionValueByHTMLElement(targetEl),\n getChipOptionIndexByHTMLElement(targetEl),\n );\n } else if (event.key === Keys.BACKSPACE && isInputValueEmpty(inputRef.current)) {\n event.preventDefault();\n moveFocusToChipOption(\n getChipOptionIndexByHTMLElement(targetEl),\n 'last',\n listboxRef.current,\n );\n }\n }\n break;\n }\n case Keys.ARROW_UP:\n case Keys.ARROW_LEFT:\n case Keys.ARROW_DOWN:\n case Keys.ARROW_RIGHT: {\n if (valueLength !== 0 && !checkTargetIsInputEl(targetEl, inputRef.current)) {\n event.preventDefault();\n moveFocusToChipOption(\n getChipOptionIndexByHTMLElement(targetEl),\n getHorizontalFocusGoTo(event.key),\n listboxRef.current,\n );\n }\n break;\n }\n }\n };\n\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(event);\n }\n\n if (addOnBlur && !event.defaultPrevented && inputRef.current) {\n onAddChipOption(inputRef.current.value);\n }\n };\n\n const handleChipRemove = (event: React.MouseEvent, v: ChipOptionValue) => {\n event.preventDefault();\n event.stopPropagation();\n removeChipOption(v, getChipOptionIndexByValueProp(v, value));\n };\n\n const handleRootClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (contains(event.currentTarget, getActiveElementByAnotherElement(event.currentTarget))) {\n return;\n }\n\n if (valueLength > 0 && listboxRef.current) {\n moveFocusToChipOption(0, 'first', listboxRef.current);\n } else if (inputRef.current) {\n inputRef.current.focus();\n }\n };\n\n return (\n <FormField\n Component=\"div\"\n getRootRef={getRootRef}\n style={style}\n disabled={disabled}\n before={before}\n after={after}\n status={status}\n mode={mode}\n className={className}\n onClick={disabled ? undefined : handleRootClick}\n >\n <div\n className={classNames(\n styles['ChipsInputBase'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n withPlaceholder && styles['ChipsInputBase--hasPlaceholder'],\n )}\n // для a11y\n ref={listboxRef}\n role=\"listbox\"\n aria-orientation=\"horizontal\"\n aria-disabled={disabled}\n aria-readonly={readOnly}\n onKeyDown={disabled ? undefined : handleListboxKeyDown}\n >\n {value.map((option, index) => (\n <React.Fragment key={`${typeof option.value}-${option.label}`}>\n {renderChip(\n {\n 'Component': 'div',\n 'value': option.value,\n 'label': option.label,\n 'disabled': option.disabled || disabled,\n 'readOnly': option.readOnly || readOnly,\n 'className': styles['ChipsInputBase__chip'],\n 'onRemove': handleChipRemove,\n // чтобы можно было легче найти этот чип в DOM\n 'data-index': index,\n 'data-value': option.value,\n // для a11y\n 'tabIndex': lastFocusedChipOptionIndex === index ? 0 : -1,\n 'role': 'option',\n 'aria-selected': true,\n 'aria-posinset': index + 1,\n 'aria-setsize': valueLength,\n },\n option,\n )}\n </React.Fragment>\n ))}\n <Text\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n {...restProps}\n Component=\"input\"\n type=\"text\"\n id={idProp || `chips-input-base-generated-id-${idGenerated}`}\n getRootRef={inputRef}\n className={styles['ChipsInputBase__el']}\n disabled={disabled}\n readOnly={readOnly}\n placeholder={withPlaceholder ? placeholder : undefined}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n />\n </div>\n </FormField>\n );\n};\n"],"names":["React","classNames","isHTMLElement","useAdaptivity","useExternRef","getHorizontalFocusGoTo","Keys","contains","checkTargetIsInputEl","getActiveElementByAnotherElement","FormField","Text","DEFAULT_INPUT_VALUE","DEFAULT_VALUE","renderChipDefault","getChipOptionIndexByHTMLElement","getChipOptionIndexByValueProp","getChipOptionValueByHTMLElement","getNextChipOptionIndexByNavigateToProp","isInputValueEmpty","styles","sizeYClassNames","none","compact","ChipsInputBase","getRootRef","style","className","before","after","status","mode","value","onAddChipOption","onRemoveChipOption","onRemoveChipOptionProp","renderChip","getRef","id","idProp","inputValue","placeholder","disabled","readOnly","addOnBlur","onBlur","onInputChange","restProps","sizeY","idGenerated","useId","inputRef","listboxRef","useRef","valueLength","length","withPlaceholder","lastFocusedChipOptionIndex","setLastFocusedChipOptionIndex","useState","resetChipOptionFocusToInputEl","inputEl","focus","moveFocusToChipOption","currentIndex","navigateTo","listboxEl","index","foundEl","querySelector","removeChipOption","o","current","handleListboxKeyDown","event","targetEl","target","defaultPrevented","key","ENTER","preventDefault","DELETE","BACKSPACE","ARROW_UP","ARROW_LEFT","ARROW_DOWN","ARROW_RIGHT","handleInputBlur","handleChipRemove","v","stopPropagation","handleRootClick","currentTarget","Component","onClick","undefined","div","ref","role","aria-orientation","aria-disabled","aria-readonly","onKeyDown","map","option","Fragment","label","autoCapitalize","autoComplete","autoCorrect","spellCheck","type","onChange"],"mappings":"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"}
@@ -17,9 +17,9 @@ export function getNewOptionDataDefault(value, label) {
17
17
  };
18
18
  }
19
19
  export function renderChipDefault(props) {
20
- const { disabled, label, ...rest } = props;
20
+ const { label, ...rest } = props;
21
21
  return /*#__PURE__*/ _jsx(Chip, {
22
- removable: !disabled,
22
+ removable: !props.disabled,
23
23
  ...rest,
24
24
  children: label
25
25
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ChipsInputBase/constants.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Chip } from './Chip/Chip';\nimport type { ChipOption, ChipOptionLabel, ChipOptionValue, RenderChipProps } from './types';\n\nexport const DEFAULT_VALUE = [];\n\nexport const DEFAULT_INPUT_VALUE = '';\n\nexport function getOptionValueDefault<O extends ChipOption>(option: O) {\n return option.value;\n}\n\nexport function getOptionLabelDefault<O extends ChipOption>(option: O) {\n return option.label;\n}\n\nexport function getNewOptionDataDefault<O extends ChipOption>(\n value: ChipOptionValue,\n label: ChipOptionLabel,\n): O {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {\n value,\n label,\n } as O;\n}\n\nexport function renderChipDefault(props: RenderChipProps): React.ReactNode {\n const { disabled, label, ...rest } = props;\n return (\n <Chip removable={!disabled} {...rest}>\n {label}\n </Chip>\n );\n}\n"],"names":["React","Chip","DEFAULT_VALUE","DEFAULT_INPUT_VALUE","getOptionValueDefault","option","value","getOptionLabelDefault","label","getNewOptionDataDefault","renderChipDefault","props","disabled","rest","removable"],"mappings":";AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,IAAI,QAAQ,cAAc;AAGnC,OAAO,MAAMC,gBAAgB,EAAE,CAAC;AAEhC,OAAO,MAAMC,sBAAsB,GAAG;AAEtC,OAAO,SAASC,sBAA4CC,MAAS;IACnE,OAAOA,OAAOC,KAAK;AACrB;AAEA,OAAO,SAASC,sBAA4CF,MAAS;IACnE,OAAOA,OAAOG,KAAK;AACrB;AAEA,OAAO,SAASC,wBACdH,KAAsB,EACtBE,KAAsB;IAEtB,yEAAyE;IACzE,OAAO;QACLF;QACAE;IACF;AACF;AAEA,OAAO,SAASE,kBAAkBC,KAAsB;IACtD,MAAM,EAAEC,QAAQ,EAAEJ,KAAK,EAAE,GAAGK,MAAM,GAAGF;IACrC,qBACE,KAACV;QAAKa,WAAW,CAACF;QAAW,GAAGC,IAAI;kBACjCL;;AAGP"}
1
+ {"version":3,"sources":["../../../../src/components/ChipsInputBase/constants.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Chip } from './Chip/Chip';\nimport type { ChipOption, ChipOptionLabel, ChipOptionValue, RenderChipProps } from './types';\n\nexport const DEFAULT_VALUE = [];\n\nexport const DEFAULT_INPUT_VALUE = '';\n\nexport function getOptionValueDefault<O extends ChipOption>(option: O) {\n return option.value;\n}\n\nexport function getOptionLabelDefault<O extends ChipOption>(option: O) {\n return option.label;\n}\n\nexport function getNewOptionDataDefault<O extends ChipOption>(\n value: ChipOptionValue,\n label: ChipOptionLabel,\n): O {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {\n value,\n label,\n } as O;\n}\n\nexport function renderChipDefault(props: RenderChipProps): React.ReactNode {\n const { label, ...rest } = props;\n return (\n <Chip removable={!props.disabled} {...rest}>\n {label}\n </Chip>\n );\n}\n"],"names":["React","Chip","DEFAULT_VALUE","DEFAULT_INPUT_VALUE","getOptionValueDefault","option","value","getOptionLabelDefault","label","getNewOptionDataDefault","renderChipDefault","props","rest","removable","disabled"],"mappings":";AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,IAAI,QAAQ,cAAc;AAGnC,OAAO,MAAMC,gBAAgB,EAAE,CAAC;AAEhC,OAAO,MAAMC,sBAAsB,GAAG;AAEtC,OAAO,SAASC,sBAA4CC,MAAS;IACnE,OAAOA,OAAOC,KAAK;AACrB;AAEA,OAAO,SAASC,sBAA4CF,MAAS;IACnE,OAAOA,OAAOG,KAAK;AACrB;AAEA,OAAO,SAASC,wBACdH,KAAsB,EACtBE,KAAsB;IAEtB,yEAAyE;IACzE,OAAO;QACLF;QACAE;IACF;AACF;AAEA,OAAO,SAASE,kBAAkBC,KAAsB;IACtD,MAAM,EAAEH,KAAK,EAAE,GAAGI,MAAM,GAAGD;IAC3B,qBACE,KAACV;QAAKY,WAAW,CAACF,MAAMG,QAAQ;QAAG,GAAGF,IAAI;kBACvCJ;;AAGP"}
@@ -18,6 +18,8 @@
18
18
 
19
19
  .CustomScrollView__box-content {
20
20
  position: relative;
21
+ inline-size: 100%;
22
+ block-size: 100%;
21
23
  }
22
24
 
23
25
  .CustomScrollView__barY:active + .CustomScrollView__box {