UNPKG

24.7 kBSource Map (JSON)View Raw
1{"version":3,"file":"DataView.js","sources":["../src/components/DataView/DataView.js"],"sourcesContent":["import React, { useEffect, useCallback, useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { noop, warnOnce } from '../../utils'\nimport { textStyle, GU } from '../../style'\nimport { useTheme } from '../../theme'\nimport Box from '../../components/Box/Box'\nimport Pagination from '../../components/Pagination/Pagination'\nimport { useLayout } from '../../components/Layout/Layout'\nimport { TableView } from './TableView'\nimport { ListView } from './ListView'\nimport EmptyState from './EmptyState'\n\nfunction prepareEntries(entries, from, to, selectedIndexes) {\n return entries.slice(from, to).map((entry, index) => {\n const entryIndex = from + index\n const selected = selectedIndexes.includes(entryIndex)\n return { value: entry || null, index: entryIndex, selected }\n })\n}\n\nfunction prepareFields(fields) {\n return fields.map((fieldFromProps, index, fields) => {\n // Convert non-object fields (e.g. a simple string) into objects\n const field =\n fieldFromProps && fieldFromProps.label\n ? fieldFromProps\n : { label: fieldFromProps }\n\n // Auto align the last column to the end (right)\n if (!field.align) {\n field.align =\n index === fields.length - 1 && fields.length > 1 ? 'end' : 'start'\n }\n\n return field\n })\n}\n\nfunction entryExpansion(content) {\n // Rows\n if (Array.isArray(content) && content.length > 0) {\n return {\n content,\n freeLayout: false,\n }\n }\n // Free layout\n if (content && !Array.isArray(content)) {\n return {\n content: [content],\n freeLayout: true,\n }\n }\n // No expansion\n return {\n content: [],\n freeLayout: false,\n }\n}\n\nfunction renderEntries(\n entries,\n { fields, renderEntry, renderEntryActions, renderEntryExpansion, mode }\n) {\n return entries.map(entry => {\n const { value, index, selected } = entry\n\n let entryNodes = renderEntry(value, index, { selected, mode })\n\n if (!Array.isArray(entryNodes)) {\n entryNodes = []\n }\n\n // Create undefined cells too\n while (entryNodes.length < fields.length) {\n entryNodes.push(null)\n }\n\n const expansion = entryExpansion(\n renderEntryExpansion\n ? renderEntryExpansion(value, index, { selected, mode })\n : null\n )\n\n const actions = renderEntryActions\n ? renderEntryActions(value, index, { selected, mode })\n : null\n\n return {\n actions,\n entryNodes,\n expansion,\n index,\n selected,\n }\n })\n}\n\nfunction useSelection(entries, selection, onSelectEntries) {\n // Only used if `selection` is not passed via props. The selection supports\n // both a managed and a controlled mode, to provide a better developer\n // experience out of the box.\n const [selectionManaged, setSelectionManaged] = useState([])\n\n const currentSelection =\n selection === undefined ? selectionManaged : selection\n\n const updateSelection = useCallback(\n newSelection => {\n // Managed state\n if (selection === undefined) {\n setSelectionManaged(newSelection)\n }\n\n // Useful to notify, even in managed mode\n onSelectEntries(\n [...newSelection].sort().map(index => entries[index]),\n newSelection\n )\n },\n [selection, onSelectEntries, entries]\n )\n\n const allSelected = useMemo(() => {\n // none selected\n if (currentSelection.length === 0) {\n return -1\n }\n // all selected\n if (currentSelection.length === entries.length) {\n return 1\n }\n // some selected\n return 0\n }, [entries, currentSelection])\n\n const toggleEntrySelect = useCallback(\n entryIndex => {\n updateSelection(\n currentSelection.includes(entryIndex)\n ? currentSelection.filter(index => index !== entryIndex)\n : [...currentSelection, entryIndex]\n )\n },\n [updateSelection, currentSelection]\n )\n\n const selectAll = useCallback(() => {\n updateSelection(\n currentSelection.length === 0 ? entries.map((_, index) => index) : []\n )\n }, [entries, currentSelection, updateSelection])\n\n return {\n allSelected,\n selectAll,\n toggleEntrySelect,\n selectedIndexes: currentSelection,\n }\n}\n\nfunction deprecatedEmptyStatePropsCompat({\n emptyState,\n statusEmpty,\n statusLoading,\n statusEmptyFilters,\n statusEmptySearch,\n}) {\n for (const [propName, propValue, emptyStateName, partName] of [\n ['statusEmpty', statusEmpty, 'default', 'title'],\n ['statusEmptyFilters', statusEmptyFilters, 'empty-filters', 'subtitle'],\n ['statusEmptySearch', statusEmptySearch, 'empty-search', 'subtitle'],\n ['statusLoading', statusLoading, 'loading', 'title'],\n ]) {\n if (!propValue) {\n continue\n }\n\n warnOnce(\n `DataView:${propName}`,\n `DataView: the ${propName} prop is now deprecated, please use emptyState instead.`\n )\n\n // Only set the default state title if not set already\n if (!emptyState[emptyStateName] || !emptyState[emptyStateName][partName]) {\n emptyState[emptyStateName] = {\n ...emptyState[emptyStateName],\n [partName]: propValue,\n }\n }\n }\n\n return emptyState\n}\n\nconst DataView = React.memo(function DataView({\n emptyState,\n entries,\n entriesPerPage,\n fields,\n heading,\n mode,\n onPageChange,\n onSelectEntries,\n onStatusEmptyClear,\n page,\n renderEntry,\n renderEntryActions,\n renderEntryExpansion,\n renderSelectionCount,\n selection,\n status,\n tableRowHeight,\n\n // deprecated\n renderEntryChild,\n statusEmpty,\n statusEmptyFilters,\n statusEmptySearch,\n statusLoading,\n}) {\n if (renderEntryChild && !renderEntryExpansion) {\n warnOnce(\n 'DataView:renderEntryChild',\n 'DataView: the renderEntryChild prop has been renamed ' +\n 'renderEntryExpansion and will be removed in a future version. ' +\n 'Please use the new name.'\n )\n renderEntryExpansion = renderEntryChild\n }\n\n if (renderEntryExpansion && onSelectEntries) {\n warnOnce(\n 'DataView: renderEntryExpansion + onSelectEntries',\n 'A DataView cannot be made selectable with some of its entries ' +\n 'expandable. Please use only one of renderEntryExpansion or ' +\n 'onSelectEntries at a time. Ignoring renderEntryExpansion.'\n )\n renderEntryExpansion = undefined\n }\n\n emptyState = deprecatedEmptyStatePropsCompat({\n emptyState,\n statusEmpty,\n statusEmptyFilters,\n statusEmptySearch,\n statusLoading,\n })\n\n // Only used if `page` is not passed. The pagination supports both a\n // managed and a controlled mode, to provide a better developer experience\n // out of the box.\n const [pageManaged, setPageManaged] = useState(0)\n\n const handlePageChange = useCallback(\n newPage => {\n // Managed state\n if (page === undefined) {\n setPageManaged(newPage)\n }\n\n // Useful to notify, even in managed mode\n onPageChange(newPage)\n },\n [onPageChange, page]\n )\n\n // Reset managed pagination if the entries or the pagination changes.\n useEffect(() => {\n setPageManaged(0)\n }, [entries])\n\n const selectedPage = page === undefined ? pageManaged : page\n\n const theme = useTheme()\n const { layoutName } = useLayout()\n\n const listMode =\n mode === 'list' || (mode !== 'table' && layoutName === 'small')\n\n const {\n allSelected,\n selectAll,\n toggleEntrySelect,\n selectedIndexes,\n } = useSelection(entries, selection, onSelectEntries)\n\n const hasAnyActions = Boolean(renderEntryActions)\n const hasAnyExpansion = Boolean(renderEntryExpansion)\n const canSelect = Boolean(onSelectEntries)\n\n // If entriesPerPage is -1 (or 0): no pagination\n if (entriesPerPage < 1) {\n entriesPerPage = entries.length\n }\n\n const pages = Math.ceil(entries.length / entriesPerPage)\n\n const displayFrom = entriesPerPage * selectedPage\n const displayTo = displayFrom + entriesPerPage\n const displayedEntries = prepareEntries(\n entries,\n displayFrom,\n displayTo,\n selectedIndexes\n )\n\n const preparedFields = prepareFields(fields)\n const renderedEntries = renderEntries(displayedEntries, {\n fields,\n renderEntry,\n renderEntryActions,\n renderEntryExpansion,\n mode: listMode ? 'list' : 'table',\n })\n\n const alignChildOnField = fields.findIndex(field => field && field.childStart)\n\n const emptyEntries = renderedEntries.length === 0\n\n return (\n <Box padding={0}>\n {heading && (\n <div\n css={`\n padding: ${2 * GU}px ${layoutName === 'small' ? 2 * GU : 3 * GU}px;\n `}\n >\n {typeof heading === 'string' ? (\n <h1\n css={`\n margin-bottom: ${2 * GU}px;\n ${textStyle('body2')};\n `}\n >\n {heading}\n </h1>\n ) : (\n heading\n )}\n </div>\n )}\n\n {!emptyEntries &&\n (listMode ? (\n <ListView\n allSelected={allSelected}\n entries={renderedEntries}\n fields={preparedFields}\n hasAnyExpansion={hasAnyExpansion}\n onSelect={toggleEntrySelect}\n onSelectAll={selectAll}\n renderSelectionCount={renderSelectionCount}\n rowHeight={tableRowHeight}\n selectable={canSelect}\n />\n ) : (\n <TableView\n alignChildOnField={Math.min(\n Math.max(-1, alignChildOnField),\n fields.length - 1\n )}\n allSelected={allSelected}\n entries={renderedEntries}\n fields={preparedFields}\n hasAnyActions={hasAnyActions}\n hasAnyExpansion={hasAnyExpansion}\n onSelect={toggleEntrySelect}\n onSelectAll={selectAll}\n renderSelectionCount={renderSelectionCount}\n rowHeight={tableRowHeight}\n selectable={canSelect}\n selectedCount={selectedIndexes.length}\n />\n ))}\n\n {emptyEntries && (\n <EmptyState\n status={status}\n configurator={emptyState}\n onStatusEmptyClear={onStatusEmptyClear}\n />\n )}\n\n {pages > 1 && (\n <div\n css={`\n border-top: 1px solid ${theme.border};\n `}\n >\n <Pagination\n pages={pages}\n selected={selectedPage}\n onChange={handlePageChange}\n touchMode={layoutName === 'small'}\n />\n </div>\n )}\n </Box>\n )\n})\n\nDataView.propTypes = {\n page: PropTypes.number,\n entries: PropTypes.array.isRequired,\n entriesPerPage: PropTypes.number,\n fields: PropTypes.array.isRequired,\n heading: PropTypes.node,\n mode: PropTypes.oneOf(['adaptive', 'table', 'list']),\n onPageChange: PropTypes.func,\n onSelectEntries: PropTypes.func,\n renderEntry: PropTypes.func.isRequired,\n renderEntryActions: PropTypes.func,\n renderEntryExpansion: PropTypes.func,\n renderSelectionCount: PropTypes.func,\n selection: PropTypes.array,\n tableRowHeight: PropTypes.number,\n status: PropTypes.oneOf([\n 'default',\n 'empty-filters',\n 'empty-search',\n 'loading',\n ]),\n onStatusEmptyClear: PropTypes.func,\n emptyState: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n\n // deprecated\n renderEntryChild: PropTypes.func,\n statusEmpty: PropTypes.node,\n statusLoading: PropTypes.node,\n statusEmptyFilters: PropTypes.node,\n statusEmptySearch: PropTypes.node,\n}\n\nDataView.defaultProps = {\n emptyState: {},\n entriesPerPage: 10,\n mode: 'adaptive',\n onPageChange: noop,\n renderSelectionCount: count => `${count} items selected`,\n status: 'default',\n tableRowHeight: 8 * GU,\n}\n\nexport default DataView\n"],"names":["prepareEntries","entries","from","to","selectedIndexes","slice","map","entry","index","entryIndex","selected","includes","value","prepareFields","fields","fieldFromProps","field","label","align","length","entryExpansion","content","Array","isArray","freeLayout","renderEntries","renderEntry","renderEntryActions","renderEntryExpansion","mode","entryNodes","push","expansion","actions","useSelection","selection","onSelectEntries","useState","selectionManaged","setSelectionManaged","currentSelection","undefined","updateSelection","useCallback","newSelection","_toConsumableArray","sort","allSelected","useMemo","toggleEntrySelect","filter","selectAll","_","deprecatedEmptyStatePropsCompat","emptyState","statusEmpty","statusLoading","statusEmptyFilters","statusEmptySearch","propName","propValue","emptyStateName","partName","warnOnce","DataView","React","memo","entriesPerPage","heading","onPageChange","onStatusEmptyClear","page","renderSelectionCount","status","tableRowHeight","renderEntryChild","pageManaged","setPageManaged","handlePageChange","newPage","useEffect","selectedPage","theme","useTheme","useLayout","layoutName","listMode","hasAnyActions","Boolean","hasAnyExpansion","canSelect","pages","Math","ceil","displayFrom","displayTo","displayedEntries","preparedFields","renderedEntries","alignChildOnField","findIndex","childStart","emptyEntries","Box","GU","textStyle","ListView","TableView","min","max","EmptyState","border","Pagination","propTypes","PropTypes","number","array","isRequired","node","oneOf","func","oneOfType","object","defaultProps","noop","count"],"mappings":"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"}
\No newline at end of file