@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.
- package/CHANGELOG.md +13 -0
- package/dist/table.cjs.development.js +35 -21
- package/dist/table.cjs.development.js.map +1 -1
- package/dist/table.cjs.production.min.js +1 -1
- package/dist/table.cjs.production.min.js.map +1 -1
- package/dist/table.esm.js +37 -23
- package/dist/table.esm.js.map +1 -1
- package/dist/types.d.ts +4 -1
- package/package.json +2 -2
- package/src/index.tsx +125 -72
- package/src/types.tsx +2 -1
- package/src/useLoadingState.tsx +4 -2
|
@@ -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":"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"}
|
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 {
|
|
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
|
|
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:
|
|
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(
|
|
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
|
-
|
|
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 &&
|
|
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,
|
|
736
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
}));
|