diff --git a/app/client/package.json b/app/client/package.json index 3613c4f63a..bc24cf83d9 100644 --- a/app/client/package.json +++ b/app/client/package.json @@ -31,6 +31,7 @@ "@types/node": "^10.12.18", "@types/prismjs": "^1.16.1", "@types/react": "^16.8.2", + "@types/react-custom-scrollbars": "^4.0.7", "@types/react-dom": "^16.8.0", "@types/react-helmet": "^5.0.14", "@types/react-instantsearch-dom": "^6.3.0", @@ -98,6 +99,7 @@ "react": "^16.12.0", "react-base-table": "^1.9.1", "react-beautiful-dnd": "^12.2.0", + "react-custom-scrollbars": "^4.2.1", "react-dnd": "^9.3.4", "react-dnd-html5-backend": "^9.3.4", "react-dnd-touch-backend": "^9.4.0", diff --git a/app/client/src/components/ads/IconSelector.tsx b/app/client/src/components/ads/IconSelector.tsx index 61b0632d26..73b2837624 100644 --- a/app/client/src/components/ads/IconSelector.tsx +++ b/app/client/src/components/ads/IconSelector.tsx @@ -3,7 +3,7 @@ import styled from "styled-components"; import AppIcon, { AppIconName, AppIconCollection } from "./AppIcon"; import { Size } from "./Button"; import { CommonComponentProps, Classes } from "./common"; -import ScrollIndicator from "./ScrollIndicator"; +import ScrollIndicator from "components/ads/ScrollIndicator"; type IconSelectorProps = CommonComponentProps & { onSelect?: (icon: AppIconName) => void; diff --git a/app/client/src/components/ads/ScrollIndicator.tsx b/app/client/src/components/ads/ScrollIndicator.tsx index 159164bc2d..c9219337b0 100644 --- a/app/client/src/components/ads/ScrollIndicator.tsx +++ b/app/client/src/components/ads/ScrollIndicator.tsx @@ -1,7 +1,23 @@ import React, { useEffect, useState, useRef } from "react"; import styled from "styled-components"; import _ from "lodash"; -import { useSpring, animated, interpolate } from "react-spring"; +import { animated } from "react-spring"; +import { useSpring, interpolate } from "react-spring"; + +export const ScrollThumb = styled(animated.div)<{ + mode?: "DARK" | "LIGHT"; +}>` + position: relative; + width: 4px; + transform: translate3d(0, 0, 0); + background-color: ${(props) => + props.mode + ? props.mode === "LIGHT" + ? props.theme.colors.scrollbarLight + : props.theme.colors.scrollbarDark + : props.theme.colors.scrollbarLight}; + border-radius: ${(props) => props.theme.radii[3]}px; +`; const ScrollTrack = styled.div<{ isVisible: boolean; @@ -12,32 +28,20 @@ const ScrollTrack = styled.div<{ }>` position: absolute; z-index: 100; + overflow: hidden; + transition: opacity 0.15s ease-in; top: ${(props) => (props.top ? props.top : "0px")}; bottom: ${(props) => (props.bottom ? props.bottom : "0px")}; right: ${(props) => (props.right ? props.right : "2px")}; - width: 4px; + opacity: ${(props) => (props.isVisible ? 1 : 0)}; box-shadow: inset 0 0 6px ${(props) => props.mode ? props.mode === "LIGHT" ? props.theme.colors.scrollbarLightBG : props.theme.colors.scrollbarDarkBG - : props.theme.colors.scrollbarBG}; - overflow: hidden; - opacity: ${(props) => (props.isVisible ? 1 : 0)}; - transition: opacity 0.15s ease-in; -`; - -const ScrollThumb = styled(animated.div)<{ mode?: "DARK" | "LIGHT" }>` + : props.theme.colors.scrollbarLightBG}; width: 4px; - background-color: ${(props) => - props.mode - ? props.mode === "LIGHT" - ? props.theme.colors.scrollbarLight - : props.theme.colors.scrollbarDark - : props.theme.colors.scrollbar}; - border-radius: ${(props) => props.theme.radii[3]}px; - transform: translate3d(0, 0, 0); `; interface Props { @@ -45,9 +49,16 @@ interface Props { top?: string; bottom?: string; right?: string; + alwaysShowScrollbar?: boolean; mode?: "DARK" | "LIGHT"; } -function ScrollIndicator({ containerRef, top, bottom, right }: Props) { +function ScrollIndicator({ + containerRef, + top, + bottom, + right, + alwaysShowScrollbar, +}: Props) { const [{ thumbPosition }, setThumbPosition] = useSpring<{ thumbPosition: number; config: { @@ -65,7 +76,9 @@ function ScrollIndicator({ containerRef, top, bottom, right }: Props) { tension: 800, }, })); - const [isScrollVisible, setIsScrollVisible] = useState(false); + const [isScrollVisible, setIsScrollVisible] = useState( + alwaysShowScrollbar || false, + ); const thumbRef = useRef(null); useEffect(() => { @@ -100,9 +113,8 @@ function ScrollIndicator({ containerRef, top, bottom, right }: Props) { }, [isScrollVisible]); const hideScrollbar = _.debounce(() => { - setIsScrollVisible(false); + setIsScrollVisible(alwaysShowScrollbar || false); }, 1500); - return ( ; +} + +function ScrollbarHorizontalThumb(props: any) { + return
; +} + export function Table(props: TableProps) { const isResizingColumn = React.useRef(false); - const tableWrapperRef = React.useRef(null); const handleResizeColumn = (columnWidths: Record) => { const columnSizeMap = { @@ -89,6 +101,13 @@ export function Table(props: TableProps) { columnSizeMap: props.columnSizeMap, }); const columns = React.useMemo(() => props.columns, [columnString]); + const tableHeadercolumns = React.useMemo( + () => + props.columns.filter((column: ReactTableColumnProps) => { + return column.accessor !== "actions"; + }), + [columnString], + ); const pageCount = Math.ceil(props.data.length / props.pageSize); const currentPageIndex = props.pageNo < pageCount ? props.pageNo : 0; const { @@ -139,134 +158,169 @@ export function Table(props: TableProps) { const selectedRowIndex = props.selectedRowIndex; const selectedRowIndices = props.selectedRowIndices || []; const tableSizes = TABLE_SIZES[props.compactMode || CompactModeTypes.DEFAULT]; - /* Subtracting 9px to handling widget padding */ + const tableWrapperRef = useRef(null); + const tableBodyRef = useRef(null); + const tableHeaderWrapperRef = React.createRef(); return ( - { - return column.accessor !== "actions"; - })} - compactMode={props.compactMode} - currentPageIndex={currentPageIndex} - editMode={props.editMode} - filters={props.filters} - nextPageClick={props.nextPageClick} - pageCount={pageCount} - pageNo={props.pageNo} - pageOptions={pageOptions} - prevPageClick={props.prevPageClick} - searchKey={props.searchKey} - searchTableData={props.searchTableData} + -
-
-
+ + - {headerGroups.map((headerGroup: any, index: number) => ( -
- {headerGroup.headers.map((column: any, columnIndex: number) => { - return ( - - ); - })} -
- ))} - {headerGroups.length === 0 && - renderEmptyRows( - 1, - props.columns, - props.width, - subPage, - prepareRow, - )} -
-
subPage.length ? "no-scroll" : "" - }`} - > - {subPage.map((row, rowIndex) => { - prepareRow(row); - return ( + + + + +
+ +
+
+ {headerGroups.map((headerGroup: any, index: number) => (
{ - row.toggleRowSelected(); - props.selectTableRow(row); - }} + {...headerGroup.getHeaderGroupProps()} + className="tr" + key={index} > - {row.cells.map((cell, cellIndex) => { - return ( -
- {cell.render("Cell")} -
- ); - })} + {headerGroup.headers.map( + (column: any, columnIndex: number) => { + return ( + + ); + }, + )}
- ); - })} - {props.pageSize > subPage.length && - renderEmptyRows( - props.pageSize - subPage.length, - props.columns, - props.width, - subPage, - prepareRow, - )} + ))} + {headerGroups.length === 0 && + renderEmptyRows( + 1, + props.columns, + props.width, + subPage, + prepareRow, + )} +
+
subPage.length ? "no-scroll" : "" + }`} + ref={tableBodyRef} + > + {subPage.map((row, rowIndex) => { + prepareRow(row); + return ( +
{ + row.toggleRowSelected(); + props.selectTableRow(row); + e.stopPropagation(); + }} + > + {row.cells.map((cell, cellIndex) => { + return ( +
+ {cell.render("Cell")} +
+ ); + })} +
+ ); + })} + {props.pageSize > subPage.length && + renderEmptyRows( + props.pageSize - subPage.length, + props.columns, + props.width, + subPage, + prepareRow, + )} +
-
+
- + ); } diff --git a/app/client/src/components/designSystems/appsmith/TableComponent/TableHeader.tsx b/app/client/src/components/designSystems/appsmith/TableComponent/TableHeader.tsx index 984bd56de4..8c5ae271c1 100644 --- a/app/client/src/components/designSystems/appsmith/TableComponent/TableHeader.tsx +++ b/app/client/src/components/designSystems/appsmith/TableComponent/TableHeader.tsx @@ -4,7 +4,6 @@ import { Icon, NumericInput } from "@blueprintjs/core"; import { RowWrapper, PaginationWrapper, - TableHeaderWrapper, PaginationItemWrapper, CommonFunctionsMenuWrapper, } from "./TableStyledWrappers"; @@ -22,7 +21,6 @@ import TableDataDownload from "components/designSystems/appsmith/TableComponent/ import TableCompactMode from "components/designSystems/appsmith/TableComponent/TableCompactMode"; import { Colors } from "constants/Colors"; import { EventType } from "constants/AppsmithActionConstants/ActionConstants"; -import ScrollIndicator from "components/ads/ScrollIndicator"; const PageNumberInputWrapper = styled(NumericInput)` &&& input { @@ -34,6 +32,7 @@ const PageNumberInputWrapper = styled(NumericInput)` border-radius: 4px; width: 24px; height: 24px; + line-height: 24px; padding: 0 !important; text-align: center; font-size: 12px; @@ -107,21 +106,12 @@ interface TableHeaderProps { editMode: boolean; compactMode?: CompactMode; updateCompactMode: (compactMode: CompactMode) => void; - width: number; tableSizes: TableSizes; } function TableHeader(props: TableHeaderProps) { - const tableHeaderWrapperRef = React.createRef(); - return ( - + <> )} - - + ); } diff --git a/app/client/src/components/designSystems/appsmith/TableComponent/TableStyledWrappers.tsx b/app/client/src/components/designSystems/appsmith/TableComponent/TableStyledWrappers.tsx index 2f7ef96f03..e516d2d432 100644 --- a/app/client/src/components/designSystems/appsmith/TableComponent/TableStyledWrappers.tsx +++ b/app/client/src/components/designSystems/appsmith/TableComponent/TableStyledWrappers.tsx @@ -5,6 +5,7 @@ import { CellAlignment, } from "components/designSystems/appsmith/TableComponent/Constants"; import { Colors, Color } from "constants/Colors"; +import { hideScrollbar } from "constants/DefaultTheme"; import { FontStyleTypes, TEXT_SIZES } from "constants/WidgetConstants"; export const TableWrapper = styled.div<{ @@ -26,7 +27,18 @@ export const TableWrapper = styled.div<{ .tableWrap { height: 100%; display: block; - overflow: auto; + position: relative; + width: ${(props) => props.width - 8}px; + overflow-x: auto; + ${hideScrollbar}; + .thumb-horizontal { + height: 4px !important; + border-radius: ${(props) => props.theme.radii[3]}px; + background: ${(props) => props.theme.colors.scrollbarLight} !important; + &:hover { + height: 6px !important; + } + } } .table { border-spacing: 0; @@ -35,16 +47,25 @@ export const TableWrapper = styled.div<{ background: ${Colors.ATHENS_GRAY_DARKER}; display: table; width: 100%; + ${hideScrollbar}; + .tr { + width: 100%; + } .thead, .tbody { overflow: hidden; } .tbody { + height: ${(props) => props.height - 80}px; + width: 100%; + overflow-y: auto; + ${hideScrollbar}; .tr { width: 100%; } } .tr { + width: calc(100% - 8px); overflow: hidden; cursor: ${(props) => props.triggerRowSelection && "pointer"}; background: ${Colors.WHITE}; @@ -104,6 +125,11 @@ export const TableWrapper = styled.div<{ top: 0; z-index: 1; } + .thead { + position: sticky; + top: 0; + z-index: 1; + } } .draggable-header, .hidden-header { @@ -404,16 +430,37 @@ export const TableHeaderWrapper = styled.div<{ tableSizes: TableSizes; backgroundColor?: Color; }>` + position: relative; display: flex; - border-bottom: 1px solid ${Colors.GEYSER_LIGHT}; - width: ${(props) => props.width}px; + width: ${(props) => props.width - 8}px; .show-page-items { display: ${(props) => (props.width < 700 ? "none" : "flex")}; } - overflow-x: auto; - overflow-y: hidden; height: ${(props) => props.tableSizes.TABLE_HEADER_HEIGHT}px; min-height: ${(props) => props.tableSizes.TABLE_HEADER_HEIGHT}px; + overflow-x: auto; + ${hideScrollbar}; + .thumb-horizontal { + height: 4px !important; + border-radius: ${(props) => props.theme.radii[3]}px; + background: ${(props) => props.theme.colors.scrollbarLight}; + &:hover { + height: 6px !important; + } + } +`; + +export const TableHeaderInnerWrapper = styled.div<{ + serverSidePaginationEnabled: boolean; + width: number; + tableSizes: TableSizes; + backgroundColor?: Color; +}>` + position: relative; + display: flex; + width: 100%; + height: 100%; + border-bottom: 1px solid ${Colors.GEYSER_LIGHT}; `; export const CommonFunctionsMenuWrapper = styled.div<{ @@ -444,7 +491,7 @@ export const TableIconWrapper = styled.div<{ box-shadow: ${(props) => props.selected ? `inset 0px 4px 0px ${Colors.GREEN}` : "none"}; width: 48px; - height: 42px; + height: 38px; display: flex; align-items: center; justify-content: center; @@ -458,8 +505,8 @@ export const TableIconWrapper = styled.div<{ export const SortIconWrapper = styled.div` display: inline-block; - height: 38px; - line-height: 38px; + height: 32px; + line-height: 32px; `; export const RenderOptionWrapper = styled.div<{ selected: boolean }>` diff --git a/app/client/src/components/designSystems/appsmith/TableComponent/TableUtilities.tsx b/app/client/src/components/designSystems/appsmith/TableComponent/TableUtilities.tsx index dfd3f6487b..e639867e84 100644 --- a/app/client/src/components/designSystems/appsmith/TableComponent/TableUtilities.tsx +++ b/app/client/src/components/designSystems/appsmith/TableComponent/TableUtilities.tsx @@ -250,7 +250,7 @@ export const renderEmptyRows = ( const AscendingIcon = styled(ControlIcons.SORT_CONTROL as AnyStyledComponent)` padding: 0; position: relative; - top: 18px; + top: 12px; cursor: pointer; transform: rotate(180deg); && svg { diff --git a/app/client/src/widgets/TableWidget/derived.js b/app/client/src/widgets/TableWidget/derived.js index a808c915af..1d5a39e4fe 100644 --- a/app/client/src/widgets/TableWidget/derived.js +++ b/app/client/src/widgets/TableWidget/derived.js @@ -33,27 +33,27 @@ export default { getPageSize: (props, moment, _) => { const TABLE_SIZES = { DEFAULT: { - COLUMN_HEADER_HEIGHT: 38, - TABLE_HEADER_HEIGHT: 42, + COLUMN_HEADER_HEIGHT: 32, + TABLE_HEADER_HEIGHT: 38, ROW_HEIGHT: 40, ROW_FONT_SIZE: 14, }, SHORT: { - COLUMN_HEADER_HEIGHT: 38, - TABLE_HEADER_HEIGHT: 42, + COLUMN_HEADER_HEIGHT: 32, + TABLE_HEADER_HEIGHT: 38, ROW_HEIGHT: 20, ROW_FONT_SIZE: 12, }, TALL: { - COLUMN_HEADER_HEIGHT: 38, - TABLE_HEADER_HEIGHT: 42, + COLUMN_HEADER_HEIGHT: 32, + TABLE_HEADER_HEIGHT: 38, ROW_HEIGHT: 60, ROW_FONT_SIZE: 18, }, }; const compactMode = props.compactMode || "DEFAULT"; const componentHeight = - (props.bottomRow - props.topRow) * props.parentRowSpace; + (props.bottomRow - props.topRow) * props.parentRowSpace - 10; const tableSizes = TABLE_SIZES[compactMode]; let pageSize = Math.floor( (componentHeight - diff --git a/app/client/yarn.lock b/app/client/yarn.lock index 63c77408ca..8af878b06b 100644 --- a/app/client/yarn.lock +++ b/app/client/yarn.lock @@ -3733,7 +3733,6 @@ "@types/marked@^1.2.2": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/marked/-/marked-1.2.2.tgz#1f858a0e690247ecf3b2eef576f98f86e8d960d4" - integrity sha512-wLfw1hnuuDYrFz97IzJja0pdVsC0oedtS4QsKH1/inyW9qkLQbXgMUqEQT0MVtUBx3twjWeInUfjQbhBVLECXw== "@types/mdast@^3.0.0": version "3.0.3" @@ -3817,6 +3816,12 @@ "@types/react" "*" "@types/reactcss" "*" +"@types/react-custom-scrollbars@^4.0.7": + version "4.0.7" + resolved "https://registry.yarnpkg.com/@types/react-custom-scrollbars/-/react-custom-scrollbars-4.0.7.tgz#b1312ec749fcf4a01fee7466508501e072ede7ea" + dependencies: + "@types/react" "*" + "@types/react-dom@*", "@types/react-dom@^16.8.0": version "16.9.8" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" @@ -3921,7 +3926,6 @@ "@types/react-window@^1.8.2": version "1.8.2" resolved "https://registry.yarnpkg.com/@types/react-window/-/react-window-1.8.2.tgz#a5a6b2762ce73ffaab7911ee1397cf645f2459fe" - integrity sha512-gP1xam68Wc4ZTAee++zx6pTdDAH08rAkQrWm4B4F/y6hhmlT9Mgx2q8lTCXnrPHXsr15XjRN9+K2DLKcz44qEQ== dependencies: "@types/react" "*" @@ -4652,6 +4656,10 @@ acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" +add-px-to-style@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a" + address@1.1.2, address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" @@ -5583,7 +5591,6 @@ bluebird@^3.3.5, bluebird@^3.5.5, bluebird@^3.7.2: bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== bn.js@^5.1.1: version "5.1.3" @@ -6325,7 +6332,6 @@ code-point-at@^1.0.0: codemirror@^5.59.2: version "5.59.2" resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.59.2.tgz#ee674d3a4a8d241af38d52afc482625ba7393922" - integrity sha512-/D5PcsKyzthtSy2NNKCyJi3b+htRkoKv3idswR/tR6UAvMNKA7SrmyZy6fOONJxSRs1JlUWEDAbxqfdArbK8iA== collapse-white-space@^1.0.2: version "1.0.6" @@ -6449,7 +6455,6 @@ compression@^1.7.4: compute-scroll-into-view@^1.0.16: version "1.0.16" resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz#5b7bf4f7127ea2c19b750353d7ce6776a90ee088" - integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ== concat-map@0.0.1: version "0.0.1" @@ -6586,7 +6591,6 @@ core-js@^3.6.4: core-js@^3.9.1: version "3.9.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae" - integrity sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -7380,6 +7384,14 @@ dom-converter@^0.2: dependencies: utila "~0.4" +dom-css@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dom-css/-/dom-css-2.1.0.tgz#fdbc2d5a015d0a3e1872e11472bbd0e7b9e6a202" + dependencies: + add-px-to-style "1.0.0" + prefix-style "2.0.1" + to-camel-case "1.0.0" + dom-helpers@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" @@ -7551,7 +7563,6 @@ element-resize-detector@^1.2.1: elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" brorand "^1.1.0" @@ -11284,7 +11295,6 @@ locate-path@^5.0.0: lodash-es@4.17.14: version "4.17.14" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.14.tgz#12a95a963cc5955683cee3b74e85458954f37ecc" - integrity sha512-7zchRrGa8UZXjD/4ivUWP1867jDkhzTG2c/uj739utSd7O/pFFdxspCemIFKEEjErbcqRzn8nKnGsi7mvTgRPA== lodash-es@^4.17.21: version "4.17.21" @@ -11294,7 +11304,6 @@ lodash-es@^4.17.21: lodash-move@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/lodash-move/-/lodash-move-1.1.1.tgz#59f76e0f1ac57e6d8683f531bec07c5b6ea4e348" - integrity sha1-WfduDxrFfm2Gg/UxvsB8W26k40g= dependencies: lodash "^4.6.1" @@ -11545,7 +11554,6 @@ markdown-to-jsx@^6.10.3, markdown-to-jsx@^6.11.4: marked@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/marked/-/marked-2.0.0.tgz#9662bbcb77ebbded0662a7be66ff929a8611cee5" - integrity sha512-NqRSh2+LlN2NInpqTQnS614Y/3NkVMFFU6sJlRFEpxJ/LHuK/qJECH7/fXZjk4VZstPW/Pevjil/VtSONsLc7Q== marker-clusterer-plus@^2.1.4: version "2.1.4" @@ -12837,7 +12845,6 @@ path-to-regexp@^1.7.0: path-to-regexp@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38" - integrity sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg== path-type@^1.0.0: version "1.1.0" @@ -13608,6 +13615,10 @@ preact@^10.0.0: version "10.5.4" resolved "https://registry.yarnpkg.com/preact/-/preact-10.5.4.tgz#1e4d148f949fa54656df6c9bc9218bd4e12016e3" +prefix-style@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -13689,7 +13700,6 @@ pretty-hrtime@^1.0.3: prismjs@^1.23.0, prismjs@^1.8.4: version "1.23.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.23.0.tgz#d3b3967f7d72440690497652a9d40ff046067f33" - integrity sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA== optionalDependencies: clipboard "^2.0.0" @@ -13987,7 +13997,7 @@ raf-schd@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" -raf@^3.4.1: +raf@^3.1.0, raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" dependencies: @@ -14117,6 +14127,14 @@ react-color@^2.17.0: reactcss "^1.2.0" tinycolor2 "^1.4.1" +react-custom-scrollbars@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/react-custom-scrollbars/-/react-custom-scrollbars-4.2.1.tgz#830fd9502927e97e8a78c2086813899b2a8b66db" + dependencies: + dom-css "^2.0.0" + prop-types "^15.5.10" + raf "^3.1.0" + react-day-picker@7.4.8: version "7.4.8" resolved "https://registry.yarnpkg.com/react-day-picker/-/react-day-picker-7.4.8.tgz#675625240d3fae1b41c0a9d5177c968c8517c1d4" @@ -14686,7 +14704,6 @@ react-window@^1.8.2: react-window@^1.8.6: version "1.8.6" resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.6.tgz#d011950ac643a994118632665aad0c6382e2a112" - integrity sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg== dependencies: "@babel/runtime" "^7.0.0" memoize-one ">=3.1.1 <6" @@ -15475,7 +15492,6 @@ scriptjs@^2.5.8: scroll-into-view-if-needed@^2.2.26: version "2.2.26" resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.26.tgz#e4917da0c820135ff65ad6f7e4b7d7af568c4f13" - integrity sha512-SQ6AOKfABaSchokAmmaxVnL9IArxEnLEX9j4wAZw+x4iUTb40q7irtHG3z4GtAWz5veVZcCnubXDBRyLVQaohw== dependencies: compute-scroll-into-view "^1.0.16" @@ -16681,10 +16697,20 @@ to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" +to-camel-case@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-camel-case/-/to-camel-case-1.0.0.tgz#1a56054b2f9d696298ce66a60897322b6f423e46" + dependencies: + to-space-case "^1.0.0" + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" +to-no-case@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -16713,6 +16739,12 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-space-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17" + dependencies: + to-no-case "^1.0.0" + toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"