diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md index 19996b7cf4..556fd96934 100644 --- a/CHANGELOG.en-US.md +++ b/CHANGELOG.en-US.md @@ -15,6 +15,16 @@ timeline: true --- +## 0.4.2 + +`2018-11-13` + +- 🌟 `Icon`: Add new icons. +- 🌟 `Table`: Add `noFilters`, Used to block the default filtering. +- 🌟 `Table.Column`: Add `disableClick` to disable the check for the `Table` filter. +- 💄 `Tag`: Fix hot label display issues. +- 💄 `Select`: all-select and no logic optimization. + ## 0.4.1 `2018-10-26` diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md index d7c4d0ede6..c7f8807bba 100644 --- a/CHANGELOG.zh-CN.md +++ b/CHANGELOG.zh-CN.md @@ -15,6 +15,16 @@ timeline: true --- +## 0.4.2 + +`2018-11-13` + +- 🌟 `Icon`: 增加新的图标。 +- 🌟 `Table`: 增加`noFilters`,用于阻止默认的过滤筛选功能。 +- 🌟 `Table.Column`: 增加`disableClick`, 用于 `Table` 筛选项禁用勾选。 +- 💄 `Tag`: 修复热门标签显示问题。 +- 💄 `Select`: Select全选和无的逻辑优化。 + ## 0.4.1 `2018-10-26` diff --git a/components/icon/icons.tsx b/components/icon/icons.tsx index 2a8cc87a15..267eccc432 100644 --- a/components/icon/icons.tsx +++ b/components/icon/icons.tsx @@ -1,5 +1,6 @@ const icons = { default: [ + 'cluster', 'kubernetes_cluster', 'disconnect', 'running', 'notification_setting', 'authority', 'develop_console', 'frame', 'record_test', 'agile_epic', 'agile_fault', 'agile_story', 'agile_subtask', 'agile_task', 'auto_test', 'devops_chart', 'agile_chart', 'test_chart', 'bar_chart', 'unlock', 'classname', diff --git a/components/rc-components/menu/MenuItem.jsx b/components/rc-components/menu/MenuItem.jsx index f4f208fbe6..c26e3c3166 100644 --- a/components/rc-components/menu/MenuItem.jsx +++ b/components/rc-components/menu/MenuItem.jsx @@ -154,7 +154,7 @@ const MenuItem = createReactClass({ } const notFound = props.eventKey === 'NOT_FOUND'; - const checkbox = props.multiple && !notFound ? : null; + const checkbox = props.multiple && !notFound ? : null; return (
  • { + return getValuePropValue(option); + }); if (name === 'check-all') { - const values = this._options.map((option) => { - return getValuePropValue(option); - }); - this.fireChange(values); + newValues = new Set(state.value.concat(values)); + this.fireChange(Array.from(newValues)); } else if (name === 'check-none') { - this.fireChange([]); + newValues = state.value.filter((e) => values.indexOf(e) < 0); + this.fireChange(newValues); this.focus(); } }; diff --git a/components/style/core/iconfont.less b/components/style/core/iconfont.less index ff1965b11f..6a88c623b7 100644 --- a/components/style/core/iconfont.less +++ b/components/style/core/iconfont.less @@ -23,6 +23,23 @@ height: @icon-font-size-sm; } } +// 11.09 + +.@{iconfont-css-prefix}-cluster:before { + content: "\e9c1"; +} +.@{iconfont-css-prefix}-kubernetes_cluster:before { + content: "\e9c4"; +} +.@{iconfont-css-prefix}-disconnect:before { + content: "\e9c5"; +} +.@{iconfont-css-prefix}-running:before { + content: "\e9c6"; +} +.@{iconfont-css-prefix}-notification_setting:before { + content: "\e9c7"; +} // 10.24 diff --git a/components/table/ColumnFilter.tsx b/components/table/ColumnFilter.tsx index 1029c5f118..c6287805be 100644 --- a/components/table/ColumnFilter.tsx +++ b/components/table/ColumnFilter.tsx @@ -79,6 +79,7 @@ export default class ColumnFilter extends React.Component { const item = column.title ? ( extends React.Component !column.hidden); } - } diff --git a/components/table/Table.tsx b/components/table/Table.tsx index f1f77f52fa..2952501853 100644 --- a/components/table/Table.tsx +++ b/components/table/Table.tsx @@ -81,6 +81,8 @@ export default class Table extends React.Component, TableState< filterBar: PropTypes.bool, filters: PropTypes.array, filterBarPlaceholder: PropTypes.string, + onFilterSelectChange: PropTypes.func, + noFilter: PropTypes.bool, }; static defaultProps = { @@ -98,6 +100,7 @@ export default class Table extends React.Component, TableState< rowKey: 'key', showHeader: true, filterBar: true, + noFilter: false, }; CheckboxPropsCache: { @@ -459,6 +462,10 @@ export default class Table extends React.Component, TableState< }; handleFilterSelectChange = (barFilters: any[]) => { + const { onFilterSelectChange } = this.props; + if (onFilterSelectChange) { + onFilterSelectChange(barFilters); + } this.setNewFilterState({ barFilters, }); @@ -940,7 +947,7 @@ export default class Table extends React.Component, TableState< } getLocalData() { - const { dataSource } = this.props; + const { dataSource, noFilter } = this.props; if (dataSource) { const state = this.state; const { filters, barFilters } = state; @@ -981,6 +988,9 @@ export default class Table extends React.Component, TableState< } }); } + if (noFilter) { + return data; + } return filteredData; } else { return []; diff --git a/components/table/index.zh-CN.md b/components/table/index.zh-CN.md index 5e22db03e1..956e2b1db8 100644 --- a/components/table/index.zh-CN.md +++ b/components/table/index.zh-CN.md @@ -83,6 +83,7 @@ const columns = [{ | onRow | 设置行属性 | Function(record, index) | - | | filterBar | 显示过滤条,设置为false时,在列头上会显示过滤菜单按钮 | boolean | true | | filters | <受控>过滤条中的过滤条件,例:`[{ name: 'Jom' }, 'OR', { name: 'Jim' }]`,`name` 为列的 `key` 或 `dataIndex` | any\[] | - | +| noFilters | | filterBarPlaceholder | 过滤条的占位文本 | string | | @@ -117,6 +118,7 @@ const columns = [{ | className | 列的 className | string | - | | colSpan | 表头列合并,设置为 0 时,不渲染 | number | | | dataIndex | 列数据在数据项中对应的 key,支持 `a.b.c` 的嵌套写法 | string | - | +| disableClick | 禁用点击列表筛选项 | boolean | false | | filterDropdown | 可以自定义筛选菜单,此函数只负责渲染图层,需要自行编写各种交互 | ReactNode | - | | filterDropdownVisible | 用于控制自定义筛选菜单是否可见 | boolean | - | | filtered | 标识数据是否经过过滤,筛选图标会高亮 | boolean | false | diff --git a/components/table/interface.tsx b/components/table/interface.tsx index a2f817db4d..af232f6005 100644 --- a/components/table/interface.tsx +++ b/components/table/interface.tsx @@ -37,6 +37,7 @@ export interface ColumnProps { onCell?: (record: T) => any; onHeaderCell?: (props: ColumnProps) => any; hidden?: boolean; + disableClick?: boolean; } export interface TableComponents { @@ -86,6 +87,7 @@ export interface TableRowSelection { export interface TableProps { prefixCls?: string; dropdownPrefixCls?: string; + noFilter?: boolean; rowSelection?: TableRowSelection; pagination?: TablePaginationConfig | false; size?: 'default' | 'middle' | 'small'; @@ -104,6 +106,7 @@ export interface TableProps { onExpandedRowsChange?: (expandedRowKeys: string[] | number[]) => void; onExpand?: (expanded: boolean, record: T) => void; onChange?: (pagination: TablePaginationConfig | boolean, filters: string[], sorter: Object) => any; + onFilterSelectChange?: (item: any) => void; onColumnFilterChange?: (item: any) => void; loading?: boolean | SpinProps; locale?: Object; diff --git a/components/table/util.tsx b/components/table/util.tsx index d061f7e35d..a5503766ef 100644 --- a/components/table/util.tsx +++ b/components/table/util.tsx @@ -76,7 +76,7 @@ export function findColumnByFilterValue(record: T, columns: ColumnProps[], const key = getColumnKey(col); if (key) { let value = (record as any)[key]; - if (value) { + if (value && (typeof value !== 'object')) { value = value.toString(); if (value.toLowerCase().indexOf(inputValue.toLowerCase()) !== -1) { return true; diff --git a/components/tag/style/index.less b/components/tag/style/index.less index 8844abc21b..f7b9f31a81 100644 --- a/components/tag/style/index.less +++ b/components/tag/style/index.less @@ -65,6 +65,11 @@ &:not(&-checked):hover { color: @primary-color; } + &, + a, + a:hover { + color: #000; + } &:active, &-checked { color: #fff; diff --git a/package.json b/package.json index 777ccc82f2..c259ecf55b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "choerodon-ui", - "version": "0.4.1", + "version": "0.4.2", "title": "Choerodon UI", "description": "An enterprise-class UI design language and React-based implementation", "homepage": "",