From 026f1b27ebd5c8c12839ff68c7e1f51c0245323e Mon Sep 17 00:00:00 2001 From: DouglasDong Date: Tue, 30 Oct 2018 15:51:40 +0800 Subject: [PATCH 1/8] =?UTF-8?q?[FIX]=20=E4=BF=AE=E5=A4=8D=E7=83=AD?= =?UTF-8?q?=E9=97=A8=E6=A0=87=E7=AD=BE=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD=20-->=20=E9=9A=90?= =?UTF-8?q?=E8=97=8FTable=E4=B8=ADfilter=E9=83=A8=E5=88=86=E9=80=89?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/table/ColumnFilter.tsx | 3 +-- components/table/interface.tsx | 1 + components/tag/style/index.less | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/components/table/ColumnFilter.tsx b/components/table/ColumnFilter.tsx index 077e39df2c..0e44d7fc1d 100644 --- a/components/table/ColumnFilter.tsx +++ b/components/table/ColumnFilter.tsx @@ -76,7 +76,7 @@ export default class ColumnFilter extends React.Component { + (this.props.columns || []).filter((column) => !column.notDisplay).map((column, i) => { const item = column.title ? ( extends React.Component !column.hidden); } - } diff --git a/components/table/interface.tsx b/components/table/interface.tsx index 7035ec76e6..1c84591023 100644 --- a/components/table/interface.tsx +++ b/components/table/interface.tsx @@ -36,6 +36,7 @@ export interface ColumnProps { onCell?: (record: T) => any; onHeaderCell?: (props: ColumnProps) => any; hidden?: boolean; + notDisplay?: boolean; } export interface TableComponents { 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; From 375a9ae94682bc46babd2262b3e5e49ba936efd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=BD=AC=E6=9D=B0?= Date: Wed, 7 Nov 2018 16:53:53 +0800 Subject: [PATCH 2/8] =?UTF-8?q?[IMP]=20table=E6=B7=BB=E5=8A=A0noFilter?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=EF=BC=8C=E7=94=A8=E4=BA=8E=E9=98=BB=E6=AD=A2?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=9A=84filter=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/table/Table.tsx | 12 +++++++++++- components/table/interface.tsx | 2 ++ components/table/util.tsx | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) 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/interface.tsx b/components/table/interface.tsx index f88f9e5202..4bf86d4aa1 100644 --- a/components/table/interface.tsx +++ b/components/table/interface.tsx @@ -87,6 +87,7 @@ export interface TableRowSelection { export interface TableProps { prefixCls?: string; dropdownPrefixCls?: string; + noFilter?: boolean; rowSelection?: TableRowSelection; pagination?: TablePaginationConfig | false; size?: 'default' | 'middle' | 'small'; @@ -105,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; From 9fe4c8757375d2f01dcd8f949392720b190aedd0 Mon Sep 17 00:00:00 2001 From: DouglasDong Date: Fri, 9 Nov 2018 16:52:51 +0800 Subject: [PATCH 3/8] =?UTF-8?q?[IMP]=20=E5=A2=9E=E5=8A=A0=20Table=20?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E9=A1=B9=E7=A6=81=E7=94=A8=E5=8B=BE=E9=80=89?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/rc-components/menu/MenuItem.jsx | 2 +- components/table/ColumnFilter.tsx | 3 ++- components/table/interface.tsx | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) 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 (
  • extends React.Component !column.notDisplay).map((column, i) => { + (this.props.columns || []).map((column, i) => { const item = column.title ? ( { onCell?: (record: T) => any; onHeaderCell?: (props: ColumnProps) => any; hidden?: boolean; - notDisplay?: boolean; + disableClick?: boolean; } export interface TableComponents { From 2a187c9d0037a949c53fa98428d380f8d07129b5 Mon Sep 17 00:00:00 2001 From: DouglasDong Date: Sun, 11 Nov 2018 19:07:19 +0800 Subject: [PATCH 4/8] =?UTF-8?q?[ADD]=20=E6=B7=BB=E5=8A=A0=20API=20?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/table/index.zh-CN.md | 1 + 1 file changed, 1 insertion(+) diff --git a/components/table/index.zh-CN.md b/components/table/index.zh-CN.md index 669a3ded59..baa4c2ff6f 100644 --- a/components/table/index.zh-CN.md +++ b/components/table/index.zh-CN.md @@ -116,6 +116,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 | From 2f05d9edad65f41adecb381f6fe547c287d9cf60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=BD=AC=E6=9D=B0?= Date: Mon, 12 Nov 2018 20:50:58 +0800 Subject: [PATCH 5/8] [ADD] add new icons --- components/icon/icons.tsx | 1 + components/style/core/iconfont.less | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) 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/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 From 2c5c19f5b1c99918fab7eacb397b01745bce80ba Mon Sep 17 00:00:00 2001 From: hulingfangzi Date: Tue, 13 Nov 2018 13:16:05 +0800 Subject: [PATCH 6/8] =?UTF-8?q?[IMP]=E4=BF=AE=E6=94=B9=E4=BA=86select?= =?UTF-8?q?=E5=85=A8=E9=80=89=E5=92=8C=E6=97=A0=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/rc-components/select/Select.jsx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/components/rc-components/select/Select.jsx b/components/rc-components/select/Select.jsx index 75eaa01d03..fb8d4c49cc 100644 --- a/components/rc-components/select/Select.jsx +++ b/components/rc-components/select/Select.jsx @@ -1363,13 +1363,17 @@ export default class Select extends React.Component { if (props.disabled) { return; } + + let newValues; + const values = this._options.map((option) => { + return getValuePropValue(option); + }); if (name === 'check-all') { - const values = this._options.map((option) => { - return getValuePropValue(option); - }); - this.fireChange(values); - } else if (name === 'check-none') { - this.fireChange([]); + newValues = new Set(state.value.concat(values)); + this.fireChange(Array.from(newValues)); + } else if (name === 'check-none') {`` + newValues = state.value.filter((e) => values.indexOf(e) < 0); + this.fireChange(newValues); this.focus(); } }; From b93f4eaa2ce8f8ce990782b4b0d6faea07b41417 Mon Sep 17 00:00:00 2001 From: hulingfangzi Date: Tue, 13 Nov 2018 13:19:18 +0800 Subject: [PATCH 7/8] =?UTF-8?q?[IMP]=E4=BF=AE=E6=94=B9=E4=BA=86select?= =?UTF-8?q?=E5=85=A8=E9=80=89=E5=92=8C=E6=97=A0=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/rc-components/select/Select.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/rc-components/select/Select.jsx b/components/rc-components/select/Select.jsx index fb8d4c49cc..96a5287113 100644 --- a/components/rc-components/select/Select.jsx +++ b/components/rc-components/select/Select.jsx @@ -1371,7 +1371,7 @@ export default class Select extends React.Component { if (name === 'check-all') { newValues = new Set(state.value.concat(values)); this.fireChange(Array.from(newValues)); - } else if (name === 'check-none') {`` + } else if (name === 'check-none') { newValues = state.value.filter((e) => values.indexOf(e) < 0); this.fireChange(newValues); this.focus(); From 1b3a59d735bc5229796558a216141ec152787909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=BD=AC=E6=9D=B0?= Date: Tue, 13 Nov 2018 14:22:26 +0800 Subject: [PATCH 8/8] [ADD] add changelog for 0.4.2 --- CHANGELOG.en-US.md | 10 ++++++++++ CHANGELOG.zh-CN.md | 10 ++++++++++ components/table/index.zh-CN.md | 1 + package.json | 2 +- 4 files changed, 22 insertions(+), 1 deletion(-) 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/table/index.zh-CN.md b/components/table/index.zh-CN.md index f09e66b92a..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 | | 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": "",