@vkontakte/vkui 7.4.1 → 7.4.2

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.
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { arrowMiddleware, autoPlacementMiddleware, flipMiddleware, hideMiddleware, offsetMiddleware, shiftMiddleware, sizeMiddleware } from "../adapters.js";
3
3
  import { checkIsNotAutoPlacement, getAutoPlacementAlign } from "../functions.js";
4
- export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', arrowRef = null, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false, flipMiddlewareFallbackAxisSideDirection = 'start' })=>{
4
+ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', arrowRef = null, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false, flipMiddlewareFallbackAxisSideDirection = 'end' })=>{
5
5
  return React.useMemo(()=>{
6
6
  const isAutoPlacement = !checkIsNotAutoPlacement(placement);
7
7
  const middlewares = [
@@ -10,18 +10,26 @@ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', ar
10
10
  mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis
11
11
  })
12
12
  ];
13
- // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement
13
+ const shiftMiddlewareInstance = shiftMiddleware();
14
+ // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#conflict-with-autoplacementjs
14
15
  if (isAutoPlacement) {
15
16
  middlewares.push(autoPlacementMiddleware({
16
17
  alignment: getAutoPlacementAlign(placement)
17
- }));
18
+ }), shiftMiddlewareInstance);
18
19
  } else if (!disableFlipMiddleware) {
19
- middlewares.push(flipMiddleware({
20
- fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,
21
- crossAxis: false
22
- }));
20
+ const flipMiddlewareInstance = flipMiddleware({
21
+ crossAxis: 'alignment',
22
+ fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection
23
+ });
24
+ // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#combining-with-shiftjs
25
+ if (placement.includes('-')) {
26
+ middlewares.push(flipMiddlewareInstance, shiftMiddlewareInstance);
27
+ } else {
28
+ middlewares.push(shiftMiddlewareInstance, flipMiddlewareInstance);
29
+ }
30
+ } else {
31
+ middlewares.push(shiftMiddlewareInstance);
23
32
  }
24
- middlewares.push(shiftMiddleware());
25
33
  if (sameWidth) {
26
34
  middlewares.push(sizeMiddleware({
27
35
  apply ({ rects, elements }) {
@@ -34,7 +42,7 @@ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', ar
34
42
  if (customMiddlewares) {
35
43
  middlewares.push(...customMiddlewares);
36
44
  }
37
- // см. https://floating-ui.com/docs/arrow#order
45
+ // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/arrow.mdx#order
38
46
  if (arrow) {
39
47
  middlewares.push(arrowMiddleware({
40
48
  element: arrowRef,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n arrowMiddleware,\n autoPlacementMiddleware,\n flipMiddleware,\n type FlipMiddlewareOptions,\n hideMiddleware,\n offsetMiddleware,\n shiftMiddleware,\n sizeMiddleware,\n} from '../adapters';\nimport { checkIsNotAutoPlacement, getAutoPlacementAlign } from '../functions';\nimport {\n type ArrowOptions,\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n} from '../types/common';\n\nexport interface UseFloatingMiddlewaresBootstrapOptions {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам, но приоритетное можно задать с помощью этого свойства.\n */\n placement?: PlacementWithAuto;\n /**\n * Указанное значение `placement` форсируется, даже если для выпадающего элемента недостаточно места.\n * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`\n */\n disableFlipMiddleware?: boolean;\n flipMiddlewareFallbackAxisSideDirection?: FlipMiddlewareOptions['fallbackAxisSideDirection'];\n /**\n * Отступ по главной оси.\n */\n offsetByMainAxis?: number;\n /**\n * Отступ по вспомогательной оси.\n */\n offsetByCrossAxis?: number;\n arrowRef?: ArrowOptions['element'];\n /**\n * Отображать ли стрелку, указывающую на якорный элемент.\n */\n arrow?: boolean;\n /**\n * Высота стрелки. Складывается с `mainAxis`, чтобы стрелка не залезала на якорный элемент.\n */\n arrowHeight?: number;\n /**\n * Безопасная зона вокруг стрелки, чтобы та не выходила за края контента.\n */\n arrowPadding?: number;\n /**\n * Выставлять ширину равной target элементу.\n */\n sameWidth?: boolean;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать).\n */\n customMiddlewares?: UseFloatingMiddleware[];\n /**\n * Принудительно скрывает компонент если целевой элемент вышел за область видимости.\n */\n hideWhenReferenceHidden?: boolean;\n}\n\nexport const useFloatingMiddlewaresBootstrap = ({\n placement = 'bottom-start',\n arrowRef = null,\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n flipMiddlewareFallbackAxisSideDirection = 'start',\n}: UseFloatingMiddlewaresBootstrapOptions): {\n middlewares: UseFloatingMiddleware[];\n strictPlacement: Placement | undefined;\n} => {\n return React.useMemo(() => {\n const isAutoPlacement = !checkIsNotAutoPlacement(placement);\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetByCrossAxis,\n mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis,\n }),\n ];\n\n // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement\n if (isAutoPlacement) {\n middlewares.push(autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }));\n } else if (!disableFlipMiddleware) {\n middlewares.push(\n flipMiddleware({\n fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,\n crossAxis: false,\n }),\n );\n }\n\n middlewares.push(shiftMiddleware());\n\n if (sameWidth) {\n middlewares.push(\n sizeMiddleware({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n );\n }\n\n if (customMiddlewares) {\n middlewares.push(...customMiddlewares);\n }\n\n // см. https://floating-ui.com/docs/arrow#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: arrowPadding,\n }),\n );\n }\n\n if (hideWhenReferenceHidden) {\n middlewares.push(hideMiddleware());\n }\n\n return { middlewares, strictPlacement: isAutoPlacement ? undefined : placement };\n }, [\n placement,\n offsetByCrossAxis,\n arrow,\n arrowHeight,\n offsetByMainAxis,\n disableFlipMiddleware,\n flipMiddlewareFallbackAxisSideDirection,\n sameWidth,\n customMiddlewares,\n hideWhenReferenceHidden,\n arrowRef,\n arrowPadding,\n ]);\n};\n"],"names":["React","arrowMiddleware","autoPlacementMiddleware","flipMiddleware","hideMiddleware","offsetMiddleware","shiftMiddleware","sizeMiddleware","checkIsNotAutoPlacement","getAutoPlacementAlign","useFloatingMiddlewaresBootstrap","placement","arrowRef","arrow","arrowHeight","arrowPadding","sameWidth","offsetByMainAxis","offsetByCrossAxis","customMiddlewares","hideWhenReferenceHidden","disableFlipMiddleware","flipMiddlewareFallbackAxisSideDirection","useMemo","isAutoPlacement","middlewares","crossAxis","mainAxis","push","alignment","fallbackAxisSideDirection","apply","rects","elements","Object","assign","floating","style","width","reference","element","padding","strictPlacement","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SACEC,eAAe,EACfC,uBAAuB,EACvBC,cAAc,EAEdC,cAAc,EACdC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACT,iBAAc;AACrB,SAASC,uBAAuB,EAAEC,qBAAqB,QAAQ,kBAAe;AAsD9E,OAAO,MAAMC,kCAAkC,CAAC,EAC9CC,YAAY,cAAc,EAC1BC,WAAW,IAAI,EACfC,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,mBAAmB,CAAC,EACpBC,oBAAoB,CAAC,EACrBC,iBAAiB,EACjBC,uBAAuB,EACvBC,wBAAwB,KAAK,EAC7BC,0CAA0C,OAAO,EACV;IAIvC,OAAOtB,MAAMuB,OAAO,CAAC;QACnB,MAAMC,kBAAkB,CAAChB,wBAAwBG;QACjD,MAAMc,cAAuC;YAC3CpB,iBAAiB;gBACfqB,WAAWR;gBACXS,UAAUd,SAASC,cAAcG,mBAAmBH,cAAcG;YACpE;SACD;QAED,oEAAoE;QACpE,IAAIO,iBAAiB;YACnBC,YAAYG,IAAI,CAAC1B,wBAAwB;gBAAE2B,WAAWpB,sBAAsBE;YAAW;QACzF,OAAO,IAAI,CAACU,uBAAuB;YACjCI,YAAYG,IAAI,CACdzB,eAAe;gBACb2B,2BAA2BR;gBAC3BI,WAAW;YACb;QAEJ;QAEAD,YAAYG,IAAI,CAACtB;QAEjB,IAAIU,WAAW;YACbS,YAAYG,IAAI,CACdrB,eAAe;gBACbwB,OAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE;oBACvBC,OAAOC,MAAM,CAACF,SAASG,QAAQ,CAACC,KAAK,EAAE;wBACrCC,OAAO,GAAGN,MAAMO,SAAS,CAACD,KAAK,CAAC,EAAE,CAAC;oBACrC;gBACF;YACF;QAEJ;QAEA,IAAInB,mBAAmB;YACrBM,YAAYG,IAAI,IAAIT;QACtB;QAEA,+CAA+C;QAC/C,IAAIN,OAAO;YACTY,YAAYG,IAAI,CACd3B,gBAAgB;gBACduC,SAAS5B;gBACT6B,SAAS1B;YACX;QAEJ;QAEA,IAAIK,yBAAyB;YAC3BK,YAAYG,IAAI,CAACxB;QACnB;QAEA,OAAO;YAAEqB;YAAaiB,iBAAiBlB,kBAAkBmB,YAAYhC;QAAU;IACjF,GAAG;QACDA;QACAO;QACAL;QACAC;QACAG;QACAI;QACAC;QACAN;QACAG;QACAC;QACAR;QACAG;KACD;AACH,EAAE"}
1
+ {"version":3,"sources":["../../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n arrowMiddleware,\n autoPlacementMiddleware,\n flipMiddleware,\n type FlipMiddlewareOptions,\n hideMiddleware,\n offsetMiddleware,\n shiftMiddleware,\n sizeMiddleware,\n} from '../adapters';\nimport { checkIsNotAutoPlacement, getAutoPlacementAlign } from '../functions';\nimport {\n type ArrowOptions,\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n} from '../types/common';\n\nexport interface UseFloatingMiddlewaresBootstrapOptions {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам, но приоритетное можно задать с помощью этого свойства.\n */\n placement?: PlacementWithAuto;\n /**\n * Указанное значение `placement` форсируется, даже если для выпадающего элемента недостаточно места.\n * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`\n */\n disableFlipMiddleware?: boolean;\n /**\n * Задаёт резервный вариант размещения по перпендикулярной оси.\n */\n flipMiddlewareFallbackAxisSideDirection?: FlipMiddlewareOptions['fallbackAxisSideDirection'];\n /**\n * Отступ по главной оси.\n */\n offsetByMainAxis?: number;\n /**\n * Отступ по вспомогательной оси.\n */\n offsetByCrossAxis?: number;\n arrowRef?: ArrowOptions['element'];\n /**\n * Отображать ли стрелку, указывающую на якорный элемент.\n */\n arrow?: boolean;\n /**\n * Высота стрелки. Складывается с `mainAxis`, чтобы стрелка не залезала на якорный элемент.\n */\n arrowHeight?: number;\n /**\n * Безопасная зона вокруг стрелки, чтобы та не выходила за края контента.\n */\n arrowPadding?: number;\n /**\n * Выставлять ширину равной target элементу.\n */\n sameWidth?: boolean;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать).\n */\n customMiddlewares?: UseFloatingMiddleware[];\n /**\n * Принудительно скрывает компонент если целевой элемент вышел за область видимости.\n */\n hideWhenReferenceHidden?: boolean;\n}\n\nexport const useFloatingMiddlewaresBootstrap = ({\n placement = 'bottom-start',\n arrowRef = null,\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n flipMiddlewareFallbackAxisSideDirection = 'end',\n}: UseFloatingMiddlewaresBootstrapOptions): {\n middlewares: UseFloatingMiddleware[];\n strictPlacement: Placement | undefined;\n} => {\n return React.useMemo(() => {\n const isAutoPlacement = !checkIsNotAutoPlacement(placement);\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetByCrossAxis,\n mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis,\n }),\n ];\n\n const shiftMiddlewareInstance = shiftMiddleware();\n\n // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#conflict-with-autoplacementjs\n if (isAutoPlacement) {\n middlewares.push(\n autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }),\n shiftMiddlewareInstance,\n );\n } else if (!disableFlipMiddleware) {\n const flipMiddlewareInstance = flipMiddleware({\n crossAxis: 'alignment',\n fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,\n });\n\n // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#combining-with-shiftjs\n if (placement.includes('-')) {\n middlewares.push(flipMiddlewareInstance, shiftMiddlewareInstance);\n } else {\n middlewares.push(shiftMiddlewareInstance, flipMiddlewareInstance);\n }\n } else {\n middlewares.push(shiftMiddlewareInstance);\n }\n\n if (sameWidth) {\n middlewares.push(\n sizeMiddleware({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n );\n }\n\n if (customMiddlewares) {\n middlewares.push(...customMiddlewares);\n }\n\n // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/arrow.mdx#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: arrowPadding,\n }),\n );\n }\n\n if (hideWhenReferenceHidden) {\n middlewares.push(hideMiddleware());\n }\n\n return { middlewares, strictPlacement: isAutoPlacement ? undefined : placement };\n }, [\n placement,\n offsetByCrossAxis,\n arrow,\n arrowHeight,\n offsetByMainAxis,\n disableFlipMiddleware,\n flipMiddlewareFallbackAxisSideDirection,\n sameWidth,\n customMiddlewares,\n hideWhenReferenceHidden,\n arrowRef,\n arrowPadding,\n ]);\n};\n"],"names":["React","arrowMiddleware","autoPlacementMiddleware","flipMiddleware","hideMiddleware","offsetMiddleware","shiftMiddleware","sizeMiddleware","checkIsNotAutoPlacement","getAutoPlacementAlign","useFloatingMiddlewaresBootstrap","placement","arrowRef","arrow","arrowHeight","arrowPadding","sameWidth","offsetByMainAxis","offsetByCrossAxis","customMiddlewares","hideWhenReferenceHidden","disableFlipMiddleware","flipMiddlewareFallbackAxisSideDirection","useMemo","isAutoPlacement","middlewares","crossAxis","mainAxis","shiftMiddlewareInstance","push","alignment","flipMiddlewareInstance","fallbackAxisSideDirection","includes","apply","rects","elements","Object","assign","floating","style","width","reference","element","padding","strictPlacement","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SACEC,eAAe,EACfC,uBAAuB,EACvBC,cAAc,EAEdC,cAAc,EACdC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACT,iBAAc;AACrB,SAASC,uBAAuB,EAAEC,qBAAqB,QAAQ,kBAAe;AAyD9E,OAAO,MAAMC,kCAAkC,CAAC,EAC9CC,YAAY,cAAc,EAC1BC,WAAW,IAAI,EACfC,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,mBAAmB,CAAC,EACpBC,oBAAoB,CAAC,EACrBC,iBAAiB,EACjBC,uBAAuB,EACvBC,wBAAwB,KAAK,EAC7BC,0CAA0C,KAAK,EACR;IAIvC,OAAOtB,MAAMuB,OAAO,CAAC;QACnB,MAAMC,kBAAkB,CAAChB,wBAAwBG;QACjD,MAAMc,cAAuC;YAC3CpB,iBAAiB;gBACfqB,WAAWR;gBACXS,UAAUd,SAASC,cAAcG,mBAAmBH,cAAcG;YACpE;SACD;QAED,MAAMW,0BAA0BtB;QAEhC,4IAA4I;QAC5I,IAAIkB,iBAAiB;YACnBC,YAAYI,IAAI,CACd3B,wBAAwB;gBAAE4B,WAAWrB,sBAAsBE;YAAW,IACtEiB;QAEJ,OAAO,IAAI,CAACP,uBAAuB;YACjC,MAAMU,yBAAyB5B,eAAe;gBAC5CuB,WAAW;gBACXM,2BAA2BV;YAC7B;YAEA,qIAAqI;YACrI,IAAIX,UAAUsB,QAAQ,CAAC,MAAM;gBAC3BR,YAAYI,IAAI,CAACE,wBAAwBH;YAC3C,OAAO;gBACLH,YAAYI,IAAI,CAACD,yBAAyBG;YAC5C;QACF,OAAO;YACLN,YAAYI,IAAI,CAACD;QACnB;QAEA,IAAIZ,WAAW;YACbS,YAAYI,IAAI,CACdtB,eAAe;gBACb2B,OAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE;oBACvBC,OAAOC,MAAM,CAACF,SAASG,QAAQ,CAACC,KAAK,EAAE;wBACrCC,OAAO,GAAGN,MAAMO,SAAS,CAACD,KAAK,CAAC,EAAE,CAAC;oBACrC;gBACF;YACF;QAEJ;QAEA,IAAItB,mBAAmB;YACrBM,YAAYI,IAAI,IAAIV;QACtB;QAEA,qHAAqH;QACrH,IAAIN,OAAO;YACTY,YAAYI,IAAI,CACd5B,gBAAgB;gBACd0C,SAAS/B;gBACTgC,SAAS7B;YACX;QAEJ;QAEA,IAAIK,yBAAyB;YAC3BK,YAAYI,IAAI,CAACzB;QACnB;QAEA,OAAO;YAAEqB;YAAaoB,iBAAiBrB,kBAAkBsB,YAAYnC;QAAU;IACjF,GAAG;QACDA;QACAO;QACAL;QACAC;QACAG;QACAI;QACAC;QACAN;QACAG;QACAC;QACAR;QACAG;KACD;AACH,EAAE"}
@@ -10,6 +10,9 @@ export interface UseFloatingMiddlewaresBootstrapOptions {
10
10
  * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`
11
11
  */
12
12
  disableFlipMiddleware?: boolean;
13
+ /**
14
+ * Задаёт резервный вариант размещения по перпендикулярной оси.
15
+ */
13
16
  flipMiddlewareFallbackAxisSideDirection?: FlipMiddlewareOptions['fallbackAxisSideDirection'];
14
17
  /**
15
18
  * Отступ по главной оси.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,qBAAqB,EAK3B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,sCAAsC;IACrD;;OAEG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uCAAuC,CAAC,EAAE,qBAAqB,CAAC,2BAA2B,CAAC,CAAC;IAC7F;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACnC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC5C;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,eAAO,MAAM,+BAA+B,GAAI,wNAa7C,sCAAsC,KAAG;IAC1C,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC;CAsExC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,qBAAqB,EAK3B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,sCAAsC;IACrD;;OAEG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,uCAAuC,CAAC,EAAE,qBAAqB,CAAC,2BAA2B,CAAC,CAAC;IAC7F;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACnC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC5C;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,eAAO,MAAM,+BAA+B,GAAI,wNAa7C,sCAAsC,KAAG;IAC1C,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC;CAgFxC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { arrowMiddleware, autoPlacementMiddleware, flipMiddleware, hideMiddleware, offsetMiddleware, shiftMiddleware, sizeMiddleware } from "../adapters.js";
3
3
  import { checkIsNotAutoPlacement, getAutoPlacementAlign } from "../functions.js";
4
- export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', arrowRef = null, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false, flipMiddlewareFallbackAxisSideDirection = 'start' })=>{
4
+ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', arrowRef = null, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false, flipMiddlewareFallbackAxisSideDirection = 'end' })=>{
5
5
  return React.useMemo(()=>{
6
6
  const isAutoPlacement = !checkIsNotAutoPlacement(placement);
7
7
  const middlewares = [
@@ -10,18 +10,26 @@ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', ar
10
10
  mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis
11
11
  })
12
12
  ];
13
- // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement
13
+ const shiftMiddlewareInstance = shiftMiddleware();
14
+ // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#conflict-with-autoplacementjs
14
15
  if (isAutoPlacement) {
15
16
  middlewares.push(autoPlacementMiddleware({
16
17
  alignment: getAutoPlacementAlign(placement)
17
- }));
18
+ }), shiftMiddlewareInstance);
18
19
  } else if (!disableFlipMiddleware) {
19
- middlewares.push(flipMiddleware({
20
- fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,
21
- crossAxis: false
22
- }));
20
+ const flipMiddlewareInstance = flipMiddleware({
21
+ crossAxis: 'alignment',
22
+ fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection
23
+ });
24
+ // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#combining-with-shiftjs
25
+ if (placement.includes('-')) {
26
+ middlewares.push(flipMiddlewareInstance, shiftMiddlewareInstance);
27
+ } else {
28
+ middlewares.push(shiftMiddlewareInstance, flipMiddlewareInstance);
29
+ }
30
+ } else {
31
+ middlewares.push(shiftMiddlewareInstance);
23
32
  }
24
- middlewares.push(shiftMiddleware());
25
33
  if (sameWidth) {
26
34
  middlewares.push(sizeMiddleware({
27
35
  apply ({ rects, elements }) {
@@ -34,7 +42,7 @@ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', ar
34
42
  if (customMiddlewares) {
35
43
  middlewares.push(...customMiddlewares);
36
44
  }
37
- // см. https://floating-ui.com/docs/arrow#order
45
+ // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/arrow.mdx#order
38
46
  if (arrow) {
39
47
  middlewares.push(arrowMiddleware({
40
48
  element: arrowRef,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n arrowMiddleware,\n autoPlacementMiddleware,\n flipMiddleware,\n type FlipMiddlewareOptions,\n hideMiddleware,\n offsetMiddleware,\n shiftMiddleware,\n sizeMiddleware,\n} from '../adapters';\nimport { checkIsNotAutoPlacement, getAutoPlacementAlign } from '../functions';\nimport {\n type ArrowOptions,\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n} from '../types/common';\n\nexport interface UseFloatingMiddlewaresBootstrapOptions {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам, но приоритетное можно задать с помощью этого свойства.\n */\n placement?: PlacementWithAuto;\n /**\n * Указанное значение `placement` форсируется, даже если для выпадающего элемента недостаточно места.\n * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`\n */\n disableFlipMiddleware?: boolean;\n flipMiddlewareFallbackAxisSideDirection?: FlipMiddlewareOptions['fallbackAxisSideDirection'];\n /**\n * Отступ по главной оси.\n */\n offsetByMainAxis?: number;\n /**\n * Отступ по вспомогательной оси.\n */\n offsetByCrossAxis?: number;\n arrowRef?: ArrowOptions['element'];\n /**\n * Отображать ли стрелку, указывающую на якорный элемент.\n */\n arrow?: boolean;\n /**\n * Высота стрелки. Складывается с `mainAxis`, чтобы стрелка не залезала на якорный элемент.\n */\n arrowHeight?: number;\n /**\n * Безопасная зона вокруг стрелки, чтобы та не выходила за края контента.\n */\n arrowPadding?: number;\n /**\n * Выставлять ширину равной target элементу.\n */\n sameWidth?: boolean;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать).\n */\n customMiddlewares?: UseFloatingMiddleware[];\n /**\n * Принудительно скрывает компонент если целевой элемент вышел за область видимости.\n */\n hideWhenReferenceHidden?: boolean;\n}\n\nexport const useFloatingMiddlewaresBootstrap = ({\n placement = 'bottom-start',\n arrowRef = null,\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n flipMiddlewareFallbackAxisSideDirection = 'start',\n}: UseFloatingMiddlewaresBootstrapOptions): {\n middlewares: UseFloatingMiddleware[];\n strictPlacement: Placement | undefined;\n} => {\n return React.useMemo(() => {\n const isAutoPlacement = !checkIsNotAutoPlacement(placement);\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetByCrossAxis,\n mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis,\n }),\n ];\n\n // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement\n if (isAutoPlacement) {\n middlewares.push(autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }));\n } else if (!disableFlipMiddleware) {\n middlewares.push(\n flipMiddleware({\n fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,\n crossAxis: false,\n }),\n );\n }\n\n middlewares.push(shiftMiddleware());\n\n if (sameWidth) {\n middlewares.push(\n sizeMiddleware({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n );\n }\n\n if (customMiddlewares) {\n middlewares.push(...customMiddlewares);\n }\n\n // см. https://floating-ui.com/docs/arrow#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: arrowPadding,\n }),\n );\n }\n\n if (hideWhenReferenceHidden) {\n middlewares.push(hideMiddleware());\n }\n\n return { middlewares, strictPlacement: isAutoPlacement ? undefined : placement };\n }, [\n placement,\n offsetByCrossAxis,\n arrow,\n arrowHeight,\n offsetByMainAxis,\n disableFlipMiddleware,\n flipMiddlewareFallbackAxisSideDirection,\n sameWidth,\n customMiddlewares,\n hideWhenReferenceHidden,\n arrowRef,\n arrowPadding,\n ]);\n};\n"],"names":["React","arrowMiddleware","autoPlacementMiddleware","flipMiddleware","hideMiddleware","offsetMiddleware","shiftMiddleware","sizeMiddleware","checkIsNotAutoPlacement","getAutoPlacementAlign","useFloatingMiddlewaresBootstrap","placement","arrowRef","arrow","arrowHeight","arrowPadding","sameWidth","offsetByMainAxis","offsetByCrossAxis","customMiddlewares","hideWhenReferenceHidden","disableFlipMiddleware","flipMiddlewareFallbackAxisSideDirection","useMemo","isAutoPlacement","middlewares","crossAxis","mainAxis","push","alignment","fallbackAxisSideDirection","apply","rects","elements","Object","assign","floating","style","width","reference","element","padding","strictPlacement","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SACEC,eAAe,EACfC,uBAAuB,EACvBC,cAAc,EAEdC,cAAc,EACdC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACT,iBAAc;AACrB,SAASC,uBAAuB,EAAEC,qBAAqB,QAAQ,kBAAe;AAsD9E,OAAO,MAAMC,kCAAkC,CAAC,EAC9CC,YAAY,cAAc,EAC1BC,WAAW,IAAI,EACfC,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,mBAAmB,CAAC,EACpBC,oBAAoB,CAAC,EACrBC,iBAAiB,EACjBC,uBAAuB,EACvBC,wBAAwB,KAAK,EAC7BC,0CAA0C,OAAO,EACV;IAIvC,OAAOtB,MAAMuB,OAAO,CAAC;QACnB,MAAMC,kBAAkB,CAAChB,wBAAwBG;QACjD,MAAMc,cAAuC;YAC3CpB,iBAAiB;gBACfqB,WAAWR;gBACXS,UAAUd,SAASC,cAAcG,mBAAmBH,cAAcG;YACpE;SACD;QAED,oEAAoE;QACpE,IAAIO,iBAAiB;YACnBC,YAAYG,IAAI,CAAC1B,wBAAwB;gBAAE2B,WAAWpB,sBAAsBE;YAAW;QACzF,OAAO,IAAI,CAACU,uBAAuB;YACjCI,YAAYG,IAAI,CACdzB,eAAe;gBACb2B,2BAA2BR;gBAC3BI,WAAW;YACb;QAEJ;QAEAD,YAAYG,IAAI,CAACtB;QAEjB,IAAIU,WAAW;YACbS,YAAYG,IAAI,CACdrB,eAAe;gBACbwB,OAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE;oBACvBC,OAAOC,MAAM,CAACF,SAASG,QAAQ,CAACC,KAAK,EAAE;wBACrCC,OAAO,GAAGN,MAAMO,SAAS,CAACD,KAAK,CAAC,EAAE,CAAC;oBACrC;gBACF;YACF;QAEJ;QAEA,IAAInB,mBAAmB;YACrBM,YAAYG,IAAI,IAAIT;QACtB;QAEA,+CAA+C;QAC/C,IAAIN,OAAO;YACTY,YAAYG,IAAI,CACd3B,gBAAgB;gBACduC,SAAS5B;gBACT6B,SAAS1B;YACX;QAEJ;QAEA,IAAIK,yBAAyB;YAC3BK,YAAYG,IAAI,CAACxB;QACnB;QAEA,OAAO;YAAEqB;YAAaiB,iBAAiBlB,kBAAkBmB,YAAYhC;QAAU;IACjF,GAAG;QACDA;QACAO;QACAL;QACAC;QACAG;QACAI;QACAC;QACAN;QACAG;QACAC;QACAR;QACAG;KACD;AACH,EAAE"}
1
+ {"version":3,"sources":["../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n arrowMiddleware,\n autoPlacementMiddleware,\n flipMiddleware,\n type FlipMiddlewareOptions,\n hideMiddleware,\n offsetMiddleware,\n shiftMiddleware,\n sizeMiddleware,\n} from '../adapters';\nimport { checkIsNotAutoPlacement, getAutoPlacementAlign } from '../functions';\nimport {\n type ArrowOptions,\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n} from '../types/common';\n\nexport interface UseFloatingMiddlewaresBootstrapOptions {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам, но приоритетное можно задать с помощью этого свойства.\n */\n placement?: PlacementWithAuto;\n /**\n * Указанное значение `placement` форсируется, даже если для выпадающего элемента недостаточно места.\n * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`\n */\n disableFlipMiddleware?: boolean;\n /**\n * Задаёт резервный вариант размещения по перпендикулярной оси.\n */\n flipMiddlewareFallbackAxisSideDirection?: FlipMiddlewareOptions['fallbackAxisSideDirection'];\n /**\n * Отступ по главной оси.\n */\n offsetByMainAxis?: number;\n /**\n * Отступ по вспомогательной оси.\n */\n offsetByCrossAxis?: number;\n arrowRef?: ArrowOptions['element'];\n /**\n * Отображать ли стрелку, указывающую на якорный элемент.\n */\n arrow?: boolean;\n /**\n * Высота стрелки. Складывается с `mainAxis`, чтобы стрелка не залезала на якорный элемент.\n */\n arrowHeight?: number;\n /**\n * Безопасная зона вокруг стрелки, чтобы та не выходила за края контента.\n */\n arrowPadding?: number;\n /**\n * Выставлять ширину равной target элементу.\n */\n sameWidth?: boolean;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать).\n */\n customMiddlewares?: UseFloatingMiddleware[];\n /**\n * Принудительно скрывает компонент если целевой элемент вышел за область видимости.\n */\n hideWhenReferenceHidden?: boolean;\n}\n\nexport const useFloatingMiddlewaresBootstrap = ({\n placement = 'bottom-start',\n arrowRef = null,\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n flipMiddlewareFallbackAxisSideDirection = 'end',\n}: UseFloatingMiddlewaresBootstrapOptions): {\n middlewares: UseFloatingMiddleware[];\n strictPlacement: Placement | undefined;\n} => {\n return React.useMemo(() => {\n const isAutoPlacement = !checkIsNotAutoPlacement(placement);\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetByCrossAxis,\n mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis,\n }),\n ];\n\n const shiftMiddlewareInstance = shiftMiddleware();\n\n // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#conflict-with-autoplacementjs\n if (isAutoPlacement) {\n middlewares.push(\n autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }),\n shiftMiddlewareInstance,\n );\n } else if (!disableFlipMiddleware) {\n const flipMiddlewareInstance = flipMiddleware({\n crossAxis: 'alignment',\n fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,\n });\n\n // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#combining-with-shiftjs\n if (placement.includes('-')) {\n middlewares.push(flipMiddlewareInstance, shiftMiddlewareInstance);\n } else {\n middlewares.push(shiftMiddlewareInstance, flipMiddlewareInstance);\n }\n } else {\n middlewares.push(shiftMiddlewareInstance);\n }\n\n if (sameWidth) {\n middlewares.push(\n sizeMiddleware({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n );\n }\n\n if (customMiddlewares) {\n middlewares.push(...customMiddlewares);\n }\n\n // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/arrow.mdx#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: arrowPadding,\n }),\n );\n }\n\n if (hideWhenReferenceHidden) {\n middlewares.push(hideMiddleware());\n }\n\n return { middlewares, strictPlacement: isAutoPlacement ? undefined : placement };\n }, [\n placement,\n offsetByCrossAxis,\n arrow,\n arrowHeight,\n offsetByMainAxis,\n disableFlipMiddleware,\n flipMiddlewareFallbackAxisSideDirection,\n sameWidth,\n customMiddlewares,\n hideWhenReferenceHidden,\n arrowRef,\n arrowPadding,\n ]);\n};\n"],"names":["React","arrowMiddleware","autoPlacementMiddleware","flipMiddleware","hideMiddleware","offsetMiddleware","shiftMiddleware","sizeMiddleware","checkIsNotAutoPlacement","getAutoPlacementAlign","useFloatingMiddlewaresBootstrap","placement","arrowRef","arrow","arrowHeight","arrowPadding","sameWidth","offsetByMainAxis","offsetByCrossAxis","customMiddlewares","hideWhenReferenceHidden","disableFlipMiddleware","flipMiddlewareFallbackAxisSideDirection","useMemo","isAutoPlacement","middlewares","crossAxis","mainAxis","shiftMiddlewareInstance","push","alignment","flipMiddlewareInstance","fallbackAxisSideDirection","includes","apply","rects","elements","Object","assign","floating","style","width","reference","element","padding","strictPlacement","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SACEC,eAAe,EACfC,uBAAuB,EACvBC,cAAc,EAEdC,cAAc,EACdC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACT,iBAAc;AACrB,SAASC,uBAAuB,EAAEC,qBAAqB,QAAQ,kBAAe;AAyD9E,OAAO,MAAMC,kCAAkC,CAAC,EAC9CC,YAAY,cAAc,EAC1BC,WAAW,IAAI,EACfC,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,mBAAmB,CAAC,EACpBC,oBAAoB,CAAC,EACrBC,iBAAiB,EACjBC,uBAAuB,EACvBC,wBAAwB,KAAK,EAC7BC,0CAA0C,KAAK,EACR;IAIvC,OAAOtB,MAAMuB,OAAO,CAAC;QACnB,MAAMC,kBAAkB,CAAChB,wBAAwBG;QACjD,MAAMc,cAAuC;YAC3CpB,iBAAiB;gBACfqB,WAAWR;gBACXS,UAAUd,SAASC,cAAcG,mBAAmBH,cAAcG;YACpE;SACD;QAED,MAAMW,0BAA0BtB;QAEhC,4IAA4I;QAC5I,IAAIkB,iBAAiB;YACnBC,YAAYI,IAAI,CACd3B,wBAAwB;gBAAE4B,WAAWrB,sBAAsBE;YAAW,IACtEiB;QAEJ,OAAO,IAAI,CAACP,uBAAuB;YACjC,MAAMU,yBAAyB5B,eAAe;gBAC5CuB,WAAW;gBACXM,2BAA2BV;YAC7B;YAEA,qIAAqI;YACrI,IAAIX,UAAUsB,QAAQ,CAAC,MAAM;gBAC3BR,YAAYI,IAAI,CAACE,wBAAwBH;YAC3C,OAAO;gBACLH,YAAYI,IAAI,CAACD,yBAAyBG;YAC5C;QACF,OAAO;YACLN,YAAYI,IAAI,CAACD;QACnB;QAEA,IAAIZ,WAAW;YACbS,YAAYI,IAAI,CACdtB,eAAe;gBACb2B,OAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE;oBACvBC,OAAOC,MAAM,CAACF,SAASG,QAAQ,CAACC,KAAK,EAAE;wBACrCC,OAAO,GAAGN,MAAMO,SAAS,CAACD,KAAK,CAAC,EAAE,CAAC;oBACrC;gBACF;YACF;QAEJ;QAEA,IAAItB,mBAAmB;YACrBM,YAAYI,IAAI,IAAIV;QACtB;QAEA,qHAAqH;QACrH,IAAIN,OAAO;YACTY,YAAYI,IAAI,CACd5B,gBAAgB;gBACd0C,SAAS/B;gBACTgC,SAAS7B;YACX;QAEJ;QAEA,IAAIK,yBAAyB;YAC3BK,YAAYI,IAAI,CAACzB;QACnB;QAEA,OAAO;YAAEqB;YAAaoB,iBAAiBrB,kBAAkBsB,YAAYnC;QAAU;IACjF,GAAG;QACDA;QACAO;QACAL;QACAC;QACAG;QACAI;QACAC;QACAN;QACAG;QACAC;QACAR;QACAG;KACD;AACH,EAAE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "type": "module",
3
- "version": "7.4.1",
3
+ "version": "7.4.2",
4
4
  "name": "@vkontakte/vkui",
5
5
  "description": "VKUI library",
6
6
  "module": "./dist/index.js",
@@ -89,7 +89,7 @@
89
89
  "@vkontakte/icons": "^3.0.0",
90
90
  "@vkontakte/vkjs": "^2.0.1",
91
91
  "@vkontakte/vkui-date-fns-tz": "^0.0.4",
92
- "@vkontakte/vkui-floating-ui": "^0.2.3",
92
+ "@vkontakte/vkui-floating-ui": "^0.2.5",
93
93
  "date-fns": "^4.1.0"
94
94
  },
95
95
  "devDependencies": {
@@ -27,6 +27,9 @@ export interface UseFloatingMiddlewaresBootstrapOptions {
27
27
  * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`
28
28
  */
29
29
  disableFlipMiddleware?: boolean;
30
+ /**
31
+ * Задаёт резервный вариант размещения по перпендикулярной оси.
32
+ */
30
33
  flipMiddlewareFallbackAxisSideDirection?: FlipMiddlewareOptions['fallbackAxisSideDirection'];
31
34
  /**
32
35
  * Отступ по главной оси.
@@ -75,7 +78,7 @@ export const useFloatingMiddlewaresBootstrap = ({
75
78
  customMiddlewares,
76
79
  hideWhenReferenceHidden,
77
80
  disableFlipMiddleware = false,
78
- flipMiddlewareFallbackAxisSideDirection = 'start',
81
+ flipMiddlewareFallbackAxisSideDirection = 'end',
79
82
  }: UseFloatingMiddlewaresBootstrapOptions): {
80
83
  middlewares: UseFloatingMiddleware[];
81
84
  strictPlacement: Placement | undefined;
@@ -89,19 +92,29 @@ export const useFloatingMiddlewaresBootstrap = ({
89
92
  }),
90
93
  ];
91
94
 
92
- // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement
95
+ const shiftMiddlewareInstance = shiftMiddleware();
96
+
97
+ // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#conflict-with-autoplacementjs
93
98
  if (isAutoPlacement) {
94
- middlewares.push(autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }));
95
- } else if (!disableFlipMiddleware) {
96
99
  middlewares.push(
97
- flipMiddleware({
98
- fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,
99
- crossAxis: false,
100
- }),
100
+ autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }),
101
+ shiftMiddlewareInstance,
101
102
  );
102
- }
103
+ } else if (!disableFlipMiddleware) {
104
+ const flipMiddlewareInstance = flipMiddleware({
105
+ crossAxis: 'alignment',
106
+ fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,
107
+ });
103
108
 
104
- middlewares.push(shiftMiddleware());
109
+ // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#combining-with-shiftjs
110
+ if (placement.includes('-')) {
111
+ middlewares.push(flipMiddlewareInstance, shiftMiddlewareInstance);
112
+ } else {
113
+ middlewares.push(shiftMiddlewareInstance, flipMiddlewareInstance);
114
+ }
115
+ } else {
116
+ middlewares.push(shiftMiddlewareInstance);
117
+ }
105
118
 
106
119
  if (sameWidth) {
107
120
  middlewares.push(
@@ -119,7 +132,7 @@ export const useFloatingMiddlewaresBootstrap = ({
119
132
  middlewares.push(...customMiddlewares);
120
133
  }
121
134
 
122
- // см. https://floating-ui.com/docs/arrow#order
135
+ // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/arrow.mdx#order
123
136
  if (arrow) {
124
137
  middlewares.push(
125
138
  arrowMiddleware({