From ee92008e01caf5e452907ee1a4f4b3f3d4cc1f34 Mon Sep 17 00:00:00 2001 From: catchonme Date: Thu, 1 Aug 2019 09:51:25 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0autoFill=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scss/components/_table.scss | 1 + src/components/Radios.tsx | 22 +++++++++++++++++++++- src/components/Select.tsx | 1 + src/renderers/Carousel.tsx | 2 +- src/renderers/Form/ButtonGroup.tsx | 23 +++++++++++++++++++---- src/renderers/Form/Checkboxes.tsx | 19 +++++++++++++++++-- src/renderers/Form/List.tsx | 15 +++++++++++++-- src/renderers/Form/NestedSelect.tsx | 11 +++++++++-- src/renderers/Form/Picker.tsx | 8 +++++++- src/renderers/Form/Radios.tsx | 6 +++++- src/renderers/Form/Select.tsx | 8 +++++++- 11 files changed, 101 insertions(+), 15 deletions(-) diff --git a/scss/components/_table.scss b/scss/components/_table.scss index 16d09548..4d1ee401 100644 --- a/scss/components/_table.scss +++ b/scss/components/_table.scss @@ -134,6 +134,7 @@ &-content { min-height: 0.01%; overflow-x: auto; + transform: translateZ(0); } &-table { diff --git a/src/components/Radios.tsx b/src/components/Radios.tsx index d7fabab0..406a88c6 100644 --- a/src/components/Radios.tsx +++ b/src/components/Radios.tsx @@ -19,6 +19,8 @@ import Checkbox from './Checkbox'; import {value2array, OptionProps, Option} from './Checkboxes'; import chunk = require('lodash/chunk'); import {ClassNamesFn, themeable} from '../theme'; +import {isEmpty} from '../utils/helper'; +import {dataMapping} from '../utils/tpl-builtin'; interface RadioProps extends OptionProps { id?: string; @@ -29,6 +31,10 @@ interface RadioProps extends OptionProps { inline?: boolean; disabled?: boolean; onChange?: Function; + autoFill?: { + [propName:string]: string + }; + onBulkChange?: Function; columnsCount: number; itemClassName?: string; classPrefix: string; @@ -43,7 +49,18 @@ export class Radios extends React.Component { }; toggleOption(option: Option) { - const {value, onChange, joinValues, extractValue, valueField, clearable, delimiter, options} = this.props; + const { + value, + onChange, + joinValues, + extractValue, + valueField, + clearable, + delimiter, + options, + autoFill, + onBulkChange + } = this.props; let valueArray = value2array(value, { multiple: false, @@ -61,6 +78,9 @@ export class Radios extends React.Component { let newValue = valueArray[0]; + const sendTo = autoFill && !isEmpty(autoFill) && dataMapping(autoFill, newValue as Option); + sendTo && onBulkChange && onBulkChange(sendTo); + if (newValue && (joinValues || extractValue)) { newValue = newValue[valueField || 'value']; } diff --git a/src/components/Select.tsx b/src/components/Select.tsx index a291f12c..3a907228 100644 --- a/src/components/Select.tsx +++ b/src/components/Select.tsx @@ -44,6 +44,7 @@ export interface OptionProps { delimiter?: string; clearable?: boolean; placeholder?: string; + autoFill?: {[propName:string]: any} } export type OptionValue = string | number | null | undefined | Option; diff --git a/src/renderers/Carousel.tsx b/src/renderers/Carousel.tsx index 316d0850..9b2ecd01 100644 --- a/src/renderers/Carousel.tsx +++ b/src/renderers/Carousel.tsx @@ -55,7 +55,7 @@ const defaultSchema = { <% } %> <% } else if (data.hasOwnProperty('html')) { %> <%= data.html %> - <% } else if (data.hasOwnproperty('item')) { %> + <% } else if (data.hasOwnProperty('item')) { %> <%= data.item %> <% } else { %> <%= '未找到渲染数据' %> diff --git a/src/renderers/Form/ButtonGroup.tsx b/src/renderers/Form/ButtonGroup.tsx index f8ca3a63..b57cd1fc 100644 --- a/src/renderers/Form/ButtonGroup.tsx +++ b/src/renderers/Form/ButtonGroup.tsx @@ -2,12 +2,14 @@ import React from 'react'; import cx from 'classnames'; import { OptionsControl, - OptionsControlProps + OptionsControlProps, + Option } from './Options'; import { Button } from '../../types'; -import { getLevelFromClassName } from '../../utils/helper'; +import { getLevelFromClassName, autobind, isEmpty} from '../../utils/helper'; +import { dataMapping } from '../../utils/tpl-builtin'; export interface ButtonGroupProps extends OptionsControlProps { buttons?: Array