@skbkontur/react-ui 5.6.7-aa2dc.0 → 5.6.7
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/CHANGELOG.md +11 -0
- package/cjs/components/Calendar/CalendarDay.js +2 -2
- package/cjs/components/Calendar/CalendarDay.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +18 -19
- package/cjs/components/Dropdown/Dropdown.js +2 -3
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/FxInput/FxInput.js +1 -2
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.d.ts +20 -23
- package/cjs/components/GlobalLoader/GlobalLoader.js +4 -7
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/Kebab/Kebab.d.ts +10 -10
- package/cjs/components/Kebab/Kebab.js +1 -2
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +9 -9
- package/cjs/components/Loader/Loader.js +3 -3
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/Paging/Paging.d.ts +2 -2
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/Tabs/Indicator.styles.d.ts +1 -0
- package/cjs/components/Tabs/Indicator.styles.js +8 -1
- package/cjs/components/Tabs/Indicator.styles.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +11 -10
- package/cjs/components/Tabs/Tab.js +3 -2
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.d.ts +7 -12
- package/cjs/components/Tabs/Tabs.js +1 -6
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Toast/Toast.d.ts +4 -4
- package/cjs/components/Toast/Toast.js +2 -2
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +1 -1
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js +0 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/Menu/Menu.d.ts +1 -2
- package/cjs/internal/Menu/Menu.js +0 -1
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +0 -7
- package/cjs/internal/Popup/Popup.js +2 -44
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/Popup/PopupHelper.d.ts +0 -27
- package/cjs/internal/Popup/PopupHelper.js +2 -125
- package/cjs/internal/Popup/PopupHelper.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.d.ts +3 -7
- package/cjs/internal/PopupMenu/PopupMenu.js +0 -4
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/components/Calendar/CalendarDay/CalendarDay.js +1 -1
- package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -1
- package/components/Dropdown/Dropdown/Dropdown.js +2 -2
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +18 -19
- package/components/FxInput/FxInput/FxInput.js +3 -1
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +4 -7
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +20 -23
- package/components/Kebab/Kebab/Kebab.js +1 -2
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +10 -10
- package/components/Loader/Loader/Loader.js +3 -3
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +9 -9
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.d.ts +2 -2
- package/components/Tabs/Indicator.styles/Indicator.styles.js +4 -1
- package/components/Tabs/Indicator.styles/Indicator.styles.js.map +1 -1
- package/components/Tabs/Indicator.styles.d.ts +1 -0
- package/components/Tabs/Tab/Tab.js +3 -1
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +11 -10
- package/components/Tabs/Tabs/Tabs.js +1 -6
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Tabs/Tabs.d.ts +7 -12
- package/components/Toast/Toast/Toast.js +2 -2
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/Toast.d.ts +4 -4
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +0 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +1 -2
- package/internal/Popup/Popup/Popup.js +2 -26
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +0 -7
- package/internal/Popup/PopupHelper/PopupHelper.js +1 -114
- package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
- package/internal/Popup/PopupHelper.d.ts +0 -27
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/PopupMenu/PopupMenu.d.ts +3 -7
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_globalObject","require","_getDOMRect","getPositionObject","position","x","split","direction","align","getElementAbsoluteRect","element","rect","_getElementRelativeRect","convertRectToAbsolute","isAbsoluteRectFullyVisible","coordinates","popupRect","windowRelativeRect","_getWindowRelativeRect","windowAbsoluteRect","absoluteRect","top","left","height","width","_rectContainsRect","canBecomeFullyVisible","positionName","availableScrollDistances","getDOMRect","right","bottom","_getViewProperty","clientWidth","globalObject","innerWidth","clientHeight","innerHeight","offset","_getAbsoluteOffset","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","outerRect","innerRect","getViewportAbsoluteRect","getOverflowEdges","viewport","popup","getOverflowCount","overflow","filter","Boolean","length","getPreferredDirection","defaultPosition","getPreferredAlignOrder","VERTICAL_DIRECTIONS","buildFallbackCandidates","positions","preferredDirection","preferredAlignOrder","pinnablePositions","seen","Set","add","p","has","candidates","hasHorizontalOverflow","preferredAlign","_iterator","_createForOfIteratorHelperLoose2","default","_step","done","dir","value","includes","push","_iterator2","_step2","_iterator3","_step3","_iterator4","_step4","_iterator7","_step7","pos","_iterator5","_step5","_iterator6","_step6","getProperty","_globalObject$documen","_globalObject$documen2","views","document","documentElement","body","map","find","PopupHelper","exports","isFullyVisible"],"sources":["PopupHelper.tsx"],"sourcesContent":["import { globalObject } from '@skbkontur/global-object';\n\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport type { PopupPositionsType } from './Popup';\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport interface Offset {\n top: number;\n left: number;\n}\n\nexport interface PositionObject {\n direction: string;\n align: string;\n}\n\nfunction getPositionObject(position: string): PositionObject {\n const x = position.split(' ');\n\n return {\n direction: x[0],\n align: x[1],\n };\n}\n\nfunction getElementAbsoluteRect(element: Element): Rect {\n const rect = _getElementRelativeRect(element);\n return convertRectToAbsolute(rect);\n}\n\nfunction isAbsoluteRectFullyVisible(coordinates: Offset, popupRect: Rect): boolean {\n const windowRelativeRect = _getWindowRelativeRect();\n const windowAbsoluteRect = convertRectToAbsolute(windowRelativeRect);\n const absoluteRect = {\n top: coordinates.top,\n left: coordinates.left,\n height: popupRect.height,\n width: popupRect.width,\n };\n\n return _rectContainsRect(windowAbsoluteRect, absoluteRect);\n}\n\n// Can become fully visible by scrolling into viewport\nfunction canBecomeFullyVisible(positionName: PopupPositionsType, coordinates: Offset) {\n const position = getPositionObject(positionName);\n\n if (position.direction === 'top') {\n const availableScrollDistances = convertRectToAbsolute(_getWindowRelativeRect());\n return coordinates.top + availableScrollDistances.top >= 0;\n }\n\n if (position.direction === 'left') {\n const availableScrollDistances = convertRectToAbsolute(_getWindowRelativeRect());\n return coordinates.left + availableScrollDistances.left >= 0;\n }\n\n // NOTE: for bottom/right cases browser will always expand document size\n return true;\n}\n\nfunction _getElementRelativeRect(element: Element) {\n const rect = getDOMRect(element);\n\n return {\n top: rect.top,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\nfunction _getWindowRelativeRect(): Rect {\n return {\n top: 0,\n left: 0,\n width: _getViewProperty((x) => x.clientWidth) || globalObject.innerWidth || 0,\n height: _getViewProperty((x) => x.clientHeight) || globalObject.innerHeight || 0,\n };\n}\n\nfunction convertRectToAbsolute(rect: Rect): Rect {\n const offset = _getAbsoluteOffset();\n\n return {\n top: rect.top + offset.top,\n left: rect.left + offset.left,\n width: rect.width,\n height: rect.height,\n };\n}\n\nfunction _getAbsoluteOffset(): Offset {\n const scrollTop = globalObject.pageYOffset || _getViewProperty((x) => x.scrollTop);\n const scrollLeft = globalObject.pageXOffset || _getViewProperty((x) => x.scrollLeft);\n\n const clientTop = _getViewProperty((x) => x.clientTop);\n const clientLeft = _getViewProperty((x) => x.clientLeft);\n\n const top = scrollTop - clientTop;\n const left = scrollLeft - clientLeft;\n\n return {\n top,\n left,\n };\n}\n\nfunction _rectContainsRect(outerRect: Rect, innerRect: Rect): boolean {\n return (\n innerRect.top > outerRect.top &&\n innerRect.top + innerRect.height < outerRect.top + outerRect.height &&\n innerRect.left > outerRect.left &&\n innerRect.left + innerRect.width < outerRect.left + outerRect.width\n );\n}\n\n/** Viewport rect in document (absolute) coordinates */\nfunction getViewportAbsoluteRect(): Rect {\n return convertRectToAbsolute(_getWindowRelativeRect());\n}\n\nexport interface OverflowEdges {\n top: boolean;\n bottom: boolean;\n left: boolean;\n right: boolean;\n}\n\n/** Which edges of the popup (with given coordinates) overflow the viewport */\nfunction getOverflowEdges(coordinates: Offset, popupRect: Rect): OverflowEdges {\n const viewport = getViewportAbsoluteRect();\n const popup = {\n top: coordinates.top,\n left: coordinates.left,\n width: popupRect.width,\n height: popupRect.height,\n };\n return {\n top: popup.top < viewport.top,\n bottom: popup.top + popup.height > viewport.top + viewport.height,\n left: popup.left < viewport.left,\n right: popup.left + popup.width > viewport.left + viewport.width,\n };\n}\n\n/** Количество сторон, по которым попап выходит за вьюпорт (0–4) */\nfunction getOverflowCount(overflow: OverflowEdges): number {\n return [overflow.top, overflow.bottom, overflow.left, overflow.right].filter(Boolean).length;\n}\n\n/** Предпочтительное направление по вертикали при переполнении */\nfunction getPreferredDirection(overflow: OverflowEdges, defaultPosition: PopupPositionsType): string {\n if (overflow.bottom) {\n return 'top';\n }\n if (overflow.top) {\n return 'bottom';\n }\n return getPositionObject(defaultPosition).direction;\n}\n\n/** Порядок выравнивания при переполнении: при left/right — сначала right (попап влево/вправо) */\nfunction getPreferredAlignOrder(overflow: OverflowEdges): string[] {\n if (overflow.left || overflow.right) {\n return ['right', 'center', 'left'];\n }\n return ['center', 'left', 'right'];\n}\n\nconst VERTICAL_DIRECTIONS = ['bottom', 'top'] as const;\n\n/**\n * Упорядоченный список кандидатов для fallback-позиции: при горизонтальном переполнении\n * сначала позиции с нужным align (в т.ч. из pinnablePositions), затем по direction и positions.\n */\nfunction buildFallbackCandidates(\n positions: Readonly<PopupPositionsType[]>,\n overflow: OverflowEdges,\n preferredDirection: string,\n preferredAlignOrder: string[],\n pinnablePositions: Readonly<PopupPositionsType[]>,\n): PopupPositionsType[] {\n const seen = new Set<PopupPositionsType>();\n const add = (p: PopupPositionsType) => {\n if (!seen.has(p)) {\n seen.add(p);\n return true;\n }\n return false;\n };\n\n const candidates: PopupPositionsType[] = [];\n const hasHorizontalOverflow = overflow.left || overflow.right;\n\n if (hasHorizontalOverflow) {\n const preferredAlign = preferredAlignOrder[0];\n for (const dir of VERTICAL_DIRECTIONS) {\n const p = `${dir} ${preferredAlign}` as PopupPositionsType;\n if (pinnablePositions.includes(p) && add(p)) {\n candidates.push(p);\n }\n }\n for (const align of preferredAlignOrder) {\n for (const p of positions) {\n if (getPositionObject(p).align === align && add(p)) {\n candidates.push(p);\n }\n }\n }\n }\n\n for (const align of preferredAlignOrder) {\n for (const p of positions) {\n const pos = getPositionObject(p);\n if (pos.direction === preferredDirection && pos.align === align && add(p)) {\n candidates.push(p);\n }\n }\n }\n for (const p of positions) {\n if (getPositionObject(p).direction === preferredDirection && add(p)) {\n candidates.push(p);\n }\n }\n for (const p of positions) {\n if (add(p)) {\n candidates.push(p);\n }\n }\n\n return candidates;\n}\n\nfunction _getViewProperty(getProperty: (e: Element) => number): number {\n const views = [globalObject.document?.documentElement, globalObject.document?.body];\n return views.map((x) => x && getProperty(x)).find(Boolean) || 0;\n}\n\nexport const PopupHelper = {\n getPositionObject,\n getElementAbsoluteRect,\n isFullyVisible: isAbsoluteRectFullyVisible,\n canBecomeFullyVisible,\n getViewportAbsoluteRect,\n getOverflowEdges,\n getOverflowCount,\n getPreferredDirection,\n getPreferredAlignOrder,\n buildFallbackCandidates,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_globalObject","require","_getDOMRect","getPositionObject","position","x","split","direction","align","getElementAbsoluteRect","element","rect","_getElementRelativeRect","convertRectToAbsolute","isAbsoluteRectFullyVisible","coordinates","popupRect","windowRelativeRect","_getWindowRelativeRect","windowAbsoluteRect","absoluteRect","top","left","height","width","_rectContainsRect","canBecomeFullyVisible","positionName","availableScrollDistances","getDOMRect","right","bottom","_getViewProperty","clientWidth","globalObject","innerWidth","clientHeight","innerHeight","offset","_getAbsoluteOffset","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","outerRect","innerRect","getProperty","_globalObject$documen","_globalObject$documen2","views","document","documentElement","body","map","find","Boolean","PopupHelper","exports","isFullyVisible"],"sources":["PopupHelper.tsx"],"sourcesContent":["import { globalObject } from '@skbkontur/global-object';\n\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport type { PopupPositionsType } from './Popup';\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport interface Offset {\n top: number;\n left: number;\n}\n\nexport interface PositionObject {\n direction: string;\n align: string;\n}\n\nfunction getPositionObject(position: string): PositionObject {\n const x = position.split(' ');\n\n return {\n direction: x[0],\n align: x[1],\n };\n}\n\nfunction getElementAbsoluteRect(element: Element): Rect {\n const rect = _getElementRelativeRect(element);\n return convertRectToAbsolute(rect);\n}\n\nfunction isAbsoluteRectFullyVisible(coordinates: Offset, popupRect: Rect): boolean {\n const windowRelativeRect = _getWindowRelativeRect();\n const windowAbsoluteRect = convertRectToAbsolute(windowRelativeRect);\n const absoluteRect = {\n top: coordinates.top,\n left: coordinates.left,\n height: popupRect.height,\n width: popupRect.width,\n };\n\n return _rectContainsRect(windowAbsoluteRect, absoluteRect);\n}\n\n// Can become fully visible by scrolling into viewport\nfunction canBecomeFullyVisible(positionName: PopupPositionsType, coordinates: Offset) {\n const position = getPositionObject(positionName);\n\n if (position.direction === 'top') {\n const availableScrollDistances = convertRectToAbsolute(_getWindowRelativeRect());\n return coordinates.top + availableScrollDistances.top >= 0;\n }\n\n if (position.direction === 'left') {\n const availableScrollDistances = convertRectToAbsolute(_getWindowRelativeRect());\n return coordinates.left + availableScrollDistances.left >= 0;\n }\n\n // NOTE: for bottom/right cases browser will always expand document size\n return true;\n}\n\nfunction _getElementRelativeRect(element: Element) {\n const rect = getDOMRect(element);\n\n return {\n top: rect.top,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\nfunction _getWindowRelativeRect(): Rect {\n return {\n top: 0,\n left: 0,\n width: _getViewProperty((x) => x.clientWidth) || globalObject.innerWidth || 0,\n height: _getViewProperty((x) => x.clientHeight) || globalObject.innerHeight || 0,\n };\n}\n\nfunction convertRectToAbsolute(rect: Rect): Rect {\n const offset = _getAbsoluteOffset();\n\n return {\n top: rect.top + offset.top,\n left: rect.left + offset.left,\n width: rect.width,\n height: rect.height,\n };\n}\n\nfunction _getAbsoluteOffset(): Offset {\n const scrollTop = globalObject.pageYOffset || _getViewProperty((x) => x.scrollTop);\n const scrollLeft = globalObject.pageXOffset || _getViewProperty((x) => x.scrollLeft);\n\n const clientTop = _getViewProperty((x) => x.clientTop);\n const clientLeft = _getViewProperty((x) => x.clientLeft);\n\n const top = scrollTop - clientTop;\n const left = scrollLeft - clientLeft;\n\n return {\n top,\n left,\n };\n}\n\nfunction _rectContainsRect(outerRect: Rect, innerRect: Rect): boolean {\n return (\n innerRect.top > outerRect.top &&\n innerRect.top + innerRect.height < outerRect.top + outerRect.height &&\n innerRect.left > outerRect.left &&\n innerRect.left + innerRect.width < outerRect.left + outerRect.width\n );\n}\n\nfunction _getViewProperty(getProperty: (e: Element) => number): number {\n const views = [globalObject.document?.documentElement, globalObject.document?.body];\n return views.map((x) => x && getProperty(x)).find(Boolean) || 0;\n}\n\nexport const PopupHelper = {\n getPositionObject,\n getElementAbsoluteRect,\n isFullyVisible: isAbsoluteRectFullyVisible,\n canBecomeFullyVisible,\n};\n"],"mappings":"oEAAA,IAAAA,aAAA,GAAAC,OAAA;;AAEA,IAAAC,WAAA,GAAAD,OAAA;;;;;;;;;;;;;;;;;;;;;AAqBA,SAASE,iBAAiBA,CAACC,QAAgB,EAAkB;EAC3D,IAAMC,CAAC,GAAGD,QAAQ,CAACE,KAAK,CAAC,GAAG,CAAC;;EAE7B,OAAO;IACLC,SAAS,EAAEF,CAAC,CAAC,CAAC,CAAC;IACfG,KAAK,EAAEH,CAAC,CAAC,CAAC;EACZ,CAAC;AACH;;AAEA,SAASI,sBAAsBA,CAACC,OAAgB,EAAQ;EACtD,IAAMC,IAAI,GAAGC,uBAAuB,CAACF,OAAO,CAAC;EAC7C,OAAOG,qBAAqB,CAACF,IAAI,CAAC;AACpC;;AAEA,SAASG,0BAA0BA,CAACC,WAAmB,EAAEC,SAAe,EAAW;EACjF,IAAMC,kBAAkB,GAAGC,sBAAsB,CAAC,CAAC;EACnD,IAAMC,kBAAkB,GAAGN,qBAAqB,CAACI,kBAAkB,CAAC;EACpE,IAAMG,YAAY,GAAG;IACnBC,GAAG,EAAEN,WAAW,CAACM,GAAG;IACpBC,IAAI,EAAEP,WAAW,CAACO,IAAI;IACtBC,MAAM,EAAEP,SAAS,CAACO,MAAM;IACxBC,KAAK,EAAER,SAAS,CAACQ;EACnB,CAAC;;EAED,OAAOC,iBAAiB,CAACN,kBAAkB,EAAEC,YAAY,CAAC;AAC5D;;AAEA;AACA,SAASM,qBAAqBA,CAACC,YAAgC,EAAEZ,WAAmB,EAAE;EACpF,IAAMX,QAAQ,GAAGD,iBAAiB,CAACwB,YAAY,CAAC;;EAEhD,IAAIvB,QAAQ,CAACG,SAAS,KAAK,KAAK,EAAE;IAChC,IAAMqB,wBAAwB,GAAGf,qBAAqB,CAACK,sBAAsB,CAAC,CAAC,CAAC;IAChF,OAAOH,WAAW,CAACM,GAAG,GAAGO,wBAAwB,CAACP,GAAG,IAAI,CAAC;EAC5D;;EAEA,IAAIjB,QAAQ,CAACG,SAAS,KAAK,MAAM,EAAE;IACjC,IAAMqB,yBAAwB,GAAGf,qBAAqB,CAACK,sBAAsB,CAAC,CAAC,CAAC;IAChF,OAAOH,WAAW,CAACO,IAAI,GAAGM,yBAAwB,CAACN,IAAI,IAAI,CAAC;EAC9D;;EAEA;EACA,OAAO,IAAI;AACb;;AAEA,SAASV,uBAAuBA,CAACF,OAAgB,EAAE;EACjD,IAAMC,IAAI,GAAG,IAAAkB,sBAAU,EAACnB,OAAO,CAAC;;EAEhC,OAAO;IACLW,GAAG,EAAEV,IAAI,CAACU,GAAG;IACbC,IAAI,EAAEX,IAAI,CAACW,IAAI;IACfE,KAAK,EAAEb,IAAI,CAACmB,KAAK,GAAGnB,IAAI,CAACW,IAAI;IAC7BC,MAAM,EAAEZ,IAAI,CAACoB,MAAM,GAAGpB,IAAI,CAACU;EAC7B,CAAC;AACH;;AAEA,SAASH,sBAAsBA,CAAA,EAAS;EACtC,OAAO;IACLG,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPE,KAAK,EAAEQ,gBAAgB,CAAC,UAAC3B,CAAC,UAAKA,CAAC,CAAC4B,WAAW,GAAC,IAAIC,0BAAY,CAACC,UAAU,IAAI,CAAC;IAC7EZ,MAAM,EAAES,gBAAgB,CAAC,UAAC3B,CAAC,UAAKA,CAAC,CAAC+B,YAAY,GAAC,IAAIF,0BAAY,CAACG,WAAW,IAAI;EACjF,CAAC;AACH;;AAEA,SAASxB,qBAAqBA,CAACF,IAAU,EAAQ;EAC/C,IAAM2B,MAAM,GAAGC,kBAAkB,CAAC,CAAC;;EAEnC,OAAO;IACLlB,GAAG,EAAEV,IAAI,CAACU,GAAG,GAAGiB,MAAM,CAACjB,GAAG;IAC1BC,IAAI,EAAEX,IAAI,CAACW,IAAI,GAAGgB,MAAM,CAAChB,IAAI;IAC7BE,KAAK,EAAEb,IAAI,CAACa,KAAK;IACjBD,MAAM,EAAEZ,IAAI,CAACY;EACf,CAAC;AACH;;AAEA,SAASgB,kBAAkBA,CAAA,EAAW;EACpC,IAAMC,SAAS,GAAGN,0BAAY,CAACO,WAAW,IAAIT,gBAAgB,CAAC,UAAC3B,CAAC,UAAKA,CAAC,CAACmC,SAAS,GAAC;EAClF,IAAME,UAAU,GAAGR,0BAAY,CAACS,WAAW,IAAIX,gBAAgB,CAAC,UAAC3B,CAAC,UAAKA,CAAC,CAACqC,UAAU,GAAC;;EAEpF,IAAME,SAAS,GAAGZ,gBAAgB,CAAC,UAAC3B,CAAC,UAAKA,CAAC,CAACuC,SAAS,GAAC;EACtD,IAAMC,UAAU,GAAGb,gBAAgB,CAAC,UAAC3B,CAAC,UAAKA,CAAC,CAACwC,UAAU,GAAC;;EAExD,IAAMxB,GAAG,GAAGmB,SAAS,GAAGI,SAAS;EACjC,IAAMtB,IAAI,GAAGoB,UAAU,GAAGG,UAAU;;EAEpC,OAAO;IACLxB,GAAG,EAAHA,GAAG;IACHC,IAAI,EAAJA;EACF,CAAC;AACH;;AAEA,SAASG,iBAAiBA,CAACqB,SAAe,EAAEC,SAAe,EAAW;EACpE;IACEA,SAAS,CAAC1B,GAAG,GAAGyB,SAAS,CAACzB,GAAG;IAC7B0B,SAAS,CAAC1B,GAAG,GAAG0B,SAAS,CAACxB,MAAM,GAAGuB,SAAS,CAACzB,GAAG,GAAGyB,SAAS,CAACvB,MAAM;IACnEwB,SAAS,CAACzB,IAAI,GAAGwB,SAAS,CAACxB,IAAI;IAC/ByB,SAAS,CAACzB,IAAI,GAAGyB,SAAS,CAACvB,KAAK,GAAGsB,SAAS,CAACxB,IAAI,GAAGwB,SAAS,CAACtB,KAAK;;AAEvE;;AAEA,SAASQ,gBAAgBA,CAACgB,WAAmC,EAAU,KAAAC,qBAAA,EAAAC,sBAAA;EACrE,IAAMC,KAAK,GAAG,EAAAF,qBAAA,GAACf,0BAAY,CAACkB,QAAQ,qBAArBH,qBAAA,CAAuBI,eAAe,GAAAH,sBAAA,GAAEhB,0BAAY,CAACkB,QAAQ,qBAArBF,sBAAA,CAAuBI,IAAI,CAAC;EACnF,OAAOH,KAAK,CAACI,GAAG,CAAC,UAAClD,CAAC,UAAKA,CAAC,IAAI2C,WAAW,CAAC3C,CAAC,CAAC,GAAC,CAACmD,IAAI,CAACC,OAAO,CAAC,IAAI,CAAC;AACjE;;AAEO,IAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzBvD,iBAAiB,EAAjBA,iBAAiB;EACjBM,sBAAsB,EAAtBA,sBAAsB;EACtBmD,cAAc,EAAE9C,0BAA0B;EAC1CY,qBAAqB,EAArBA;AACF,CAAC","ignoreList":[]}
|
|
@@ -41,15 +41,11 @@ export interface PopupMenuProps extends CommonProps, Pick<MenuProps, 'preventIco
|
|
|
41
41
|
popupPinOffset?: number;
|
|
42
42
|
type?: 'dropdown' | 'tooltip';
|
|
43
43
|
disableAnimations?: boolean;
|
|
44
|
-
/** Действие при открытии
|
|
44
|
+
/** Действие при открытии меню. */
|
|
45
45
|
onOpen?: () => void;
|
|
46
|
-
/** Действие при закрытии
|
|
46
|
+
/** Действие при закрытии меню. */
|
|
47
47
|
onClose?: () => void;
|
|
48
|
-
/**
|
|
49
|
-
* Позволяет задать `id` выпадающему меню.
|
|
50
|
-
*
|
|
51
|
-
* Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.
|
|
52
|
-
*/
|
|
48
|
+
/** `id` выпадающего меню. */
|
|
53
49
|
popupMenuId?: HTMLProps['id'];
|
|
54
50
|
/** @ignore */
|
|
55
51
|
corners?: React.CSSProperties;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_globalObject","_utils","_identifiers","_ThemeContext","_ThemeFactory","_Popup","_RenderLayer","_CommonWrapper","_decorator","_rootNode","_createPropsGetter","_Menu","_validatePositions","_PopupMenu2","_tids","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","_class","_PopupMenu","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","rootNode","responsiveLayout","_React$Component","_this","_len","arguments","length","args","Array","_key","apply","concat","rootId","PopupIds","root","getRandomID","getProps","createPropsGetter","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","React","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","default","createElement","PopupMenuDataTids","className","styles","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","isKeyEscape","globalObject","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose2","_proto","render","_this2","ThemeContext","Consumer","theme","Provider","value","ThemeFactory","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","CommonWrapper","_extends2","rootNodeRef","setRootNode","RenderLayer","onClickOutside","onFocusOutside","active","container","style","width","children","Popup","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","Menu","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","isValidPositions","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"],"mappings":";AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;;AAEA,IAAAE,MAAA,GAAAF,OAAA;;AAEA,IAAAG,YAAA,GAAAH,OAAA;;;;;;;AAOA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;;AAEA,IAAAM,MAAA,GAAAN,OAAA;AACA,IAAAO,YAAA,GAAAP,OAAA;;;AAGA,IAAAQ,cAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA;;AAEA,IAAAU,SAAA,GAAAV,OAAA;AACA,IAAAW,kBAAA,GAAAX,OAAA;;AAEA,IAAAY,KAAA,GAAAZ,OAAA;;AAEA,IAAAa,kBAAA,GAAAb,OAAA;AACA,IAAAc,WAAA,GAAAd,OAAA;AACA,IAAAe,KAAA,GAAAf,OAAA;;AAEAgB,MAAA,CAAAC,IAAA,CAAAF,KAAA,EAAAG,OAAA,WAAAC,GAAA,OAAAA,GAAA,kBAAAA,GAAA,8BAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA,cAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,KAAA,CAAAI,GAAA,UAAAK,OAAA,CAAAL,GAAA,IAAAJ,KAAA,CAAAI,GAAA,KAAuB,IAAAM,MAAA,EAAAC,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEhB,IAAMC,aAAa,GAAAH,OAAA,CAAAG,aAAA,GAAG;EAC3BC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE;AACX,CAAU;;AAEV,IAAMC,SAA+B,GAAG;AACtC,UAAU;AACV,YAAY;AACZ,WAAW;AACX,WAAW;AACX,cAAc;AACd,cAAc;AACd,aAAa;AACb,eAAe;AACf,cAAc;AACd,UAAU;AACV,aAAa;AACb,aAAa,CACd,CAAC;;;;;;;AAMWC,SAAS,GAAAP,OAAA,CAAAO,SAAA,OAFrBC,kBAAQ,EAAAP,MAAA,OACRQ,2BAAgB,EAAAR,MAAA,IAAAC,UAAA,0BAAAQ,gBAAA,YAAAH,UAAA,OAAAI,KAAA,UAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,KAAAF,IAAA,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA,GAAAN,KAAA,GAAAD,gBAAA,CAAAZ,IAAA,CAAAoB,KAAA,CAAAR,gBAAA,SAAAS,MAAA,CAAAJ,IAAA,WAAAJ,KAAA;;;;;IAMPS,MAAM,GAAGC,eAAQ,CAACC,IAAI,GAAG,IAAAC,kBAAW,EAAC,CAAC,CAAAZ,KAAA;;;;;;;;;IAStCa,QAAQ,GAAG,IAAAC,oCAAiB,EAAClB,SAAS,CAACmB,YAAY,CAAC,CAAAf,KAAA;;;;IAIrDgB,KAAK,GAAG;MACbC,WAAW,EAAE,KAAK;MAClBC,yBAAyB,EAAE;IAC7B,CAAC,CAAAlB,KAAA;;IAEOmB,cAAc,GAA2B,IAAI,CAAAnB,KAAA;IAC7CoB,qBAAqB,GAAuB,IAAI,CAAApB,KAAA;IAChDqB,IAAI,GAAmB,IAAI,CAAArB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwE5BsB,IAAI,GAAG,oBAAYtB,KAAA,CAAKuB,QAAQ,CAAC,CAAC,GAAAvB,KAAA;IAClCwB,KAAK,GAAG,oBAAYxB,KAAA,CAAKyB,QAAQ,CAAC,CAAC,GAAAzB,KAAA;;IAElC0B,OAAO,GAAG,UAACC,OAAuB,UAAM3B,KAAA,CAAKqB,IAAI,GAAGM,OAAO,EAAC,CAAA3B,KAAA;;IAE5D4B,UAAU,GAAG,YAAM;MACzB,IAAI5B,KAAA,CAAKqB,IAAI,EAAE;QACbrB,KAAA,CAAKqB,IAAI,CAACQ,KAAK,CAAC,CAAC;MACnB;IACF,CAAC,CAAA7B,KAAA;;IAEO8B,kBAAkB,GAAG,UAACC,OAAwB,EAAK,KAAAC,qBAAA;MACzD,IAAI,OAAOD,OAAO,KAAK,QAAQ,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;QAC9D,OAAOA,OAAO;MAChB;;MAEA,oBAAOE,cAAK,CAACC,YAAY,CAACH,OAAO,EAAwB;QACvDI,EAAE,EAAEnC,KAAA,CAAKoC,KAAK,CAACD,EAAE;QACjB,eAAe,GAAAH,qBAAA,GAAEhC,KAAA,CAAKoC,KAAK,CAACC,WAAW,YAAAL,qBAAA,GAAIhC,KAAA,CAAKS,MAAM;QACtD,eAAe,EAAET,KAAA,CAAKgB,KAAK,CAACC,WAAW,GAAG,MAAM,GAAG,OAAO;QAC1D,YAAY,EAAEjB,KAAA,CAAKoC,KAAK,CAAC,YAAY;MACvC,CAAC,CAAC;IACJ,CAAC,CAAApC,KAAA;;IAEOsC,aAAa,GAAG,YAAM;MAC5B,IAAI,OAAOtC,KAAA,CAAKoC,KAAK,CAACL,OAAO,KAAK,UAAU,EAAE;QAC5C,IAAMA,OAAO,GAAG/B,KAAA,CAAKoC,KAAK,CAACL,OAAO,CAAC;UACjCQ,MAAM,EAAEvC,KAAA,CAAKgB,KAAK,CAACC,WAAW;UAC9BuB,QAAQ,EAAExC,KAAA,CAAKuB,QAAQ;UACvBkB,SAAS,EAAEzC,KAAA,CAAKyB,QAAQ;UACxBiB,UAAU,EAAE1C,KAAA,CAAK0C,UAAU;UAC3BC,OAAO,EAAE3C,KAAA,CAAKoC,KAAK,CAACO;QACtB,CAAC,CAAC;;QAEF;UACEhF,MAAA,CAAAiF,OAAA,CAAAC,aAAA;YACE,YAAUC,uBAAiB,CAACf,OAAQ;YACpCgB,SAAS,EAAEC,kBAAM,CAACjB,OAAO,CAAC,CAAE;YAC5BkB,GAAG,EAAE,SAAAA,IAACtB,OAAO,UAAM3B,KAAA,CAAKmB,cAAc,GAAGQ,OAAO,EAAE;;UAEjD3B,KAAA,CAAK8B,kBAAkB,CAACC,OAAO;UAC5B,CAAC;;MAEX;;MAEA;QACEpE,MAAA,CAAAiF,OAAA,CAAAC,aAAA;UACE,YAAUC,uBAAiB,CAACf,OAAQ;UACpCmB,OAAO,EAAElD,KAAA,CAAKmD,kBAAmB;UACjCC,SAAS,EAAEpD,KAAA,CAAKqD,oBAAqB;UACrCJ,GAAG,EAAE,SAAAA,IAACtB,OAAO,UAAM3B,KAAA,CAAKmB,cAAc,GAAGQ,OAAO,EAAE;UAClDoB,SAAS,EAAEC,kBAAM,CAACjB,OAAO,CAAC,CAAE;;QAE3B/B,KAAA,CAAK8B,kBAAkB,CAAC9B,KAAA,CAAKoC,KAAK,CAACL,OAAO;QACvC,CAAC;;IAEX,CAAC,CAAA/B,KAAA;;IAEOsD,uBAAuB,GAAG,oBAAMtD,KAAA,CAAKyB,QAAQ,CAAC,CAAC,GAAAzB,KAAA;;;;;;;;;;;IAW/CuB,QAAQ,GAAG,UAACL,yBAAmC,EAAW;MAChElB,KAAA,CAAKuD,SAAS,CAAC,CAAC;MAChBvD,KAAA,CAAKwD,QAAQ;QACX;UACEvC,WAAW,EAAE,IAAI;UACjBC,yBAAyB,EAAzBA;QACF,CAAC;QACD,YAAM;UACJlB,KAAA,CAAKyD,uBAAuB,CAAC,KAAK,CAAC;QACrC;MACF,CAAC;IACH,CAAC,CAAAzD,KAAA;;IAEOyB,QAAQ,GAAG,UAACiC,YAAsB,EAAW;MACnD1D,KAAA,CAAKwD,QAAQ;QACX;UACEvC,WAAW,EAAE,KAAK;UAClBC,yBAAyB,EAAE;QAC7B,CAAC;QACD,YAAM;UACJlB,KAAA,CAAKyD,uBAAuB,CAAC,CAAC,CAACC,YAAY,CAAC;QAC9C;MACF,CAAC;IACH,CAAC,CAAA1D,KAAA;;IAEO0C,UAAU,GAAG,YAAY;MAC/B1C,KAAA,CAAKgB,KAAK,CAACC,WAAW,GAAGjB,KAAA,CAAKyB,QAAQ,CAAC,CAAC,GAAGzB,KAAA,CAAKuB,QAAQ,CAAC,CAAC;IAC5D,CAAC,CAAAvB,KAAA;;IAEOmD,kBAAkB,GAAG,YAAY;MACvCnD,KAAA,CAAK0C,UAAU,CAAC,CAAC;IACnB,CAAC,CAAA1C,KAAA;;IAEOqD,oBAAoB,GAAG,UAACM,CAAmC,EAAW;MAC5E,IAAI,IAAAC,qBAAQ,EAACC,uBAAU,EAAEC,uBAAU,EAAEC,+BAAkB,CAAC,CAACJ,CAAC,CAAC,EAAE;QAC3DA,CAAC,CAACK,cAAc,CAAC,CAAC;QAClBhE,KAAA,CAAKuB,QAAQ,CAAC,IAAI,CAAC;MACrB;IACF,CAAC,CAAAvB,KAAA;;IAEOiE,aAAa,GAAG,UAACN,CAAmC,EAAK;MAC/D,IAAI,IAAAO,wBAAW,EAACP,CAAC,CAAC,EAAE;QAClB,IAAMD,YAAY,GAAG,IAAI;QACzB1D,KAAA,CAAKyB,QAAQ,CAACiC,YAAY,CAAC;MAC7B;IACF,CAAC,CAAA1D,KAAA;;IAEOuD,SAAS,GAAG,YAAY;MAC9B,IAAIY,0BAAY,CAACC,QAAQ,EAAE;QACzBpE,KAAA,CAAKoB,qBAAqB,GAAG+C,0BAAY,CAACC,QAAQ,CAACC,aAA4B;MACjF;IACF,CAAC,CAAArE,KAAA;;IAEO0D,YAAY,GAAG,YAAY;MACjC,IAAI1D,KAAA,CAAKoB,qBAAqB,EAAE;QAC9BpB,KAAA,CAAKoB,qBAAqB,CAACS,KAAK,CAAC,CAAC;QAClC7B,KAAA,CAAKoB,qBAAqB,GAAG,IAAI;MACnC;IACF,CAAC,CAAApB,KAAA;;IAEOyD,uBAAuB,GAAG,UAACa,qBAA8B,EAAW;MAC1E,IAAIA,qBAAqB,EAAE;QACzBtE,KAAA,CAAK0D,YAAY,CAAC,CAAC;MACrB;;MAEA,IAAI1D,KAAA,CAAKgB,KAAK,CAACC,WAAW,IAAIjB,KAAA,CAAKoC,KAAK,CAACmC,MAAM,EAAE;QAC/CvE,KAAA,CAAKoC,KAAK,CAACmC,MAAM,CAAC,CAAC;MACrB;;MAEA,IAAI,CAACvE,KAAA,CAAKgB,KAAK,CAACC,WAAW,IAAIjB,KAAA,CAAKoC,KAAK,CAACoC,OAAO,EAAE;QACjDxE,KAAA,CAAKoC,KAAK,CAACoC,OAAO,CAAC,CAAC;MACtB;;MAEA,IAAI,OAAOxE,KAAA,CAAKoC,KAAK,CAACqC,iBAAiB,KAAK,UAAU,EAAE;QACtDzE,KAAA,CAAKoC,KAAK,CAACqC,iBAAiB,CAACzE,KAAA,CAAKgB,KAAK,CAACC,WAAW,EAAEqD,qBAAqB,CAAC;MAC7E;IACF,CAAC,CAAAtE,KAAA;;IAEO0E,mBAAmB,GAAG,UAACC,KAAwC,EAAW;MAChF,IAAIA,KAAK,CAACC,kBAAkB,CAAC,CAAC,EAAE;QAC9B;MACF;;MAEA,IAAID,KAAK,CAACE,IAAI,KAAK,SAAS,EAAE;QAC5BF,KAAK,CAACX,cAAc,CAAC,CAAC;MACxB;;MAEA,IAAMN,YAAY,GAAGiB,KAAK,CAACE,IAAI,KAAK,SAAS;MAC7C7E,KAAA,CAAKyB,QAAQ,CAACiC,YAAY,CAAC;IAC7B,CAAC,QAAA1D,KAAA,MAAA8E,eAAA,CAAAlC,OAAA,EAAAhD,SAAA,EAAAG,gBAAA,MAAAgF,MAAA,GAAAnF,SAAA,CAAAX,SAAA,CAAA8F,MAAA,CAlOMC,MAAM,GAAb,SAAAA,OAAA,EAA6B,KAAAC,MAAA,QAC3B,oBACEtH,MAAA,CAAAiF,OAAA,CAAAC,aAAA,CAAC5E,aAAA,CAAAiH,YAAY,CAACC,QAAQ,QACnB,UAACC,KAAK,EAAK,CACV,oBACEzH,MAAA,CAAAiF,OAAA,CAAAC,aAAA,CAAC5E,aAAA,CAAAiH,YAAY,CAACG,QAAQ,IACpBC,KAAK,EAAEC,0BAAY,CAACC,MAAM,CACxB,EACEC,WAAW,EAAEL,KAAK,CAACM,oBAAoB,CACzC,CAAC,EACDN,KACF,CAAE,IAEDH,MAAI,CAACU,UAAU,CAAC,CACI,CAAC,CAE5B,CACqB,CAAC,CAE5B,CAAC,CAAAZ,MAAA,CAEOY,UAAU,GAAlB,SAAAA,WAAA,EAAqB,KAAAC,sBAAA,CACnB,IAAAC,cAAA,GAA2C,IAAI,CAAChF,QAAQ,CAAC,CAAC,CAAlDiF,WAAW,GAAAD,cAAA,CAAXC,WAAW,CAAEC,iBAAiB,GAAAF,cAAA,CAAjBE,iBAAiB,CACtC,oBACEpI,MAAA,CAAAiF,OAAA,CAAAC,aAAA,CAACxE,cAAA,CAAA2H,aAAa,MAAAC,SAAA,CAAArD,OAAA,IAACsD,WAAW,EAAE,IAAI,CAACC,WAAY,IAAK,IAAI,CAAC/D,KAAK,gBAC1DzE,MAAA,CAAAiF,OAAA,CAAAC,aAAA,CAACzE,YAAA,CAAAgI,WAAW,IACVC,cAAc,EAAE,IAAI,CAAC/C,uBAAwB,EAC7CgD,cAAc,EAAE,IAAI,CAAChD,uBAAwB,EAC7CiD,MAAM,EAAE,IAAI,CAACvF,KAAK,CAACC,WAAY,iBAE/BtD,MAAA,CAAAiF,OAAA,CAAAC,aAAA,UAAK,YAAUC,uBAAiB,CAACnC,IAAK,EAACoC,SAAS,EAAEC,kBAAM,CAACwD,SAAS,CAAC,CAAE,EAACC,KAAK,EAAE,EAAEC,KAAK,EAAE,IAAI,CAACtE,KAAK,CAACsE,KAAK,CAAC,CAAE,IACtG,IAAI,CAACpE,aAAa,CAAC,CAAC,EACpB,IAAI,CAACnB,cAAc,IAAI,IAAI,CAACiB,KAAK,CAACuE,QAAQ,iBACzChJ,MAAA,CAAAiF,OAAA,CAAAC,aAAA,CAAC1E,MAAA,CAAAyI,KAAK,IACJzE,EAAE,GAAAyD,sBAAA,GAAE,IAAI,CAACxD,KAAK,CAACC,WAAW,YAAAuD,sBAAA,GAAI,IAAI,CAACnF,MAAO,EAC1CoG,aAAa,EAAE,IAAI,CAAC1F,cAAe,EACnCoB,MAAM,EAAE,IAAI,CAACvB,KAAK,CAACC,WAAY,EAC/B6F,SAAS,QACTC,MAAM,EAAE,IAAI,CAAC3E,KAAK,CAAC4E,WAAY,EAC/BC,MAAM,EAAEnB,WAAY,EACpBoB,SAAS,EAAE,IAAI,CAAC9E,KAAK,CAAC+E,cAAe,EACrCC,SAAS,EAAE,IAAI,CAACC,YAAY,CAAC,CAAE,EAC/BtB,iBAAiB,EAAEA,iBAAkB,EACrCxB,MAAM,EAAE,IAAI,CAAC3C,UAAW,EACxB0F,oBAAoB,EAAE,IAAI,CAAC7F,QAAS,EACpCiF,KAAK,EAAE,IAAI,CAACa,cAAc,GAAG,MAAM,GAAG,IAAI,CAACnF,KAAK,CAACoF,SAAS,IAAI,MAAO,iBAErE7J,MAAA,CAAAiF,OAAA,CAAAC,aAAA,CAACpE,KAAA,CAAAgJ,IAAI,IACHC,SAAS,EAAE,IAAI,CAACH,cAAc,GAAG,MAAM,GAAG,IAAI,CAACnF,KAAK,CAACuF,aAAa,IAAI,MAAO,EAC7EvE,SAAS,EAAE,IAAI,CAACa,aAAc,EAC9B2D,WAAW,EAAE,IAAI,CAAClD,mBAAoB,EACtCmD,kBAAkB,EAAE,IAAI,CAACzF,KAAK,CAACyF,kBAAmB,EAClDC,eAAe,EAAE,KAAM,EACvB7E,GAAG,EAAE,IAAI,CAACvB,OAAQ,EAClBqG,wBAAwB,EAAE,IAAI,CAAC/G,KAAK,CAACE,yBAAyB,GAAG,CAAC,GAAG,CAAC,CAAE,EACxE8G,MAAM,EAAE,IAAI,CAAC5F,KAAK,CAAC4F,MAAO,EAC1BC,MAAM,EAAE,IAAI,CAAC7F,KAAK,CAAC6F,MAAO,IAEzB,IAAI,CAAC7F,KAAK,CAACuE,QACR,CACD,CAEN,CACM,CACA,CAAC,CAEpB,CAAC,CAAA5B,MAAA,CA8DOsC,YAAY,GAApB,SAAAA,aAAA,EAAuD,CACrD,IAAMD,SAAS,GAAG,IAAI,CAACvG,QAAQ,CAAC,CAAC,CAACuG,SAAS,CAC3C,IAAIA,SAAS,IAAI,IAAAc,mCAAgB,EAACd,SAAS,CAAC,EAAE,CAC5C,OAAOA,SAAS,CAClB,CAEA,OAAOzH,SAAS,CAClB,CAAC,QAAAC,SAAA,GApK4BqC,cAAK,CAACkG,SAAS,GAAA5I,UAAA,CAC9B6I,mBAAmB,GAAG,WAAW,EAAA7I,UAAA,CACjC8I,WAAW,GAAG,WAAW,EAAA9I,UAAA,CAKzBwB,YAAY,GAAiB,EACzCqG,SAAS,EAAEzH,SAAS,EACpBkF,IAAI,EAAErF,aAAa,CAACE,OAAO,EAC3BoG,WAAW,EAAE,IAAI,EACjBC,iBAAiB,EAAE,KAAK,CAC1B,CAAC,EAAAxG,UAAA,CAIa+I,IAAI,GAAG9I,aAAa,EAAAD,UAAA,MAAAD,MAAA,KAAAA,MAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_globalObject","_utils","_identifiers","_ThemeContext","_ThemeFactory","_Popup","_RenderLayer","_CommonWrapper","_decorator","_rootNode","_createPropsGetter","_Menu","_validatePositions","_PopupMenu2","_tids","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","_class","_PopupMenu","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","rootNode","responsiveLayout","_React$Component","_this","_len","arguments","length","args","Array","_key","apply","concat","rootId","PopupIds","root","getRandomID","getProps","createPropsGetter","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","React","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","default","createElement","PopupMenuDataTids","className","styles","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","someKeys","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","isKeyEscape","globalObject","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose2","_proto","render","_this2","ThemeContext","Consumer","theme","Provider","value","ThemeFactory","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","CommonWrapper","_extends2","rootNodeRef","setRootNode","RenderLayer","onClickOutside","onFocusOutside","active","container","style","width","children","Popup","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","Menu","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","isValidPositions","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню. */\n onOpen?: () => void;\n /** Действие при закрытии меню. */\n onClose?: () => void;\n /** `id` выпадающего меню. */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -54,7 +54,7 @@ export var CalendarDay = /*#__PURE__*/memo(forwardRefAndName('CalendarDay', func
|
|
|
54
54
|
tabIndex: -1,
|
|
55
55
|
disabled: isDisabled,
|
|
56
56
|
onClick: handleClick,
|
|
57
|
-
className: cx((_cx = {}, _cx[styles.day(theme)] = true, _cx[styles.
|
|
57
|
+
className: cx((_cx = {}, _cx[styles.day(theme)] = true, _cx[styles.weekend(theme)] = isWeekend, _cx[styles.selected(theme)] = isSelected, _cx), className)
|
|
58
58
|
}, getVisualStateDataAttributes({
|
|
59
59
|
selected: isSelected
|
|
60
60
|
}), rest), /*#__PURE__*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","memo","useCallback","useLocaleForControl","ThemeContext","cx","DatePickerLocaleHelper","InternalDate","LocaleContext","getVisualStateDataAttributes","forwardRefAndName","styles","CalendarDataTids","CalendarDay","_ref","ref","_cx","_cx2","isToday","isSelected","isDisabled","isWeekend","date","onDayClick","onClick","children","className","rest","_objectWithoutPropertiesLoose","_excluded","theme","_useContext","langCode","internalDate","value","locale","ariaLabel","dayCellChooseDateAriaLabel","toA11YFormat","handleClick","e","_internalDate$getComp","getComponentsLikeNumber","day","caption","createElement","_extends","dayCell","tabIndex","disabled","
|
|
1
|
+
{"version":3,"names":["React","useContext","memo","useCallback","useLocaleForControl","ThemeContext","cx","DatePickerLocaleHelper","InternalDate","LocaleContext","getVisualStateDataAttributes","forwardRefAndName","styles","CalendarDataTids","CalendarDay","_ref","ref","_cx","_cx2","isToday","isSelected","isDisabled","isWeekend","date","onDayClick","onClick","children","className","rest","_objectWithoutPropertiesLoose","_excluded","theme","_useContext","langCode","internalDate","value","locale","ariaLabel","dayCellChooseDateAriaLabel","toA11YFormat","handleClick","e","_internalDate$getComp","getComponentsLikeNumber","day","caption","createElement","_extends","dayCell","tabIndex","disabled","weekend","selected","todayCaption"],"sources":["CalendarDay.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport React, { useContext, memo, useCallback } from 'react';\n\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { LocaleContext } from '../../lib/locale';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\n\nimport { styles } from './DayCellView.styles';\nimport { CalendarDataTids } from './Calendar';\n\nexport interface CalendarDayProps extends React.HTMLAttributes<HTMLButtonElement> {\n /** Устанавливает, является ли день текущим. */\n isToday?: boolean;\n\n /** Устанавливает, является ли день выбранным. */\n isSelected?: boolean;\n\n /** Устанавливает, является ли день недоступным. */\n isDisabled?: boolean;\n\n /** Устанавливает, является ли день выходным. */\n isWeekend?: boolean;\n\n /** Задает день. */\n date: string;\n\n /** Задает функцию, которая вызывается при клике на день. Необходима для внутренней работы Calendar. Не предназначена для переопределения. Вместо этого, следует использовать стандартный `onClick`.\n * @internal @ignore\n */\n onDayClick: () => void;\n}\n\n/**\n * Компонент дня `CalendarDay` из Calendar.\n *\n * @visibleName Calendar.Day\n */\nexport const CalendarDay = memo(\n forwardRefAndName(\n 'CalendarDay',\n function CalendarDay(\n {\n isToday,\n isSelected,\n isDisabled,\n isWeekend,\n date,\n onDayClick,\n onClick,\n children,\n className,\n ...rest\n }: PropsWithChildren<CalendarDayProps>,\n ref: React.Ref<HTMLButtonElement>,\n ) {\n const theme = useContext(ThemeContext);\n\n const { langCode } = useContext(LocaleContext);\n const internalDate = new InternalDate({ langCode, value: date });\n\n const locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);\n const ariaLabel = `${locale.dayCellChooseDateAriaLabel}: ${internalDate.toA11YFormat()}`;\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (e) => {\n onDayClick();\n onClick?.(e);\n },\n [onDayClick, onClick],\n );\n\n const { date: day } = internalDate.getComponentsLikeNumber();\n const caption = children ?? day;\n\n return (\n <button\n ref={ref}\n data-tid={CalendarDataTids.dayCell}\n aria-label={ariaLabel}\n tabIndex={-1}\n disabled={isDisabled}\n onClick={handleClick}\n className={cx(\n {\n [styles.day(theme)]: true,\n [styles.weekend(theme)]: isWeekend,\n [styles.selected(theme)]: isSelected,\n },\n className,\n )}\n {...getVisualStateDataAttributes({ selected: isSelected })}\n {...rest}\n >\n <span className={cx({ [styles.todayCaption(theme)]: isToday })}>{caption}</span>\n </button>\n );\n },\n ),\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,14 +41,14 @@ export var DropdownDataTids = {
|
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* Кнопка-меню `Dropdown` открывает раскрывающееся меню с командами, объединенными по смыслу.
|
|
45
45
|
*
|
|
46
46
|
* Используйте кнопку-меню:
|
|
47
47
|
* * когда не хватает места для нескольких кнопок.
|
|
48
48
|
* * когда названия действий очень длинные.
|
|
49
49
|
* * когда действия редко используются или объединены по смыслу.
|
|
50
50
|
*
|
|
51
|
-
* Не используйте `Dropdown` для выбора значения из набора вариантов. В таком случае воспользуйтесь компонентом Select
|
|
51
|
+
* Не используйте `Dropdown` для выбора значения из набора вариантов. В таком случае воспользуйтесь компонентом `Select`.
|
|
52
52
|
*/
|
|
53
53
|
export var Dropdown = rootNode(_class = (_Dropdown = /*#__PURE__*/function (_React$Component) {
|
|
54
54
|
function Dropdown() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","filterProps","MenuHeader","MenuItem","MenuSeparator","Select","CommonWrapper","rootNode","ThemeContext","getDropdownTheme","PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","menuPos","corners","id","DropdownDataTids","root","Dropdown","_class","_Dropdown","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","renderMain","_this$props","props","caption","icon","rest","_objectWithoutPropertiesLoose","_excluded","items","Children","map","children","item","createElement","_extends","rootNodeRef","setRootNode","ref","_refSelect","value","_icon","renderValue","element","_select","_inheritsLoose","_proto","prototype","render","_this2","Consumer","theme","Provider","open","close","Component","__KONTUR_REACT_UI__","displayName","Header","Separator"],"sources":["Dropdown.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { ButtonUse } from '../Button';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { SizeProp } from '../../lib/types/props';\n\nimport { getDropdownTheme } from './getDropdownTheme';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n menuPos: true,\n corners: true,\n id: true,\n 'aria-describedby': true,\n 'aria-label': true,\n};\n\nexport interface DropdownProps\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n CommonProps {\n /**
|
|
1
|
+
{"version":3,"names":["React","filterProps","MenuHeader","MenuItem","MenuSeparator","Select","CommonWrapper","rootNode","ThemeContext","getDropdownTheme","PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","menuPos","corners","id","DropdownDataTids","root","Dropdown","_class","_Dropdown","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","renderMain","_this$props","props","caption","icon","rest","_objectWithoutPropertiesLoose","_excluded","items","Children","map","children","item","createElement","_extends","rootNodeRef","setRootNode","ref","_refSelect","value","_icon","renderValue","element","_select","_inheritsLoose","_proto","prototype","render","_this2","Consumer","theme","Provider","open","close","Component","__KONTUR_REACT_UI__","displayName","Header","Separator"],"sources":["Dropdown.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { ButtonUse } from '../Button';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { SizeProp } from '../../lib/types/props';\n\nimport { getDropdownTheme } from './getDropdownTheme';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n menuPos: true,\n corners: true,\n id: true,\n 'aria-describedby': true,\n 'aria-label': true,\n};\n\nexport interface DropdownProps\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n CommonProps {\n /** Текст кнопки-меню. */\n caption: React.ReactNode;\n\n /** Добавляет иконку слева от текста кнопки. */\n icon?: React.ReactElement<any>;\n\n /** Ширина кнопки-меню. Если `menuWidth` не задан, такая же минимальная ширина применяется к раскрывающемуся меню. */\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /** Отключает использование портала. */\n disablePortal?: boolean;\n\n /** Блокирует компонент. */\n disabled?: boolean;\n\n /** Показывает состояние ошибки. */\n error?: boolean;\n\n /** Показывает состояние предупреждения. */\n warning?: boolean;\n\n /** Ограничивает максимальную высоту раскрывающегося меню. */\n maxMenuHeight?: number;\n\n /** Фиксирует положение раскрывающегося меню относительно кнопки-меню. */\n menuPos?: 'top' | 'bottom';\n\n /** Выравнивает раскрывающееся меню относительно кнопки-меню. */\n menuAlign?: 'left' | 'right';\n\n /** Ширина раскрывающегося меню. */\n menuWidth?: number | string;\n\n /** Размер кнопки-меню. */\n size?: SizeProp;\n\n /** Визуальный стиль кнопки-меню. */\n use?: ButtonUse;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /** Вызывается при закрытии раскрывающегося меню. */\n onClose?: () => void;\n\n /** Вызывается при открытии раскрывающегося меню. */\n onOpen?: () => void;\n\n /** Вызывается при наведении курсора (событие `onmouseenter`). Разницу с `onMouseOver` смотрите в [документации](https://learn.javascript.ru/mousemove-mouseover-mouseout-mouseenter-mouseleave). */\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n\n /** Вызывается при уходе курсора с элемента (событие `onmouseleave`). */\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n\n /** Вызывается при движении курсора над элементом (событие `onmouseover`). */\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\nexport const DropdownDataTids = {\n root: 'Dropdown__root',\n} as const;\n\n/**\n * Кнопка-меню `Dropdown` открывает раскрывающееся меню с командами, объединенными по смыслу.\n *\n * Используйте кнопку-меню:\n * * когда не хватает места для нескольких кнопок.\n * * когда названия действий очень длинные.\n * * когда действия редко используются или объединены по смыслу.\n *\n * Не используйте `Dropdown` для выбора значения из набора вариантов. В таком случае воспользуйтесь компонентом `Select`.\n */\n@rootNode\nexport class Dropdown extends React.Component<DropdownProps> {\n public static __KONTUR_REACT_UI__ = 'Dropdown';\n public static displayName = 'Dropdown';\n\n public static Header = MenuHeader;\n public static MenuItem = MenuItem;\n public static Separator = MenuSeparator;\n\n private _select: Nullable<DropdownSelectType>;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getDropdownTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = () => {\n const { caption, icon, ...rest } = this.props;\n const items = React.Children.map(this.props.children, (item) => item) || [];\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...rest}>\n <Select<React.ReactNode, React.ReactNode>\n data-tid={DropdownDataTids.root}\n ref={this._refSelect}\n {...filterProps(rest, PASS_PROPS)}\n value={caption}\n items={items}\n _icon={icon}\n renderValue={renderValue}\n />\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n */\n public open() {\n if (this._select) {\n this._select.open();\n }\n }\n\n /**\n * @public\n */\n public close() {\n if (this._select) {\n this._select.close();\n }\n }\n\n private _refSelect = (element: DropdownSelectType): void => {\n this._select = element;\n };\n}\n\nfunction renderValue(value: any) {\n return value;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,60 +6,59 @@ import type { CommonProps } from '../../internal/CommonWrapper';
|
|
|
6
6
|
import type { TGetRootNode } from '../../lib/rootNode';
|
|
7
7
|
import type { SizeProp } from '../../lib/types/props';
|
|
8
8
|
export interface DropdownProps extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, CommonProps {
|
|
9
|
-
/**
|
|
9
|
+
/** Текст кнопки-меню. */
|
|
10
10
|
caption: React.ReactNode;
|
|
11
11
|
/** Добавляет иконку слева от текста кнопки. */
|
|
12
12
|
icon?: React.ReactElement<any>;
|
|
13
|
-
/**
|
|
13
|
+
/** Ширина кнопки-меню. Если `menuWidth` не задан, такая же минимальная ширина применяется к раскрывающемуся меню. */
|
|
14
14
|
width?: React.CSSProperties['width'];
|
|
15
15
|
/** @ignore */
|
|
16
16
|
_renderButton?: (params: any) => JSX.Element;
|
|
17
17
|
/** Отключает использование портала. */
|
|
18
18
|
disablePortal?: boolean;
|
|
19
|
-
/**
|
|
19
|
+
/** Блокирует компонент. */
|
|
20
20
|
disabled?: boolean;
|
|
21
|
-
/**
|
|
21
|
+
/** Показывает состояние ошибки. */
|
|
22
22
|
error?: boolean;
|
|
23
|
-
/**
|
|
23
|
+
/** Показывает состояние предупреждения. */
|
|
24
24
|
warning?: boolean;
|
|
25
|
-
/**
|
|
25
|
+
/** Ограничивает максимальную высоту раскрывающегося меню. */
|
|
26
26
|
maxMenuHeight?: number;
|
|
27
|
-
/**
|
|
28
|
-
*/
|
|
27
|
+
/** Фиксирует положение раскрывающегося меню относительно кнопки-меню. */
|
|
29
28
|
menuPos?: 'top' | 'bottom';
|
|
30
|
-
/**
|
|
29
|
+
/** Выравнивает раскрывающееся меню относительно кнопки-меню. */
|
|
31
30
|
menuAlign?: 'left' | 'right';
|
|
32
|
-
/**
|
|
31
|
+
/** Ширина раскрывающегося меню. */
|
|
33
32
|
menuWidth?: number | string;
|
|
34
|
-
/**
|
|
33
|
+
/** Размер кнопки-меню. */
|
|
35
34
|
size?: SizeProp;
|
|
36
|
-
/**
|
|
35
|
+
/** Визуальный стиль кнопки-меню. */
|
|
37
36
|
use?: ButtonUse;
|
|
38
37
|
/** @ignore */
|
|
39
38
|
corners?: React.CSSProperties;
|
|
40
|
-
/**
|
|
39
|
+
/** Вызывается при закрытии раскрывающегося меню. */
|
|
41
40
|
onClose?: () => void;
|
|
42
|
-
/**
|
|
41
|
+
/** Вызывается при открытии раскрывающегося меню. */
|
|
43
42
|
onOpen?: () => void;
|
|
44
|
-
/**
|
|
43
|
+
/** Вызывается при наведении курсора (событие `onmouseenter`). Разницу с `onMouseOver` смотрите в [документации](https://learn.javascript.ru/mousemove-mouseover-mouseout-mouseenter-mouseleave). */
|
|
45
44
|
onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
46
|
-
/**
|
|
45
|
+
/** Вызывается при уходе курсора с элемента (событие `onmouseleave`). */
|
|
47
46
|
onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
48
|
-
/**
|
|
47
|
+
/** Вызывается при движении курсора над элементом (событие `onmouseover`). */
|
|
49
48
|
onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
50
49
|
}
|
|
51
50
|
export declare const DropdownDataTids: {
|
|
52
51
|
readonly root: "Dropdown__root";
|
|
53
52
|
};
|
|
54
53
|
/**
|
|
55
|
-
*
|
|
54
|
+
* Кнопка-меню `Dropdown` открывает раскрывающееся меню с командами, объединенными по смыслу.
|
|
56
55
|
*
|
|
57
56
|
* Используйте кнопку-меню:
|
|
58
57
|
* * когда не хватает места для нескольких кнопок.
|
|
59
58
|
* * когда названия действий очень длинные.
|
|
60
59
|
* * когда действия редко используются или объединены по смыслу.
|
|
61
60
|
*
|
|
62
|
-
* Не используйте `Dropdown` для выбора значения из набора вариантов. В таком случае воспользуйтесь компонентом Select
|
|
61
|
+
* Не используйте `Dropdown` для выбора значения из набора вариантов. В таком случае воспользуйтесь компонентом `Select`.
|
|
63
62
|
*/
|
|
64
63
|
export declare class Dropdown extends React.Component<DropdownProps> {
|
|
65
64
|
static __KONTUR_REACT_UI__: string;
|
|
@@ -165,7 +165,9 @@ export var FxInput = rootNode(_class = withSize(_class = (_FxInput = /*#__PURE__
|
|
|
165
165
|
_inheritsLoose(FxInput, _React$Component);
|
|
166
166
|
var _proto = FxInput.prototype;
|
|
167
167
|
_proto.validateProps = function validateProps(props) {
|
|
168
|
-
|
|
168
|
+
if (props.type === 'currency' && props.mask !== undefined) {
|
|
169
|
+
warning(false, '[FxInput]: Prop "mask" is not supported when type="currency"');
|
|
170
|
+
}
|
|
169
171
|
};
|
|
170
172
|
_proto.componentDidMount = function componentDidMount() {
|
|
171
173
|
this.validateProps(this.getProps());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","warning","Group","Input","CurrencyInput","createPropsGetter","CommonWrapper","rootNode","ThemeContext","MaskedInput","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","withSize","MathFunctionIcon","FxInputRestoreBtn","FxInputDataTids","root","FxInput","_class","_FxInput","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","input","getProps","defaultProps","renderMain","props","button","auto","createElement","size","onRestore","corners","disabled","borderless","buttonAriaLabel","width","getInput","focus","blur","refInput","element","getLeftIcon","iconSizes","small","parseInt","theme","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","type","value","_size","mask","maskChar","formatChars","alwaysShowMask","signed","integerDigits","fractionDigits","hideTrailingZeros","originalCorners","rest","_objectWithoutPropertiesLoose","_excluded","_extends","borderBottomLeftRadius","borderTopLeftRadius","commonInputProps","ref","onValueChange","featureFlags","fxInputUseMaskedInput","leftIcon","align","_inheritsLoose","_proto","prototype","validateProps","undefined","componentDidMount","componentDidUpdate","render","_this2","Consumer","flags","rootNodeRef","setRootNode","Component","__KONTUR_REACT_UI__","displayName"],"sources":["FxInput.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport warning from 'warning';\n\nimport { Group } from '../Group';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport type { CurrencyInputProps } from '../CurrencyInput';\nimport { CurrencyInput } from '../CurrencyInput';\nimport type { DefaultizedProps } from '../../lib/createPropsGetter';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Override } from '../../typings/utility-types';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { SizeProp } from '../../lib/types/props';\nimport type { MaskedInputProps } from '../MaskedInput';\nimport { MaskedInput } from '../MaskedInput';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext } from '../../lib/featureFlagsContext';\nimport { ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext/ReactUIFeatureFlagsContext';\nimport { withSize } from '../../lib/size/SizeDecorator';\n\nimport { MathFunctionIcon } from './MathFunctionIcon';\nimport { FxInputRestoreBtn } from './FxInputRestoreBtn';\n\nexport interface FxInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Pick<Partial<MaskedInputProps>, 'alwaysShowMask' | 'mask' | 'maskChar' | 'formatChars'>,\n Override<\n Omit<CurrencyInputProps, 'alwaysShowMask' | 'mask' | 'maskChar' | 'formatChars'>,\n {\n /** Управляет видимостью кнопки Restore:\n * - true — кнопка Restore не отображается. Значение в поле является автоматически рассчитанным.\n * - false — кнопка Restore отображается в поле. Значение в поле считается отредактированным. */\n auto?: boolean;\n\n /** Тип поля. */\n type?: 'currency' | InputProps['type'];\n\n /** Событие нажатия на кнопку Restore. */\n onRestore?: () => void;\n\n /** Событие изменения value. */\n onValueChange: CurrencyInputProps['onValueChange'] | InputProps['onValueChange'];\n\n /** Значение поля. */\n value?: string | number;\n\n /** Задаёт ref поля. */\n refInput?: (element: CurrencyInput | Input | null) => void;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Атрибут aria-label кнопке Restore. */\n buttonAriaLabel?: AriaAttributes['aria-label'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n }\n > {}\n\nexport const FxInputDataTids = {\n root: 'FxInput__root',\n} as const;\n\ntype DefaultProps = Required<Pick<FxInputProps, 'width' | 'type' | 'value' | 'auto'>>;\ntype DefaultizedFxInputProps = DefaultizedProps<FxInputProps, DefaultProps>;\n\n/** В автополе можно вывести автоматически рассчитанное цифровое значение. В него можно передавать итог любого вычисления, например, сумму других полей, процент или более сложную функцию.\n *\n * У поля есть иконка математической формулы и кнопка Restore — с её помощью пользователь может вернуть исходное значение, если редактировал поле. Видимость кнопки и поведение при нажатии нужно прописывать в компоненте самостоятельно.\n */\n@rootNode\n@withSize\nexport class FxInput extends React.Component<FxInputProps> {\n public static __KONTUR_REACT_UI__ = 'FxInput';\n public static displayName = 'FxInput';\n\n public static defaultProps: DefaultProps = {\n width: 250,\n type: 'text',\n value: '',\n auto: false,\n };\n\n private theme!: Theme;\n private size!: SizeProp;\n private input: Input | CurrencyInput | null = null;\n\n private getProps = createPropsGetter(FxInput.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private featureFlags!: ReactUIFeatureFlags;\n\n private validateProps(props: FxInputProps) {\n warning(\n props.type !== 'currency' && props.mask !== undefined,\n '[FxInput]: Prop \"mask\" is not supported when type=\"currency\"',\n );\n }\n\n public componentDidMount() {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate() {\n this.validateProps(this.getProps());\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DefaultizedFxInputProps>) => {\n const button = props.auto ? null : (\n <FxInputRestoreBtn\n size={props.size}\n onRestore={props.onRestore}\n corners={props.corners}\n disabled={props.disabled}\n borderless={props.borderless}\n aria-label={props.buttonAriaLabel}\n />\n );\n\n return (\n <Group data-tid={FxInputDataTids.root} width={props.width}>\n {button}\n {this.getInput(props)}\n </Group>\n );\n };\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /** Программно снимает фокус с кнопки.\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private refInput = (element: Input | CurrencyInput | null) => {\n this.input = element;\n\n if (this.props.refInput) {\n this.props.refInput(this.input);\n }\n };\n\n private getLeftIcon = (props: FxInputProps) => {\n if (!props.auto) {\n return null;\n }\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.inputIconSizeSmall),\n medium: parseInt(this.theme.inputIconSizeMedium),\n large: parseInt(this.theme.inputIconSizeLarge),\n };\n const size = this.size;\n\n return <MathFunctionIcon size={iconSizes[size]} />;\n };\n\n private getInput = (props: FxInputProps) => {\n const {\n type,\n onRestore,\n auto,\n refInput,\n value,\n width,\n size: _size,\n mask,\n maskChar,\n formatChars,\n alwaysShowMask,\n signed,\n integerDigits,\n fractionDigits,\n hideTrailingZeros,\n buttonAriaLabel,\n corners: originalCorners,\n ...rest\n } = props;\n const corners: InputProps['corners'] = auto\n ? originalCorners\n : { borderBottomLeftRadius: 0, borderTopLeftRadius: 0, ...originalCorners };\n const size = this.size;\n const commonInputProps = {\n corners,\n size,\n width: '100%',\n ref: this.refInput,\n ...rest,\n };\n\n if (type === 'currency') {\n return (\n <CurrencyInput\n {...commonInputProps}\n signed={signed}\n integerDigits={integerDigits}\n fractionDigits={fractionDigits}\n value={value as CurrencyInputProps['value']}\n onValueChange={this.props.onValueChange as CurrencyInputProps['onValueChange']}\n />\n );\n }\n if (this.featureFlags.fxInputUseMaskedInput && mask) {\n return (\n <MaskedInput\n {...commonInputProps}\n leftIcon={this.getLeftIcon(props)}\n align=\"right\"\n mask={mask}\n maskChar={maskChar}\n formatChars={formatChars}\n alwaysShowMask={alwaysShowMask}\n value={value as MaskedInputProps['value']}\n onValueChange={this.props.onValueChange as MaskedInputProps['onValueChange']}\n />\n );\n }\n return (\n <Input\n {...commonInputProps}\n leftIcon={this.getLeftIcon(props)}\n align=\"right\"\n mask={mask}\n maskChar={maskChar}\n formatChars={formatChars}\n alwaysShowMask={alwaysShowMask}\n type={type}\n value={value as InputProps['value']}\n onValueChange={this.props.onValueChange as InputProps['onValueChange']}\n />\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","warning","Group","Input","CurrencyInput","createPropsGetter","CommonWrapper","rootNode","ThemeContext","MaskedInput","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","withSize","MathFunctionIcon","FxInputRestoreBtn","FxInputDataTids","root","FxInput","_class","_FxInput","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","input","getProps","defaultProps","renderMain","props","button","auto","createElement","size","onRestore","corners","disabled","borderless","buttonAriaLabel","width","getInput","focus","blur","refInput","element","getLeftIcon","iconSizes","small","parseInt","theme","inputIconSizeSmall","medium","inputIconSizeMedium","large","inputIconSizeLarge","type","value","_size","mask","maskChar","formatChars","alwaysShowMask","signed","integerDigits","fractionDigits","hideTrailingZeros","originalCorners","rest","_objectWithoutPropertiesLoose","_excluded","_extends","borderBottomLeftRadius","borderTopLeftRadius","commonInputProps","ref","onValueChange","featureFlags","fxInputUseMaskedInput","leftIcon","align","_inheritsLoose","_proto","prototype","validateProps","undefined","componentDidMount","componentDidUpdate","render","_this2","Consumer","flags","rootNodeRef","setRootNode","Component","__KONTUR_REACT_UI__","displayName"],"sources":["FxInput.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport warning from 'warning';\n\nimport { Group } from '../Group';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport type { CurrencyInputProps } from '../CurrencyInput';\nimport { CurrencyInput } from '../CurrencyInput';\nimport type { DefaultizedProps } from '../../lib/createPropsGetter';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Override } from '../../typings/utility-types';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { SizeProp } from '../../lib/types/props';\nimport type { MaskedInputProps } from '../MaskedInput';\nimport { MaskedInput } from '../MaskedInput';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext } from '../../lib/featureFlagsContext';\nimport { ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext/ReactUIFeatureFlagsContext';\nimport { withSize } from '../../lib/size/SizeDecorator';\n\nimport { MathFunctionIcon } from './MathFunctionIcon';\nimport { FxInputRestoreBtn } from './FxInputRestoreBtn';\n\nexport interface FxInputProps\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Pick<Partial<MaskedInputProps>, 'alwaysShowMask' | 'mask' | 'maskChar' | 'formatChars'>,\n Override<\n Omit<CurrencyInputProps, 'alwaysShowMask' | 'mask' | 'maskChar' | 'formatChars'>,\n {\n /** Управляет видимостью кнопки Restore:\n * - true — кнопка Restore не отображается. Значение в поле является автоматически рассчитанным.\n * - false — кнопка Restore отображается в поле. Значение в поле считается отредактированным. */\n auto?: boolean;\n\n /** Тип поля. */\n type?: 'currency' | InputProps['type'];\n\n /** Событие нажатия на кнопку Restore. */\n onRestore?: () => void;\n\n /** Событие изменения value. */\n onValueChange: CurrencyInputProps['onValueChange'] | InputProps['onValueChange'];\n\n /** Значение поля. */\n value?: string | number;\n\n /** Задаёт ref поля. */\n refInput?: (element: CurrencyInput | Input | null) => void;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Атрибут aria-label кнопке Restore. */\n buttonAriaLabel?: AriaAttributes['aria-label'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n }\n > {}\n\nexport const FxInputDataTids = {\n root: 'FxInput__root',\n} as const;\n\ntype DefaultProps = Required<Pick<FxInputProps, 'width' | 'type' | 'value' | 'auto'>>;\ntype DefaultizedFxInputProps = DefaultizedProps<FxInputProps, DefaultProps>;\n\n/** В автополе можно вывести автоматически рассчитанное цифровое значение. В него можно передавать итог любого вычисления, например, сумму других полей, процент или более сложную функцию.\n *\n * У поля есть иконка математической формулы и кнопка Restore — с её помощью пользователь может вернуть исходное значение, если редактировал поле. Видимость кнопки и поведение при нажатии нужно прописывать в компоненте самостоятельно.\n */\n@rootNode\n@withSize\nexport class FxInput extends React.Component<FxInputProps> {\n public static __KONTUR_REACT_UI__ = 'FxInput';\n public static displayName = 'FxInput';\n\n public static defaultProps: DefaultProps = {\n width: 250,\n type: 'text',\n value: '',\n auto: false,\n };\n\n private theme!: Theme;\n private size!: SizeProp;\n private input: Input | CurrencyInput | null = null;\n\n private getProps = createPropsGetter(FxInput.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private featureFlags!: ReactUIFeatureFlags;\n\n private validateProps(props: FxInputProps) {\n if (props.type === 'currency' && props.mask !== undefined) {\n warning(false, '[FxInput]: Prop \"mask\" is not supported when type=\"currency\"');\n }\n }\n\n public componentDidMount() {\n this.validateProps(this.getProps());\n }\n\n public componentDidUpdate() {\n this.validateProps(this.getProps());\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DefaultizedFxInputProps>) => {\n const button = props.auto ? null : (\n <FxInputRestoreBtn\n size={props.size}\n onRestore={props.onRestore}\n corners={props.corners}\n disabled={props.disabled}\n borderless={props.borderless}\n aria-label={props.buttonAriaLabel}\n />\n );\n\n return (\n <Group data-tid={FxInputDataTids.root} width={props.width}>\n {button}\n {this.getInput(props)}\n </Group>\n );\n };\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /** Программно снимает фокус с кнопки.\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private refInput = (element: Input | CurrencyInput | null) => {\n this.input = element;\n\n if (this.props.refInput) {\n this.props.refInput(this.input);\n }\n };\n\n private getLeftIcon = (props: FxInputProps) => {\n if (!props.auto) {\n return null;\n }\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.inputIconSizeSmall),\n medium: parseInt(this.theme.inputIconSizeMedium),\n large: parseInt(this.theme.inputIconSizeLarge),\n };\n const size = this.size;\n\n return <MathFunctionIcon size={iconSizes[size]} />;\n };\n\n private getInput = (props: FxInputProps) => {\n const {\n type,\n onRestore,\n auto,\n refInput,\n value,\n width,\n size: _size,\n mask,\n maskChar,\n formatChars,\n alwaysShowMask,\n signed,\n integerDigits,\n fractionDigits,\n hideTrailingZeros,\n buttonAriaLabel,\n corners: originalCorners,\n ...rest\n } = props;\n const corners: InputProps['corners'] = auto\n ? originalCorners\n : { borderBottomLeftRadius: 0, borderTopLeftRadius: 0, ...originalCorners };\n const size = this.size;\n const commonInputProps = {\n corners,\n size,\n width: '100%',\n ref: this.refInput,\n ...rest,\n };\n\n if (type === 'currency') {\n return (\n <CurrencyInput\n {...commonInputProps}\n signed={signed}\n integerDigits={integerDigits}\n fractionDigits={fractionDigits}\n value={value as CurrencyInputProps['value']}\n onValueChange={this.props.onValueChange as CurrencyInputProps['onValueChange']}\n />\n );\n }\n if (this.featureFlags.fxInputUseMaskedInput && mask) {\n return (\n <MaskedInput\n {...commonInputProps}\n leftIcon={this.getLeftIcon(props)}\n align=\"right\"\n mask={mask}\n maskChar={maskChar}\n formatChars={formatChars}\n alwaysShowMask={alwaysShowMask}\n value={value as MaskedInputProps['value']}\n onValueChange={this.props.onValueChange as MaskedInputProps['onValueChange']}\n />\n );\n }\n return (\n <Input\n {...commonInputProps}\n leftIcon={this.getLeftIcon(props)}\n align=\"right\"\n mask={mask}\n maskChar={maskChar}\n formatChars={formatChars}\n alwaysShowMask={alwaysShowMask}\n type={type}\n value={value as InputProps['value']}\n onValueChange={this.props.onValueChange as InputProps['onValueChange']}\n />\n );\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,16 +14,13 @@ export var GlobalLoaderDataTids = {
|
|
|
14
14
|
var currentGlobalLoader;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Универсальный индикатор обмена данными с сервером.
|
|
18
18
|
* Он появляется у верхней границы экрана и выглядит как тоненькая полоска, окрашенная в фирменный цвет продукта.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
20
|
+
* Глобальный лоадер может быть только один в приложении. Поэтому каждый новый экземпляр компонента заменяет предыдущий экземпляр и начинает перехватывать статические методы.
|
|
21
21
|
*
|
|
22
22
|
* Предполагается монтирование компонента в единственном месте. И управление им через статические методы, либо через пропсы.
|
|
23
23
|
*
|
|
24
|
-
* `GlobalLoader` работает в двух режимах:
|
|
25
|
-
* * как прогресс-бар, примерно показывает ход получения данных от сервера.
|
|
26
|
-
* * как спиннер, когда есть проблемы с соединением.
|
|
27
24
|
*/
|
|
28
25
|
export var GlobalLoader = rootNode(_class = (_GlobalLoader = /*#__PURE__*/function (_React$Component) {
|
|
29
26
|
function GlobalLoader(props) {
|
|
@@ -181,8 +178,8 @@ export var GlobalLoader = rootNode(_class = (_GlobalLoader = /*#__PURE__*/functi
|
|
|
181
178
|
disableAnimations: disableAnimations
|
|
182
179
|
}));
|
|
183
180
|
} /**
|
|
184
|
-
* Запускает анимацию
|
|
185
|
-
* Равносильно установке пропа `active = true
|
|
181
|
+
* Запускает анимацию лоадера. <br />
|
|
182
|
+
* Равносильно установке пропа `active = true`.
|
|
186
183
|
*
|
|
187
184
|
* @public
|
|
188
185
|
*/;
|