UNPKG

23.6 kBSource Map (JSON)View Raw
1{"version":3,"file":"TableView.js","sources":["../src/components/DataView/TableView.js"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Transition, animated } from 'react-spring'\nimport { GU, springs, textStyle } from '../../style'\nimport { useTheme } from '../../theme'\nimport { useLayout } from '../Layout/Layout'\nimport Checkbox from '../Input/Checkbox'\nimport { ToggleButton } from './ToggleButton'\nimport { OpenedSurfaceBorder } from './OpenedSurfaceBorder'\n\n// Table heading cells\nfunction headingsFromFields(\n fields,\n { hasAnyActions, hasAnyExpansion, selectContent, selectable }\n) {\n const cells = fields.map((field, index) => [\n field.label,\n field.align === 'end' ? 'right' : 'left',\n ])\n\n if (hasAnyExpansion || selectable) {\n cells.unshift([selectable ? selectContent : null, 'left'])\n }\n\n if (hasAnyActions) {\n cells.push([null, 'left'])\n }\n\n // Return null if all the fields are empty\n if (cells.every(cell => !cell[0])) {\n return null\n }\n\n return cells\n}\n\nfunction cellsFromEntry(\n entry,\n {\n fields,\n hasAnyActions,\n hasAnyExpansion,\n hasExpansion,\n selectContent,\n selectable,\n toggleChildContent,\n }\n) {\n const cells = entry.entryNodes.map((content, index) => [\n content,\n fields[index].align,\n false,\n ])\n\n // Checkbox\n if (selectable) {\n cells.unshift([selectContent, 'start', true])\n }\n\n // Toggle child\n if (!selectable && hasAnyExpansion) {\n cells.unshift([hasExpansion && toggleChildContent, 'start', true])\n }\n\n // Actions\n if (hasAnyActions) {\n cells.push([entry.actions, 'end', true])\n }\n\n return cells\n}\n\nfunction TableView({\n alignChildOnField,\n allSelected,\n entries,\n fields,\n hasAnyActions,\n hasAnyExpansion,\n onSelect,\n onSelectAll,\n renderSelectionCount,\n rowHeight,\n selectable,\n selectedCount,\n}) {\n const [opened, setOpened] = useState(-1)\n\n const toggleEntry = useCallback(index => {\n setOpened(opened => (opened === index ? -1 : index))\n }, [])\n\n const headCells = useMemo(\n () =>\n headingsFromFields(fields, {\n hasAnyActions,\n hasAnyExpansion,\n selectContent: (\n <Checkbox\n indeterminate={allSelected === 0}\n checked={allSelected > -1}\n onChange={onSelectAll}\n />\n ),\n selectable,\n }),\n [\n fields,\n hasAnyActions,\n hasAnyExpansion,\n allSelected,\n onSelectAll,\n selectable,\n ]\n )\n\n useEffect(() => {\n setOpened(-1)\n }, [entries, fields])\n\n return (\n <table\n css={`\n width: 100%;\n border-spacing: 0;\n border-collapse: separate;\n `}\n >\n {headCells && (\n <thead>\n <HeadRow\n cells={headCells}\n selectedCount={selectedCount}\n renderSelectionCount={renderSelectionCount}\n />\n </thead>\n )}\n <tbody>\n {entries.map((entry, index) => (\n <Entry\n key={entry.index}\n alignChildOnField={alignChildOnField}\n entry={entry}\n fields={fields}\n firstRow={index === 0}\n hasAnyActions={hasAnyActions}\n hasAnyExpansion={hasAnyExpansion}\n onSelect={onSelect}\n onToggle={toggleEntry}\n opened={opened === entry.index}\n rowHeight={rowHeight}\n selectable={selectable}\n />\n ))}\n </tbody>\n </table>\n )\n}\n\nTableView.propTypes = {\n alignChildOnField: PropTypes.number.isRequired,\n allSelected: PropTypes.oneOf([-1, 0, 1]).isRequired,\n entries: PropTypes.array.isRequired,\n fields: PropTypes.array.isRequired,\n hasAnyActions: PropTypes.bool.isRequired,\n hasAnyExpansion: PropTypes.bool.isRequired,\n onSelect: PropTypes.func.isRequired,\n onSelectAll: PropTypes.func.isRequired,\n renderSelectionCount: PropTypes.func.isRequired,\n rowHeight: PropTypes.number.isRequired,\n selectable: PropTypes.bool.isRequired,\n selectedCount: PropTypes.number.isRequired,\n}\n\n// Disable prop types check for internal components\n/* eslint-disable react/prop-types */\n\nfunction useSidePadding() {\n const { layoutName } = useLayout()\n return layoutName === 'small' ? 2 * GU : 3 * GU\n}\n\nfunction HeadRow({ cells, selectedCount, renderSelectionCount }) {\n const theme = useTheme()\n const sidePadding = useSidePadding()\n return (\n <tr>\n {cells.map((cell, index) => {\n const hidden = selectedCount > 0 && index > 1\n const content =\n selectedCount > 0 && index === 1\n ? renderSelectionCount(selectedCount)\n : cell[0]\n return (\n !hidden && (\n <th\n key={index}\n css={`\n height: ${4 * GU}px;\n padding: 0;\n padding-left: ${index === 0 ? sidePadding : 0}px;\n padding-right: ${index === cells.length - 1\n ? sidePadding\n : 0}px;\n text-align: ${cell[1]};\n ${textStyle('label2')};\n color: ${theme.surfaceContentSecondary};\n border-bottom: 1px solid ${theme.border};\n `}\n colSpan={selectedCount > 0 && index === 1 ? cells.length - 1 : 1}\n >\n {content}\n </th>\n )\n )\n })}\n </tr>\n )\n}\n\nconst Entry = React.memo(function Entry({\n alignChildOnField,\n entry,\n fields,\n firstRow,\n hasAnyActions,\n hasAnyExpansion,\n onSelect,\n onToggle,\n opened,\n rowHeight,\n selectable,\n}) {\n const hasExpansion = entry.expansion.content.length > 0\n const entryIndex = entry.index\n\n const handleToggle = useCallback(() => {\n onToggle(entryIndex)\n }, [entryIndex, onToggle])\n\n const handleSelectChange = useCallback(\n check => {\n onSelect(entryIndex, check)\n },\n [entryIndex, onSelect]\n )\n\n const cells = cellsFromEntry(entry, {\n fields,\n hasAnyActions,\n hasAnyExpansion,\n hasExpansion,\n selectable,\n toggleChildContent: hasAnyExpansion ? (\n <Toggle opened={opened} onToggle={handleToggle} />\n ) : null,\n selectContent: selectable ? (\n <Checkbox onChange={handleSelectChange} checked={entry.selected} />\n ) : null,\n })\n\n return (\n <React.Fragment>\n <EntryRow\n cells={cells}\n firstRow={firstRow}\n rowHeight={rowHeight}\n selected={entry.selected}\n />\n {hasExpansion && (\n <EntryExpansion\n alignChildOnCell={alignChildOnField + 1}\n cellsCount={cells.length}\n expansion={entry.expansion}\n opened={opened}\n rowHeight={rowHeight}\n />\n )}\n </React.Fragment>\n )\n})\n\nfunction EntryRow({ firstRow, cells, selected, rowHeight, mode }) {\n const theme = useTheme()\n const sidePadding = useSidePadding()\n\n return (\n <tr\n css={`\n transition: background 150ms ease-in-out;\n background: ${selected ? theme.surfaceSelected : 'none'};\n `}\n >\n {cells.map(([content, align, compact], index, cells) => {\n const first = index === 0\n const last = index === cells.length - 1\n return (\n <td\n key={index}\n css={`\n position: relative;\n width: ${compact\n ? '1px' // For some reason Blink tends to make 0 grow but not 1px\n : 'auto'};\n height: ${rowHeight}px;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: ${first || compact ? sidePadding : 0}px;\n padding-right: ${(!first && (align !== 'end' || last)) || compact\n ? sidePadding\n : 0}px;\n border-top: ${firstRow ? '0' : `1px solid ${theme.border}`};\n `}\n >\n <div\n css={`\n display: flex;\n width: 100%;\n justify-content: ${`flex-${align}`};\n `}\n >\n {content}\n </div>\n </td>\n )\n })}\n </tr>\n )\n}\n\nfunction EntryExpansion({\n alignChildOnCell,\n cellsCount,\n expansion,\n opened,\n rowHeight,\n}) {\n const theme = useTheme()\n\n // Handles the height of the expansion in free layout mode\n const [freeLayoutContentHeight, setFreeLayoutContentHeight] = useState(0)\n\n const handleFreeLayoutContentRef = useCallback(element => {\n if (element) {\n setFreeLayoutContentHeight(element.getBoundingClientRect().height)\n }\n }, [])\n\n const height = expansion.freeLayout\n ? freeLayoutContentHeight\n : rowHeight * expansion.content.length\n\n return (\n <Transition\n native\n unique\n items={opened}\n from={{ height: 0 }}\n enter={{ height }}\n update={{ height }}\n leave={{ height: 0 }}\n config={{ ...springs.smooth, precision: 0.1 }}\n >\n {show =>\n show &&\n (({ height }) => (\n <tr\n css={`\n td {\n position: relative;\n padding: 0;\n box-shadow: inset 0 6px 4px -4px rgba(0, 0, 0, 0.16);\n background: ${theme.surfaceUnder};\n }\n `}\n >\n {alignChildOnCell > 0 && (\n <td colSpan={alignChildOnCell}>\n <OpenedSurfaceBorder opened={opened} />\n <animated.div css=\"overflow: hidden\" style={{ height }}>\n {expansion.content.map((child, i) => (\n <div\n key={i}\n css={`\n height: ${expansion.freeLayout\n ? 'auto'\n : `${rowHeight}px`};\n border-top: 1px solid ${theme.border};\n `}\n />\n ))}\n </animated.div>\n </td>\n )}\n <td\n colSpan={\n alignChildOnCell === -1\n ? cellsCount\n : cellsCount - alignChildOnCell\n }\n >\n {alignChildOnCell === 0 && (\n <OpenedSurfaceBorder opened={opened} />\n )}\n <animated.div css=\"overflow: hidden\" style={{ height }}>\n {expansion.content.map((child, i) => (\n <div\n key={i}\n ref={\n expansion.freeLayout ? handleFreeLayoutContentRef : null\n }\n css={`\n display: flex;\n align-items: center;\n height: ${expansion.freeLayout\n ? 'auto'\n : `${rowHeight}px`};\n padding-left: ${alignChildOnCell < 1 ? 3 * GU : 0}px;\n padding-right: ${3 * GU}px;\n border-top: 1px solid ${theme.border};\n `}\n >\n {child}\n </div>\n ))}\n </animated.div>\n </td>\n </tr>\n ))\n }\n </Transition>\n )\n}\n\nconst Toggle = React.memo(function Toggle({ opened, onToggle }) {\n return (\n <div\n css={`\n width: 100%;\n height: 100%;\n `}\n >\n <OpenedSurfaceBorder opened={opened} />\n <ToggleButton opened={opened} onClick={onToggle} />\n </div>\n )\n})\n\n/* eslint-enable react/prop-types */\n\nexport { TableView }\n"],"names":["headingsFromFields","fields","hasAnyActions","hasAnyExpansion","selectContent","selectable","cells","map","field","index","label","align","unshift","push","every","cell","cellsFromEntry","entry","hasExpansion","toggleChildContent","entryNodes","content","actions","TableView","alignChildOnField","allSelected","entries","onSelect","onSelectAll","renderSelectionCount","rowHeight","selectedCount","useState","opened","setOpened","toggleEntry","useCallback","headCells","useMemo","React","Checkbox","useEffect","propTypes","PropTypes","number","isRequired","oneOf","array","bool","func","useSidePadding","useLayout","layoutName","GU","HeadRow","theme","useTheme","sidePadding","hidden","length","textStyle","surfaceContentSecondary","border","Entry","memo","firstRow","onToggle","expansion","entryIndex","handleToggle","handleSelectChange","check","selected","EntryRow","mode","surfaceSelected","compact","first","last","EntryExpansion","alignChildOnCell","cellsCount","freeLayoutContentHeight","setFreeLayoutContentHeight","handleFreeLayoutContentRef","element","getBoundingClientRect","height","freeLayout","Transition","springs","smooth","precision","show","surfaceUnder","OpenedSurfaceBorder","child","i","Toggle","ToggleButton"],"mappings":"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"}
\No newline at end of file