box-ui-elements 15.0.0-beta.39 → 15.0.0-beta.41
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/CONTRIBUTING.md +1 -1
- package/es/features/content-explorer/item-list/ItemList.js +1 -0
- package/es/features/content-explorer/item-list/ItemList.js.flow +1 -0
- package/es/features/content-explorer/item-list/ItemList.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemListName.js +13 -2
- package/es/features/content-explorer/item-list/ItemListName.js.flow +3 -2
- package/es/features/content-explorer/item-list/ItemListName.js.map +1 -1
- package/package.json +1 -1
- package/src/features/content-explorer/item-list/ItemList.js +1 -0
- package/src/features/content-explorer/item-list/ItemListName.js +3 -2
- package/src/features/content-explorer/item-list/__tests__/ItemListName.test.js +16 -2
package/CONTRIBUTING.md
CHANGED
|
@@ -48,7 +48,7 @@ longer description here if necessary.
|
|
|
48
48
|
include BREAKING CHANGE keyword for breaking changes.
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
The message summary should be a one-sentence description of the change, and it must be 72 characters in length or shorter. For a list of tags, please [click here](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#type-enum). See the [default release rules](https://github.com/conventional-changelog/commitlint/blob/master/%40commitlint/config-conventional/index.js) based on the commit tag. Note that you must include the exact keyword "BREAKING CHANGE" for breaking changes, to learn more [click here](https://github.com/conventional-changelog/conventional-changelog/blob/master/packages/conventional-changelog-conventionalcommits/parser-opts.js#L13).
|
|
51
|
+
The message summary should be a one-sentence description of the change, and it must be 72 characters in length or shorter. For a list of tags, please [click here](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#type-enum). See the [default release rules](https://github.com/conventional-changelog/commitlint/blob/master/%40commitlint/config-conventional/index.js) based on the commit tag. Note that you must include the exact keyword "BREAKING CHANGE" for breaking changes, to learn more [click here](https://github.com/conventional-changelog/conventional-changelog/blob/master/packages/conventional-changelog-conventionalcommits/parser-opts.js#L13). IMPORTANT: Add "BREAKING CHANGE" to your PR title as well, because when multiple commits are merged the PR title takes precedence as the merge commit message.
|
|
52
52
|
|
|
53
53
|
Shown below are examples of the release type that will be done based on a commit message.
|
|
54
54
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/content-explorer/item-list/ItemList.js"],"names":["PropTypes","React","classNames","getProp","Column","Table","defaultTableRowRenderer","withInfiniteLoader","ContentExplorerModePropType","ItemsPropType","ItemsMapPropType","ItemListIcon","ItemListLoadingPlaceholder","ItemListName","ItemListButton","TABLE_CELL_CLASS","InfiniteLoaderTable","itemIconCellRenderer","rendererParams","rowData","type","extension","hasCollaborations","isExternallyOwned","itemIconRenderer","columnData","isItemSelected","itemId","selectedItems","undefined","itemNameCellRenderer","rowIndex","id","name","label","onItemNameClick","itemNameLinkRenderer","event","renderItemListButton","contentExplorerMode","isActionDisabled","isDisabled","itemButtonCellRenderer","itemButtonRenderer","itemLoadingPlaceholderRenderer","loadingPlaceholderColumnWidths","columnIndex","ItemList","className","items","numItemsPerPage","numTotalItems","onItemClick","onItemDoubleClick","onLoadMoreItems","noItemsRenderer","width","height","getRow","index","getRowClassNames","item","result","isLoading","renderRow","key","style","rowClassName","columns","itemRowClassname","testId","map","column","props","defaultRow","cloneElement","TableComponent","tableProps","infiniteLoaderProps","isRowLoaded","loadMoreRows","minimumBatchSize","rowCount","threshold","length","displayName","propTypes","string","isRequired","number","func","ItemListBase"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport getProp from 'lodash/get';\n\nimport Column from '@box/react-virtualized/dist/commonjs/Table/Column';\nimport Table from '@box/react-virtualized/dist/commonjs/Table';\nimport defaultTableRowRenderer from '@box/react-virtualized/dist/commonjs/Table/defaultRowRenderer';\nimport '@box/react-virtualized/styles.css';\n\nimport { withInfiniteLoader } from '../../../components/react-virtualized-helpers';\n\nimport { ContentExplorerModePropType, ItemsPropType, ItemsMapPropType } from '../prop-types';\n\nimport ItemListIcon from './ItemListIcon';\nimport ItemListLoadingPlaceholder from './ItemListLoadingPlaceholder';\nimport ItemListName from './ItemListName';\nimport ItemListButton from './ItemListButton';\n\nimport './ItemList.scss';\n\nconst TABLE_CELL_CLASS = 'table-cell';\n\nconst InfiniteLoaderTable = withInfiniteLoader(Table);\n\nconst itemIconCellRenderer = rendererParams => {\n const {\n rowData: { type, extension, hasCollaborations, isExternallyOwned },\n columnData: { itemIconRenderer },\n } = rendererParams;\n return (\n <div className={TABLE_CELL_CLASS}>\n {itemIconRenderer ? (\n itemIconRenderer(rendererParams)\n ) : (\n <ItemListIcon\n type={type}\n extension={extension}\n hasCollaborations={hasCollaborations}\n isExternallyOwned={isExternallyOwned}\n />\n )}\n </div>\n );\n};\n\nconst isItemSelected = (itemId, selectedItems) => selectedItems[itemId] !== undefined;\n\nconst itemNameCellRenderer = rendererParams => {\n const {\n rowIndex,\n rowData: { id, type, name, label },\n columnData: { selectedItems, onItemNameClick, itemNameLinkRenderer },\n } = rendererParams;\n // loading placeholder may not have name and ItemListName requires name\n return (\n name && (\n <div className={TABLE_CELL_CLASS}>\n <ItemListName\n type={type}\n name={name}\n label={label}\n isSelected={isItemSelected(id, selectedItems)}\n onClick={event => onItemNameClick(event, rowIndex)}\n linkRenderer={itemNameLinkRenderer}\n />\n </div>\n )\n );\n};\n\nconst renderItemListButton = (contentExplorerMode, id, isActionDisabled, isDisabled, name, selectedItems) =>\n name && (\n <ItemListButton\n contentExplorerMode={contentExplorerMode}\n id={id}\n isDisabled={isActionDisabled}\n isSelected={isItemSelected(id, selectedItems)}\n name={name}\n />\n );\n\nconst itemButtonCellRenderer = rendererParams => {\n const {\n columnData: { contentExplorerMode, itemButtonRenderer, selectedItems },\n rowData: { id, isActionDisabled, isDisabled, name },\n } = rendererParams;\n return (\n !isDisabled && (\n <div className={TABLE_CELL_CLASS}>\n {itemButtonRenderer\n ? itemButtonRenderer(rendererParams)\n : renderItemListButton(contentExplorerMode, id, isActionDisabled, isDisabled, name, selectedItems)}\n </div>\n )\n );\n};\n\nconst itemLoadingPlaceholderRenderer = rendererParams => {\n const { loadingPlaceholderColumnWidths, columnIndex } = rendererParams;\n return (\n <div className={TABLE_CELL_CLASS}>\n <ItemListLoadingPlaceholder\n width={loadingPlaceholderColumnWidths && loadingPlaceholderColumnWidths[columnIndex]}\n />\n </div>\n );\n};\n\nconst ItemList = ({\n contentExplorerMode,\n className = '',\n items,\n numItemsPerPage,\n numTotalItems,\n selectedItems = {},\n onItemClick,\n onItemDoubleClick,\n onItemNameClick,\n onLoadMoreItems,\n itemIconRenderer,\n itemNameLinkRenderer,\n itemButtonRenderer,\n noItemsRenderer,\n width,\n height,\n}) => {\n const getRow = ({ index }) => items[index];\n\n const getRowClassNames = (index, item) => {\n let result = index === -1 ? 'table-header' : 'table-row';\n\n if (isItemSelected(item.id, selectedItems)) {\n result = classNames('is-selected', result);\n }\n if (item && (item.isDisabled || item.isLoading)) {\n result = classNames('disabled', result);\n }\n\n return result;\n };\n\n const renderRow = rendererParams => {\n const { index, key, style, className: rowClassName, columns } = rendererParams;\n const item = items[index];\n const itemRowClassname = classNames(rowClassName, getRowClassNames(index, item));\n const testId = getProp(rendererParams, 'rowData.id', '');\n\n if (item.isLoading) {\n return (\n <div key={key} style={style} className={itemRowClassname} role=\"row\">\n {columns.map((column, columnIndex) => (\n <div\n key={columnIndex}\n className={column.props.className}\n style={column.props.style}\n role=\"gridcell\"\n >\n {itemLoadingPlaceholderRenderer({\n item,\n columnIndex,\n })}\n </div>\n ))}\n </div>\n );\n }\n\n const defaultRow = defaultTableRowRenderer({\n ...rendererParams,\n className: itemRowClassname,\n });\n return React.cloneElement(defaultRow, { 'data-testid': `item-row-${testId}` });\n };\n\n let TableComponent = Table;\n const tableProps = {};\n\n if (onLoadMoreItems) {\n TableComponent = InfiniteLoaderTable;\n tableProps.infiniteLoaderProps = {\n isRowLoaded: getRow,\n loadMoreRows: onLoadMoreItems,\n minimumBatchSize: numItemsPerPage,\n rowCount: numTotalItems,\n threshold: numItemsPerPage,\n };\n }\n\n return (\n <div className={classNames('content-explorer-item-list table', className)}>\n <TableComponent\n gridClassName=\"table-body\"\n headerClassName=\"table-header-item\"\n width={width}\n height={height}\n rowHeight={40}\n rowCount={items.length}\n onRowClick={onItemClick}\n onRowDoubleClick={onItemDoubleClick}\n rowGetter={getRow}\n rowRenderer={renderRow}\n noRowsRenderer={noItemsRenderer}\n {...tableProps}\n >\n <Column\n className=\"item-list-icon-col\"\n cellRenderer={itemIconCellRenderer}\n columnData={{\n itemIconRenderer,\n }}\n dataKey=\"icon\"\n width={32}\n />\n <Column\n className=\"item-list-name-col\"\n cellRenderer={itemNameCellRenderer}\n columnData={{\n selectedItems,\n onItemNameClick,\n itemNameLinkRenderer,\n }}\n dataKey=\"name\"\n width={0}\n flexGrow={1}\n flexShrink={0}\n />\n <Column\n className=\"item-list-button-col\"\n cellRenderer={itemButtonCellRenderer}\n columnData={{\n contentExplorerMode,\n itemButtonRenderer,\n selectedItems,\n }}\n dataKey=\"button\"\n width={30}\n />\n </TableComponent>\n </div>\n );\n};\n\nItemList.displayName = 'ItemList';\n\nItemList.propTypes = {\n className: PropTypes.string,\n contentExplorerMode: ContentExplorerModePropType.isRequired,\n items: ItemsPropType.isRequired,\n numItemsPerPage: PropTypes.number,\n numTotalItems: PropTypes.number,\n selectedItems: ItemsMapPropType.isRequired,\n onItemClick: PropTypes.func,\n onItemDoubleClick: PropTypes.func,\n onItemNameClick: PropTypes.func,\n onLoadMoreItems: PropTypes.func,\n itemIconRenderer: PropTypes.func,\n itemNameLinkRenderer: PropTypes.func,\n itemButtonRenderer: PropTypes.func,\n noItemsRenderer: PropTypes.func,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n};\n\nexport { ItemList as ItemListBase };\nexport default ItemList;\n"],"file":"ItemList.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/content-explorer/item-list/ItemList.js"],"names":["PropTypes","React","classNames","getProp","Column","Table","defaultTableRowRenderer","withInfiniteLoader","ContentExplorerModePropType","ItemsPropType","ItemsMapPropType","ItemListIcon","ItemListLoadingPlaceholder","ItemListName","ItemListButton","TABLE_CELL_CLASS","InfiniteLoaderTable","itemIconCellRenderer","rendererParams","rowData","type","extension","hasCollaborations","isExternallyOwned","itemIconRenderer","columnData","isItemSelected","itemId","selectedItems","undefined","itemNameCellRenderer","rowIndex","id","name","label","onItemNameClick","itemNameLinkRenderer","event","renderItemListButton","contentExplorerMode","isActionDisabled","isDisabled","itemButtonCellRenderer","itemButtonRenderer","itemLoadingPlaceholderRenderer","loadingPlaceholderColumnWidths","columnIndex","ItemList","className","items","numItemsPerPage","numTotalItems","onItemClick","onItemDoubleClick","onLoadMoreItems","noItemsRenderer","width","height","getRow","index","getRowClassNames","item","result","isLoading","renderRow","key","style","rowClassName","columns","itemRowClassname","testId","map","column","props","defaultRow","cloneElement","TableComponent","tableProps","infiniteLoaderProps","isRowLoaded","loadMoreRows","minimumBatchSize","rowCount","threshold","length","displayName","propTypes","string","isRequired","number","func","ItemListBase"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport getProp from 'lodash/get';\n\nimport Column from '@box/react-virtualized/dist/commonjs/Table/Column';\nimport Table from '@box/react-virtualized/dist/commonjs/Table';\nimport defaultTableRowRenderer from '@box/react-virtualized/dist/commonjs/Table/defaultRowRenderer';\nimport '@box/react-virtualized/styles.css';\n\nimport { withInfiniteLoader } from '../../../components/react-virtualized-helpers';\n\nimport { ContentExplorerModePropType, ItemsPropType, ItemsMapPropType } from '../prop-types';\n\nimport ItemListIcon from './ItemListIcon';\nimport ItemListLoadingPlaceholder from './ItemListLoadingPlaceholder';\nimport ItemListName from './ItemListName';\nimport ItemListButton from './ItemListButton';\n\nimport './ItemList.scss';\n\nconst TABLE_CELL_CLASS = 'table-cell';\n\nconst InfiniteLoaderTable = withInfiniteLoader(Table);\n\nconst itemIconCellRenderer = rendererParams => {\n const {\n rowData: { type, extension, hasCollaborations, isExternallyOwned },\n columnData: { itemIconRenderer },\n } = rendererParams;\n return (\n <div className={TABLE_CELL_CLASS}>\n {itemIconRenderer ? (\n itemIconRenderer(rendererParams)\n ) : (\n <ItemListIcon\n type={type}\n extension={extension}\n hasCollaborations={hasCollaborations}\n isExternallyOwned={isExternallyOwned}\n />\n )}\n </div>\n );\n};\n\nconst isItemSelected = (itemId, selectedItems) => selectedItems[itemId] !== undefined;\n\nconst itemNameCellRenderer = rendererParams => {\n const {\n rowIndex,\n rowData: { id, type, name, label },\n columnData: { selectedItems, onItemNameClick, itemNameLinkRenderer },\n } = rendererParams;\n // loading placeholder may not have name and ItemListName requires name\n return (\n name && (\n <div className={TABLE_CELL_CLASS}>\n <ItemListName\n itemId={id}\n type={type}\n name={name}\n label={label}\n isSelected={isItemSelected(id, selectedItems)}\n onClick={event => onItemNameClick(event, rowIndex)}\n linkRenderer={itemNameLinkRenderer}\n />\n </div>\n )\n );\n};\n\nconst renderItemListButton = (contentExplorerMode, id, isActionDisabled, isDisabled, name, selectedItems) =>\n name && (\n <ItemListButton\n contentExplorerMode={contentExplorerMode}\n id={id}\n isDisabled={isActionDisabled}\n isSelected={isItemSelected(id, selectedItems)}\n name={name}\n />\n );\n\nconst itemButtonCellRenderer = rendererParams => {\n const {\n columnData: { contentExplorerMode, itemButtonRenderer, selectedItems },\n rowData: { id, isActionDisabled, isDisabled, name },\n } = rendererParams;\n return (\n !isDisabled && (\n <div className={TABLE_CELL_CLASS}>\n {itemButtonRenderer\n ? itemButtonRenderer(rendererParams)\n : renderItemListButton(contentExplorerMode, id, isActionDisabled, isDisabled, name, selectedItems)}\n </div>\n )\n );\n};\n\nconst itemLoadingPlaceholderRenderer = rendererParams => {\n const { loadingPlaceholderColumnWidths, columnIndex } = rendererParams;\n return (\n <div className={TABLE_CELL_CLASS}>\n <ItemListLoadingPlaceholder\n width={loadingPlaceholderColumnWidths && loadingPlaceholderColumnWidths[columnIndex]}\n />\n </div>\n );\n};\n\nconst ItemList = ({\n contentExplorerMode,\n className = '',\n items,\n numItemsPerPage,\n numTotalItems,\n selectedItems = {},\n onItemClick,\n onItemDoubleClick,\n onItemNameClick,\n onLoadMoreItems,\n itemIconRenderer,\n itemNameLinkRenderer,\n itemButtonRenderer,\n noItemsRenderer,\n width,\n height,\n}) => {\n const getRow = ({ index }) => items[index];\n\n const getRowClassNames = (index, item) => {\n let result = index === -1 ? 'table-header' : 'table-row';\n\n if (isItemSelected(item.id, selectedItems)) {\n result = classNames('is-selected', result);\n }\n if (item && (item.isDisabled || item.isLoading)) {\n result = classNames('disabled', result);\n }\n\n return result;\n };\n\n const renderRow = rendererParams => {\n const { index, key, style, className: rowClassName, columns } = rendererParams;\n const item = items[index];\n const itemRowClassname = classNames(rowClassName, getRowClassNames(index, item));\n const testId = getProp(rendererParams, 'rowData.id', '');\n\n if (item.isLoading) {\n return (\n <div key={key} style={style} className={itemRowClassname} role=\"row\">\n {columns.map((column, columnIndex) => (\n <div\n key={columnIndex}\n className={column.props.className}\n style={column.props.style}\n role=\"gridcell\"\n >\n {itemLoadingPlaceholderRenderer({\n item,\n columnIndex,\n })}\n </div>\n ))}\n </div>\n );\n }\n\n const defaultRow = defaultTableRowRenderer({\n ...rendererParams,\n className: itemRowClassname,\n });\n return React.cloneElement(defaultRow, { 'data-testid': `item-row-${testId}` });\n };\n\n let TableComponent = Table;\n const tableProps = {};\n\n if (onLoadMoreItems) {\n TableComponent = InfiniteLoaderTable;\n tableProps.infiniteLoaderProps = {\n isRowLoaded: getRow,\n loadMoreRows: onLoadMoreItems,\n minimumBatchSize: numItemsPerPage,\n rowCount: numTotalItems,\n threshold: numItemsPerPage,\n };\n }\n\n return (\n <div className={classNames('content-explorer-item-list table', className)}>\n <TableComponent\n gridClassName=\"table-body\"\n headerClassName=\"table-header-item\"\n width={width}\n height={height}\n rowHeight={40}\n rowCount={items.length}\n onRowClick={onItemClick}\n onRowDoubleClick={onItemDoubleClick}\n rowGetter={getRow}\n rowRenderer={renderRow}\n noRowsRenderer={noItemsRenderer}\n {...tableProps}\n >\n <Column\n className=\"item-list-icon-col\"\n cellRenderer={itemIconCellRenderer}\n columnData={{\n itemIconRenderer,\n }}\n dataKey=\"icon\"\n width={32}\n />\n <Column\n className=\"item-list-name-col\"\n cellRenderer={itemNameCellRenderer}\n columnData={{\n selectedItems,\n onItemNameClick,\n itemNameLinkRenderer,\n }}\n dataKey=\"name\"\n width={0}\n flexGrow={1}\n flexShrink={0}\n />\n <Column\n className=\"item-list-button-col\"\n cellRenderer={itemButtonCellRenderer}\n columnData={{\n contentExplorerMode,\n itemButtonRenderer,\n selectedItems,\n }}\n dataKey=\"button\"\n width={30}\n />\n </TableComponent>\n </div>\n );\n};\n\nItemList.displayName = 'ItemList';\n\nItemList.propTypes = {\n className: PropTypes.string,\n contentExplorerMode: ContentExplorerModePropType.isRequired,\n items: ItemsPropType.isRequired,\n numItemsPerPage: PropTypes.number,\n numTotalItems: PropTypes.number,\n selectedItems: ItemsMapPropType.isRequired,\n onItemClick: PropTypes.func,\n onItemDoubleClick: PropTypes.func,\n onItemNameClick: PropTypes.func,\n onLoadMoreItems: PropTypes.func,\n itemIconRenderer: PropTypes.func,\n itemNameLinkRenderer: PropTypes.func,\n itemButtonRenderer: PropTypes.func,\n noItemsRenderer: PropTypes.func,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n};\n\nexport { ItemList as ItemListBase };\nexport default ItemList;\n"],"file":"ItemList.js"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
+
|
|
5
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
|
|
1
7
|
import PropTypes from 'prop-types';
|
|
2
8
|
import React from 'react';
|
|
3
9
|
import PlainButton from '../../../components/plain-button';
|
|
@@ -7,7 +13,9 @@ import { ItemTypePropType } from '../prop-types';
|
|
|
7
13
|
var ITEM_LIST_NAME_CLASS = 'item-list-name';
|
|
8
14
|
|
|
9
15
|
var ItemListName = function ItemListName(_ref) {
|
|
10
|
-
var
|
|
16
|
+
var _ref$itemId = _ref.itemId,
|
|
17
|
+
itemId = _ref$itemId === void 0 ? '' : _ref$itemId,
|
|
18
|
+
type = _ref.type,
|
|
11
19
|
name = _ref.name,
|
|
12
20
|
_ref$label = _ref.label,
|
|
13
21
|
label = _ref$label === void 0 ? '' : _ref$label,
|
|
@@ -31,7 +39,9 @@ var ItemListName = function ItemListName(_ref) {
|
|
|
31
39
|
};
|
|
32
40
|
|
|
33
41
|
var renderLink = function renderLink() {
|
|
34
|
-
return linkRenderer ? linkRenderer(
|
|
42
|
+
return linkRenderer ? linkRenderer(_objectSpread({}, linkProps, {
|
|
43
|
+
itemId: itemId
|
|
44
|
+
})) : React.createElement(PlainButton, linkProps);
|
|
35
45
|
};
|
|
36
46
|
|
|
37
47
|
return React.createElement("div", {
|
|
@@ -44,6 +54,7 @@ var ItemListName = function ItemListName(_ref) {
|
|
|
44
54
|
};
|
|
45
55
|
|
|
46
56
|
ItemListName.propTypes = {
|
|
57
|
+
itemId: PropTypes.string,
|
|
47
58
|
type: ItemTypePropType,
|
|
48
59
|
name: PropTypes.string.isRequired,
|
|
49
60
|
label: PropTypes.string,
|
|
@@ -9,7 +9,7 @@ import { ItemTypePropType } from '../prop-types';
|
|
|
9
9
|
|
|
10
10
|
const ITEM_LIST_NAME_CLASS = 'item-list-name';
|
|
11
11
|
|
|
12
|
-
const ItemListName = ({ type, name, label = '', isSelected = false, onClick, linkRenderer }) => {
|
|
12
|
+
const ItemListName = ({ itemId = '', type, name, label = '', isSelected = false, onClick, linkRenderer }) => {
|
|
13
13
|
const isFolder = type === ItemTypes.FOLDER;
|
|
14
14
|
|
|
15
15
|
const linkProps = {
|
|
@@ -26,7 +26,7 @@ const ItemListName = ({ type, name, label = '', isSelected = false, onClick, lin
|
|
|
26
26
|
/>,
|
|
27
27
|
],
|
|
28
28
|
};
|
|
29
|
-
const renderLink = () => (linkRenderer ? linkRenderer(linkProps) : <PlainButton {...linkProps} />);
|
|
29
|
+
const renderLink = () => (linkRenderer ? linkRenderer({ ...linkProps, itemId }) : <PlainButton {...linkProps} />);
|
|
30
30
|
|
|
31
31
|
return (
|
|
32
32
|
<div className="item-list-name-container">
|
|
@@ -37,6 +37,7 @@ const ItemListName = ({ type, name, label = '', isSelected = false, onClick, lin
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
ItemListName.propTypes = {
|
|
40
|
+
itemId: PropTypes.string,
|
|
40
41
|
type: ItemTypePropType,
|
|
41
42
|
name: PropTypes.string.isRequired,
|
|
42
43
|
label: PropTypes.string,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/content-explorer/item-list/ItemListName.js"],"names":["PropTypes","React","PlainButton","IconChevron","ItemTypes","ItemTypePropType","ITEM_LIST_NAME_CLASS","ItemListName","type","name","label","isSelected","onClick","linkRenderer","isFolder","FOLDER","linkProps","className","children","renderLink","propTypes","string","isRequired","bool","func"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AAEA,OAAOC,WAAP,MAAwB,kCAAxB;AACA,OAAOC,WAAP,MAAwB,oCAAxB;AAEA,OAAOC,SAAP,MAAsB,eAAtB;AACA,SAASC,gBAAT,QAAiC,eAAjC;AAEA,IAAMC,oBAAoB,GAAG,gBAA7B;;AAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe,
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/content-explorer/item-list/ItemListName.js"],"names":["PropTypes","React","PlainButton","IconChevron","ItemTypes","ItemTypePropType","ITEM_LIST_NAME_CLASS","ItemListName","itemId","type","name","label","isSelected","onClick","linkRenderer","isFolder","FOLDER","linkProps","className","children","renderLink","propTypes","string","isRequired","bool","func"],"mappings":";;;;;;AAAA,OAAOA,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AAEA,OAAOC,WAAP,MAAwB,kCAAxB;AACA,OAAOC,WAAP,MAAwB,oCAAxB;AAEA,OAAOC,SAAP,MAAsB,eAAtB;AACA,SAASC,gBAAT,QAAiC,eAAjC;AAEA,IAAMC,oBAAoB,GAAG,gBAA7B;;AAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe,OAAwF;AAAA,yBAArFC,MAAqF;AAAA,MAArFA,MAAqF,4BAA5E,EAA4E;AAAA,MAAxEC,IAAwE,QAAxEA,IAAwE;AAAA,MAAlEC,IAAkE,QAAlEA,IAAkE;AAAA,wBAA5DC,KAA4D;AAAA,MAA5DA,KAA4D,2BAApD,EAAoD;AAAA,6BAAhDC,UAAgD;AAAA,MAAhDA,UAAgD,gCAAnC,KAAmC;AAAA,MAA5BC,OAA4B,QAA5BA,OAA4B;AAAA,MAAnBC,YAAmB,QAAnBA,YAAmB;AACzG,MAAMC,QAAQ,GAAGN,IAAI,KAAKL,SAAS,CAACY,MAApC;AAEA,MAAMC,SAAS,GAAG;AACdC,IAAAA,SAAS,gBAASZ,oBAAT,CADK;AAEdO,IAAAA,OAAO,EAAPA,OAFc;AAGdM,IAAAA,QAAQ,EAAE,CACN;AAAM,MAAA,GAAG,EAAC;AAAV,OAAkBT,IAAlB,CADM,EAEN,oBAAC,WAAD;AACI,MAAA,GAAG,EAAC,MADR;AAEI,MAAA,KAAK,EAAEE,UAAU,GAAG,SAAH,GAAe,MAFpC;AAGI,MAAA,SAAS,EAAC,OAHd;AAII,MAAA,IAAI,EAAC,KAJT;AAKI,MAAA,SAAS,EAAC;AALd,MAFM;AAHI,GAAlB;;AAcA,MAAMQ,UAAU,GAAG,SAAbA,UAAa;AAAA,WAAON,YAAY,GAAGA,YAAY,mBAAMG,SAAN;AAAiBT,MAAAA,MAAM,EAANA;AAAjB,OAAf,GAA4C,oBAAC,WAAD,EAAiBS,SAAjB,CAA/D;AAAA,GAAnB;;AAEA,SACI;AAAK,IAAA,SAAS,EAAC;AAAf,KACKF,QAAQ,GAAGK,UAAU,EAAb,GAAkB;AAAM,IAAA,SAAS,EAAEd;AAAjB,KAAwCI,IAAxC,CAD/B,EAEK,CAAC,CAACC,KAAF,IAAW;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAwCA,KAAxC,CAFhB,CADJ;AAMH,CAzBD;;AA2BAJ,YAAY,CAACc,SAAb,GAAyB;AACrBb,EAAAA,MAAM,EAAER,SAAS,CAACsB,MADG;AAErBb,EAAAA,IAAI,EAAEJ,gBAFe;AAGrBK,EAAAA,IAAI,EAAEV,SAAS,CAACsB,MAAV,CAAiBC,UAHF;AAIrBZ,EAAAA,KAAK,EAAEX,SAAS,CAACsB,MAJI;AAKrBV,EAAAA,UAAU,EAAEZ,SAAS,CAACwB,IALD;AAMrBX,EAAAA,OAAO,EAAEb,SAAS,CAACyB,IANE;AAOrBX,EAAAA,YAAY,EAAEd,SAAS,CAACyB;AAPH,CAAzB;AAUA,eAAelB,YAAf","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport PlainButton from '../../../components/plain-button';\nimport IconChevron from '../../../icons/general/IconChevron';\n\nimport ItemTypes from '../item-types';\nimport { ItemTypePropType } from '../prop-types';\n\nconst ITEM_LIST_NAME_CLASS = 'item-list-name';\n\nconst ItemListName = ({ itemId = '', type, name, label = '', isSelected = false, onClick, linkRenderer }) => {\n const isFolder = type === ItemTypes.FOLDER;\n\n const linkProps = {\n className: `lnk ${ITEM_LIST_NAME_CLASS}`,\n onClick,\n children: [\n <span key=\"name\">{name}</span>,\n <IconChevron\n key=\"icon\"\n color={isSelected ? '#447991' : '#333'}\n direction=\"right\"\n size=\"4px\"\n thickness=\"1px\"\n />,\n ],\n };\n const renderLink = () => (linkRenderer ? linkRenderer({ ...linkProps, itemId }) : <PlainButton {...linkProps} />);\n\n return (\n <div className=\"item-list-name-container\">\n {isFolder ? renderLink() : <span className={ITEM_LIST_NAME_CLASS}>{name}</span>}\n {!!label && <span className=\"item-list-name-label\">{label}</span>}\n </div>\n );\n};\n\nItemListName.propTypes = {\n itemId: PropTypes.string,\n type: ItemTypePropType,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n isSelected: PropTypes.bool,\n onClick: PropTypes.func,\n linkRenderer: PropTypes.func,\n};\n\nexport default ItemListName;\n"],"file":"ItemListName.js"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@ import { ItemTypePropType } from '../prop-types';
|
|
|
9
9
|
|
|
10
10
|
const ITEM_LIST_NAME_CLASS = 'item-list-name';
|
|
11
11
|
|
|
12
|
-
const ItemListName = ({ type, name, label = '', isSelected = false, onClick, linkRenderer }) => {
|
|
12
|
+
const ItemListName = ({ itemId = '', type, name, label = '', isSelected = false, onClick, linkRenderer }) => {
|
|
13
13
|
const isFolder = type === ItemTypes.FOLDER;
|
|
14
14
|
|
|
15
15
|
const linkProps = {
|
|
@@ -26,7 +26,7 @@ const ItemListName = ({ type, name, label = '', isSelected = false, onClick, lin
|
|
|
26
26
|
/>,
|
|
27
27
|
],
|
|
28
28
|
};
|
|
29
|
-
const renderLink = () => (linkRenderer ? linkRenderer(linkProps) : <PlainButton {...linkProps} />);
|
|
29
|
+
const renderLink = () => (linkRenderer ? linkRenderer({ ...linkProps, itemId }) : <PlainButton {...linkProps} />);
|
|
30
30
|
|
|
31
31
|
return (
|
|
32
32
|
<div className="item-list-name-container">
|
|
@@ -37,6 +37,7 @@ const ItemListName = ({ type, name, label = '', isSelected = false, onClick, lin
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
ItemListName.propTypes = {
|
|
40
|
+
itemId: PropTypes.string,
|
|
40
41
|
type: ItemTypePropType,
|
|
41
42
|
name: PropTypes.string.isRequired,
|
|
42
43
|
label: PropTypes.string,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
2
3
|
import sinon from 'sinon';
|
|
3
4
|
|
|
4
5
|
import ItemListName from '../ItemListName';
|
|
@@ -53,15 +54,28 @@ describe('features/content-explorer/item-list/ItemListName', () => {
|
|
|
53
54
|
|
|
54
55
|
describe('linkRenderer', () => {
|
|
55
56
|
test('should use linkRenderer when specified', () => {
|
|
57
|
+
const itemId = '1';
|
|
56
58
|
const name = 'item';
|
|
57
|
-
const linkRenderer =
|
|
59
|
+
const linkRenderer = props => <button type="button" className={`name-${props.itemId}`} />;
|
|
60
|
+
linkRenderer.propTypes = { itemId: PropTypes.string };
|
|
58
61
|
const wrapper = renderComponent({
|
|
62
|
+
itemId,
|
|
59
63
|
name,
|
|
60
64
|
type: 'folder',
|
|
61
65
|
linkRenderer,
|
|
62
66
|
});
|
|
67
|
+
expect(wrapper.find(`button.name-${itemId}`)).toHaveLength(1);
|
|
68
|
+
});
|
|
63
69
|
|
|
64
|
-
|
|
70
|
+
test('should not pass id to PlainButton', () => {
|
|
71
|
+
const itemId = 'abc'; // Must be a valid html ID for this test. wrapper.find('#1') will crash.
|
|
72
|
+
const name = 'item';
|
|
73
|
+
const wrapper = renderComponent({
|
|
74
|
+
itemId,
|
|
75
|
+
name,
|
|
76
|
+
type: 'folder',
|
|
77
|
+
});
|
|
78
|
+
expect(wrapper.find(`#${itemId}`)).toHaveLength(0);
|
|
65
79
|
});
|
|
66
80
|
});
|
|
67
81
|
});
|