@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.
- package/dist/cjs/components/Avatar/Avatar.d.ts +1 -4
- package/dist/cjs/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js +2 -2
- package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cjs/components/ChipsInputBase/constants.js +2 -3
- package/dist/cjs/components/ChipsInputBase/constants.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +4 -5
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.js +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/cjs/components/Image/Image.d.ts +2 -4
- package/dist/cjs/components/Image/Image.d.ts.map +1 -1
- package/dist/cjs/components/ImageBase/ImageBase.d.ts +1 -4
- package/dist/cjs/components/ImageBase/ImageBase.d.ts.map +1 -1
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts +4 -38
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts.map +1 -1
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js +60 -19
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/hooks.d.ts +6 -0
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -0
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/hooks.js +37 -0
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -0
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/types.d.ts +54 -0
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/types.d.ts.map +1 -0
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/types.js +8 -0
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/types.js.map +1 -0
- package/dist/cjs/components/Popover/Popover.d.ts +2 -2
- package/dist/cjs/components/Popover/Popover.d.ts.map +1 -1
- package/dist/cjs/components/Popover/Popover.js +4 -2
- package/dist/cjs/components/Popover/Popover.js.map +1 -1
- package/dist/cjs/hooks/useEnsuredControl.js +1 -1
- package/dist/cjs/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cjs/lib/tokens/TokensClassProvider.d.ts.map +1 -1
- package/dist/cjs/lib/tokens/TokensClassProvider.js +1 -1
- package/dist/cjs/lib/tokens/TokensClassProvider.js.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +1 -4
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.js +2 -2
- package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/components/ChipsInputBase/constants.js +2 -3
- package/dist/components/ChipsInputBase/constants.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +4 -5
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.js +1 -1
- package/dist/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/components/Image/Image.d.ts +2 -4
- package/dist/components/Image/Image.d.ts.map +1 -1
- package/dist/components/ImageBase/ImageBase.d.ts +1 -4
- package/dist/components/ImageBase/ImageBase.d.ts.map +1 -1
- package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts +4 -38
- package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts.map +1 -1
- package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js +64 -23
- package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
- package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts +6 -0
- package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -0
- package/dist/components/ImageBase/ImageBaseOverlay/hooks.js +26 -0
- package/dist/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -0
- package/dist/components/ImageBase/ImageBaseOverlay/types.d.ts +54 -0
- package/dist/components/ImageBase/ImageBaseOverlay/types.d.ts.map +1 -0
- package/dist/components/ImageBase/ImageBaseOverlay/types.js +3 -0
- package/dist/components/ImageBase/ImageBaseOverlay/types.js.map +1 -0
- package/dist/components/Popover/Popover.d.ts +2 -2
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/Popover.js +4 -2
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components.css +2 -2
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +235 -117
- package/dist/cssm/components/Avatar/Avatar.d.ts +1 -4
- package/dist/cssm/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +2 -2
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/constants.js +2 -2
- package/dist/cssm/components/ChipsInputBase/constants.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +2 -0
- package/dist/cssm/components/CustomSelect/CustomSelect.js +4 -4
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.module.css +1 -0
- package/dist/cssm/components/GridAvatar/GridAvatar.js +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/cssm/components/Image/Image.d.ts +2 -4
- package/dist/cssm/components/Image/Image.d.ts.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBase.d.ts +1 -4
- package/dist/cssm/components/ImageBase/ImageBase.d.ts.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts +4 -38
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js +54 -18
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css +10 -0
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.d.ts +6 -0
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -0
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.js +26 -0
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -0
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.d.ts +54 -0
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.d.ts.map +1 -0
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.js +3 -0
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.js.map +1 -0
- package/dist/cssm/components/ModalDismissButton/ModalDismissButton.module.css +5 -6
- package/dist/cssm/components/Popover/Popover.d.ts +2 -2
- package/dist/cssm/components/Popover/Popover.d.ts.map +1 -1
- package/dist/cssm/components/Popover/Popover.js +3 -2
- package/dist/cssm/components/Popover/Popover.js.map +1 -1
- package/dist/cssm/hooks/useEnsuredControl.js +1 -1
- package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cssm/lib/tokens/TokensClassProvider.d.ts.map +1 -1
- package/dist/cssm/lib/tokens/TokensClassProvider.js +2 -1
- package/dist/cssm/lib/tokens/TokensClassProvider.js.map +1 -1
- package/dist/cssm/lib/tokens/TokensClassProvider.module.css +4 -0
- package/dist/hooks/useEnsuredControl.js +1 -1
- package/dist/hooks/useEnsuredControl.js.map +1 -1
- package/dist/lib/tokens/TokensClassProvider.d.ts.map +1 -1
- package/dist/lib/tokens/TokensClassProvider.js +1 -1
- package/dist/lib/tokens/TokensClassProvider.js.map +1 -1
- package/dist/vkui.css +2 -2
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +235 -117
- package/package.json +1 -1
- package/src/components/ChipsInputBase/ChipsInputBase.tsx +2 -2
- package/src/components/ChipsInputBase/constants.tsx +2 -2
- package/src/components/CustomScrollView/CustomScrollView.module.css +2 -0
- package/src/components/CustomSelect/CustomSelect.tsx +7 -7
- package/src/components/CustomSelectOption/CustomSelectOption.module.css +1 -0
- package/src/components/GridAvatar/GridAvatar.tsx +1 -1
- package/src/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css +10 -0
- package/src/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.tsx +89 -65
- package/src/components/ImageBase/ImageBaseOverlay/hooks.ts +26 -0
- package/src/components/ImageBase/ImageBaseOverlay/types.ts +58 -0
- package/src/components/ModalDismissButton/ModalDismissButton.module.css +5 -6
- package/src/components/Popover/Popover.tsx +3 -0
- package/src/hooks/useEnsuredControl.ts +1 -1
- package/src/lib/tokens/TokensClassProvider.module.css +4 -0
- package/src/lib/tokens/TokensClassProvider.tsx +6 -1
package/dist/components.js.tmp
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
9357
|
-
var
|
|
9358
|
-
|
|
9359
|
-
|
|
9360
|
-
|
|
9361
|
-
|
|
9362
|
-
|
|
9363
|
-
|
|
9364
|
-
|
|
9365
|
-
}
|
|
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:
|
|
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
|
|
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
|
-
|
|
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:
|
|
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
|
|
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 {
|
|
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 {
|
|
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"}
|