@propellerads/table 4.3.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"table.cjs.production.min.js","sources":["../src/types.tsx","../src/useTableShadow.tsx","../src/propsGetter.tsx","../src/style.tsx","../src/index.tsx","../src/useLoadingState.tsx"],"sourcesContent":["import React, {FunctionComponent, ReactElement, ReactNode} from 'react';\nimport {\n Cell,\n CellPropGetter,\n Column,\n FooterGroupPropGetter,\n FooterPropGetter,\n HeaderGroup,\n HeaderGroupPropGetter,\n Hooks,\n Meta,\n Row,\n RowPropGetter,\n TableBodyPropGetter,\n TablePropGetter, TableState,\n UsePaginationInstanceProps, UsePaginationOptions,\n UsePaginationState,\n UseRowSelectInstanceProps,\n UseRowSelectState, UseSortByColumnProps, UseRowSelectRowProps,\n UseSortByInstanceProps, UseSortByOptions,\n UseTableOptions, HeaderPropGetter,\n} from 'react-table';\n\nexport type DefaultObject = Record<string, string | number | unknown>;\n\nexport type LoadingState = {\n loadingColumns?: Column[],\n loadingData: any[],\n}\n\nexport enum FOOTER_PLACEMENT {\n TOP = 'top',\n BOTTOM = 'bottom'\n}\n\nexport type PaginationProps = {\n paginationAmount?: string | ReactNode | ReactElement,\n parentElementId: string,\n labelPerPage?: string,\n pageSizes?: Array<string | number>,\n pageIndex: number,\n perPage: number,\n totalPages: number,\n totalItems: number,\n canNextPage: boolean,\n canPreviousPage: boolean,\n nextPageHandler: () => void,\n previousPageHandler: () => void,\n setPageSize: (size: number) => void,\n gotoPage: (page: number) => void,\n}\n\nexport type ControlledPagination = {\n paginationAmount?: string | ReactNode | ReactElement,\n pageSize: number,\n pageIndex: number,\n pageCount: number,\n}\n\nexport type TableProps = {\n columns: Array<Column<DefaultObject>>,\n data: [],\n totalItems?: number,\n PaginationComponent: React.FunctionComponent<PaginationProps>,\n initialState: Partial<TableState<DefaultObject>>,\n fetchData?: (params: { pageIndex: number, pageSize: number }) => void,\n onSortedChange?: (id: string, isDesc: boolean) => void,\n isLoading?: boolean,\n footerPlacement?: Array<FOOTER_PLACEMENT>,\n hasDefaultPagination?: boolean,\n onSelectRowsChange?: (rows: Array<DefaultObject>) => void,\n controlledPagination?: ControlledPagination,\n loadingMessage?: string,\n labelPerPage?: string,\n parentElementId?: string,\n tableContentId?: string,\n getRowPreProps?: (row: Row) => DefaultObject,\n getTableProps?: TableGetter,\n getHeaderGroupProps?: ElementGetter,\n getHeaderProps?: ElementGetter,\n getRowProps?: ElementGetter,\n getCellProps?: ElementGetter,\n getFooterProps?: ElementGetter,\n getFooterGroupProps?: ElementGetter,\n showLoadingState?: boolean,\n LoadingCellComponent?: FunctionComponent<DefaultObject>,\n noDataMessage?: string | ReactElement\n}\n\nexport type TableOptions = {\n columns: Array<Column<DefaultObject>>,\n data: Array<DefaultObject>,\n initialState: {\n pageIndex?: number,\n pageSize?: number,\n },\n disableSortRemove: boolean,\n disableMultiSort: boolean,\n disableMultiRemove: boolean,\n manualSortBy?: boolean,\n autoResetPage?: boolean,\n manualPagination?: boolean,\n pageCount?: number,\n}\n\nexport type MetaProps = {\n column?: HeaderGroup<DefaultObject>,\n cell?: Cell,\n}\n\nexport type BaseMeta = Meta<DefaultObject, MetaProps>\n\nexport type TableGetter = (props: DefaultObject) => DefaultObject;\n\nexport type ElementGetter = (props: DefaultObject, meta: BaseMeta) => DefaultObject;\n\nexport type ElementCellPropGetter = CellPropGetter<DefaultObject>\n\nexport type ElementRowPropGetter = RowPropGetter<DefaultObject>\n\nexport type ElementHeaderFooterPropGetter = FooterGroupPropGetter<DefaultObject> |\n HeaderGroupPropGetter<DefaultObject> |\n FooterPropGetter<DefaultObject>\n\nexport type GetTableContainerPropsGetter = (userGetter?: TableGetter, getter?: TableGetter) =>\n TablePropGetter<DefaultObject> | TableBodyPropGetter<DefaultObject>\n\nexport type GetTableElementPropsGetter<T> = (userGetter?: ElementGetter, getter?: ElementGetter) => T\n\nexport type GetTableElementInternalPropsGetter =\n (internalProps: DefaultObject, userGetter?: ElementGetter, getter?: ElementGetter) =>\n HeaderPropGetter<DefaultObject>\n\nexport type ColumnWithSort = HeaderGroup<DefaultObject> & Partial<UseSortByColumnProps<DefaultObject>>\n\nexport type StandardColumn = Column<DefaultObject>\n\nexport type StandardRow = Row<DefaultObject>\n\nexport type SelectableRow = Row<{ id: string }> & UseRowSelectRowProps<DefaultObject>\n\nexport type StandardCell = Cell<DefaultObject>\n\nexport type SelectableRowInstanceProps = UseRowSelectInstanceProps<DefaultObject>\n\nexport type StandardHooks = Hooks<DefaultObject>\n\nexport type TableHooksInstanceProps =\n UseSortByInstanceProps<DefaultObject> &\n UsePaginationInstanceProps<DefaultObject> &\n UseRowSelectInstanceProps<DefaultObject> &\n { state: UseRowSelectState<DefaultObject> & UsePaginationState<DefaultObject>};\n\nexport type TableOptionsProps =\n UseTableOptions<DefaultObject> & UseSortByOptions<DefaultObject> & UsePaginationOptions<DefaultObject> &\n { initialState: Partial<TableState<DefaultObject>> & Partial<UsePaginationState<DefaultObject>> }\n\nexport class Table extends React.Component<Partial<TableProps>> {}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport {useEffect} from 'react';\n\nconst TABLE_SHADOW_CLASS_NAME = {\n LEFT: 'shadow_left',\n RIGHT: 'shadow_right',\n};\n\nfunction changeClassName(tableWrapperNode: Element, newClassNameList: string[]) {\n const {classList} = tableWrapperNode;\n\n classList.remove(TABLE_SHADOW_CLASS_NAME.LEFT, TABLE_SHADOW_CLASS_NAME.RIGHT);\n classList.add(...newClassNameList);\n}\n\nfunction calculateNewClassNames(tableNode, tableWrapperNode) {\n if (!tableNode || !tableWrapperNode) {\n return;\n }\n\n const tableRect = tableNode.getBoundingClientRect();\n const tableWrapperRect = tableWrapperNode.getBoundingClientRect();\n const newClassName = [];\n\n const tableRectLeft = Math.floor(tableRect.left);\n const tableRectRight = Math.floor(tableRect.right);\n const tableWrapperRectLeft = Math.floor(tableWrapperRect.left);\n const tableWrapperRectRight = Math.floor(tableWrapperRect.right);\n\n if (tableRectLeft < tableWrapperRectLeft) {\n newClassName.push(TABLE_SHADOW_CLASS_NAME.LEFT);\n }\n\n if (tableRectRight > tableWrapperRectRight) {\n newClassName.push(TABLE_SHADOW_CLASS_NAME.RIGHT);\n }\n\n changeClassName(tableWrapperNode, newClassName);\n}\n\nexport default (tableRef, tableWrapperRef) => {\n useEffect(() => {\n let ticking = false;\n\n function onMousewheel() {\n if (ticking) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n calculateNewClassNames(tableRef.current, tableWrapperRef.current);\n ticking = false;\n });\n\n ticking = true;\n }\n\n calculateNewClassNames(tableRef.current, tableWrapperRef.current);\n\n tableRef?.current?.addEventListener('mousewheel', onMousewheel);\n window.addEventListener('resize', onMousewheel);\n\n return () => {\n tableRef?.current?.removeEventListener('mousewheel', onMousewheel);\n window.removeEventListener('resize', onMousewheel);\n };\n }, [tableRef.current, tableWrapperRef.current]);\n};\n","import {\n ElementGetter,\n BaseMeta,\n TableGetter,\n ElementCellPropGetter,\n ElementRowPropGetter,\n DefaultObject,\n ElementHeaderFooterPropGetter,\n GetTableElementPropsGetter,\n GetTableContainerPropsGetter,\n GetTableElementInternalPropsGetter,\n} from './types';\n\nexport const defaultGetter: ElementGetter = (props) => props;\n\nexport const cellGetter: ElementGetter = (props, {cell}) => ({\n ...props,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n align: cell?.column?.align,\n});\nexport const mainCellGetter: ElementGetter = (props, {column}) => ({\n ...props,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n align: column?.align,\n});\n\nexport const getTableProps: GetTableContainerPropsGetter = (userGetter, getter = defaultGetter as TableGetter) => {\n if (userGetter) {\n return (props) => ({\n ...getter(props),\n ...userGetter(props),\n });\n }\n\n return getter;\n};\n\nexport const getTableElementProps:\n GetTableElementPropsGetter<ElementHeaderFooterPropGetter> = (userGetter, getter = defaultGetter) => {\n if (userGetter) {\n return (props, meta) => ({\n ...getter(props, meta),\n ...userGetter(props, meta),\n });\n }\n\n return getter;\n };\n\nexport const getTableRowProps:\n GetTableElementPropsGetter<ElementRowPropGetter> = (userGetter, getter = defaultGetter) => {\n if (userGetter) {\n return (props, meta) => ({\n ...getter(props, meta),\n ...userGetter(props, meta),\n });\n }\n\n return getter;\n };\n\nexport const getTableCellProps:\n GetTableElementPropsGetter<ElementCellPropGetter> = (userGetter, getter = defaultGetter) => {\n if (userGetter) {\n return (props, meta) => ({\n ...getter(props, meta),\n ...userGetter(props, meta),\n });\n }\n\n return getter;\n };\n\nexport const getTableElementInternalProps:\n GetTableElementInternalPropsGetter = (internalProps, userGetter, getter = defaultGetter) => {\n if (userGetter) {\n return (props, meta) => ({\n ...getter({...props, ...internalProps}, meta),\n ...userGetter(props, meta),\n });\n }\n\n return (props: DefaultObject, meta: BaseMeta) => getter({...props, ...internalProps}, meta);\n };\n","/* eslint max-len: off */\nimport styled, {\n keyframes, css, CSSObject,\n} from 'styled-components';\nimport {\n fontNormal,\n white,\n black,\n spacing,\n gray80,\n gray95,\n} from '@propellerads/stylevariables';\n\nconst loadingAnimation = keyframes`\n from {\n background-position-x: 0;\n }\n 50% {\n background-position-x: 100%;\n }\n 100% {\n background-position-x: 0;\n }\n`;\n\nexport const TableLoading = styled.div`\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n transition: all 0.3s ease;\n z-index: -1;\n opacity: 0;\n pointer-events: none;\n \n ${(props: { isLoading: boolean }) => props.isLoading && css`\n opacity: 1;\n z-index: 2;\n pointer-events: all;\n `}\n`;\n\nexport const TableLoadingInner = styled.div`\n position: absolute;\n display: block;\n text-align: center;\n width: 100%;\n top: 50%;\n left: 0;\n color: rgba(0, 0, 0, 0.6);\n transform: translateY(-52%);\n transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n`;\n\nexport const TableWrapper = styled.div`\n position: relative;\n overflow: hidden;\n \n &::before {\n bottom: 10px;\n content: '';\n opacity: 0;\n pointer-events: none;\n position: absolute;\n width: 10px;\n height: 100%;\n top: 0;\n left: -10px;\n box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);\n transition: 0.3s opacity;\n }\n\n &::after {\n bottom: 10px;\n content: '';\n opacity: 0;\n pointer-events: none;\n width: 10px;\n height: 100%;\n position: absolute;\n top: 0;\n right: -10px;\n box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);\n transition: 0.3s opacity;\n }\n \n &.shadow_left {\n &::before {\n opacity: 1 !important;\n }\n }\n \n &.shadow_right {\n &::after {\n opacity: 1 !important;\n }\n }\n`;\n\nexport const TableRoot = styled.div`\n font-size: ${fontNormal}px;\n position: relative;\n display: flex;\n flex-direction: column;\n border: 0;\n`;\n\nexport const TableContent = styled.div`\n display: block;\n max-width: 100%;\n overflow-x: scroll;\n overflow-y: hidden;\n`;\n\nexport const TableCore = styled.div`\n flex: auto 1;\n display: flex;\n flex-direction: column;\n align-items: stretch; \n border-collapse: collapse;\n`;\n\nexport const HeadCell = styled.div`\n display: inline-flex;\n`;\n\nexport const TD = styled.div`\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 1.3rem;\n padding: 7px 4px;\n overflow: hidden;\n transition: width 0.3s ease 0s, min-width, padding, opacity;\n \n ${({align}: { align?: CSSObject, colSpan?: number }) => align && css`\n text-align: ${align}`\n}\n`;\n\nexport const EmptyStateCell = styled.div`\n width: 100%;\n height: ${spacing * 4}px;\n background: linear-gradient(to left, ${gray95}, ${white}, ${gray95});\n background-size: 200% 200%;\n animation: ${loadingAnimation} 1.6s linear infinite;\n`;\n\nexport const TH = styled.div`\n padding: 0 4px;\n line-height: normal;\n position: relative;\n transition: box-shadow 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;\n color: rgb(0, 0, 0);\n font-weight: 500;\n outline: none;\n`;\n\nexport const THead = styled.div`\n flex: 1 0 auto;\n display: flex;\n flex-direction: column;\n user-select: none;\n \n ${TH}, ${TD} {\n padding: 0 4px;\n line-height: normal;\n position: relative;\n transition: box-shadow 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n color: ${black};\n font-weight: 500;\n outline: none;\n }\n`;\n\nexport const TRGroup = styled.div`\n display: flex;\n flex: 1 0 auto;\n box-shadow: inset 0 -1px 0 0 ${gray95};\n min-width: 100%;\n width: max-content;\n`;\n\nexport const TR = styled.div`\n padding: 0;\n -webkit-box-align: center;\n align-items: center;\n`;\n\nexport const TBody = styled.div`\n border-top: 1px solid ${gray80};\n margin-top: ${spacing * 2}px;\n min-width: 100%;\n width: max-content;\n`;\n\nexport const TFoot = styled.div`\n background: ${gray95};\n flex: 1 0 auto;\n display: flex;\n flex-direction: column;\n`;\n","import React, {\n FunctionComponent,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport {\n useSortBy,\n useTable,\n useRowSelect,\n usePagination,\n useFlexLayout,\n Column,\n} from 'react-table';\n\nimport {\n ArrowDownFull, ArrowUp, COLOR, SIZE,\n} from '@propellerads/icon';\nimport Checkbox from '@propellerads/input-checkbox';\n\nimport useLoadingState from './useLoadingState';\nimport useTableShadow from './useTableShadow';\n\nimport {\n FOOTER_PLACEMENT,\n TableProps,\n PaginationProps,\n StandardHooks,\n StandardColumn,\n StandardRow,\n StandardCell,\n ColumnWithSort,\n TableHooksInstanceProps,\n SelectableRowInstanceProps,\n TableOptionsProps,\n SelectableRow,\n DefaultObject,\n} from './types';\n\nimport {\n getTableProps as getTableBodyProps,\n getTableElementProps,\n getTableElementInternalProps,\n cellGetter,\n mainCellGetter,\n getTableCellProps,\n getTableRowProps,\n} from './propsGetter';\n\nimport {\n TableRoot,\n TableWrapper,\n TableContent,\n HeadCell,\n TableLoading,\n TableLoadingInner,\n TD,\n TableCore,\n THead,\n TR,\n TH,\n TBody,\n TRGroup,\n TFoot,\n EmptyStateCell,\n} from './style';\n\nexport const defaultProps = {\n hasDefaultPagination: false,\n isLoading: false,\n footerPlacement: [],\n loadingMessage: 'loading...',\n labelPerPage: 'Show rows',\n parentElementId: 'parent-element',\n tableContentId: '',\n showLoadingState: false,\n LoadingCellComponent: EmptyStateCell,\n getRowPreProps: () => ({}),\n noDataMessage: '',\n};\n\ntype DefaultProps = Readonly<typeof defaultProps>;\n\nconst disableSortRemove = true;\nconst disableMultiSort = true;\nconst disabledMultiRemove = true;\n\nconst DEFAULT_PAGE_INDEX = 0;\nconst DEFAULT_PAGE_SIZE = 10;\n\nfunction isFunction(reference?: (arg1?: any, arg2?: any) => void) {\n return typeof reference === 'function';\n}\n\nfunction getHeadContent(column: ColumnWithSort) {\n if (column.isSorted && column.isSortedDesc) {\n return (\n <HeadCell>\n {column.render('Header')}\n <ArrowDownFull\n size={SIZE.SMALL}\n color={COLOR.GRAY_DARK}\n />\n </HeadCell>\n );\n }\n\n if (column.isSorted && !column.isSortedDesc) {\n return (\n <HeadCell>\n {column.render('Header')}\n <ArrowUp\n size={SIZE.SMALL}\n color={COLOR.GRAY_DARK}\n />\n </HeadCell>\n );\n }\n\n return column.render('Header');\n}\n\nconst Table: FunctionComponent<TableProps & DefaultProps> = (props) => {\n const {\n columns,\n data,\n totalItems,\n fetchData,\n controlledPagination,\n initialState,\n isLoading,\n loadingMessage,\n labelPerPage,\n footerPlacement,\n onSortedChange,\n hasDefaultPagination,\n onSelectRowsChange,\n parentElementId,\n tableContentId,\n LoadingCellComponent,\n PaginationComponent,\n getRowPreProps,\n getTableProps,\n getHeaderGroupProps,\n getHeaderProps,\n getRowProps,\n getCellProps,\n getFooterProps,\n getFooterGroupProps,\n showLoadingState,\n noDataMessage,\n } = props;\n\n const memoColumns = useMemo(() => columns, [columns]);\n\n const {loadingColumns, loadingData} = useLoadingState(\n showLoadingState, isLoading, controlledPagination?.pageSize ?? DEFAULT_PAGE_SIZE, memoColumns, LoadingCellComponent,\n );\n\n const showLoading = showLoadingState && isLoading;\n const hasSelectedRowsAbility = onSelectRowsChange && isFunction(onSelectRowsChange);\n const hasManualSortBy = onSortedChange && isFunction(onSortedChange);\n const hasControlledPagination = fetchData && controlledPagination && Object.keys(controlledPagination).length > 0;\n\n const options: TableOptionsProps = {\n columns: showLoading ? (loadingColumns as Column<DefaultObject>[]) : memoColumns,\n data: showLoading ? loadingData : data,\n initialState,\n disableSortRemove,\n disableMultiSort,\n disabledMultiRemove,\n };\n\n if (hasManualSortBy) {\n options.manualSortBy = true;\n }\n\n if (hasControlledPagination) {\n if (typeof controlledPagination?.pageCount === 'undefined') {\n throw new Error('You have to pass pageCount in controlledPagination data');\n }\n\n options.initialState = {\n ...options.initialState,\n pageIndex: controlledPagination.pageIndex ?? DEFAULT_PAGE_INDEX,\n pageSize: controlledPagination.pageSize ?? DEFAULT_PAGE_SIZE,\n };\n\n options.autoResetPage = true;\n options.manualPagination = true;\n options.pageCount = controlledPagination.pageCount;\n }\n\n const useSelect = (hooks: StandardHooks) => {\n if (!hasSelectedRowsAbility) {\n return;\n }\n\n const newColumn = {\n id: 'selection',\n disableSortBy: true,\n Header: (instance: SelectableRowInstanceProps) => {\n const {getToggleAllRowsSelectedProps, toggleAllRowsSelected} = instance;\n\n return (\n <Checkbox\n elementId=\"all\"\n onChange={toggleAllRowsSelected}\n isChecked={getToggleAllRowsSelectedProps().checked}\n />\n );\n },\n Cell: ({row}: { row: SelectableRow }) => {\n const {\n id,\n original,\n toggleRowSelected,\n getToggleRowSelectedProps,\n } = row;\n\n const elementId = Number.isInteger(original.id) ? original.id : id;\n\n return (\n <Checkbox\n elementId={elementId}\n onChange={toggleRowSelected}\n isChecked={getToggleRowSelectedProps().checked}\n />\n );\n },\n };\n\n hooks.visibleColumns.push((tableColumns: Array<StandardColumn>) => ([\n newColumn,\n ...tableColumns,\n ]));\n };\n\n const {\n getTableProps: _getTableProps,\n headerGroups,\n footerGroups,\n setHiddenColumns,\n rows,\n prepareRow,\n visibleColumns,\n ...rest\n } = useTable(\n options,\n useFlexLayout,\n useSortBy,\n usePagination,\n useRowSelect,\n useSelect,\n );\n\n const {\n selectedFlatRows,\n setSortBy,\n page,\n canPreviousPage,\n canNextPage,\n pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: {selectedRowIds, pageIndex, pageSize},\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n } = rest as TableHooksInstanceProps;\n\n const tableRef = useRef(null);\n const tableWrapperRef = useRef(null);\n\n useTableShadow(tableRef, tableWrapperRef);\n\n useEffect(() => {\n if (!initialState?.hiddenColumns) {\n return;\n }\n\n setHiddenColumns(initialState.hiddenColumns);\n }, [initialState?.hiddenColumns]);\n\n useEffect(() => {\n if (hasSelectedRowsAbility) {\n onSelectRowsChange?.(selectedFlatRows?.map((row: StandardRow) => row.original));\n }\n }, [selectedRowIds]);\n\n let pagination: JSX.Element | null = null;\n\n if (hasDefaultPagination && hasControlledPagination) {\n // eslint-disable-next-line max-len\n throw new Error('You have to pass either hasDefaultPagination true boolean prop or pass fetchData callback and controlledPagination data');\n }\n\n if (hasControlledPagination || hasDefaultPagination) {\n const paginationData: PaginationProps = {\n setPageSize,\n gotoPage,\n canNextPage,\n canPreviousPage,\n parentElementId,\n labelPerPage,\n pageIndex,\n previousPageHandler: previousPage,\n nextPageHandler: nextPage,\n totalPages: pageCount,\n perPage: pageSize,\n totalItems: totalItems ?? data.length,\n };\n\n if (hasControlledPagination && controlledPagination) {\n paginationData.canNextPage = controlledPagination.pageIndex + 1 !== paginationData.totalPages;\n paginationData.canPreviousPage = controlledPagination.pageIndex !== 0;\n paginationData.pageIndex = controlledPagination.pageIndex;\n paginationData.perPage = controlledPagination.pageSize;\n\n paginationData.setPageSize = (newPageSize: number) => {\n fetchData?.({\n pageIndex: paginationData.pageIndex,\n pageSize: newPageSize,\n });\n };\n\n paginationData.gotoPage = (newPageIndex: number) => {\n fetchData?.({\n pageIndex: newPageIndex,\n pageSize: paginationData.perPage,\n });\n };\n\n paginationData.nextPageHandler = () => {\n const newPageIndex = paginationData.pageIndex + 1;\n paginationData.gotoPage(newPageIndex);\n };\n\n paginationData.previousPageHandler = () => {\n const newPageIndex = paginationData.pageIndex - 1;\n paginationData.gotoPage(newPageIndex);\n };\n\n if (controlledPagination?.paginationAmount) {\n paginationData.paginationAmount = controlledPagination.paginationAmount;\n }\n }\n\n pagination = (\n <PaginationComponent {...paginationData} />\n );\n }\n\n function extendSortByProps(column: ColumnWithSort) {\n const headerProps = column.getSortByToggleProps && column.getSortByToggleProps();\n\n delete headerProps?.style;\n\n if (hasManualSortBy && !column.canSort && headerProps) {\n headerProps.onClick = () => {\n onSortedChange?.(column.id, Boolean(column.isSortedDesc));\n setSortBy([{\n id: column.id,\n desc: !column.isSortedDesc,\n }]);\n };\n }\n\n return headerProps;\n }\n\n const tBodyTr = (hasControlledPagination || hasDefaultPagination) ? page : rows;\n\n return (\n <TableRoot>\n <TableLoading isLoading={!showLoadingState && isLoading}>\n <TableLoadingInner>\n {loadingMessage}\n </TableLoadingInner>\n </TableLoading>\n <TableWrapper ref={tableWrapperRef}>\n <TableContent id={tableContentId}>\n <TableCore {..._getTableProps(getTableBodyProps(getTableProps))} ref={tableRef}>\n <THead>\n {headerGroups.map((headerGroup) => (\n <TR {...headerGroup.getHeaderGroupProps(getTableElementProps(getHeaderGroupProps))}>\n {headerGroup.headers.map((column) => {\n const headerProps = extendSortByProps(column) as DefaultObject;\n\n return (\n <TH\n {...column.getHeaderProps(getTableElementInternalProps(\n headerProps, getHeaderProps, mainCellGetter,\n ))}\n >\n {getHeadContent(column)}\n </TH>\n );\n })}\n </TR>\n ))}\n </THead>\n {footerPlacement.includes(FOOTER_PLACEMENT.TOP) && (\n <TFoot>\n {footerGroups.map((group) => (\n <TR {...group.getFooterGroupProps(getTableElementProps(getFooterGroupProps))}>\n {group.headers.map((column) => (\n <TD {...column.getFooterProps(getTableElementProps(getFooterProps, mainCellGetter))}>\n {column.render('Footer')}\n </TD>\n ))}\n </TR>\n ))}\n </TFoot>\n )}\n <TBody>\n {tBodyTr.map((row: StandardRow) => {\n prepareRow(row);\n const {isDelimiterTd} = getRowPreProps(row);\n\n if (isDelimiterTd) {\n return (\n <TRGroup key={`group_${row.index}`}>\n <TR {...row.getRowProps(getTableRowProps(getRowProps))}>\n <TD\n colSpan={visibleColumns.length}\n {...row.cells[0].getCellProps(getTableCellProps(getCellProps, cellGetter))}\n >\n <strong>{row.cells[0].render('Cell')}</strong>\n </TD>\n </TR>\n </TRGroup>\n );\n }\n\n return (\n <TRGroup key={`group_${row.index}`}>\n <TR {...row.getRowProps(getTableRowProps(getRowProps))}>\n {row.cells.map((cell: StandardCell) => (\n <TD {...cell.getCellProps(getTableCellProps(getCellProps, cellGetter))}>\n {cell.render('Cell')}\n </TD>\n ))}\n </TR>\n </TRGroup>\n );\n })}\n </TBody>\n {footerPlacement.includes(FOOTER_PLACEMENT.BOTTOM) && (\n <TFoot>\n {footerGroups.map((group) => (\n <TR {...group.getFooterGroupProps(getTableElementProps(getFooterGroupProps))}>\n {group.headers.map((column) => (\n <TD {...column.getFooterProps(getTableElementProps(getFooterProps, mainCellGetter))}>\n {column.render('Footer')}\n </TD>\n ))}\n </TR>\n ))}\n </TFoot>\n )}\n </TableCore>\n </TableContent>\n </TableWrapper>\n {!isLoading && !data.length && noDataMessage}\n {pagination}\n </TableRoot>\n );\n};\n\nTable.defaultProps = defaultProps;\n\nexport {Table};\n","import React, {FunctionComponent, useMemo} from 'react';\nimport {Column} from 'react-table';\nimport {DefaultObject, LoadingState} from './types';\n\nconst useLoadingState = (\n showLoadingState: boolean,\n loading: boolean,\n pageSize: number,\n columns: Column<DefaultObject>[],\n LoadingCellComponent: FunctionComponent<DefaultObject>,\n): LoadingState => {\n const loadingColumns: Column<DefaultObject>[] | undefined = useMemo(() => (showLoadingState && loading ? columns\n .map(({maxWidth, width, Header}: Column, key: number) => {\n const column: Column<DefaultObject> = {\n Cell: () => <LoadingCellComponent />,\n accessor: `empty_${key}`,\n };\n if (maxWidth) {\n column.maxWidth = maxWidth;\n }\n if (width) {\n column.width = width;\n }\n if (Header) {\n column.Header = Header;\n }\n\n return column;\n }) : []), [columns, loading, showLoadingState]);\n\n const loadingData = useMemo(() => {\n if (showLoadingState && loading && columns && columns.length > 0) {\n const dataObject: DefaultObject = {};\n const dataArray: DefaultObject[] = [];\n\n for (let i = 0; i < columns.length; i += 1) {\n dataObject[`empty_${i}`] = '';\n }\n for (let i = 0; i < pageSize; i += 1) {\n dataArray.push(dataObject);\n }\n\n return dataArray;\n }\n\n return [];\n }, [columns, loading, pageSize, showLoadingState]);\n\n return {\n loadingColumns,\n loadingData,\n };\n};\n\nexport default useLoadingState;\n"],"names":["FOOTER_PLACEMENT","calculateNewClassNames","tableNode","tableWrapperNode","tableRect","getBoundingClientRect","tableWrapperRect","newClassName","tableRectLeft","Math","floor","left","tableRectRight","right","tableWrapperRectLeft","tableWrapperRectRight","push","newClassNameList","classList","remove","add","changeClassName","defaultGetter","props","cellGetter","cell","align","column","_cell$column","mainCellGetter","getTableElementProps","userGetter","getter","meta","getTableCellProps","loadingAnimation","keyframes","TableLoading","styled","div","isLoading","css","TableLoadingInner","TableWrapper","TableRoot","fontNormal","TableContent","TableCore","HeadCell","TD","EmptyStateCell","spacing","gray95","white","TH","THead","black","TRGroup","TR","TBody","gray80","TFoot","defaultProps","hasDefaultPagination","footerPlacement","loadingMessage","labelPerPage","parentElementId","tableContentId","showLoadingState","LoadingCellComponent","getRowPreProps","noDataMessage","isFunction","reference","Table","columns","data","totalItems","fetchData","controlledPagination","initialState","onSortedChange","onSelectRowsChange","PaginationComponent","getTableProps","getHeaderGroupProps","getHeaderProps","getRowProps","getCellProps","getFooterProps","getFooterGroupProps","memoColumns","useMemo","loading","pageSize","loadingColumns","map","key","maxWidth","width","Header","Cell","React","accessor","loadingData","length","dataObject","dataArray","i","useLoadingState","showLoading","hasSelectedRowsAbility","hasManualSortBy","hasControlledPagination","Object","keys","options","disableSortRemove","disableMultiSort","disabledMultiRemove","manualSortBy","pageCount","Error","pageIndex","autoResetPage","manualPagination","useTable","useFlexLayout","useSortBy","usePagination","useRowSelect","hooks","newColumn","id","disableSortBy","instance","Checkbox","elementId","onChange","toggleAllRowsSelected","isChecked","getToggleAllRowsSelectedProps","checked","row","original","toggleRowSelected","getToggleRowSelectedProps","Number","isInteger","visibleColumns","tableColumns","_getTableProps","headerGroups","footerGroups","setHiddenColumns","rows","prepareRow","rest","selectedFlatRows","setSortBy","page","canPreviousPage","canNextPage","gotoPage","nextPage","previousPage","setPageSize","state","selectedRowIds","tableRef","useRef","tableWrapperRef","useEffect","ticking","onMousewheel","window","requestAnimationFrame","current","addEventListener","removeEventListener","useTableShadow","hiddenColumns","pagination","paginationData","previousPageHandler","nextPageHandler","totalPages","perPage","newPageSize","newPageIndex","paginationAmount","tBodyTr","ref","headerGroup","headers","headerProps","getSortByToggleProps","style","canSort","onClick","Boolean","isSortedDesc","desc","extendSortByProps","internalProps","getTableElementInternalProps","isSorted","render","ArrowDownFull","size","SIZE","SMALL","color","COLOR","GRAY_DARK","ArrowUp","getHeadContent","includes","TOP","group","index","getTableRowProps","isDelimiterTd","colSpan","cells","BOTTOM"],"mappings":"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"}
1
+ {"version":3,"file":"table.cjs.production.min.js","sources":["../src/types.tsx","../src/useTableShadow.tsx","../src/propsGetter.tsx","../src/style.tsx","../src/index.tsx","../src/useLoadingState.tsx"],"sourcesContent":["import React, {FunctionComponent, ReactElement, ReactNode} from 'react';\nimport {\n Cell,\n CellPropGetter,\n Column,\n FooterGroupPropGetter,\n FooterPropGetter,\n HeaderGroup,\n HeaderGroupPropGetter,\n Hooks,\n Meta,\n Row,\n RowPropGetter,\n TableBodyPropGetter,\n TablePropGetter, TableState,\n UsePaginationInstanceProps, UsePaginationOptions,\n UsePaginationState,\n UseRowSelectInstanceProps,\n UseRowSelectState, UseSortByColumnProps, UseRowSelectRowProps,\n UseSortByInstanceProps, UseSortByOptions,\n UseTableOptions, HeaderPropGetter,\n} from 'react-table';\n\nexport type DefaultObject = Record<string, string | number | unknown>;\n\nexport type LoadingState = {\n loadingColumns?: Column[],\n loadingData: any[],\n}\n\nexport enum FOOTER_PLACEMENT {\n TOP = 'top',\n BOTTOM = 'bottom'\n}\n\nexport type PaginationProps = {\n paginationAmount?: string | ReactNode | ReactElement,\n parentElementId: string,\n labelPerPage?: string,\n pageSizes?: Array<string | number>,\n pageIndex: number,\n perPage: number,\n totalPages: number,\n totalItems: number,\n canNextPage: boolean,\n canPreviousPage: boolean,\n nextPageHandler: () => void,\n previousPageHandler: () => void,\n setPageSize: (size: number) => void,\n gotoPage: (page: number) => void,\n}\n\nexport type ControlledPagination = {\n paginationAmount?: string | ReactNode | ReactElement,\n pageSize: number,\n pageIndex: number,\n pageCount: number,\n}\n\nexport type TableProps = {\n columns: Array<Column<DefaultObject>>,\n data: [],\n totalItems?: number,\n PaginationComponent: React.FunctionComponent<PaginationProps>,\n initialState: Partial<TableState<DefaultObject>>,\n fetchData?: (params: { pageIndex: number, pageSize: number }) => void,\n onSortedChange?: (id: string, isDesc: boolean) => void,\n isLoading?: boolean,\n footerPlacement?: Array<FOOTER_PLACEMENT>,\n hasDefaultPagination?: boolean,\n onSelectRowsChange?: (rows: Array<DefaultObject>) => void,\n controlledPagination?: ControlledPagination,\n loadingMessage?: string,\n labelPerPage?: string,\n parentElementId?: string,\n tableContentId?: string,\n getRowPreProps?: (row: Row) => DefaultObject,\n getTableProps?: TableGetter,\n getHeaderGroupProps?: ElementGetter,\n getHeaderProps?: ElementGetter,\n getRowProps?: ElementGetter,\n getCellProps?: ElementGetter,\n getFooterProps?: ElementGetter,\n getFooterGroupProps?: ElementGetter,\n showLoadingState?: boolean,\n LoadingCellComponent?: FunctionComponent<DefaultObject>,\n noDataMessage?: string | ReactElement\n rowSubComponent?: (row: StandardRow) => ReactElement\n}\n\nexport type TableOptions = {\n columns: Array<Column<DefaultObject>>,\n data: Array<DefaultObject>,\n initialState: {\n pageIndex?: number,\n pageSize?: number,\n },\n disableSortRemove: boolean,\n disableMultiSort: boolean,\n disableMultiRemove: boolean,\n manualSortBy?: boolean,\n autoResetPage?: boolean,\n manualPagination?: boolean,\n pageCount?: number,\n}\n\nexport type MetaProps = {\n column?: HeaderGroup<DefaultObject>,\n cell?: Cell,\n}\n\nexport type BaseMeta = Meta<DefaultObject, MetaProps>\n\nexport type TableGetter = (props: DefaultObject) => DefaultObject;\n\nexport type ElementGetter = (props: DefaultObject, meta: BaseMeta) => DefaultObject;\n\nexport type ElementCellPropGetter = CellPropGetter<DefaultObject>\n\nexport type ElementRowPropGetter = RowPropGetter<DefaultObject>\n\nexport type ElementHeaderFooterPropGetter = FooterGroupPropGetter<DefaultObject> |\n HeaderGroupPropGetter<DefaultObject> |\n FooterPropGetter<DefaultObject>\n\nexport type GetTableContainerPropsGetter = (userGetter?: TableGetter, getter?: TableGetter) =>\n TablePropGetter<DefaultObject> | TableBodyPropGetter<DefaultObject>\n\nexport type GetTableElementPropsGetter<T> = (userGetter?: ElementGetter, getter?: ElementGetter) => T\n\nexport type GetTableElementInternalPropsGetter =\n (internalProps: DefaultObject, userGetter?: ElementGetter, getter?: ElementGetter) =>\n HeaderPropGetter<DefaultObject>\n\nexport type ColumnWithSort = HeaderGroup<DefaultObject> & Partial<UseSortByColumnProps<DefaultObject>>\n\nexport type StandardColumn = Column<DefaultObject>\n\nexport type StandardRow = Row<DefaultObject> & { isExpanded?: boolean }\n\nexport type SelectableRow = Row<{ id: string }> & UseRowSelectRowProps<DefaultObject>\n\nexport type StandardCell = Cell<DefaultObject>\n\nexport type SelectableRowInstanceProps = UseRowSelectInstanceProps<DefaultObject>\n\nexport type StandardHooks = Hooks<DefaultObject>\n\nexport type TableHooksInstanceProps =\n UseSortByInstanceProps<DefaultObject> &\n UsePaginationInstanceProps<DefaultObject> &\n UseRowSelectInstanceProps<DefaultObject> &\n { state: UseRowSelectState<DefaultObject> & UsePaginationState<DefaultObject>};\n\nexport type TableOptionsProps =\n UseTableOptions<DefaultObject> & UseSortByOptions<DefaultObject> & UsePaginationOptions<DefaultObject> &\n { initialState: Partial<TableState<DefaultObject>> & Partial<UsePaginationState<DefaultObject>> }\n\nexport class Table extends React.Component<Partial<TableProps>> {}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport {useEffect} from 'react';\n\nconst TABLE_SHADOW_CLASS_NAME = {\n LEFT: 'shadow_left',\n RIGHT: 'shadow_right',\n};\n\nfunction changeClassName(tableWrapperNode: Element, newClassNameList: string[]) {\n const {classList} = tableWrapperNode;\n\n classList.remove(TABLE_SHADOW_CLASS_NAME.LEFT, TABLE_SHADOW_CLASS_NAME.RIGHT);\n classList.add(...newClassNameList);\n}\n\nfunction calculateNewClassNames(tableNode, tableWrapperNode) {\n if (!tableNode || !tableWrapperNode) {\n return;\n }\n\n const tableRect = tableNode.getBoundingClientRect();\n const tableWrapperRect = tableWrapperNode.getBoundingClientRect();\n const newClassName = [];\n\n const tableRectLeft = Math.floor(tableRect.left);\n const tableRectRight = Math.floor(tableRect.right);\n const tableWrapperRectLeft = Math.floor(tableWrapperRect.left);\n const tableWrapperRectRight = Math.floor(tableWrapperRect.right);\n\n if (tableRectLeft < tableWrapperRectLeft) {\n newClassName.push(TABLE_SHADOW_CLASS_NAME.LEFT);\n }\n\n if (tableRectRight > tableWrapperRectRight) {\n newClassName.push(TABLE_SHADOW_CLASS_NAME.RIGHT);\n }\n\n changeClassName(tableWrapperNode, newClassName);\n}\n\nexport default (tableRef, tableWrapperRef) => {\n useEffect(() => {\n let ticking = false;\n\n function onMousewheel() {\n if (ticking) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n calculateNewClassNames(tableRef.current, tableWrapperRef.current);\n ticking = false;\n });\n\n ticking = true;\n }\n\n calculateNewClassNames(tableRef.current, tableWrapperRef.current);\n\n tableRef?.current?.addEventListener('mousewheel', onMousewheel);\n window.addEventListener('resize', onMousewheel);\n\n return () => {\n tableRef?.current?.removeEventListener('mousewheel', onMousewheel);\n window.removeEventListener('resize', onMousewheel);\n };\n }, [tableRef.current, tableWrapperRef.current]);\n};\n","import {\n ElementGetter,\n BaseMeta,\n TableGetter,\n ElementCellPropGetter,\n ElementRowPropGetter,\n DefaultObject,\n ElementHeaderFooterPropGetter,\n GetTableElementPropsGetter,\n GetTableContainerPropsGetter,\n GetTableElementInternalPropsGetter,\n} from './types';\n\nexport const defaultGetter: ElementGetter = (props) => props;\n\nexport const cellGetter: ElementGetter = (props, {cell}) => ({\n ...props,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n align: cell?.column?.align,\n});\nexport const mainCellGetter: ElementGetter = (props, {column}) => ({\n ...props,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n align: column?.align,\n});\n\nexport const getTableProps: GetTableContainerPropsGetter = (userGetter, getter = defaultGetter as TableGetter) => {\n if (userGetter) {\n return (props) => ({\n ...getter(props),\n ...userGetter(props),\n });\n }\n\n return getter;\n};\n\nexport const getTableElementProps:\n GetTableElementPropsGetter<ElementHeaderFooterPropGetter> = (userGetter, getter = defaultGetter) => {\n if (userGetter) {\n return (props, meta) => ({\n ...getter(props, meta),\n ...userGetter(props, meta),\n });\n }\n\n return getter;\n };\n\nexport const getTableRowProps:\n GetTableElementPropsGetter<ElementRowPropGetter> = (userGetter, getter = defaultGetter) => {\n if (userGetter) {\n return (props, meta) => ({\n ...getter(props, meta),\n ...userGetter(props, meta),\n });\n }\n\n return getter;\n };\n\nexport const getTableCellProps:\n GetTableElementPropsGetter<ElementCellPropGetter> = (userGetter, getter = defaultGetter) => {\n if (userGetter) {\n return (props, meta) => ({\n ...getter(props, meta),\n ...userGetter(props, meta),\n });\n }\n\n return getter;\n };\n\nexport const getTableElementInternalProps:\n GetTableElementInternalPropsGetter = (internalProps, userGetter, getter = defaultGetter) => {\n if (userGetter) {\n return (props, meta) => ({\n ...getter({...props, ...internalProps}, meta),\n ...userGetter(props, meta),\n });\n }\n\n return (props: DefaultObject, meta: BaseMeta) => getter({...props, ...internalProps}, meta);\n };\n","/* eslint max-len: off */\nimport styled, {\n keyframes, css, CSSObject,\n} from 'styled-components';\nimport {\n fontNormal,\n white,\n black,\n spacing,\n gray80,\n gray95,\n} from '@propellerads/stylevariables';\n\nconst loadingAnimation = keyframes`\n from {\n background-position-x: 0;\n }\n 50% {\n background-position-x: 100%;\n }\n 100% {\n background-position-x: 0;\n }\n`;\n\nexport const TableLoading = styled.div`\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n transition: all 0.3s ease;\n z-index: -1;\n opacity: 0;\n pointer-events: none;\n \n ${(props: { isLoading: boolean }) => props.isLoading && css`\n opacity: 1;\n z-index: 2;\n pointer-events: all;\n `}\n`;\n\nexport const TableLoadingInner = styled.div`\n position: absolute;\n display: block;\n text-align: center;\n width: 100%;\n top: 50%;\n left: 0;\n color: rgba(0, 0, 0, 0.6);\n transform: translateY(-52%);\n transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n`;\n\nexport const TableWrapper = styled.div`\n position: relative;\n overflow: hidden;\n \n &::before {\n bottom: 10px;\n content: '';\n opacity: 0;\n pointer-events: none;\n position: absolute;\n width: 10px;\n height: 100%;\n top: 0;\n left: -10px;\n box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);\n transition: 0.3s opacity;\n }\n\n &::after {\n bottom: 10px;\n content: '';\n opacity: 0;\n pointer-events: none;\n width: 10px;\n height: 100%;\n position: absolute;\n top: 0;\n right: -10px;\n box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);\n transition: 0.3s opacity;\n }\n \n &.shadow_left {\n &::before {\n opacity: 1 !important;\n }\n }\n \n &.shadow_right {\n &::after {\n opacity: 1 !important;\n }\n }\n`;\n\nexport const TableRoot = styled.div`\n font-size: ${fontNormal}px;\n position: relative;\n display: flex;\n flex-direction: column;\n border: 0;\n`;\n\nexport const TableContent = styled.div`\n display: block;\n max-width: 100%;\n overflow-x: scroll;\n overflow-y: hidden;\n`;\n\nexport const TableCore = styled.div`\n flex: auto 1;\n display: flex;\n flex-direction: column;\n align-items: stretch; \n border-collapse: collapse;\n`;\n\nexport const HeadCell = styled.div`\n display: inline-flex;\n`;\n\nexport const TD = styled.div`\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 1.3rem;\n padding: 7px 4px;\n overflow: hidden;\n transition: width 0.3s ease 0s, min-width, padding, opacity;\n \n ${({align}: { align?: CSSObject, colSpan?: number }) => align && css`\n text-align: ${align}`\n}\n`;\n\nexport const EmptyStateCell = styled.div`\n width: 100%;\n height: ${spacing * 4}px;\n background: linear-gradient(to left, ${gray95}, ${white}, ${gray95});\n background-size: 200% 200%;\n animation: ${loadingAnimation} 1.6s linear infinite;\n`;\n\nexport const TH = styled.div`\n padding: 0 4px;\n line-height: normal;\n position: relative;\n transition: box-shadow 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;\n color: rgb(0, 0, 0);\n font-weight: 500;\n outline: none;\n`;\n\nexport const THead = styled.div`\n flex: 1 0 auto;\n display: flex;\n flex-direction: column;\n user-select: none;\n \n ${TH}, ${TD} {\n padding: 0 4px;\n line-height: normal;\n position: relative;\n transition: box-shadow 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n color: ${black};\n font-weight: 500;\n outline: none;\n }\n`;\n\nexport const TRGroup = styled.div`\n display: flex;\n flex: 1 0 auto;\n box-shadow: inset 0 -1px 0 0 ${gray95};\n min-width: 100%;\n width: max-content;\n`;\n\nexport const TR = styled.div`\n padding: 0;\n -webkit-box-align: center;\n align-items: center;\n`;\n\nexport const TBody = styled.div`\n border-top: 1px solid ${gray80};\n margin-top: ${spacing * 2}px;\n min-width: 100%;\n width: max-content;\n`;\n\nexport const TFoot = styled.div`\n background: ${gray95};\n flex: 1 0 auto;\n display: flex;\n flex-direction: column;\n`;\n","import React, {\n FunctionComponent, useEffect, useMemo, useRef,\n} from 'react';\nimport {\n useSortBy,\n useTable,\n useRowSelect,\n usePagination,\n useExpanded,\n useFlexLayout,\n Column,\n} from 'react-table';\n\nimport {\n ArrowDown, ArrowUp, COLOR, SIZE,\n} from '@propellerads/icon';\nimport Checkbox from '@propellerads/input-checkbox';\n\nimport useLoadingState from './useLoadingState';\nimport useTableShadow from './useTableShadow';\n\nimport {\n FOOTER_PLACEMENT,\n TableProps,\n PaginationProps,\n StandardHooks,\n StandardColumn,\n StandardRow,\n StandardCell,\n ColumnWithSort,\n TableHooksInstanceProps,\n SelectableRowInstanceProps,\n TableOptionsProps,\n SelectableRow,\n DefaultObject,\n} from './types';\n\nimport {\n getTableProps as getTableBodyProps,\n getTableElementProps,\n getTableElementInternalProps,\n cellGetter,\n mainCellGetter,\n getTableCellProps,\n getTableRowProps,\n} from './propsGetter';\n\nimport {\n TableRoot,\n TableWrapper,\n TableContent,\n HeadCell,\n TableLoading,\n TableLoadingInner,\n TD,\n TableCore,\n THead,\n TR,\n TH,\n TBody,\n TRGroup,\n TFoot,\n EmptyStateCell,\n} from './style';\n\nexport const defaultProps = {\n hasDefaultPagination: false,\n isLoading: false,\n footerPlacement: [],\n loadingMessage: 'loading...',\n labelPerPage: 'Show rows',\n parentElementId: 'parent-element',\n tableContentId: '',\n showLoadingState: false,\n LoadingCellComponent: EmptyStateCell,\n getRowPreProps: () => ({}),\n noDataMessage: '',\n};\n\ntype DefaultProps = Readonly<typeof defaultProps>;\n\nconst disableSortRemove = true;\nconst disableMultiSort = true;\nconst disabledMultiRemove = true;\n\nconst DEFAULT_PAGE_INDEX = 0;\nconst DEFAULT_PAGE_SIZE = 10;\n\nfunction isFunction(reference?: (arg1?: any, arg2?: any) => void) {\n return typeof reference === 'function';\n}\n\nfunction getHeadContent(column: ColumnWithSort) {\n if (column.isSorted && column.isSortedDesc) {\n return (\n <HeadCell>\n {column.render('Header')}\n <ArrowDown size={SIZE.SMALL} color={COLOR.GRAY_DARK} />\n </HeadCell>\n );\n }\n\n if (column.isSorted && !column.isSortedDesc) {\n return (\n <HeadCell>\n {column.render('Header')}\n <ArrowUp size={SIZE.SMALL} color={COLOR.GRAY_DARK} />\n </HeadCell>\n );\n }\n\n return column.render('Header');\n}\n\nconst Table: FunctionComponent<TableProps & DefaultProps> = (props) => {\n const {\n columns,\n data,\n totalItems,\n fetchData,\n controlledPagination,\n initialState,\n isLoading,\n loadingMessage,\n labelPerPage,\n footerPlacement,\n onSortedChange,\n hasDefaultPagination,\n onSelectRowsChange,\n parentElementId,\n tableContentId,\n LoadingCellComponent,\n PaginationComponent,\n getRowPreProps,\n getTableProps,\n getHeaderGroupProps,\n getHeaderProps,\n getRowProps,\n getCellProps,\n getFooterProps,\n getFooterGroupProps,\n showLoadingState,\n noDataMessage,\n rowSubComponent,\n } = props;\n\n const memoColumns = useMemo(() => columns, [columns]);\n\n const {loadingColumns, loadingData} = useLoadingState(\n showLoadingState,\n isLoading,\n controlledPagination?.pageSize ?? DEFAULT_PAGE_SIZE,\n memoColumns,\n LoadingCellComponent,\n );\n\n const showLoading = showLoadingState && isLoading;\n const hasSelectedRowsAbility = onSelectRowsChange && isFunction(onSelectRowsChange);\n const hasManualSortBy = onSortedChange && isFunction(onSortedChange);\n const hasControlledPagination = fetchData\n && controlledPagination\n && Object.keys(controlledPagination).length > 0;\n\n const options: TableOptionsProps = {\n columns: showLoading\n ? (loadingColumns as Column<DefaultObject>[])\n : memoColumns,\n data: showLoading ? loadingData : data,\n initialState,\n disableSortRemove,\n disableMultiSort,\n disabledMultiRemove,\n };\n\n if (hasManualSortBy) {\n options.manualSortBy = true;\n }\n\n if (hasControlledPagination) {\n if (typeof controlledPagination?.pageCount === 'undefined') {\n throw new Error(\n 'You have to pass pageCount in controlledPagination data',\n );\n }\n\n options.initialState = {\n ...options.initialState,\n pageIndex: controlledPagination.pageIndex ?? DEFAULT_PAGE_INDEX,\n pageSize: controlledPagination.pageSize ?? DEFAULT_PAGE_SIZE,\n };\n\n options.autoResetPage = true;\n options.manualPagination = true;\n options.pageCount = controlledPagination.pageCount;\n }\n\n const useSelect = (hooks: StandardHooks) => {\n if (!hasSelectedRowsAbility) {\n return;\n }\n\n const newColumn = {\n id: 'selection',\n disableSortBy: true,\n Header: (instance: SelectableRowInstanceProps) => {\n const {\n getToggleAllRowsSelectedProps,\n toggleAllRowsSelected,\n } = instance;\n\n return (\n <Checkbox\n elementId=\"all\"\n onChange={toggleAllRowsSelected}\n isChecked={getToggleAllRowsSelectedProps().checked}\n />\n );\n },\n Cell: ({row}: { row: SelectableRow }) => {\n const {\n id,\n original,\n toggleRowSelected,\n getToggleRowSelectedProps,\n } = row;\n\n const elementId = Number.isInteger(original.id) ? original.id : id;\n\n return (\n <Checkbox\n elementId={elementId}\n onChange={toggleRowSelected}\n isChecked={getToggleRowSelectedProps().checked}\n />\n );\n },\n };\n\n hooks.visibleColumns.push((tableColumns: Array<StandardColumn>) => [\n newColumn,\n ...tableColumns,\n ]);\n };\n\n const {\n getTableProps: _getTableProps,\n headerGroups,\n footerGroups,\n setHiddenColumns,\n rows,\n prepareRow,\n visibleColumns,\n ...rest\n } = useTable(\n options,\n useFlexLayout,\n useSortBy,\n useExpanded,\n usePagination,\n useRowSelect,\n useSelect,\n );\n\n const {\n selectedFlatRows,\n setSortBy,\n page,\n canPreviousPage,\n canNextPage,\n pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: {selectedRowIds, pageIndex, pageSize},\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n } = rest as TableHooksInstanceProps;\n\n const tableRef = useRef(null);\n const tableWrapperRef = useRef(null);\n\n useTableShadow(tableRef, tableWrapperRef);\n\n useEffect(() => {\n if (!initialState?.hiddenColumns) {\n return;\n }\n\n setHiddenColumns(initialState.hiddenColumns);\n }, [initialState?.hiddenColumns]);\n\n useEffect(() => {\n if (hasSelectedRowsAbility) {\n onSelectRowsChange?.(\n selectedFlatRows?.map((row: StandardRow) => row.original),\n );\n }\n }, [selectedRowIds]);\n\n let pagination: JSX.Element | null = null;\n\n if (hasDefaultPagination && hasControlledPagination) {\n throw new Error(\n 'You have to pass either hasDefaultPagination true boolean prop or '\n + 'pass fetchData callback and controlledPagination data',\n );\n }\n\n if (hasControlledPagination || hasDefaultPagination) {\n const paginationData: PaginationProps = {\n setPageSize,\n gotoPage,\n canNextPage,\n canPreviousPage,\n parentElementId,\n labelPerPage,\n pageIndex,\n previousPageHandler: previousPage,\n nextPageHandler: nextPage,\n totalPages: pageCount,\n perPage: pageSize,\n totalItems: totalItems ?? data.length,\n };\n\n if (hasControlledPagination && controlledPagination) {\n paginationData.canNextPage = controlledPagination.pageIndex + 1 !== paginationData.totalPages;\n paginationData.canPreviousPage = controlledPagination.pageIndex !== 0;\n paginationData.pageIndex = controlledPagination.pageIndex;\n paginationData.perPage = controlledPagination.pageSize;\n\n paginationData.setPageSize = (newPageSize: number) => {\n fetchData?.({\n pageIndex: paginationData.pageIndex,\n pageSize: newPageSize,\n });\n };\n\n paginationData.gotoPage = (newPageIndex: number) => {\n fetchData?.({\n pageIndex: newPageIndex,\n pageSize: paginationData.perPage,\n });\n };\n\n paginationData.nextPageHandler = () => {\n const newPageIndex = paginationData.pageIndex + 1;\n paginationData.gotoPage(newPageIndex);\n };\n\n paginationData.previousPageHandler = () => {\n const newPageIndex = paginationData.pageIndex - 1;\n paginationData.gotoPage(newPageIndex);\n };\n\n if (controlledPagination?.paginationAmount) {\n paginationData.paginationAmount = controlledPagination.paginationAmount;\n }\n }\n\n pagination = <PaginationComponent {...paginationData} />;\n }\n\n function extendSortByProps(column: ColumnWithSort) {\n const headerProps = column.getSortByToggleProps && column.getSortByToggleProps();\n\n delete headerProps?.style;\n\n if (hasManualSortBy && column.canSort && headerProps) {\n headerProps.onClick = () => {\n onSortedChange?.(column.id, Boolean(column.isSortedDesc));\n setSortBy([\n {\n id: column.id,\n desc: !column.isSortedDesc,\n },\n ]);\n };\n }\n\n return headerProps;\n }\n\n const tBodyTr = hasControlledPagination || hasDefaultPagination ? page : rows;\n\n return (\n <TableRoot className=\"table-root\">\n <TableLoading\n isLoading={!showLoadingState && isLoading}\n className=\"table-loading\"\n >\n <TableLoadingInner>{loadingMessage}</TableLoadingInner>\n </TableLoading>\n <TableWrapper ref={tableWrapperRef} className=\"table-wrapper\">\n <TableContent id={tableContentId} className=\"table-content\">\n <TableCore\n {..._getTableProps(getTableBodyProps(getTableProps))}\n ref={tableRef}\n >\n <THead className=\"table-head\">\n {headerGroups.map((headerGroup) => (\n <TR\n {...headerGroup.getHeaderGroupProps(\n getTableElementProps(getHeaderGroupProps),\n )}\n >\n {headerGroup.headers.map((column) => {\n const headerProps = extendSortByProps(\n column,\n ) as DefaultObject;\n\n return (\n <TH\n {...column.getHeaderProps(\n getTableElementInternalProps(\n headerProps,\n getHeaderProps,\n mainCellGetter,\n ),\n )}\n >\n {getHeadContent(column)}\n </TH>\n );\n })}\n </TR>\n ))}\n </THead>\n {footerPlacement.includes(FOOTER_PLACEMENT.TOP) && (\n <TFoot className=\"table-footer-top\">\n {footerGroups.map((group) => (\n <TR\n {...group.getFooterGroupProps(\n getTableElementProps(getFooterGroupProps),\n )}\n >\n {group.headers.map((column) => (\n <TD\n {...column.getFooterProps(\n getTableElementProps(getFooterProps, mainCellGetter),\n )}\n >\n {column.render('Footer')}\n </TD>\n ))}\n </TR>\n ))}\n </TFoot>\n )}\n <TBody className=\"table-body\">\n {tBodyTr.map((row: StandardRow) => {\n prepareRow(row);\n const {isDelimiterTd} = getRowPreProps(row);\n\n if (isDelimiterTd) {\n return (\n <>\n <TRGroup key={`group_${row.index}`}>\n <TR {...row.getRowProps(getTableRowProps(getRowProps))}>\n <TD\n colSpan={visibleColumns.length}\n {...row.cells[0].getCellProps(\n getTableCellProps(getCellProps, cellGetter),\n )}\n >\n <strong>{row.cells[0].render('Cell')}</strong>\n </TD>\n </TR>\n </TRGroup>\n {row?.isExpanded && rowSubComponent && rowSubComponent(row)}\n </>\n );\n }\n\n return (\n <>\n <TRGroup key={`group_${row.index}`}>\n <TR {...row.getRowProps(getTableRowProps(getRowProps))}>\n {row.cells.map((cell: StandardCell) => (\n <TD\n {...cell.getCellProps(\n getTableCellProps(getCellProps, cellGetter),\n )}\n >\n {cell.render('Cell')}\n </TD>\n ))}\n </TR>\n </TRGroup>\n {row?.isExpanded && rowSubComponent && rowSubComponent(row)}\n </>\n );\n })}\n </TBody>\n {footerPlacement.includes(FOOTER_PLACEMENT.BOTTOM) && (\n <TFoot className=\"table-footer-bottom\">\n {footerGroups.map((group) => (\n <TR\n {...group.getFooterGroupProps(\n getTableElementProps(getFooterGroupProps),\n )}\n >\n {group.headers.map((column) => (\n <TD\n {...column.getFooterProps(\n getTableElementProps(getFooterProps, mainCellGetter),\n )}\n >\n {column.render('Footer')}\n </TD>\n ))}\n </TR>\n ))}\n </TFoot>\n )}\n </TableCore>\n </TableContent>\n </TableWrapper>\n {!isLoading && !data.length && noDataMessage}\n {pagination}\n </TableRoot>\n );\n};\n\nTable.defaultProps = defaultProps;\n\nexport {Table};\n","import React, {FunctionComponent, useMemo} from 'react';\nimport {Column} from 'react-table';\nimport {DefaultObject, LoadingState} from './types';\n\nconst useLoadingState = (\n showLoadingState: boolean,\n loading: boolean,\n pageSize: number,\n columns: Column<DefaultObject>[],\n LoadingCellComponent: FunctionComponent<DefaultObject>,\n): LoadingState => {\n const loadingColumns: Column<DefaultObject>[] | undefined = useMemo(() => (showLoadingState && loading ? columns\n .map(({\n maxWidth, width, Header, accessor,\n }: Column) => {\n const column: Column<DefaultObject> = {\n Cell: () => <LoadingCellComponent />,\n accessor: accessor as string,\n };\n if (maxWidth) {\n column.maxWidth = maxWidth;\n }\n if (width) {\n column.width = width;\n }\n if (Header) {\n column.Header = Header;\n }\n\n return column;\n }) : []), [columns, loading, showLoadingState]);\n\n const loadingData = useMemo(() => {\n if (showLoadingState && loading && columns && columns.length > 0) {\n const dataObject: DefaultObject = {};\n const dataArray: DefaultObject[] = [];\n\n for (let i = 0; i < columns.length; i += 1) {\n dataObject[`empty_${i}`] = '';\n }\n for (let i = 0; i < pageSize; i += 1) {\n dataArray.push(dataObject);\n }\n\n return dataArray;\n }\n\n return [];\n }, [columns, loading, pageSize, showLoadingState]);\n\n return {\n loadingColumns,\n loadingData,\n };\n};\n\nexport default useLoadingState;\n"],"names":["FOOTER_PLACEMENT","calculateNewClassNames","tableNode","tableWrapperNode","tableRect","getBoundingClientRect","tableWrapperRect","newClassName","tableRectLeft","Math","floor","left","tableRectRight","right","tableWrapperRectLeft","tableWrapperRectRight","push","newClassNameList","classList","remove","add","changeClassName","defaultGetter","props","cellGetter","cell","align","column","_cell$column","mainCellGetter","getTableElementProps","userGetter","getter","meta","getTableCellProps","loadingAnimation","keyframes","TableLoading","styled","div","isLoading","css","TableLoadingInner","TableWrapper","TableRoot","fontNormal","TableContent","TableCore","HeadCell","TD","EmptyStateCell","spacing","gray95","white","TH","THead","black","TRGroup","TR","TBody","gray80","TFoot","defaultProps","hasDefaultPagination","footerPlacement","loadingMessage","labelPerPage","parentElementId","tableContentId","showLoadingState","LoadingCellComponent","getRowPreProps","noDataMessage","isFunction","reference","Table","columns","data","totalItems","fetchData","controlledPagination","initialState","onSortedChange","onSelectRowsChange","PaginationComponent","getTableProps","getHeaderGroupProps","getHeaderProps","getRowProps","getCellProps","getFooterProps","getFooterGroupProps","rowSubComponent","memoColumns","useMemo","loading","pageSize","loadingColumns","map","maxWidth","width","Header","Cell","React","accessor","loadingData","length","dataObject","dataArray","i","useLoadingState","showLoading","hasSelectedRowsAbility","hasManualSortBy","hasControlledPagination","Object","keys","options","disableSortRemove","disableMultiSort","disabledMultiRemove","manualSortBy","pageCount","Error","pageIndex","autoResetPage","manualPagination","useTable","useFlexLayout","useSortBy","useExpanded","usePagination","useRowSelect","hooks","newColumn","id","disableSortBy","instance","Checkbox","elementId","onChange","toggleAllRowsSelected","isChecked","getToggleAllRowsSelectedProps","checked","row","original","toggleRowSelected","getToggleRowSelectedProps","Number","isInteger","visibleColumns","tableColumns","_getTableProps","headerGroups","footerGroups","setHiddenColumns","rows","prepareRow","rest","selectedFlatRows","setSortBy","page","canPreviousPage","canNextPage","gotoPage","nextPage","previousPage","setPageSize","state","selectedRowIds","tableRef","useRef","tableWrapperRef","useEffect","ticking","onMousewheel","window","requestAnimationFrame","current","addEventListener","removeEventListener","useTableShadow","hiddenColumns","pagination","paginationData","previousPageHandler","nextPageHandler","totalPages","perPage","newPageSize","newPageIndex","paginationAmount","tBodyTr","className","ref","headerGroup","headers","headerProps","getSortByToggleProps","style","canSort","onClick","Boolean","isSortedDesc","desc","extendSortByProps","internalProps","getTableElementInternalProps","isSorted","render","ArrowDown","size","SIZE","SMALL","color","COLOR","GRAY_DARK","ArrowUp","getHeadContent","includes","TOP","group","key","index","getTableRowProps","isDelimiterTd","colSpan","cells","isExpanded","BOTTOM"],"mappings":"8IA8BYA,odCdZ,SAASC,EAAuBC,EAAWC,MACpCD,GAAcC,OAIbC,EAAYF,EAAUG,wBACtBC,EAAmBH,EAAiBE,wBACpCE,EAAe,GAEfC,EAAgBC,KAAKC,MAAMN,EAAUO,MACrCC,EAAiBH,KAAKC,MAAMN,EAAUS,OACtCC,EAAuBL,KAAKC,MAAMJ,EAAiBK,MACnDI,EAAwBN,KAAKC,MAAMJ,EAAiBO,OAEtDL,EAAgBM,GAClBP,EAAaS,KA1BT,eA6BFJ,EAAiBG,GACnBR,EAAaS,KA7BR,gBAGT,SAAyBb,EAA2Bc,OAC3CC,EAAaf,EAAbe,UAEPA,EAAUC,OAPJ,cACC,gBAOPD,EAAUE,UAAVF,EAAiBD,GAyBjBI,CAAgBlB,EAAkBI,KDRpC,SAAYP,GACRA,YACAA,kBAFJ,CAAYA,IAAAA,OEjBL,IAAMsB,EAA+B,SAACC,UAAUA,GAE1CC,EAA4B,SAACD,WAAQE,IAAAA,iBAC7CF,GAGHG,MAAOD,MAAAA,aAAAA,EAAME,2BAANC,EAAcF,SAEVG,EAAgC,SAACN,SAAQI,IAAAA,mBACjDJ,GAGHG,MAAOC,MAAAA,SAAAA,EAAQD,SAcJI,EACmD,SAACC,EAAYC,mBAAAA,IAAAA,EAASV,GAC5ES,EACK,SAACR,EAAOU,eACVD,EAAOT,EAAOU,GACdF,EAAWR,EAAOU,KAIlBD,GAeAE,EAC2C,SAACH,EAAYC,mBAAAA,IAAAA,EAASV,GACpES,EACK,SAACR,EAAOU,eACVD,EAAOT,EAAOU,GACdF,EAAWR,EAAOU,KAIlBD,ikIC3DPG,EAAmBC,iBAYZC,EAAeC,EAAOC,SAa/B,SAAChB,UAAkCA,EAAMiB,WAAaC,cAO7CC,EAAoBJ,EAAOC,SAY3BI,EAAeL,EAAOC,SA6CtBK,EAAYN,EAAOC,QACjBM,cAOFC,EAAeR,EAAOC,SAOtBQ,EAAYT,EAAOC,SAQnBS,EAAWV,EAAOC,SAIlBU,EAAKX,EAAOC,SAQrB,gBAAEb,IAAAA,aAAoDA,GAASe,UACjDf,MAILwB,EAAiBZ,EAAOC,QAEf,EAAVY,UAC6BC,SAAWC,QAAUD,SAE/CjB,GAGFmB,EAAKhB,EAAOC,SAUZgB,EAAQjB,EAAOC,QAMxBe,EAAOL,EAKEO,SAMAC,EAAUnB,EAAOC,QAGGa,UAKpBM,EAAKpB,EAAOC,SAMZoB,EAAQrB,EAAOC,QACFqB,SACA,EAAVT,WAKHU,EAAQvB,EAAOC,QACZa,UCtIHU,EAAe,CAC1BC,sBAAsB,EACtBvB,WAAW,EACXwB,gBAAiB,GACjBC,eAAgB,aAChBC,aAAc,YACdC,gBAAiB,iBACjBC,eAAgB,GAChBC,kBAAkB,EAClBC,qBAAsBpB,EACtBqB,eAAgB,iBAAO,IACvBC,cAAe,IAYjB,SAASC,EAAWC,SACU,mBAAdA,MAyBVC,GAAsD,SAACpD,SAEzDqD,EA4BErD,EA5BFqD,QACAC,EA2BEtD,EA3BFsD,KACAC,EA0BEvD,EA1BFuD,WACAC,EAyBExD,EAzBFwD,UACAC,EAwBEzD,EAxBFyD,qBACAC,EAuBE1D,EAvBF0D,aACAzC,EAsBEjB,EAtBFiB,UACAyB,EAqBE1C,EArBF0C,eACAC,EAoBE3C,EApBF2C,aACAF,EAmBEzC,EAnBFyC,gBACAkB,EAkBE3D,EAlBF2D,eACAnB,EAiBExC,EAjBFwC,qBACAoB,EAgBE5D,EAhBF4D,mBACAhB,EAeE5C,EAfF4C,gBACAC,EAcE7C,EAdF6C,eACAE,EAaE/C,EAbF+C,qBACAc,EAYE7D,EAZF6D,oBACAb,EAWEhD,EAXFgD,eACAc,EAUE9D,EAVF8D,cACAC,EASE/D,EATF+D,oBACAC,EAQEhE,EARFgE,eACAC,EAOEjE,EAPFiE,YACAC,EAMElE,EANFkE,aACAC,EAKEnE,EALFmE,eACAC,GAIEpE,EAJFoE,oBACAtB,GAGE9C,EAHF8C,iBACAG,GAEEjD,EAFFiD,cACAoB,GACErE,EADFqE,gBAGIC,GAAcC,WAAQ,kBAAMlB,IAAS,CAACA,OC9ItB,SACtBP,EACA0B,EACAC,EACApB,EACAN,SAyCO,CACL2B,eAxC0DH,WAAQ,kBAAOzB,GAAoB0B,EAAUnB,EACtGsB,KAAI,gBACHC,IAAAA,SAAUC,IAAAA,MAAOC,IAAAA,OAEX1E,EAAgC,CACpC2E,KAAM,kBAAMC,gBAACjC,SACbkC,WAJuBA,iBAMrBL,IACFxE,EAAOwE,SAAWA,GAEhBC,IACFzE,EAAOyE,MAAQA,GAEbC,IACF1E,EAAO0E,OAASA,GAGX1E,KACJ,KAAK,CAACiD,EAASmB,EAAS1B,IAsB7BoC,YApBkBX,WAAQ,cACtBzB,GAAoB0B,GAAWnB,GAAWA,EAAQ8B,OAAS,EAAG,SAC1DC,EAA4B,GAC5BC,EAA6B,GAE1BC,EAAI,EAAGA,EAAIjC,EAAQ8B,OAAQG,GAAK,EACvCF,WAAoBE,GAAO,OAExB,IAAIA,EAAI,EAAGA,EAAIb,EAAUa,GAAK,EACjCD,EAAU5F,KAAK2F,UAGVC,QAGF,KACN,CAAChC,EAASmB,EAASC,EAAU3B,KDoGMyC,CACpCzC,GACA7B,YACAwC,MAAAA,SAAAA,EAAsBgB,wBAjEA,GAkEtBH,GACAvB,GALK2B,MAAAA,eAAgBQ,MAAAA,YAQjBM,GAAc1C,IAAoB7B,EAClCwE,GAAyB7B,GAAsBV,EAAWU,GAC1D8B,GAAkB/B,GAAkBT,EAAWS,GAC/CgC,GAA0BnC,GAC3BC,GACAmC,OAAOC,KAAKpC,GAAsB0B,OAAS,EAE1CW,GAA6B,CACjCzC,QAASmC,GACJd,GACDJ,GACJhB,KAAMkC,GAAcN,GAAc5B,EAClCI,aAAAA,EACAqC,mBAxFsB,EAyFtBC,kBAxFqB,EAyFrBC,qBAxFwB,MA2FtBP,KACFI,GAAQI,cAAe,GAGrBP,GAAyB,mBACoB,KAApClC,MAAAA,SAAAA,EAAsB0C,iBACzB,IAAIC,MACR,2DAIJN,GAAQpC,kBACHoC,GAAQpC,cACX2C,qBAAW5C,EAAqB4C,2BAtGX,EAuGrB5B,oBAAUhB,EAAqBgB,0BAtGX,KAyGtBqB,GAAQQ,eAAgB,EACxBR,GAAQS,kBAAmB,EAC3BT,GAAQK,UAAY1C,EAAqB0C,iBA4DvCK,WACFV,GACAW,gBACAC,YACAC,cACAC,gBACAC,gBA/DgB,SAACC,MACZrB,QAICsB,EAAY,CAChBC,GAAI,YACJC,eAAe,EACfnC,OAAQ,SAACoC,UAOLlC,gBAACmC,GACCC,UAAU,MACVC,SALAH,EADFI,sBAOEC,WAAWC,EANXN,EAFFM,iCAQ6CC,WAIjD1C,KAAM,gBAAE2C,IAAAA,IAEJV,EAIEU,EAJFV,GACAW,EAGED,EAHFC,SACAC,EAEEF,EAFFE,kBACAC,EACEH,EADFG,0BAGIT,EAAYU,OAAOC,UAAUJ,EAASX,IAAMW,EAASX,GAAKA,SAG9DhC,gBAACmC,GACCC,UAAWA,EACXC,SAAUO,EACVL,UAAWM,IAA4BJ,YAM/CX,EAAMkB,eAAevI,MAAK,SAACwI,UACzBlB,UACGkB,UAKUC,MAAfpE,cACAqE,MAAAA,aACAC,MAAAA,aACAC,MAAAA,iBACAC,MAAAA,KACAC,MAAAA,WACAP,MAAAA,eACGQ,kPAYHC,GAaED,GAbFC,iBACAC,GAYEF,GAZFE,UACAC,GAWEH,GAXFG,KACAC,GAUEJ,GAVFI,gBACAC,GASEL,GATFK,YACA1C,GAQEqC,GARFrC,UACA2C,GAOEN,GAPFM,SACAC,GAMEP,GANFO,SACAC,GAKER,GALFQ,aACAC,GAIET,GAJFS,eAIET,GAHFU,MAAQC,MAAAA,eAAgB9C,MAAAA,UAAW5B,MAAAA,SAK/B2E,GAAWC,SAAO,MAClBC,GAAkBD,SAAO,gBH/OjBD,EAAUE,GACxBC,aAAU,iBACJC,GAAU,WAELC,IACHD,IAIJE,OAAOC,uBAAsB,WAC3BjL,EAAuB0K,EAASQ,QAASN,EAAgBM,SACzDJ,GAAU,KAGZA,GAAU,UAGZ9K,EAAuB0K,EAASQ,QAASN,EAAgBM,SAEzDR,MAAAA,aAAAA,EAAUQ,wBAASC,iBAAiB,aAAcJ,GAClDC,OAAOG,iBAAiB,SAAUJ,GAE3B,iBACLL,MAAAA,aAAAA,EAAUQ,wBAASE,oBAAoB,aAAcL,GACrDC,OAAOI,oBAAoB,SAAUL,MAEtC,CAACL,EAASQ,QAASN,EAAgBM,UGuNtCG,CAAeX,GAAUE,IAEzBC,aAAU,YACH7F,MAAAA,SAAAA,EAAcsG,gBAInB3B,GAAiB3E,EAAasG,iBAC7B,CAACtG,MAAAA,SAAAA,EAAcsG,gBAElBT,aAAU,WACJ9D,KACF7B,MAAAA,GAAAA,EACE6E,MAAAA,UAAAA,GAAkB9D,KAAI,SAAC+C,UAAqBA,EAAIC,gBAGnD,CAACwB,SAEAc,GAAiC,QAEjCzH,GAAwBmD,SACpB,IAAIS,MACR,8HAKAT,IAA2BnD,EAAsB,KAC7C0H,GAAkC,CACtCjB,YAAAA,GACAH,SAAAA,GACAD,YAAAA,GACAD,gBAAAA,GACAhG,gBAAAA,EACAD,aAAAA,EACA0D,UAAAA,GACA8D,oBAAqBnB,GACrBoB,gBAAiBrB,GACjBsB,WAAYlE,GACZmE,QAAS7F,GACTlB,WAAYA,MAAAA,EAAAA,EAAcD,EAAK6B,QAG7BQ,IAA2BlC,IAC7ByG,GAAerB,YAAcpF,EAAqB4C,UAAY,IAAM6D,GAAeG,WACnFH,GAAetB,gBAAqD,IAAnCnF,EAAqB4C,UACtD6D,GAAe7D,UAAY5C,EAAqB4C,UAChD6D,GAAeI,QAAU7G,EAAqBgB,SAE9CyF,GAAejB,YAAc,SAACsB,GAC5B/G,MAAAA,GAAAA,EAAY,CACV6C,UAAW6D,GAAe7D,UAC1B5B,SAAU8F,KAIdL,GAAepB,SAAW,SAAC0B,GACzBhH,MAAAA,GAAAA,EAAY,CACV6C,UAAWmE,EACX/F,SAAUyF,GAAeI,WAI7BJ,GAAeE,gBAAkB,WAE/BF,GAAepB,SADMoB,GAAe7D,UAAY,IAIlD6D,GAAeC,oBAAsB,WAEnCD,GAAepB,SADMoB,GAAe7D,UAAY,KAI9C5C,MAAAA,SAAAA,EAAsBgH,oBACxBP,GAAeO,iBAAmBhH,EAAqBgH,mBAI3DR,GAAajF,gBAACnB,mBAAwBqG,SF5UkB1J,GAAYC,GEmWhEiK,GAAU/E,IAA2BnD,EAAuBmG,GAAOL,UAGvEtD,gBAAC3D,GAAUsJ,UAAU,cACnB3F,gBAAClE,GACCG,WAAY6B,IAAoB7B,EAChC0J,UAAU,iBAEV3F,gBAAC7D,OAAmBuB,IAEtBsC,gBAAC5D,GAAawJ,IAAKtB,GAAiBqB,UAAU,iBAC5C3F,gBAACzD,GAAayF,GAAInE,EAAgB8H,UAAU,iBAC1C3F,gBAACxD,mBACK0G,aFhXwDzH,KAAAA,GAASV,IAArBS,GEgXXsD,GF9WtC,SAAC9D,eACHS,GAAOT,GACPQ,GAAWR,KAIXS,MEyWGmK,IAAKxB,KAELpE,gBAAChD,GAAM2I,UAAU,cACdxC,GAAaxD,KAAI,SAACkG,UACjB7F,gBAAC7C,mBACK0I,EAAY9G,oBACdxD,EAAqBwD,KAGtB8G,EAAYC,QAAQnG,KAAI,SAACvE,OAClB2K,WA5CG3K,OACnB2K,EAAc3K,EAAO4K,sBAAwB5K,EAAO4K,8BAEnDD,MAAAA,UAAAA,EAAaE,MAEhBvF,IAAmBtF,EAAO8K,SAAWH,IACvCA,EAAYI,QAAU,WACpBxH,MAAAA,GAAAA,EAAiBvD,EAAO4G,GAAIoE,QAAQhL,EAAOiL,eAC3C3C,GAAU,CACR,CACE1B,GAAI5G,EAAO4G,GACXsE,MAAOlL,EAAOiL,kBAMfN,EA2B6BQ,CAClBnL,UAIA4E,gBAACjD,mBACK3B,EAAO4D,eFjVM,SAACwH,EAAehL,EAAYC,mBAAAA,IAAAA,EAASV,GACpES,EACK,SAACR,EAAOU,eACVD,OAAWT,EAAUwL,GAAgB9K,GACrCF,EAAWR,EAAOU,KAIlB,SAACV,EAAsBU,UAAmBD,OAAWT,EAAUwL,GAAgB9K,IE0UlE+K,CACEV,EACA/G,EACA1D,KArU5B,SAAwBF,UAClBA,EAAOsL,UAAYtL,EAAOiL,aAE1BrG,gBAACvD,OACErB,EAAOuL,OAAO,UACf3G,gBAAC4G,aAAUC,KAAMC,OAAKC,MAAOC,MAAOC,QAAMC,aAK5C9L,EAAOsL,WAAatL,EAAOiL,aAE3BrG,gBAACvD,OACErB,EAAOuL,OAAO,UACf3G,gBAACmH,WAAQN,KAAMC,OAAKC,MAAOC,MAAOC,QAAMC,aAKvC9L,EAAOuL,OAAO,UAsTES,CAAehM,YAO3BqC,EAAgB4J,SAAS5N,EAAiB6N,MACzCtH,gBAAC1C,GAAMqI,UAAU,oBACdvC,GAAazD,KAAI,SAAC4H,UACjBvH,gBAAC7C,mBACKoK,EAAMnI,oBACR7D,EAAqB6D,MAGtBmI,EAAMzB,QAAQnG,KAAI,SAACvE,UAClB4E,gBAACtD,mBACKtB,EAAO+D,eACT5D,EAAqB4D,EAAgB7D,KAGtCF,EAAOuL,OAAO,mBAO3B3G,gBAAC5C,GAAMuI,UAAU,cACdD,GAAQ/F,KAAI,SAAC+C,GACZa,GAAWb,SACa1E,EAAe0E,UAInC1C,gCACEA,gBAAC9C,GAAQsK,aAAc9E,EAAI+E,OACzBzH,gBAAC7C,mBAAOuF,EAAIzD,YFtZmB,SAACzD,EAAYC,mBAAAA,IAAAA,EAASV,GACnES,EACK,SAACR,EAAOU,eACVD,EAAOT,EAAOU,GACdF,EAAWR,EAAOU,KAIlBD,EE8YmCiM,CAAiBzI,OAN1C0I,cAOG3H,gBAACtD,iBACCkL,QAAS5E,GAAe7C,QACpBuC,EAAImF,MAAM,GAAG3I,aACfvD,EAAkBuD,EAAcjE,KAGlC+E,8BAAS0C,EAAImF,MAAM,GAAGlB,OAAO,UAahCjE,EAAImF,MAAMlI,KAAI,SAACzE,UACd8E,gBAACtD,mBACKxB,EAAKgE,aACPvD,EAAkBuD,EAAcjE,KAGjCC,EAAKyL,OAAO,eAflBjE,MAAAA,SAAAA,EAAKoF,aAAczI,IAAmBA,GAAgBqD,QAyBhEjF,EAAgB4J,SAAS5N,EAAiBsO,SACzC/H,gBAAC1C,GAAMqI,UAAU,uBACdvC,GAAazD,KAAI,SAAC4H,UACjBvH,gBAAC7C,mBACKoK,EAAMnI,oBACR7D,EAAqB6D,MAGtBmI,EAAMzB,QAAQnG,KAAI,SAACvE,UAClB4E,gBAACtD,mBACKtB,EAAO+D,eACT5D,EAAqB4D,EAAgB7D,KAGtCF,EAAOuL,OAAO,uBAU/B1K,IAAcqC,EAAK6B,QAAUlC,GAC9BgH,KAKP7G,GAAMb,aAAeA"}
package/dist/table.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import React, { useMemo, useEffect, useRef } from 'react';
2
- import { useTable, useFlexLayout, useSortBy, usePagination, useRowSelect } from 'react-table';
3
- import { ArrowDownFull, SIZE, COLOR, ArrowUp } from '@propellerads/icon';
2
+ import { useTable, useFlexLayout, useSortBy, useExpanded, usePagination, useRowSelect } from 'react-table';
3
+ import { ArrowDown, SIZE, COLOR, ArrowUp } from '@propellerads/icon';
4
4
  import Checkbox from '@propellerads/input-checkbox';
5
5
  import styled, { css, keyframes } from 'styled-components';
6
6
  import { fontNormal, spacing, gray95, white, black, gray80 } from '@propellerads/stylevariables';
@@ -49,15 +49,16 @@ function _taggedTemplateLiteralLoose(strings, raw) {
49
49
 
50
50
  var useLoadingState = function useLoadingState(showLoadingState, loading, pageSize, columns, LoadingCellComponent) {
51
51
  var loadingColumns = useMemo(function () {
52
- return showLoadingState && loading ? columns.map(function (_ref, key) {
52
+ return showLoadingState && loading ? columns.map(function (_ref) {
53
53
  var maxWidth = _ref.maxWidth,
54
54
  width = _ref.width,
55
- Header = _ref.Header;
55
+ Header = _ref.Header,
56
+ accessor = _ref.accessor;
56
57
  var column = {
57
58
  Cell: function Cell() {
58
59
  return React.createElement(LoadingCellComponent, null);
59
60
  },
60
- accessor: "empty_" + key
61
+ accessor: accessor
61
62
  };
62
63
 
63
64
  if (maxWidth) {
@@ -489,7 +490,7 @@ function isFunction(reference) {
489
490
 
490
491
  function getHeadContent(column) {
491
492
  if (column.isSorted && column.isSortedDesc) {
492
- return React.createElement(HeadCell, null, column.render('Header'), React.createElement(ArrowDownFull, {
493
+ return React.createElement(HeadCell, null, column.render('Header'), React.createElement(ArrowDown, {
493
494
  size: SIZE.SMALL,
494
495
  color: COLOR.GRAY_DARK
495
496
  }));
@@ -534,7 +535,8 @@ var Table = function Table(props) {
534
535
  getFooterProps = props.getFooterProps,
535
536
  getFooterGroupProps = props.getFooterGroupProps,
536
537
  showLoadingState = props.showLoadingState,
537
- noDataMessage = props.noDataMessage;
538
+ noDataMessage = props.noDataMessage,
539
+ rowSubComponent = props.rowSubComponent;
538
540
  var memoColumns = useMemo(function () {
539
541
  return columns;
540
542
  }, [columns]);
@@ -612,7 +614,7 @@ var Table = function Table(props) {
612
614
  });
613
615
  };
614
616
 
615
- var _useTable = useTable(options, useFlexLayout, useSortBy, usePagination, useRowSelect, useSelect),
617
+ var _useTable = useTable(options, useFlexLayout, useSortBy, useExpanded, usePagination, useRowSelect, useSelect),
616
618
  _getTableProps = _useTable.getTableProps,
617
619
  headerGroups = _useTable.headerGroups,
618
620
  footerGroups = _useTable.footerGroups,
@@ -656,8 +658,7 @@ var Table = function Table(props) {
656
658
  var pagination = null;
657
659
 
658
660
  if (hasDefaultPagination && hasControlledPagination) {
659
- // eslint-disable-next-line max-len
660
- throw new Error('You have to pass either hasDefaultPagination true boolean prop or pass fetchData callback and controlledPagination data');
661
+ throw new Error('You have to pass either hasDefaultPagination true boolean prop or ' + 'pass fetchData callback and controlledPagination data');
661
662
  }
662
663
 
663
664
  if (hasControlledPagination || hasDefaultPagination) {
@@ -718,7 +719,7 @@ var Table = function Table(props) {
718
719
  var headerProps = column.getSortByToggleProps && column.getSortByToggleProps();
719
720
  headerProps === null || headerProps === void 0 ? true : delete headerProps.style;
720
721
 
721
- if (hasManualSortBy && !column.canSort && headerProps) {
722
+ if (hasManualSortBy && column.canSort && headerProps) {
722
723
  headerProps.onClick = function () {
723
724
  onSortedChange === null || onSortedChange === void 0 ? void 0 : onSortedChange(column.id, Boolean(column.isSortedDesc));
724
725
  setSortBy([{
@@ -732,43 +733,56 @@ var Table = function Table(props) {
732
733
  }
733
734
 
734
735
  var tBodyTr = hasControlledPagination || hasDefaultPagination ? page : rows;
735
- return React.createElement(TableRoot, null, React.createElement(TableLoading, {
736
- isLoading: !showLoadingState && isLoading
736
+ return React.createElement(TableRoot, {
737
+ className: "table-root"
738
+ }, React.createElement(TableLoading, {
739
+ isLoading: !showLoadingState && isLoading,
740
+ className: "table-loading"
737
741
  }, React.createElement(TableLoadingInner, null, loadingMessage)), React.createElement(TableWrapper, {
738
- ref: tableWrapperRef
742
+ ref: tableWrapperRef,
743
+ className: "table-wrapper"
739
744
  }, React.createElement(TableContent, {
740
- id: tableContentId
745
+ id: tableContentId,
746
+ className: "table-content"
741
747
  }, React.createElement(TableCore, Object.assign({}, _getTableProps(getTableProps(getTableProps$1)), {
742
748
  ref: tableRef
743
- }), React.createElement(THead, null, headerGroups.map(function (headerGroup) {
749
+ }), React.createElement(THead, {
750
+ className: "table-head"
751
+ }, headerGroups.map(function (headerGroup) {
744
752
  return React.createElement(TR, Object.assign({}, headerGroup.getHeaderGroupProps(getTableElementProps(getHeaderGroupProps))), headerGroup.headers.map(function (column) {
745
753
  var headerProps = extendSortByProps(column);
746
754
  return React.createElement(TH, Object.assign({}, column.getHeaderProps(getTableElementInternalProps(headerProps, getHeaderProps, mainCellGetter))), getHeadContent(column));
747
755
  }));
748
- })), footerPlacement.includes(FOOTER_PLACEMENT.TOP) && React.createElement(TFoot, null, footerGroups.map(function (group) {
756
+ })), footerPlacement.includes(FOOTER_PLACEMENT.TOP) && React.createElement(TFoot, {
757
+ className: "table-footer-top"
758
+ }, footerGroups.map(function (group) {
749
759
  return React.createElement(TR, Object.assign({}, group.getFooterGroupProps(getTableElementProps(getFooterGroupProps))), group.headers.map(function (column) {
750
760
  return React.createElement(TD, Object.assign({}, column.getFooterProps(getTableElementProps(getFooterProps, mainCellGetter))), column.render('Footer'));
751
761
  }));
752
- })), React.createElement(TBody, null, tBodyTr.map(function (row) {
762
+ })), React.createElement(TBody, {
763
+ className: "table-body"
764
+ }, tBodyTr.map(function (row) {
753
765
  prepareRow(row);
754
766
 
755
767
  var _getRowPreProps = getRowPreProps(row),
756
768
  isDelimiterTd = _getRowPreProps.isDelimiterTd;
757
769
 
758
770
  if (isDelimiterTd) {
759
- return React.createElement(TRGroup, {
771
+ return React.createElement(React.Fragment, null, React.createElement(TRGroup, {
760
772
  key: "group_" + row.index
761
773
  }, React.createElement(TR, Object.assign({}, row.getRowProps(getTableRowProps(getRowProps))), React.createElement(TD, Object.assign({
762
774
  colSpan: visibleColumns.length
763
- }, row.cells[0].getCellProps(getTableCellProps(getCellProps, cellGetter))), React.createElement("strong", null, row.cells[0].render('Cell')))));
775
+ }, row.cells[0].getCellProps(getTableCellProps(getCellProps, cellGetter))), React.createElement("strong", null, row.cells[0].render('Cell'))))), (row === null || row === void 0 ? void 0 : row.isExpanded) && rowSubComponent && rowSubComponent(row));
764
776
  }
765
777
 
766
- return React.createElement(TRGroup, {
778
+ return React.createElement(React.Fragment, null, React.createElement(TRGroup, {
767
779
  key: "group_" + row.index
768
780
  }, React.createElement(TR, Object.assign({}, row.getRowProps(getTableRowProps(getRowProps))), row.cells.map(function (cell) {
769
781
  return React.createElement(TD, Object.assign({}, cell.getCellProps(getTableCellProps(getCellProps, cellGetter))), cell.render('Cell'));
770
- })));
771
- })), footerPlacement.includes(FOOTER_PLACEMENT.BOTTOM) && React.createElement(TFoot, null, footerGroups.map(function (group) {
782
+ }))), (row === null || row === void 0 ? void 0 : row.isExpanded) && rowSubComponent && rowSubComponent(row));
783
+ })), footerPlacement.includes(FOOTER_PLACEMENT.BOTTOM) && React.createElement(TFoot, {
784
+ className: "table-footer-bottom"
785
+ }, footerGroups.map(function (group) {
772
786
  return React.createElement(TR, Object.assign({}, group.getFooterGroupProps(getTableElementProps(getFooterGroupProps))), group.headers.map(function (column) {
773
787
  return React.createElement(TD, Object.assign({}, column.getFooterProps(getTableElementProps(getFooterProps, mainCellGetter))), column.render('Footer'));
774
788
  }));