{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/grid/index.tsx","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"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","sourcesContent":["import './utils';\n\nimport WidgetBase from '@dojo/framework/core/WidgetBase';\nimport diffProperty from '@dojo/framework/core/decorators/diffProperty';\nimport { reference } from '@dojo/framework/core/diff';\nimport { DNode } from '@dojo/framework/core/interfaces';\nimport Dimensions from '@dojo/framework/core/meta/Dimensions';\nimport Resize from '@dojo/framework/core/meta/Resize';\nimport I18nMixin, { I18nProperties } from '@dojo/framework/core/mixins/I18n';\nimport ThemedMixin, { ThemedProperties, theme } from '@dojo/framework/core/mixins/Themed';\nimport { v, w } from '@dojo/framework/core/vdom';\nimport { Store } from '@dojo/framework/stores/Store';\n\nimport * as css from '../theme/default/grid.m.css';\nimport Body from './Body';\nimport Footer from './Footer';\nimport Header, { FilterRenderer, SortRenderer } from './Header';\nimport PaginatedBody from './PaginatedBody';\nimport PaginatedFooter from './PaginatedFooter';\nimport { ColumnConfig, Fetcher, GridState, Updater } from './interfaces';\nimport {\n\tclearSelectionProcess,\n\tfetcherProcess,\n\tfilterProcess,\n\tpageChangeProcess,\n\tselectionProcess,\n\tsortProcess,\n\tupdaterProcess\n} from './processes';\nimport * as fixedCss from './styles/grid.m.css';\n\nconst defaultGridMeta = {\n\tpage: 1,\n\ttotal: undefined,\n\tsort: undefined,\n\tfilter: undefined,\n\tisSorting: false,\n\teditedRow: undefined,\n\tselection: []\n};\n\nexport interface CustomRenderers {\n\tsortRenderer?: SortRenderer;\n\tfilterRenderer?: FilterRenderer;\n}\n\nexport interface GridProperties<S> extends I18nProperties, ThemedProperties {\n\t/** The full configuration for the grid columns */\n\tcolumnConfig: ColumnConfig[];\n\t/** function that returns results for the page reflected */\n\tfetcher: Fetcher<S>;\n\t/** gird height in px */\n\theight: number;\n\t/** function that updates an item from a edit made in the grid */\n\tupdater?: Updater<S>;\n\t/** options store, if no store is passed each grid will factory their own grid */\n\tstore?: Store<S>;\n\t/** the path to store the grid data in */\n\tstoreId?: string;\n\t/** set of custom renderers for sorting or filtering */\n\tcustomRenderers?: CustomRenderers;\n\t/** when set uses traditional pagination */\n\tpagination?: boolean;\n\t/** handler for row selection */\n\tonRowSelect?: (rowData: S[]) => void;\n}\n\nconst MIN_COLUMN_WIDTH = 100;\n\n@theme(css)\nexport default class Grid<S> extends I18nMixin(ThemedMixin(WidgetBase))<GridProperties<S>> {\n\tprivate _store = new Store<GridState<S>>();\n\tprivate _handle: any;\n\tprivate _scrollLeft = 0;\n\tprivate _pageSize = 100;\n\tprivate _columnWidths: { [index: string]: number } | undefined;\n\tprivate _gridWidth = 0;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._handle = this._store.onChange(this._store.path('_grid'), this.invalidate.bind(this));\n\t}\n\n\t@diffProperty('store', reference)\n\tprotected onStoreProperty(previous: any, current: any) {\n\t\tconst { storeId = '_grid' } = current;\n\t\tthis._handle.remove();\n\t\tthis._store = current.store;\n\t\tthis._handle = this._store.onChange(this._store.path(storeId), () => {\n\t\t\tthis.invalidate();\n\t\t});\n\t}\n\n\tprivate _getProperties() {\n\t\tconst { storeId = '_grid' } = this.properties;\n\t\treturn { ...this.properties, storeId };\n\t}\n\n\tprivate _getBodyDimensions() {\n\t\tconst { height } = this.properties;\n\t\tconst headerWrapper = this.meta(Dimensions).get('header-wrapper');\n\t\tconst {\n\t\t\tsize: { height: headerHeight, width: bodyWidth }\n\t\t} = this.meta(Dimensions).get('header');\n\t\tconst {\n\t\t\tsize: { height: footerHeight }\n\t\t} = this.meta(Dimensions).get('footer');\n\n\t\treturn {\n\t\t\theaderWidth: headerWrapper.size.width,\n\t\t\tbodyHeight: footerHeight && footerHeight ? height - headerHeight - footerHeight : 0,\n\t\t\tbodyWidth\n\t\t};\n\t}\n\n\tprivate _onColumnResize(index: number, value: number) {\n\t\tconst { columnConfig } = this.properties;\n\t\tif (!this._columnWidths) {\n\t\t\treturn;\n\t\t}\n\t\tconst currentColumnWidth = this._columnWidths[columnConfig[index].id];\n\t\tif (currentColumnWidth <= MIN_COLUMN_WIDTH && value < 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (currentColumnWidth + value <= MIN_COLUMN_WIDTH) {\n\t\t\tvalue = value - (currentColumnWidth + value - MIN_COLUMN_WIDTH);\n\t\t}\n\n\t\tthis._columnWidths = {\n\t\t\t...this._columnWidths,\n\t\t\t[columnConfig[index].id]: currentColumnWidth + value\n\t\t};\n\t\tthis.invalidate();\n\t}\n\n\tprivate _fetcher(page: number, pageSize: number) {\n\t\tconst { storeId, fetcher } = this._getProperties();\n\t\tfetcherProcess(this._store)({ id: storeId, fetcher, page, pageSize });\n\t}\n\n\tprivate _sorter(columnId: string, direction: 'asc' | 'desc') {\n\t\tconst { storeId, fetcher, onRowSelect } = this._getProperties();\n\t\tif (onRowSelect) {\n\t\t\tconst selectedIndexes =\n\t\t\t\tthis._store.get(this._store.path(storeId, 'meta', 'selection')) || [];\n\t\t\tselectedIndexes.length && onRowSelect([]);\n\t\t}\n\t\tsortProcess(this._store)({ id: storeId, fetcher, columnId, direction });\n\t}\n\n\tprivate _filterer(columnId: string, value: any) {\n\t\tconst { storeId, fetcher, onRowSelect } = this._getProperties();\n\t\tif (onRowSelect) {\n\t\t\tconst selectedIndexes =\n\t\t\t\tthis._store.get(this._store.path(storeId, 'meta', 'selection')) || [];\n\t\t\tselectedIndexes.length && onRowSelect([]);\n\t\t}\n\t\tfilterProcess(this._store)({ id: storeId, fetcher, filterOptions: { columnId, value } });\n\t}\n\n\tprivate _updater(page: number, rowNumber: number, columnId: string, value: string) {\n\t\tconst { storeId, updater } = this._getProperties();\n\t\tupdaterProcess(this._store)({ id: storeId, page, columnId, rowNumber, value, updater });\n\t}\n\n\tprivate _pageChange(page: number) {\n\t\tconst { pagination, storeId } = this._getProperties();\n\t\tif (pagination) {\n\t\t\tclearSelectionProcess(this._store)({ id: storeId });\n\t\t}\n\t\tpageChangeProcess(this._store)({ id: storeId, page });\n\t}\n\n\tprivate _selection(index: number, type: any) {\n\t\tconst { storeId, onRowSelect } = this._getProperties();\n\t\tselectionProcess(this._store)({ id: storeId, index, type });\n\t\tconst selectedIndexes =\n\t\t\tthis._store.get(this._store.path(storeId, 'meta', 'selection')) || [];\n\t\tconst items = [];\n\t\tconst data = this._store.get(this._store.path(storeId, 'data', 'pages'));\n\t\tconst pageNumber = this._store.get(this._store.path(storeId, 'meta', 'page'));\n\n\t\tfor (let i = 0; i < selectedIndexes.length; i++) {\n\t\t\tconst selectedIndex = selectedIndexes[i];\n\t\t\tconst offset = Math.floor(selectedIndex / this._pageSize) + 1;\n\t\t\tconst itemIndex = selectedIndex - (offset - 1) * this._pageSize;\n\t\t\tif (data[`page-${pageNumber}`]) {\n\t\t\t\titems.push(data[`page-${pageNumber}`][itemIndex]);\n\t\t\t}\n\t\t}\n\t\tonRowSelect && onRowSelect(items);\n\t}\n\n\tprivate _onScroll(value: number) {\n\t\tthis._scrollLeft = value;\n\t\tthis.invalidate();\n\t}\n\n\tprotected render(): DNode {\n\t\tconst {\n\t\t\ti18nBundle,\n\t\t\tcolumnConfig,\n\t\t\tstoreId,\n\t\t\ttheme,\n\t\t\tclasses,\n\t\t\tpagination = false,\n\t\t\tcustomRenderers = {},\n\t\t\tonRowSelect\n\t\t} = this._getProperties();\n\t\tconst { sortRenderer, filterRenderer } = customRenderers;\n\n\t\tif (!columnConfig || !this.properties.fetcher) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst meta = this._store.get(this._store.path(storeId, 'meta')) || defaultGridMeta;\n\t\tconst pages = this._store.get(this._store.path(storeId, 'data', 'pages')) || {};\n\t\tconst hasFilters = columnConfig.some((config) => !!config.filterable);\n\t\tconst hasResizableColumns = columnConfig.some((config) => !!config.resizable);\n\t\tconst { bodyHeight, bodyWidth, headerWidth } = this._getBodyDimensions();\n\t\tthis.meta(Resize).get('root');\n\n\t\tif (bodyWidth && headerWidth && hasResizableColumns && !this._columnWidths) {\n\t\t\tconst width = headerWidth / columnConfig.length;\n\t\t\tthis._columnWidths = columnConfig.reduce(\n\t\t\t\t(sizes, { id }) => {\n\t\t\t\t\tsizes[id] = Math.max(MIN_COLUMN_WIDTH, width);\n\t\t\t\t\treturn sizes;\n\t\t\t\t},\n\t\t\t\t{} as any\n\t\t\t);\n\t\t\tthis._gridWidth = Math.max(bodyWidth, MIN_COLUMN_WIDTH * columnConfig.length);\n\t\t}\n\n\t\treturn v(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tkey: 'root',\n\t\t\t\tclasses: [this.variant(), this.theme(css.root), fixedCss.rootFixed],\n\t\t\t\trole: 'table',\n\t\t\t\t'aria-rowcount': meta.total ? `${meta.total}` : undefined\n\t\t\t},\n\t\t\t[\n\t\t\t\tv(\n\t\t\t\t\t'div',\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: 'header',\n\t\t\t\t\t\tscrollLeft: this._scrollLeft,\n\t\t\t\t\t\tstyles:\n\t\t\t\t\t\t\thasResizableColumns && this._gridWidth\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\twidth: `${this._gridWidth}px`\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: {},\n\t\t\t\t\t\tclasses: [\n\t\t\t\t\t\t\tthis.theme(css.header),\n\t\t\t\t\t\t\tfixedCss.headerFixed,\n\t\t\t\t\t\t\thasFilters ? this.theme(css.filterGroup) : null\n\t\t\t\t\t\t],\n\t\t\t\t\t\trow: 'rowgroup'\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tv('div', { key: 'header-wrapper' }, [\n\t\t\t\t\t\t\tw(Header, {\n\t\t\t\t\t\t\t\tkey: 'header-row',\n\t\t\t\t\t\t\t\ti18nBundle,\n\t\t\t\t\t\t\t\ttheme,\n\t\t\t\t\t\t\t\tcolumnWidths: this._columnWidths,\n\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\tcolumnConfig,\n\t\t\t\t\t\t\t\tsorter: this._sorter,\n\t\t\t\t\t\t\t\tsort: meta.sort,\n\t\t\t\t\t\t\t\tfilter: meta.filter,\n\t\t\t\t\t\t\t\tfilterer: this._filterer,\n\t\t\t\t\t\t\t\tsortRenderer,\n\t\t\t\t\t\t\t\tfilterRenderer,\n\t\t\t\t\t\t\t\tonColumnResize: this._onColumnResize\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t])\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t\tbodyHeight\n\t\t\t\t\t? pagination\n\t\t\t\t\t\t? w(PaginatedBody, {\n\t\t\t\t\t\t\t\tkey: 'paginated-body',\n\t\t\t\t\t\t\t\ti18nBundle,\n\t\t\t\t\t\t\t\ttheme,\n\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\tpages,\n\t\t\t\t\t\t\t\tcolumnWidths: this._columnWidths,\n\t\t\t\t\t\t\t\tpageNumber: meta.page,\n\t\t\t\t\t\t\t\tpageSize: this._pageSize,\n\t\t\t\t\t\t\t\tonScroll: this._onScroll,\n\t\t\t\t\t\t\t\tcolumnConfig,\n\t\t\t\t\t\t\t\tfetcher: this._fetcher,\n\t\t\t\t\t\t\t\tupdater: this._updater,\n\t\t\t\t\t\t\t\theight: bodyHeight,\n\t\t\t\t\t\t\t\twidth: hasResizableColumns ? this._gridWidth : undefined,\n\t\t\t\t\t\t\t\tonRowSelect: onRowSelect ? this._selection : undefined,\n\t\t\t\t\t\t\t\tselectedRows: meta.selection\n\t\t\t\t\t\t  })\n\t\t\t\t\t\t: w(Body, {\n\t\t\t\t\t\t\t\tkey: 'body',\n\t\t\t\t\t\t\t\ti18nBundle,\n\t\t\t\t\t\t\t\ttheme,\n\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\tpages,\n\t\t\t\t\t\t\t\tcolumnWidths: this._columnWidths,\n\t\t\t\t\t\t\t\ttotalRows: meta.total,\n\t\t\t\t\t\t\t\tpageSize: this._pageSize,\n\t\t\t\t\t\t\t\tcolumnConfig,\n\t\t\t\t\t\t\t\tfetcher: this._fetcher,\n\t\t\t\t\t\t\t\tpageChange: this._pageChange,\n\t\t\t\t\t\t\t\tupdater: this._updater,\n\t\t\t\t\t\t\t\tonScroll: this._onScroll,\n\t\t\t\t\t\t\t\theight: bodyHeight,\n\t\t\t\t\t\t\t\twidth: hasResizableColumns ? this._gridWidth : undefined,\n\t\t\t\t\t\t\t\tonRowSelect: onRowSelect ? this._selection : undefined,\n\t\t\t\t\t\t\t\tselectedRows: meta.selection\n\t\t\t\t\t\t  })\n\t\t\t\t\t: null,\n\t\t\t\tv('div', { key: 'footer' }, [\n\t\t\t\t\tpagination\n\t\t\t\t\t\t? w(PaginatedFooter, {\n\t\t\t\t\t\t\t\ti18nBundle,\n\t\t\t\t\t\t\t\ttheme,\n\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\ttotal: meta.total,\n\t\t\t\t\t\t\t\tpage: meta.page,\n\t\t\t\t\t\t\t\tpageSize: this._pageSize,\n\t\t\t\t\t\t\t\tonPageChange: (page: number) => {\n\t\t\t\t\t\t\t\t\tthis._pageChange(page);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t  })\n\t\t\t\t\t\t: w(Footer, {\n\t\t\t\t\t\t\t\tkey: 'footer-row',\n\t\t\t\t\t\t\t\ti18nBundle,\n\t\t\t\t\t\t\t\ttheme,\n\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\ttotal: meta.total,\n\t\t\t\t\t\t\t\tpage: meta.page,\n\t\t\t\t\t\t\t\tpageSize: this._pageSize\n\t\t\t\t\t\t  })\n\t\t\t\t])\n\t\t\t]\n\t\t);\n\t}\n}\n"]}