amis 1.8.0-beta.1 → 1.8.0-beta.5
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/lib/SchemaRenderer.js +19 -3
- package/lib/SchemaRenderer.js.map +2 -2
- package/lib/WithRootStore.d.ts +18 -0
- package/lib/WithStore.js +2 -1
- package/lib/WithStore.js.map +2 -2
- package/lib/actions/CmptAction.js +14 -3
- package/lib/actions/CmptAction.js.map +2 -2
- package/lib/components/AssociatedSelection.js +9 -2
- package/lib/components/AssociatedSelection.js.map +2 -2
- package/lib/components/BarCode.js +1 -1
- package/lib/components/BarCode.js.map +2 -2
- package/lib/components/Checkbox.d.ts +24 -23
- package/lib/components/Checkbox.js +6 -2
- package/lib/components/Checkbox.js.map +2 -2
- package/lib/components/DatePicker.js +16 -5
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.d.ts +94 -84
- package/lib/components/DateRangePicker.js +259 -7
- package/lib/components/DateRangePicker.js.map +2 -2
- package/lib/components/MonthRangePicker.d.ts +84 -84
- package/lib/components/Radios.d.ts +22 -22
- package/lib/components/Radios.js +3 -5
- package/lib/components/Radios.js.map +2 -2
- package/lib/components/Range.d.ts +2 -2
- package/lib/components/Range.js +24 -11
- package/lib/components/Range.js.map +2 -2
- package/lib/components/Steps.d.ts +6 -0
- package/lib/components/Steps.js +13 -9
- package/lib/components/Steps.js.map +2 -2
- package/lib/components/calendar/Calendar.js +2 -14
- package/lib/components/calendar/Calendar.js.map +2 -2
- package/lib/components/calendar/YearsView.js +3 -3
- package/lib/components/calendar/YearsView.js.map +2 -2
- package/lib/factory.d.ts +4 -0
- package/lib/factory.js +9 -0
- package/lib/factory.js.map +2 -2
- package/lib/index.js +1 -1
- package/lib/locale/de-DE.js +13 -0
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +13 -0
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +13 -0
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.d.ts +2 -0
- package/lib/renderers/Action.js +23 -5
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/CRUD.d.ts +8 -0
- package/lib/renderers/CRUD.js +11 -4
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Carousel.d.ts +1 -0
- package/lib/renderers/Carousel.js +13 -1
- package/lib/renderers/Carousel.js.map +2 -2
- package/lib/renderers/Form/Checkbox.d.ts +5 -2
- package/lib/renderers/Form/Checkbox.js +2 -2
- package/lib/renderers/Form/Checkbox.js.map +2 -2
- package/lib/renderers/Form/Checkboxes.d.ts +7 -2
- package/lib/renderers/Form/Checkboxes.js +101 -12
- package/lib/renderers/Form/Checkboxes.js.map +2 -2
- package/lib/renderers/Form/Combo.js +3 -2
- package/lib/renderers/Form/Combo.js.map +2 -2
- package/lib/renderers/Form/InputCity.d.ts +3 -0
- package/lib/renderers/Form/InputCity.js +44 -2
- package/lib/renderers/Form/InputCity.js.map +2 -2
- package/lib/renderers/Form/InputDateRange.d.ts +5 -0
- package/lib/renderers/Form/InputDateRange.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +6 -3
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputImage.js +6 -3
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputRange.js +13 -14
- package/lib/renderers/Form/InputRange.js.map +2 -2
- package/lib/renderers/Form/Item.d.ts +11 -6
- package/lib/renderers/Form/Item.js +3 -1
- package/lib/renderers/Form/Item.js.map +2 -2
- package/lib/renderers/Form/index.d.ts +1 -0
- package/lib/renderers/Form/index.js +1 -1
- package/lib/renderers/Form/index.js.map +2 -2
- package/lib/renderers/Form/wrapControl.d.ts +9 -0
- package/lib/renderers/Form/wrapControl.js +1 -1
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/Nav.js +2 -2
- package/lib/renderers/Nav.js.map +2 -2
- package/lib/renderers/Steps.d.ts +8 -0
- package/lib/renderers/Steps.js +2 -2
- package/lib/renderers/Steps.js.map +2 -2
- package/lib/renderers/Table/index.d.ts +1 -0
- package/lib/renderers/Table/index.js +10 -5
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/renderers/Tabs.d.ts +4 -0
- package/lib/renderers/Tabs.js +22 -6
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/Wizard.d.ts +6 -3
- package/lib/renderers/Wizard.js +257 -152
- package/lib/renderers/Wizard.js.map +2 -2
- package/lib/store/crud.d.ts +1 -0
- package/lib/store/crud.js +33 -7
- package/lib/store/crud.js.map +2 -2
- package/lib/store/formItem.js +1 -1
- package/lib/store/formItem.js.map +2 -2
- package/lib/store/index.d.ts +5 -0
- package/lib/store/index.js +14 -0
- package/lib/store/index.js.map +2 -2
- package/lib/store/table.js +2 -2
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +278 -17
- package/lib/themes/ang.css +286 -17
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +278 -17
- package/lib/themes/antd.css +286 -17
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +278 -17
- package/lib/themes/cxd.css +286 -17
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +278 -17
- package/lib/themes/dark.css +286 -17
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +278 -17
- package/lib/themes/default.css +286 -17
- package/lib/themes/default.css.map +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/columnsSplit.d.ts +1 -0
- package/lib/utils/columnsSplit.js +40 -0
- package/lib/utils/columnsSplit.js.map +13 -0
- package/lib/utils/debug.d.ts +1 -1
- package/lib/utils/debug.js +16 -22
- package/lib/utils/debug.js.map +2 -2
- package/package.json +1 -1
- package/schema.json +237 -29
- package/scss/_properties.scss +10 -1
- package/scss/components/_barcode.scss +1 -1
- package/scss/components/_carousel.scss +1 -0
- package/scss/components/_debug.scss +3 -3
- package/scss/components/_steps.scss +199 -8
- package/scss/components/form/_checks.scss +122 -1
- package/scss/components/form/_date.scss +2 -1
- package/scss/components/form/_editor.scss +2 -1
- package/scss/components/form/_form.scss +16 -0
- package/sdk/ang-ie11.css +335 -18
- package/sdk/ang.css +343 -18
- package/sdk/antd-ie11.css +335 -18
- package/sdk/antd.css +343 -18
- package/sdk/barcode.js +51 -51
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +335 -18
- package/sdk/cxd.css +343 -18
- package/sdk/dark-ie11.css +335 -18
- package/sdk/dark.css +343 -18
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +13 -0
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +17 -17
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +335 -18
- package/sdk/sdk.css +343 -18
- package/sdk/sdk.js +1289 -1287
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/SchemaRenderer.tsx +32 -14
- package/src/WithStore.tsx +3 -1
- package/src/actions/CmptAction.ts +18 -0
- package/src/components/AssociatedSelection.tsx +9 -3
- package/src/components/BarCode.tsx +2 -2
- package/src/components/Checkbox.tsx +11 -5
- package/src/components/DatePicker.tsx +21 -4
- package/src/components/DateRangePicker.tsx +295 -6
- package/src/components/Radios.tsx +6 -17
- package/src/components/Range.tsx +26 -12
- package/src/components/Steps.tsx +28 -27
- package/src/components/calendar/Calendar.tsx +2 -15
- package/src/components/calendar/YearsView.tsx +3 -4
- package/src/factory.tsx +16 -0
- package/src/locale/de-DE.ts +13 -0
- package/src/locale/en-US.ts +13 -0
- package/src/locale/zh-CN.ts +13 -0
- package/src/renderers/Action.tsx +22 -1
- package/src/renderers/CRUD.tsx +22 -4
- package/src/renderers/Carousel.tsx +8 -0
- package/src/renderers/Form/Checkbox.tsx +11 -2
- package/src/renderers/Form/Checkboxes.tsx +106 -23
- package/src/renderers/Form/Combo.tsx +2 -3
- package/src/renderers/Form/InputCity.tsx +33 -4
- package/src/renderers/Form/InputDateRange.tsx +8 -1
- package/src/renderers/Form/InputFile.tsx +7 -3
- package/src/renderers/Form/InputImage.tsx +7 -3
- package/src/renderers/Form/InputRange.tsx +18 -16
- package/src/renderers/Form/Item.tsx +1 -0
- package/src/renderers/Form/index.tsx +2 -1
- package/src/renderers/Form/wrapControl.tsx +1 -1
- package/src/renderers/Nav.tsx +1 -1
- package/src/renderers/Steps.tsx +14 -0
- package/src/renderers/Table/index.tsx +15 -4
- package/src/renderers/Tabs.tsx +75 -28
- package/src/renderers/Wizard.tsx +154 -93
- package/src/store/crud.ts +40 -5
- package/src/store/formItem.ts +1 -2
- package/src/store/index.ts +20 -0
- package/src/store/table.ts +2 -2
- package/src/types.ts +3 -1
- package/src/utils/columnsSplit.tsx +57 -0
- package/src/utils/debug.tsx +17 -24
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputRange.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAAsD;AACtD,0EAAuC;AACvC,0EAAuC;AACvC,wEAAqC;AACrC,wEAAqC;AAErC,+BAAmE;AACnE,8EAAgD;AAChD,0FAAuD;AACvD,gDAA4C;AAC5C,uDAAoD;AACpD,6CAA0D;AAC1D,uCAAuC;AAkOvC;;;;;GAKG;AACH,SAAgB,WAAW,CACzB,KAAY,EACZ,KAKC
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React, {CSSProperties, ReactNode} from 'react';\nimport isNumber from 'lodash/isNumber';\nimport isObject from 'lodash/isObject';\nimport isEqual from 'lodash/isEqual';\nimport forEach from 'lodash/forEach';\n\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport InputRange from '../../components/Range';\nimport NumberInput from '../../components/NumberInput';\nimport {Icon} from '../../components/icons';\nimport {stripNumber} from '../../utils/tpl-builtin';\nimport {autobind, createObject} from '../../utils/helper';\nimport {filter} from '../../utils/tpl';\nimport {SchemaObject} from '../../Schema';\nimport {Action} from '../../types';\n\n/**\n * Range\n * 文档:https://baidu.gitee.io/amis/docs/components/form/range\n */\n\nexport type Value = string | MultipleValue | number | [number, number];\nexport type FormatValue = MultipleValue | number;\nexport type TooltipPosType = 'auto' | 'top' | 'right' | 'bottom' | 'left';\nexport type InputRangeRendererEvent = 'change' | 'blur' | 'focus';\nexport type InputRangeRendererAction = 'clear';\nexport interface RangeControlSchema extends FormBaseControl {\n type: 'input-range';\n\n /**\n * 滑块值\n */\n value?: Value;\n\n /**\n * 最大值\n */\n max?: number;\n\n /**\n * 最小值\n */\n min?: number;\n\n /**\n * 步长\n */\n step?: number;\n\n /**\n * 单位\n */\n unit?: string;\n\n /**\n * 是否展示步长\n */\n showSteps?: boolean;\n\n /**\n * 分割块数\n */\n parts?: number;\n\n /**\n * 刻度\n */\n marks?: MarksType;\n\n /**\n * 是否展示标签\n */\n tooltipVisible?: boolean;\n\n /**\n * 标签方向\n */\n tooltipPlacement?: TooltipPosType;\n\n /**\n * 是否为双滑块\n */\n multiple?: boolean;\n\n /**\n * 是否通过分隔符连接\n */\n joinValues?: boolean;\n\n /**\n * 分隔符\n */\n delimiter?: string;\n\n /**\n * 是否展示输入框\n */\n showInput?: boolean;\n\n /**\n * 是否禁用\n */\n disabled?: boolean;\n}\n\ntype MarksType = {\n [index: number | string]: MarksValue;\n};\n\ntype MarksValue = Record<\n number,\n SchemaObject | {style?: React.CSSProperties; label?: string}\n>;\n\nexport interface RangeProps extends FormControlProps {\n /**\n * 滑块值\n */\n value: Value;\n\n /**\n * 最小值\n */\n min: number;\n\n /**\n * 最大值\n */\n max: number;\n\n /**\n * 步长\n */\n step: number;\n\n /**\n * 是否展示步长\n */\n showSteps: boolean;\n\n /**\n * 分割块数\n */\n parts: number;\n\n /**\n * 刻度\n */\n marks?: MarksType;\n\n /**\n * 是否展示标签\n */\n tooltipVisible: boolean;\n\n /**\n * 标签方向\n */\n tooltipPlacement: TooltipPosType;\n\n /**\n * 控制滑块标签显隐函数\n */\n tipFormatter?: (value: Value) => boolean;\n\n /**\n * 是否为双滑块\n */\n multiple: boolean;\n\n /**\n * 是否通过分隔符连接\n */\n joinValues: boolean;\n\n /**\n * 分隔符\n */\n delimiter: string;\n\n /**\n * 单位\n */\n unit?: string;\n\n /**\n * 是否展示输入框\n */\n showInput: boolean;\n\n /**\n * 是否禁用\n */\n disabled: boolean;\n\n /**\n * value改变事件\n */\n onChange: (value: Value) => void;\n\n /**\n * 鼠标松开事件\n */\n onAfterChange?: (value: Value) => any;\n}\n\nexport interface MultipleValue {\n min: number;\n max: number;\n}\n\nexport interface DefaultProps {\n value: Value;\n max: number;\n min: number;\n step: number;\n unit: string;\n clearable: boolean;\n disabled: boolean;\n showInput: boolean;\n multiple: boolean;\n joinValues: boolean;\n delimiter: string;\n showSteps: boolean;\n parts: number;\n tooltipPlacement: TooltipPosType;\n}\n\nexport interface RangeItemProps extends RangeProps {\n value: FormatValue;\n updateValue: (value: Value) => void;\n onAfterChange: () => void;\n}\n\nexport interface RangeState {\n value: FormatValue;\n}\n\n/**\n * 格式化初始value值\n * @param value 初始value值 Value\n * @param props RangeProps\n * @returns number | {min: number, max: number}\n */\nexport function formatValue(\n value: Value,\n props: {\n multiple: boolean;\n delimiter: string;\n min: number;\n max: number;\n }\n): FormatValue {\n if (props.multiple) {\n let {min, max} = props;\n // value是字符串\n if (typeof value === 'string') {\n [min, max] = value.split(props.delimiter || ',').map(v => Number(v));\n }\n // value是数组\n else if (Array.isArray(value)) {\n [min, max] = value;\n }\n // value是对象\n else if (typeof value === 'object') {\n min = value.min;\n max = value.max;\n }\n return {\n min: min === undefined || min < props.min ? props.min : min,\n max: max === undefined || max > props.max ? props.max : max\n };\n }\n return +value ?? props.min;\n}\n\n/**\n * 输入框\n */\nexport class Input extends React.Component<RangeItemProps, any> {\n /**\n * onChange事件,只能输入数字\n * @param e React.ChangeEvent\n */\n @autobind\n onChange(value: number) {\n const {multiple, value: originValue, type} = this.props;\n const _value = this.getValue(value, type);\n\n this.props.updateValue(\n multiple ? {...(originValue as MultipleValue), [type]: _value} : value\n );\n }\n\n /**\n * 双滑块 更新value\n * @param value 输入的value值\n */\n @autobind\n onUpdateValue(value: number) {\n const {multiple, value: originValue, type} = this.props;\n const _value = this.getValue(value, type);\n\n this.props.updateValue(\n multiple ? {...(originValue as MultipleValue), [type]: _value} : value\n );\n }\n\n checkNum(value: number | string | undefined) {\n if (typeof value !== 'number') {\n value = filter(value, this.props.data);\n value = /^[-]?\\d+/.test(value) ? +value : undefined;\n }\n return value;\n }\n\n /**\n * 获取步长小数精度\n * @returns\n */\n getStepPrecision() {\n const {step} = this.props;\n const stepIsDecimal = /^\\d+\\.\\d+$/.test(step.toString());\n return !stepIsDecimal || step < 0\n ? 0\n : step.toString().split('.')[1]?.length;\n }\n\n /**\n * 处理数据\n * @param value input数据\n * @param type min | max 双滑块\n * @returns 处理之后数据\n */\n getValue(value: string | number, type?: string) {\n const {max, min, step, value: stateValue} = this.props as RangeItemProps;\n\n // 校正value为step的倍数\n let _value = Math.round(parseFloat(value + '') / step) * step;\n // 同步value与步长小数位数\n _value = parseFloat(_value.toFixed(this.getStepPrecision()));\n // 单滑块只用考虑 轨道边界 ,双滑块需要考虑 两端滑块边界\n switch (type) {\n case 'min': {\n if (isObject(stateValue) && isNumber(stateValue.max)) {\n // 如果 大于当前双滑块最大值 取 当前双滑块max值 - 步长\n if (_value >= stateValue.max) {\n return stateValue.max - step;\n }\n return _value;\n }\n return min;\n }\n case 'max':\n if (isObject(stateValue) && isNumber(stateValue.min)) {\n // 如果 小于当前双滑块最大值 取 当前双滑块min值 + 步长\n if (_value <= stateValue.min) {\n return stateValue.min + step;\n }\n return _value;\n }\n return max;\n default:\n // 轨道边界\n return (_value < min && min) || (_value > max && max) || _value;\n }\n }\n\n /**\n * 失焦事件\n */\n @autobind\n onBlur() {\n const {data, dispatchEvent} = this.props;\n dispatchEvent('blur', data);\n }\n\n /**\n * 聚焦事件\n */\n @autobind\n onFocus() {\n const {data, dispatchEvent} = this.props;\n dispatchEvent('focus', data);\n }\n\n render() {\n const {\n classnames: cx,\n value,\n multiple,\n type,\n step,\n classPrefix: ns,\n disabled,\n max,\n min\n } = this.props;\n const _value = multiple\n ? type === 'min'\n ? Math.min((value as MultipleValue).min, (value as MultipleValue).max)\n : Math.max((value as MultipleValue).min, (value as MultipleValue).max)\n : value;\n return (\n <div className={cx(`${ns}InputRange-input`)}>\n <NumberInput\n value={+_value}\n step={step}\n max={this.checkNum(max)}\n min={this.checkNum(min)}\n onChange={this.onChange}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n />\n </div>\n );\n }\n}\n\nexport default class RangeControl extends React.PureComponent<\n RangeProps,\n RangeState\n> {\n midLabel?: HTMLSpanElement;\n\n static defaultProps: DefaultProps = {\n value: 0,\n max: 100,\n min: 0,\n step: 1,\n unit: '',\n clearable: true,\n disabled: false,\n showInput: false,\n multiple: false,\n joinValues: true,\n delimiter: ',',\n showSteps: false,\n parts: 1,\n tooltipPlacement: 'auto'\n };\n\n constructor(props: RangeProps) {\n super(props);\n const {value: propsValue, multiple, delimiter, min, max} = this.props;\n const value = formatValue(propsValue, {\n multiple,\n delimiter,\n min,\n max\n });\n\n this.state = {\n value: this.getValue(value)\n };\n }\n\n componentDidUpdate(prevProps: RangeProps) {\n const {value} = prevProps;\n const {\n value: nextPropsValue,\n multiple,\n delimiter,\n min,\n max,\n onChange\n } = this.props;\n if (value !== nextPropsValue) {\n const value = formatValue(nextPropsValue, {\n multiple,\n delimiter,\n min,\n max\n });\n this.setState({\n value: this.getValue(value)\n });\n }\n }\n\n doAction(action: Action, data: object, throwErrors: boolean) {\n if (action.actionType === 'clear') {\n this.clearValue();\n }\n }\n\n @autobind\n clearValue() {\n const {multiple, min, max} = this.props;\n if (multiple) {\n this.updateValue({min, max});\n } else {\n this.updateValue(min);\n }\n }\n\n @autobind\n getValue(value: FormatValue) {\n const {multiple} = this.props;\n return multiple\n ? {\n max: stripNumber((value as MultipleValue).max),\n min: stripNumber((value as MultipleValue).min)\n }\n : stripNumber(value as number);\n }\n\n /**\n * 所有触发value变换 -> updateValue\n * @param value\n */\n @autobind\n async updateValue(value: FormatValue) {\n this.setState({value: this.getValue(value)});\n const {onChange, data, dispatchEvent} = this.props;\n const result = this.getFormatValue(value);\n\n const rendererEvent = await dispatchEvent(\n 'change',\n createObject(data, {\n value: result\n })\n );\n\n if (rendererEvent?.prevented) {\n return;\n }\n\n onChange && onChange(result);\n }\n\n /**\n * 鼠标松开事件\n */\n @autobind\n onAfterChange() {\n const {value} = this.state;\n const {onAfterChange, dispatchEvent, data} = this.props;\n const result = this.getFormatValue(value);\n onAfterChange && onAfterChange(result);\n }\n\n /**\n * 获取导出格式数据\n */\n @autobind\n getFormatValue(value: FormatValue) {\n const {multiple, joinValues, delimiter} = this.props;\n return multiple\n ? joinValues\n ? [(value as MultipleValue).min, (value as MultipleValue).max].join(\n delimiter || ','\n )\n : {\n min: (value as MultipleValue).min,\n max: (value as MultipleValue).max\n }\n : value;\n }\n\n render() {\n const {value} = this.state;\n const props: RangeItemProps = {\n ...this.props,\n value,\n updateValue: this.updateValue,\n onAfterChange: this.onAfterChange\n };\n\n const {\n classPrefix: ns,\n multiple,\n parts,\n showInput,\n classnames: cx,\n className,\n disabled,\n clearable,\n min,\n max,\n render,\n marks,\n region\n } = props;\n\n // 指定parts -> 重新计算步长\n if (parts > 1) {\n props.step = (props.max - props.min) / props.parts;\n props.showSteps = true;\n }\n\n // 处理自定义json配置\n let renderMarks:\n | MarksType\n | {[index: number | string]: ReactNode}\n | undefined = marks ? {...marks} : marks;\n marks &&\n forEach(marks, (item, key) => {\n if (isObject(item) && (item as SchemaObject).type) {\n renderMarks &&\n (renderMarks[key] = render(region, item as SchemaObject));\n }\n });\n\n return (\n <div\n className={cx(\n 'RangeControl',\n `${ns}InputRange`,\n {'is-disabled': disabled},\n className\n )}\n >\n {showInput && multiple && <Input {...props} type=\"min\" />}\n <InputRange {...props} marks={renderMarks} />\n {showInput && <Input {...props} type=\"max\" />}\n {clearable && !disabled && showInput ? (\n <a\n onClick={() => this.clearValue()}\n className={cx('InputRange-clear', {\n 'is-active': multiple\n ? isEqual(this.state.value, {min: min, max: max})\n : this.state.value !== min\n })}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n ) : null}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-range'\n})\nexport class RangeControlRenderer extends RangeControl {}\n"
|
11
|
+
"import React, {CSSProperties, ReactNode} from 'react';\nimport isNumber from 'lodash/isNumber';\nimport isObject from 'lodash/isObject';\nimport isEqual from 'lodash/isEqual';\nimport forEach from 'lodash/forEach';\n\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport InputRange from '../../components/Range';\nimport NumberInput from '../../components/NumberInput';\nimport {Icon} from '../../components/icons';\nimport {stripNumber} from '../../utils/tpl-builtin';\nimport {autobind, createObject} from '../../utils/helper';\nimport {filter} from '../../utils/tpl';\nimport {SchemaObject} from '../../Schema';\nimport {Action} from '../../types';\n\n/**\n * Range\n * 文档:https://baidu.gitee.io/amis/docs/components/form/range\n */\n\nexport type Value = string | MultipleValue | number | [number, number];\nexport type FormatValue = MultipleValue | number;\nexport type TooltipPosType = 'auto' | 'top' | 'right' | 'bottom' | 'left';\nexport type InputRangeRendererEvent = 'change' | 'blur' | 'focus';\nexport type InputRangeRendererAction = 'clear';\nexport interface RangeControlSchema extends FormBaseControl {\n type: 'input-range';\n\n /**\n * 滑块值\n */\n value?: Value;\n\n /**\n * 最大值\n */\n max?: number;\n\n /**\n * 最小值\n */\n min?: number;\n\n /**\n * 步长\n */\n step?: number;\n\n /**\n * 单位\n */\n unit?: string;\n\n /**\n * 是否展示步长\n */\n showSteps?: boolean;\n\n /**\n * 分割块数\n */\n parts?: number;\n\n /**\n * 刻度\n */\n marks?: MarksType;\n\n /**\n * 是否展示标签\n */\n tooltipVisible?: boolean;\n\n /**\n * 标签方向\n */\n tooltipPlacement?: TooltipPosType;\n\n /**\n * 是否为双滑块\n */\n multiple?: boolean;\n\n /**\n * 是否通过分隔符连接\n */\n joinValues?: boolean;\n\n /**\n * 分隔符\n */\n delimiter?: string;\n\n /**\n * 是否展示输入框\n */\n showInput?: boolean;\n\n /**\n * 是否禁用\n */\n disabled?: boolean;\n}\n\ntype MarksType = {\n [index: number | string]: MarksValue;\n};\n\ntype MarksValue = Record<\n number,\n SchemaObject | {style?: React.CSSProperties; label?: string}\n>;\n\nexport interface RangeProps extends FormControlProps {\n /**\n * 滑块值\n */\n value: Value;\n\n /**\n * 最小值\n */\n min: number;\n\n /**\n * 最大值\n */\n max: number;\n\n /**\n * 步长\n */\n step: number;\n\n /**\n * 是否展示步长\n */\n showSteps: boolean;\n\n /**\n * 分割块数\n */\n parts: number;\n\n /**\n * 刻度\n */\n marks?: MarksType;\n\n /**\n * 是否展示标签\n */\n tooltipVisible: boolean;\n\n /**\n * 标签方向\n */\n tooltipPlacement: TooltipPosType;\n\n /**\n * 控制滑块标签显隐函数\n */\n tipFormatter?: (value: Value) => boolean;\n\n /**\n * 是否为双滑块\n */\n multiple: boolean;\n\n /**\n * 是否通过分隔符连接\n */\n joinValues: boolean;\n\n /**\n * 分隔符\n */\n delimiter: string;\n\n /**\n * 单位\n */\n unit?: string;\n\n /**\n * 是否展示输入框\n */\n showInput: boolean;\n\n /**\n * 是否禁用\n */\n disabled: boolean;\n\n /**\n * value改变事件\n */\n onChange: (value: Value) => void;\n\n /**\n * 鼠标松开事件\n */\n onAfterChange?: (value: Value) => any;\n}\n\nexport interface MultipleValue {\n min: number;\n max: number;\n}\n\nexport interface DefaultProps {\n value: Value;\n max: number;\n min: number;\n step: number;\n unit: string;\n clearable: boolean;\n disabled: boolean;\n showInput: boolean;\n multiple: boolean;\n joinValues: boolean;\n delimiter: string;\n showSteps: boolean;\n parts: number;\n tooltipPlacement: TooltipPosType;\n}\n\nexport interface RangeItemProps extends RangeProps {\n value: FormatValue;\n updateValue: (value: Value) => void;\n onAfterChange: () => void;\n}\n\nexport interface RangeState {\n value: FormatValue;\n}\n\n/**\n * 格式化初始value值\n * @param value 初始value值 Value\n * @param props RangeProps\n * @returns number | {min: number, max: number}\n */\nexport function formatValue(\n value: Value,\n props: {\n multiple: boolean;\n delimiter: string;\n min: number;\n max: number;\n }\n): FormatValue {\n if (props.multiple) {\n let {min, max} = props;\n // value是字符串\n if (typeof value === 'string') {\n [min, max] = value.split(props.delimiter || ',').map(v => Number(v));\n }\n // value是数组\n else if (Array.isArray(value)) {\n [min, max] = value;\n }\n // value是对象\n else if (typeof value === 'object') {\n min = value.min;\n max = value.max;\n }\n return {\n min: min === undefined || min < props.min ? props.min : min,\n max: max === undefined || max > props.max ? props.max : max\n };\n }\n return +value < props.min ? props.min : Math.min(+value, props.max);\n}\n\n/**\n * 输入框\n */\nexport class Input extends React.Component<RangeItemProps, any> {\n /**\n * onChange事件,只能输入数字\n * @param e React.ChangeEvent\n */\n @autobind\n onChange(value: number) {\n const {multiple, value: originValue, type, min} = this.props;\n const _value = this.getValue(value, type);\n\n this.props.updateValue(\n multiple\n ? {...(originValue as MultipleValue), [type]: _value}\n : value ?? min\n );\n }\n\n /**\n * 双滑块 更新value\n * @param value 输入的value值\n */\n @autobind\n onUpdateValue(value: number) {\n const {multiple, value: originValue, type} = this.props;\n const _value = this.getValue(value, type);\n\n this.props.updateValue(\n multiple ? {...(originValue as MultipleValue), [type]: _value} : value\n );\n }\n\n checkNum(value: number | string | undefined) {\n if (typeof value !== 'number') {\n value = filter(value, this.props.data);\n value = /^[-]?\\d+/.test(value) ? +value : undefined;\n }\n return value;\n }\n\n /**\n * 获取步长小数精度\n * @returns\n */\n getStepPrecision() {\n const {step} = this.props;\n const stepIsDecimal = /^\\d+\\.\\d+$/.test(step.toString());\n return !stepIsDecimal || step < 0\n ? 0\n : step.toString().split('.')[1]?.length;\n }\n\n /**\n * 处理数据\n * @param value input数据\n * @param type min | max 双滑块\n * @returns 处理之后数据\n */\n getValue(value: string | number, type?: string) {\n const {max, min, step, value: stateValue} = this.props as RangeItemProps;\n // value为null、undefined时,取对应的min/max\n value = value ?? (type === 'min' ? min : max);\n // 校正value为step的倍数\n let _value = Math.round(parseFloat(value + '') / step) * step;\n // 同步value与步长小数位数\n _value = parseFloat(_value.toFixed(this.getStepPrecision()));\n // 单滑块只用考虑 轨道边界 ,双滑块需要考虑 两端滑块边界\n switch (type) {\n case 'min': {\n if (isObject(stateValue) && isNumber(stateValue.max)) {\n // 如果 大于当前双滑块最大值 取 当前双滑块max值 - 步长\n if (_value >= stateValue.max) {\n return stateValue.max - step;\n }\n return _value;\n }\n return min;\n }\n case 'max':\n if (isObject(stateValue) && isNumber(stateValue.min)) {\n // 如果 小于当前双滑块最大值 取 当前双滑块min值 + 步长\n if (_value <= stateValue.min) {\n return stateValue.min + step;\n }\n return _value;\n }\n return max;\n default:\n // 轨道边界\n return (_value < min && min) || (_value > max && max) || _value;\n }\n }\n\n /**\n * 失焦事件\n */\n @autobind\n onBlur() {\n const {data, dispatchEvent} = this.props;\n dispatchEvent('blur', data);\n }\n\n /**\n * 聚焦事件\n */\n @autobind\n onFocus() {\n const {data, dispatchEvent} = this.props;\n dispatchEvent('focus', data);\n }\n\n render() {\n const {\n classnames: cx,\n value,\n multiple,\n type,\n step,\n classPrefix: ns,\n disabled,\n max,\n min\n } = this.props;\n const _value = multiple\n ? type === 'min'\n ? Math.min((value as MultipleValue).min, (value as MultipleValue).max)\n : Math.max((value as MultipleValue).min, (value as MultipleValue).max)\n : value;\n return (\n <div className={cx(`${ns}InputRange-input`)}>\n <NumberInput\n value={+_value}\n step={step}\n max={this.checkNum(max)}\n min={this.checkNum(min)}\n onChange={this.onChange}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n />\n </div>\n );\n }\n}\n\nexport default class RangeControl extends React.PureComponent<\n RangeProps,\n RangeState\n> {\n midLabel?: HTMLSpanElement;\n\n static defaultProps: DefaultProps = {\n value: 0,\n max: 100,\n min: 0,\n step: 1,\n unit: '',\n clearable: true,\n disabled: false,\n showInput: false,\n multiple: false,\n joinValues: true,\n delimiter: ',',\n showSteps: false,\n parts: 1,\n tooltipPlacement: 'auto'\n };\n\n constructor(props: RangeProps) {\n super(props);\n const {value: propsValue, multiple, delimiter, min, max} = this.props;\n const value = formatValue(propsValue, {\n multiple,\n delimiter,\n min,\n max\n });\n\n this.state = {\n value: this.getValue(value)\n };\n }\n\n componentDidUpdate(prevProps: RangeProps) {\n const {value, min, max} = prevProps;\n const {\n value: nextPropsValue,\n multiple,\n delimiter,\n min: nextPropsMin,\n max: nextPropsMax,\n onChange\n } = this.props;\n\n if (\n value !== nextPropsValue ||\n min !== nextPropsMin ||\n max !== nextPropsMax\n ) {\n const value = formatValue(nextPropsValue, {\n multiple,\n delimiter,\n min: nextPropsMin,\n max: nextPropsMax\n });\n this.setState({\n value: this.getValue(value)\n });\n }\n }\n\n doAction(action: Action, data: object, throwErrors: boolean) {\n if (action.actionType === 'clear') {\n this.clearValue();\n }\n }\n\n @autobind\n clearValue() {\n const {multiple, min, max} = this.props;\n if (multiple) {\n this.updateValue({min, max});\n } else {\n this.updateValue(min);\n }\n }\n\n @autobind\n getValue(value: FormatValue) {\n const {multiple} = this.props;\n return multiple\n ? {\n max: stripNumber((value as MultipleValue).max),\n min: stripNumber((value as MultipleValue).min)\n }\n : stripNumber(value as number);\n }\n\n /**\n * 所有触发value变换 -> updateValue\n * @param value\n */\n @autobind\n async updateValue(value: FormatValue) {\n this.setState({value: this.getValue(value)});\n const {onChange, data, dispatchEvent} = this.props;\n const result = this.getFormatValue(value);\n\n const rendererEvent = await dispatchEvent(\n 'change',\n createObject(data, {\n value: result\n })\n );\n\n if (rendererEvent?.prevented) {\n return;\n }\n\n onChange && onChange(result);\n }\n\n /**\n * 鼠标松开事件\n */\n @autobind\n onAfterChange() {\n const {value} = this.state;\n const {onAfterChange, dispatchEvent, data} = this.props;\n const result = this.getFormatValue(value);\n onAfterChange && onAfterChange(result);\n }\n\n /**\n * 获取导出格式数据\n */\n @autobind\n getFormatValue(value: FormatValue) {\n const {multiple, joinValues, delimiter} = this.props;\n return multiple\n ? joinValues\n ? [(value as MultipleValue).min, (value as MultipleValue).max].join(\n delimiter || ','\n )\n : {\n min: (value as MultipleValue).min,\n max: (value as MultipleValue).max\n }\n : value;\n }\n\n render() {\n const {value} = this.state;\n const props: RangeItemProps = {\n ...this.props,\n value,\n updateValue: this.updateValue,\n onAfterChange: this.onAfterChange\n };\n\n const {\n classPrefix: ns,\n multiple,\n parts,\n showInput,\n classnames: cx,\n className,\n disabled,\n clearable,\n min,\n max,\n render,\n marks,\n region\n } = props;\n\n // 处理自定义json配置\n let renderMarks:\n | MarksType\n | {[index: number | string]: ReactNode}\n | undefined = marks ? {...marks} : marks;\n marks &&\n forEach(marks, (item, key) => {\n if (isObject(item) && (item as SchemaObject).type) {\n renderMarks &&\n (renderMarks[key] = render(region, item as SchemaObject));\n }\n });\n\n return (\n <div\n className={cx(\n 'RangeControl',\n `${ns}InputRange`,\n {'is-disabled': disabled},\n className\n )}\n >\n {showInput && multiple && <Input {...props} type=\"min\" />}\n <InputRange {...props} marks={renderMarks} />\n {showInput && <Input {...props} type=\"max\" />}\n {clearable && !disabled && showInput ? (\n <a\n onClick={() => this.clearValue()}\n className={cx('InputRange-clear', {\n 'is-active': multiple\n ? isEqual(this.state.value, {min: min, max: max})\n : this.state.value !== min\n })}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n ) : null}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-range'\n})\nexport class RangeControlRenderer extends RangeControl {}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -353,6 +353,8 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
|
|
353
353
|
displayName: string;
|
354
354
|
contextType: React.Context<{
|
355
355
|
storeType: string;
|
356
|
+
visibleState: any;
|
357
|
+
disableState: any;
|
356
358
|
} & import("mobx-state-tree/dist/internal").NonEmptyObject & {
|
357
359
|
readonly fetcher: any;
|
358
360
|
readonly notify: any;
|
@@ -538,11 +540,14 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
|
|
538
540
|
dispose: (callback?: (() => void) | undefined) => void;
|
539
541
|
addChildId: (id: string) => void;
|
540
542
|
removeChildId: (id: string) => void;
|
541
|
-
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>): void;
|
542
|
-
|
543
|
-
|
543
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>): void;
|
544
|
+
setVisible(id: string, value: boolean): void;
|
545
|
+
setDisable(id: string, value: boolean): void;
|
544
546
|
} & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
545
547
|
storeType: import("mobx-state-tree").IType<string | undefined, string, string>;
|
548
|
+
} & {
|
549
|
+
visibleState: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
|
550
|
+
disableState: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
|
546
551
|
}, {
|
547
552
|
readonly fetcher: any;
|
548
553
|
readonly notify: any;
|
@@ -728,9 +733,9 @@ export declare function asFormItem(config: Omit<FormItemConfig, 'component'>): (
|
|
728
733
|
dispose: (callback?: (() => void) | undefined) => void;
|
729
734
|
addChildId: (id: string) => void;
|
730
735
|
removeChildId: (id: string) => void;
|
731
|
-
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>): void;
|
732
|
-
|
733
|
-
|
736
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>): void;
|
737
|
+
setVisible(id: string, value: boolean): void;
|
738
|
+
setDisable(id: string, value: boolean): void;
|
734
739
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>>;
|
735
740
|
ComposedComponent: React.ComponentType<any>;
|
736
741
|
} & hoistNonReactStatic.NonReactStatics<any, {}> & {
|
@@ -119,7 +119,9 @@ var FormItemWrap = /** @class */ (function (_super) {
|
|
119
119
|
var horizontal = props.horizontal || props.formHorizontal || {};
|
120
120
|
var left = (0, helper_1.getWidthRate)(horizontal.left);
|
121
121
|
var right = (0, helper_1.getWidthRate)(horizontal.right);
|
122
|
-
return (react_1.default.createElement("div", { "data-role": "form-item", className: cx("Form-item Form-item--horizontal", className, (_a = {
|
122
|
+
return (react_1.default.createElement("div", { "data-role": "form-item", className: cx("Form-item Form-item--horizontal", className, (_a = {
|
123
|
+
'Form-item--horizontal-justify': horizontal.justify
|
124
|
+
},
|
123
125
|
_a["is-error"] = model && !model.valid,
|
124
126
|
_a["is-required"] = required,
|
125
127
|
_a), model === null || model === void 0 ? void 0 : model.errClassNames) },
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/Item.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAC1B,iGAA0D;AAE1D,6BAA8B;AAE9B,yCAKuB;AACvB,6CAM4B;AAC5B,yCAAoC;AAEpC,qCAAwC;AACxC,uCAAuC;AASvC,6CAAgD;AAChD,6CAA0C;AAwW1C;IAAkC,6CAA8B;IAG9D,sBAAY,KAAoB;QAAhC,YACE,kBAAM,KAAK,CAAC,SAUb;QARQ,IAAU,KAAK,GAAI,KAAK,SAAT,CAAU;QAEhC,IAAI,KAAK,EAAE;YACT,KAAI,CAAC,QAAQ,GAAG,IAAA,eAAQ,EACtB,cAAM,OAAA,UAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAG,KAAK,CAAC,SAAS,SAAG,KAAK,CAAC,UAAU,CAAE,EAA/D,CAA+D,EACrE,cAAM,OAAA,KAAI,CAAC,WAAW,EAAE,EAAlB,CAAkB,CACzB,CAAC;SACH;;IACH,CAAC;IAED,2CAAoB,GAApB;QACE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAGD,kCAAW,GAAX,UAAY,CAAM;QACT,IAAU,KAAK,GAAI,IAAI,CAAC,KAAK,SAAd,CAAe;QACrC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAGD,iCAAU,GAAV,UAAW,CAAM;QACR,IAAU,KAAK,GAAI,IAAI,CAAC,KAAK,SAAd,CAAe;QACrC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAGK,uCAAgB,GAAtB,UAAuB,MAAc,EAAE,IAAS;;;;gBAC7B,KAAK,GAAI,IAAI,CAAC,KAAK,SAAd,CAAe;gBACrC,IAAI,CAAC,KAAK,EAAE;oBACV,sBAAO;iBACR;gBAED,sBAAO,IAAI,OAAO,CAAC,UAAA,OAAO;wBACxB,OAAA,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,UAAC,MAAY,IAAK,OAAA,OAAO,CAAC,MAAM,CAAC,EAAf,CAAe,CAAC;oBAAjE,CAAiE,CAClE,EAAC;;;KACH;IAGD,0CAAmB,GAAnB,UAAoB,EAAoB;YAAnB,MAAM,QAAA;QAClB,IAAU,KAAK,GAAI,IAAI,CAAC,KAAK,SAAd,CAAe;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QAED,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAGD,wCAAiB,GAAjB,UAAkB,SAAiB;QAAjB,0BAAA,EAAA,iBAAiB;QAC1B,IAAU,KAAK,GAAI,IAAI,CAAC,KAAK,SAAd,CAAe;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,oCAAa,GAAb;;QACE,IAAM,KAaF,IAAI,CAAC,KAAK,EAZZ,cAAc,oBAAA,EACJ,KAAK,cAAA,EACH,EAAE,gBAAA,EACd,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,aAAa,mBAAA,EACb,cAAc,oBAAA,EACd,WAAW,iBAAA,EACX,IAAI,UAAA,EACJ,WAAW,iBAAA,EACX,WAAW,iBAAA,EACR,IAAI,2BAZH,wJAaL,CAAa,CAAC;QAEf,IAAM,QAAQ,GAAG,WAAW,IAAI,IAAA,iBAAQ,GAAE,CAAC;QAC3C,IAAI,aAAa,EAAE;YACjB,IAAM,WAAW,GAAG,IAAI,IAAI,WAAW,CAAC;YACxC,OAAO,aAAa,iDACf,IAAI,KACP,YAAY,EAAE,IAAI,CAAC,gBAAgB,EACnC,IAAI,MAAA,EACJ,UAAU,EAAE,EAAE,EACd,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,EAAE,CACX,cAAc;wBAEZ,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;wBACvC,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;;oBACjC,GAAC,mDAA4C,IAAA,gBAAO,EAClD,WAAW,CACZ,CAAE,IACD,WAAW,KAAK,KAAK;wBACrB,OAAO,WAAW,KAAK,QAAQ;wBAC/B,CAAC,CAAC,WAAW;wBACb,WAAW,KAAK,MAAM;yBAE1B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,EACpB,cAAc,CACf,IACD,CAAC;SACJ;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAogBD,6BAAM,GAAN;QACQ,IAAA,KAAuD,IAAI,CAAC,KAAK,EAAhE,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,IAAI,UAAA,EAAE,MAAM,YAAA,EAAY,KAAK,cAAc,CAAC;QACxE,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC;QAEzC,IAAI,IAAI,KAAK,KAAK,IAAI,SAAS,EAAE;YAC/B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;SAC7B;QAED,IAAM,YAAY,GAChB,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC;YAClC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEzC,OAAO,CACL;YACG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvD,KAAK;gBACJ,CAAC,CAAC,MAAM,CACJ,OAAO,0BAEL,IAAI,EAAE,QAAQ,IACX,KAAK,CAAC,YAAY,GAEvB;oBACE,IAAI,EAAE,KAAK,CAAC,UAAU;oBACtB,OAAO,EAAE,IAAI,CAAC,iBAAiB;oBAC/B,SAAS,EAAE,IAAI,CAAC,mBAAmB;oBACnC,IAAI,EAAE,KAAK,CAAC,UAAU;oBACtB,SAAS,EAAE,SAAS;iBACrB,CACF;gBACH,CAAC,CAAC,IAAI,CACP,CACJ,CAAC;IACJ,CAAC;;IApiBD;;OAEG;IACI,4BAAe,GAKlB;QACF,UAAU,EAAE,UAAC,KAAoB,EAAE,aAAgC;;YAE/D,IAAA,SAAS,GAqBP,KAAK,UArBE,EACG,EAAE,GAoBZ,KAAK,WApBO,EACd,WAAW,GAmBT,KAAK,YAnBI,EACX,oBAAoB,GAkBlB,KAAK,qBAlBa,EACpB,gBAAgB,GAiBd,KAAK,iBAjBS,EAChB,IAAI,GAgBF,KAAK,KAhBH,EACJ,KAAK,GAeH,KAAK,MAfF,EACL,cAAc,GAcZ,KAAK,eAdO,EACd,MAAM,GAaJ,KAAK,OAbD,EACN,QAAQ,GAYN,KAAK,SAZC,EACR,OAAO,GAWL,KAAK,QAXA,EACP,MAAM,GAUJ,KAAK,OAVD,EACN,WAAW,GAST,KAAK,YATI,EACX,GAAG,GAQD,KAAK,IARJ,EACO,KAAK,GAOb,KAAK,SAPQ,EACf,WAAW,GAMT,KAAK,YANI,EACX,iBAAiB,GAKf,KAAK,kBALU,EACjB,IAAI,GAIF,KAAK,KAJH,EACJ,IAAI,GAGF,KAAK,KAHH,EACJ,YAAY,GAEV,KAAK,aAFK,EACZ,WAAW,GACT,KAAK,YADI,CACH;YAEV,iBAAiB;YACjB,IAAI,WAAW,KAAK,KAAK,EAAE;gBACzB,KAAK,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;aACtC;YAED,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;YAClC,IAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;YAClE,IAAM,IAAI,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAM,KAAK,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAE7C,OAAO,CACL,oDACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,iCAAiC,EACjC,SAAS;oBAEP,GAAC,UAAU,IAAG,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;oBACnC,GAAC,aAAa,IAAG,QAAQ;yBAE3B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,CACrB;gBAEA,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CACjB,yCACE,SAAS,EAAE,EAAE,CACX,YAAY;wBAEV,GAAC,2BACC,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ;4BACtC,CAAC,CAAC,UAAU,CAAC,SAAS;4BACtB,CAAC,CAAC,QAAQ,CACZ,IAAG,UAAU,CAAC,SAAS;wBACzB,GAAC,2BAAoB,IAAI,CAAE,IAAG,CAAC,UAAU,CAAC,SAAS;6BAErD,cAAc,CACf;oBAED;wBACG,KAAK;4BACJ,CAAC,CAAC,MAAM,CACJ,OAAO,EACP,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,YAAM,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CACxD;4BACH,CAAC,CAAC,IAAI;wBACP,QAAQ,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CACpC,wCAAM,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,QAAU,CAC3C,CAAC,CAAC,CAAC,IAAI;wBACP,WAAW;4BACV,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE;gCACrB,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,cAAc;gCACxC,OAAO,EAAE,WAAW;gCACpB,WAAW,aAAA;gCACX,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC;gCACjC,SAAS,EAAE,KAAK,CAAC,gBAAgB;oCAC/B,CAAC,CAAC,KAAK,CAAC,gBAAgB;oCACxB,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB;wCAC9B,CAAC,CAAC,GAAG,CAAC,iBAAiB;wCACvB,CAAC,CAAC,SAAS;6BACd,CAAC;4BACJ,CAAC,CAAC,IAAI,CACH,CACD,CACT,CAAC,CAAC,CAAC,IAAI;gBAER,uCACE,SAAS,EAAE,EAAE,CAAC,YAAY;wBACxB,4FAA4F;wBAC5F,GAAC,2BAAoB,KAAK,CAAE,IAC1B,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,GAAG,IAAI;4BACzD;oBAED,aAAa,EAAE;oBAEf,OAAO;wBACN,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;4BACzB,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;yBAChD,CAAC;wBACJ,CAAC,CAAC,IAAI;oBAEP,MAAM;wBACL,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;4BACf,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc;4BACnC,OAAO,EAAE,MAAM;4BACf,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC;4BAC5B,WAAW,aAAA;4BACX,SAAS,EAAE,KAAK,CAAC,gBAAgB;gCAC/B,CAAC,CAAC,KAAK,CAAC,gBAAgB;gCACxB,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB;oCAC9B,CAAC,CAAC,GAAG,CAAC,iBAAiB;oCACvB,CAAC,CAAC,SAAS;yBACd,CAAC;wBACJ,CAAC,CAAC,IAAI;oBAEP,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS;wBAC/B,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;4BACnB,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;yBAC3B,CAAC;wBACJ,CAAC,CAAC,IAAI;oBAEP,KAAK;wBACN,CAAC,KAAK,CAAC,KAAK;wBACZ,YAAY,KAAK,KAAK;wBACtB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC5B,sCAAI,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,IAC/B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,GAAW,EAAE,GAAW,IAAK,OAAA,CAC9C,sCAAI,GAAG,EAAE,GAAG,IAAG,GAAG,CAAM,CACzB,EAF+C,CAE/C,CAAC,CACC,CACN,CAAC,CAAC,CAAC,IAAI;oBAEP,iBAAiB,KAAK,KAAK,IAAI,WAAW;wBACzC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE;4BACjC,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;yBACxD,CAAC;wBACJ,CAAC,CAAC,IAAI,CACJ,CACF,CACP,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,UAAC,KAAoB,EAAE,aAAgC;;YAE3D,IAAA,SAAS,GAqBP,KAAK,UArBE,EACG,EAAE,GAoBZ,KAAK,WApBO,EACd,IAAI,GAmBF,KAAK,KAnBH,EACJ,WAAW,GAkBT,KAAK,YAlBI,EACX,KAAK,GAiBH,KAAK,MAjBF,EACL,cAAc,GAgBZ,KAAK,eAhBO,EACd,MAAM,GAeJ,KAAK,OAfD,EACN,QAAQ,GAcN,KAAK,SAdC,EACR,OAAO,GAaL,KAAK,QAbA,EACP,MAAM,GAYJ,KAAK,OAZD,EACN,WAAW,GAWT,KAAK,YAXI,EACX,GAAG,GAUD,KAAK,IAVJ,EACH,oBAAoB,GASlB,KAAK,qBATa,EACpB,gBAAgB,GAQd,KAAK,iBARS,EACN,KAAK,GAOb,KAAK,SAPQ,EACf,WAAW,GAMT,KAAK,YANI,EACX,iBAAiB,GAKf,KAAK,kBALU,EACjB,IAAI,GAIF,KAAK,KAJH,EACJ,IAAI,GAGF,KAAK,KAHH,EACJ,YAAY,GAEV,KAAK,aAFK,EACZ,WAAW,GACT,KAAK,YADI,CACH;YAEV,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;YAElC,OAAO,CACL,oDACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,6BAA6B,EAC7B,SAAS;wBAEP,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;;oBACjC,GAAC,aAAa,IAAG,QAAQ;yBAE3B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,CACrB;gBAEA,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAChC,yCAAO,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;oBAChD;wBACG,KAAK;4BACJ,CAAC,CAAC,MAAM,CACJ,OAAO,EACP,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,YAAM,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CACxD;4BACH,CAAC,CAAC,IAAI;wBACP,QAAQ,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CACpC,wCAAM,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,QAAU,CAC3C,CAAC,CAAC,CAAC,IAAI;wBACP,WAAW;4BACV,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE;gCACrB,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,cAAc;gCACxC,OAAO,EAAE,WAAW;gCACpB,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC;gCACjC,WAAW,aAAA;gCACX,SAAS,EAAE,KAAK,CAAC,gBAAgB;oCAC/B,CAAC,CAAC,KAAK,CAAC,gBAAgB;oCACxB,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB;wCAC9B,CAAC,CAAC,GAAG,CAAC,iBAAiB;wCACvB,CAAC,CAAC,SAAS;6BACd,CAAC;4BACJ,CAAC,CAAC,IAAI,CACH,CACD,CACT,CAAC,CAAC,CAAC,IAAI;gBAEP,aAAa,EAAE;gBAEf,OAAO;oBACN,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;wBACzB,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;qBAChD,CAAC;oBACJ,CAAC,CAAC,IAAI;gBAEP,MAAM;oBACL,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACf,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc;wBACnC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC;wBAC5B,OAAO,EAAE,MAAM;wBACf,WAAW,aAAA;wBACX,SAAS,EACP,GAAG,IAAI,GAAG,CAAC,iBAAiB;4BAC1B,CAAC,CAAC,GAAG,CAAC,iBAAiB;4BACvB,CAAC,CAAC,SAAS;qBAChB,CAAC;oBACJ,CAAC,CAAC,IAAI;gBAEP,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS;oBAC/B,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;wBACnB,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;qBAC3B,CAAC;oBACJ,CAAC,CAAC,IAAI;gBAEP,KAAK;oBACN,CAAC,KAAK,CAAC,KAAK;oBACZ,YAAY,KAAK,KAAK;oBACtB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC5B,sCAAI,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,IAC/B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,GAAW,EAAE,GAAW,IAAK,OAAA,CAC9C,sCAAI,GAAG,EAAE,GAAG,IAAG,GAAG,CAAM,CACzB,EAF+C,CAE/C,CAAC,CACC,CACN,CAAC,CAAC,CAAC,IAAI;gBAEP,iBAAiB,KAAK,KAAK,IAAI,WAAW;oBACzC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE;wBACjC,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;qBACxD,CAAC;oBACJ,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,UAAC,KAAoB,EAAE,aAAgC;;YAE3D,IAAA,SAAS,GAqBP,KAAK,UArBE,EACG,EAAE,GAoBZ,KAAK,WApBO,EACd,IAAI,GAmBF,KAAK,KAnBH,EACJ,WAAW,GAkBT,KAAK,YAlBI,EACX,KAAK,GAiBH,KAAK,MAjBF,EACL,cAAc,GAgBZ,KAAK,eAhBO,EACd,MAAM,GAeJ,KAAK,OAfD,EACN,QAAQ,GAcN,KAAK,SAdC,EACR,OAAO,GAaL,KAAK,QAbA,EACP,oBAAoB,GAYlB,KAAK,qBAZa,EACpB,gBAAgB,GAWd,KAAK,iBAXS,EACN,KAAK,GAUb,KAAK,SAVQ,EACf,MAAM,GASJ,KAAK,OATD,EACN,WAAW,GAQT,KAAK,YARI,EACX,GAAG,GAOD,KAAK,IAPJ,EACH,IAAI,GAMF,KAAK,KANH,EACJ,WAAW,GAKT,KAAK,YALI,EACX,iBAAiB,GAIf,KAAK,kBAJU,EACjB,IAAI,GAGF,KAAK,KAHH,EACJ,YAAY,GAEV,KAAK,aAFK,EACZ,WAAW,GACT,KAAK,YADI,CACH;YAEV,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;YAElC,OAAO,CACL,oDACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,6BAA6B,EAC7B,SAAS;wBAEP,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;;oBACjC,GAAC,aAAa,IAAG,QAAQ;yBAE3B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,CACrB;gBAEA,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAChC,yCAAO,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;oBAChD;wBACG,KAAK;4BACJ,CAAC,CAAC,MAAM,CACJ,OAAO,EACP,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,YAAM,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CACxD;4BACH,CAAC,CAAC,KAAK;wBACR,QAAQ,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CACpC,wCAAM,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,QAAU,CAC3C,CAAC,CAAC,CAAC,IAAI;wBACP,WAAW;4BACV,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE;gCACrB,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,cAAc;gCACxC,OAAO,EAAE,WAAW;gCACpB,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC;gCACjC,WAAW,aAAA;gCACX,SAAS,EAAE,KAAK,CAAC,gBAAgB;oCAC/B,CAAC,CAAC,KAAK,CAAC,gBAAgB;oCACxB,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB;wCAC9B,CAAC,CAAC,GAAG,CAAC,iBAAiB;wCACvB,CAAC,CAAC,SAAS;6BACd,CAAC;4BACJ,CAAC,CAAC,IAAI,CACH,CACD,CACT,CAAC,CAAC,CAAC,IAAI;gBAER,uCAAK,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC;oBAC7B,aAAa,EAAE;oBAEf,OAAO;wBACN,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;4BACzB,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;yBAChD,CAAC;wBACJ,CAAC,CAAC,IAAI;oBAEP,MAAM;wBACL,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;4BACf,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc;4BACnC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC;4BAC5B,OAAO,EAAE,MAAM;4BACf,WAAW,aAAA;4BACX,SAAS,EAAE,KAAK,CAAC,gBAAgB;gCAC/B,CAAC,CAAC,KAAK,CAAC,gBAAgB;gCACxB,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB;oCAC9B,CAAC,CAAC,GAAG,CAAC,iBAAiB;oCACvB,CAAC,CAAC,SAAS;yBACd,CAAC;wBACJ,CAAC,CAAC,IAAI;oBAEP,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS;wBAC/B,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;4BACnB,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;yBAC3B,CAAC;wBACJ,CAAC,CAAC,IAAI;oBAEP,KAAK;wBACN,CAAC,KAAK,CAAC,KAAK;wBACZ,YAAY,KAAK,KAAK;wBACtB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC5B,sCAAI,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,IAC/B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,GAAW,EAAE,GAAW,IAAK,OAAA,CAC9C,sCAAI,GAAG,EAAE,GAAG,IAAG,GAAG,CAAM,CACzB,EAF+C,CAE/C,CAAC,CACC,CACN,CAAC,CAAC,CAAC,IAAI;oBAEP,iBAAiB,KAAK,KAAK,IAAI,WAAW;wBACzC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE;4BACjC,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;yBACxD,CAAC;wBACJ,CAAC,CAAC,IAAI,CACJ,CACF,CACP,CAAC;QACJ,CAAC;QAED,GAAG,EAAE,UAAC,KAAoB,EAAE,aAAgC;;YAExD,IAAA,SAAS,GAqBP,KAAK,UArBE,EACG,EAAE,GAoBZ,KAAK,WApBO,EACd,IAAI,GAmBF,KAAK,KAnBH,EACJ,WAAW,GAkBT,KAAK,YAlBI,EACX,KAAK,GAiBH,KAAK,MAjBF,EACL,cAAc,GAgBZ,KAAK,eAhBO,EACd,MAAM,GAeJ,KAAK,OAfD,EACN,QAAQ,GAcN,KAAK,SAdC,EACR,OAAO,GAaL,KAAK,QAbA,EACP,MAAM,GAYJ,KAAK,OAZD,EACN,WAAW,GAWT,KAAK,YAXI,EACX,GAAG,GAUD,KAAK,IAVJ,EACH,oBAAoB,GASlB,KAAK,qBATa,EACpB,gBAAgB,GAQd,KAAK,iBARS,EACN,KAAK,GAOb,KAAK,SAPQ,EACf,WAAW,GAMT,KAAK,YANI,EACX,iBAAiB,GAKf,KAAK,kBALU,EACjB,IAAI,GAIF,KAAK,KAJH,EACJ,IAAI,GAGF,KAAK,KAHH,EACJ,YAAY,GAEV,KAAK,aAFK,EACZ,WAAW,GACT,KAAK,YADI,CACH;YAEV,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;YAElC,OAAO,CACL,oDACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,0BAA0B,EAC1B,SAAS;wBAEP,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;;oBACjC,GAAC,aAAa,IAAG,QAAQ;yBAE3B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,CACrB;gBAED,uCAAK,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC;oBAChC,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAChC,yCAAO,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;wBAChD;4BACG,MAAM,CACL,OAAO,EACP,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,YAAM,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CACxD;4BACA,QAAQ,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CACpC,wCAAM,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,QAAU,CAC3C,CAAC,CAAC,CAAC,IAAI;4BACP,WAAW;gCACV,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE;oCACrB,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,cAAc;oCACxC,OAAO,EAAE,WAAW;oCACpB,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC;oCACjC,WAAW,aAAA;oCACX,SAAS,EAAE,KAAK,CAAC,gBAAgB;wCAC/B,CAAC,CAAC,KAAK,CAAC,gBAAgB;wCACxB,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB;4CAC9B,CAAC,CAAC,GAAG,CAAC,iBAAiB;4CACvB,CAAC,CAAC,SAAS;iCACd,CAAC;gCACJ,CAAC,CAAC,IAAI,CACH,CACD,CACT,CAAC,CAAC,CAAC,IAAI;oBAEP,aAAa,EAAE;oBAEf,OAAO;wBACN,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;4BACzB,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;yBAChD,CAAC;wBACJ,CAAC,CAAC,IAAI;oBAEP,MAAM;wBACL,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;4BACf,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc;4BACnC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC;4BAC5B,OAAO,EAAE,MAAM;4BACf,SAAS,EACP,GAAG,IAAI,GAAG,CAAC,iBAAiB;gCAC1B,CAAC,CAAC,GAAG,CAAC,iBAAiB;gCACvB,CAAC,CAAC,SAAS;yBAChB,CAAC;wBACJ,CAAC,CAAC,IAAI,CACJ;gBAEL,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS;oBAC/B,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;wBACnB,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;qBAC3B,CAAC;oBACJ,CAAC,CAAC,IAAI;gBAEP,KAAK;oBACN,CAAC,KAAK,CAAC,KAAK;oBACZ,YAAY,KAAK,KAAK;oBACtB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC5B,sCAAI,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,IAC/B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,GAAW,EAAE,GAAW,IAAK,OAAA,CAC9C,sCAAI,GAAG,EAAE,GAAG,IAAG,GAAG,CAAM,CACzB,EAF+C,CAE/C,CAAC,CACC,CACN,CAAC,CAAC,CAAC,IAAI;gBAEP,WAAW,IAAI,iBAAiB,KAAK,KAAK;oBACzC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE;wBACjC,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;qBACxD,CAAC;oBACJ,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;QACJ,CAAC;KACF,CAAC;IA3lBF;QADC,iBAAQ;;;;mDAKR;IAGD;QADC,iBAAQ;;;;kDAKR;IAGD;QADC,iBAAQ;;0EACsB,cAAM,oBAAN,cAAM;;wDASpC;IAGD;QADC,iBAAQ;;0EACqB,KAAK,oBAAL,KAAK;;2DAOlC;IAGD;QADC,iBAAQ;;;;yDAOR;IAslBH,mBAAC;CAAA,AArpBD,CAAkC,eAAK,CAAC,SAAS,GAqpBhD;AArpBY,oCAAY;AAupBzB,2BAA2B;AAC3B,mBAAmB;AACN,QAAA,WAAW,GAAG;IACzB,cAAc;IACd,YAAY;IACZ,SAAS;IACT,oBAAoB;IACpB,eAAe;IACf,OAAO;IACP,cAAc;IACd,UAAU;IACV,aAAa;IACb,WAAW;IACX,WAAW;IACX,SAAS;IACT,cAAc;IACd,UAAU;IACV,MAAM;IACN,aAAa;IACb,UAAU;IACV,WAAW;IACX,UAAU;IACV,qBAAqB;IACrB,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,gBAAgB;IAChB,OAAO;IACP,gBAAgB;IAChB,YAAY;IACZ,UAAU;IACV,OAAO;IACP,KAAK;IACL,SAAS;IACT,KAAK;IACL,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;IACR,aAAa;IACb,WAAW;IACX,UAAU;IACV,QAAQ;IACR,MAAM;IACN,MAAM;IACN,YAAY;IACZ,qBAAqB;IACrB,MAAM;IACN,MAAM;IACN,WAAW;IACX,MAAM;IACN,OAAO;IACP,WAAW;IACX,YAAY;IACZ,OAAO;IACP,aAAa;IACb,WAAW;IACX,WAAW;IACX,OAAO;CACR,CAAC;AAEF,SAAgB,UAAU,CAAC,MAAyC;IAClE,OAAO,UAAC,OAA6B;;QACnC,IAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,YAAY,eAAK,CAAC,SAAS,CAAC,CAAC;QAE9D,oBAAoB;QACpB,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;YAClD,IAAM,IAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3B,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG;gBAC3B,IAAM,IAAI,GAAG;oBACX,KAAK,EAAE,IAAI;iBACZ,CAAC;gBAEF,OAAO,IAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACnC,CAAC,CAAC;SACH;aAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;YAC1B,OAAO,CAAC,KAAK,CACX,qEAAqE,CACtE,CAAC;SACH;QAED,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,OAAO,GAAG,IAAA,2BAAe,EAAC;gBACxB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC,IAAA,qBAAQ,EAAC,OAAO,CAAC,CAAC,CAAC;YACtB,OAAO,MAAM,CAAC,SAAS,CAAC;SACzB;QAED,OAAO,IAAA,yBAAW,EAChB,IAAA,iCAAmB;gBACH,wCAAY;gBA2BxB,iBAAY,KAAoB;oBAAhC,YACE,kBAAM,KAAK,CAAC,SAWb;oBAVC,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;oBAE5B,IAAA,WAAW,GAAqB,KAAK,YAA1B,EAAY,KAAK,GAAI,KAAK,SAAT,CAAU;oBAE7C,qBAAqB;oBACrB,IAAI,KAAK,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE;wBAC/C,KAAK,CAAC,MAAM,CAAC;4BACX,KAAK,EAAE,MAAM,CAAC,WAAW;yBAC1B,CAAC,CAAC;qBACJ;;gBACH,CAAC;gBAED,uCAAqB,GAArB,UAAsB,SAA2B;;oBAC/C,IACE,CAAA,MAAA,MAAM,CAAC,qBAAqB,+CAA5B,MAAM,EAAyB,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;wBACrD,SAAS,CAAC,UAAU,KAAK,KAAK;wBAC9B,MAAM,CAAC,UAAU,KAAK,KAAK,EAC3B;wBACA,OAAO,IAAI,CAAC;qBACb;oBAED,4BAA4B;oBAC5B,IAAI,IAAA,mBAAU,EAAC,mBAAW,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;wBAClD,OAAO,IAAI,CAAC;qBACb;oBAED,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,oCAAkB,GAAlB;oBACE,OAAO,IAAI,CAAC,GAAG,CAAC;gBAClB,CAAC;gBAED,uBAAK,GAAL,UAAM,GAAQ;oBACZ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;gBACjB,CAAC;gBAED,+BAAa,GAAb;;oBACE,IAAM,KAUF,IAAI,CAAC,KAAK,EATZ,cAAc,oBAAA,EACJ,KAAK,cAAA,EACH,EAAE,gBAAA,EACd,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,IAAI,UAAA,EACJ,WAAW,iBAAA,EACX,WAAW,iBAAA,EACR,IAAI,2BATH,sGAUL,CAAa,CAAC;oBAEf,IAAM,WAAW,GAAG,IAAI,IAAI,WAAW,CAAC;oBACxC,IAAM,QAAQ,GAAG,WAAW,IAAI,IAAA,iBAAQ,GAAE,CAAC;oBAC3C,OAAO,CACL,8BAAC,OAAO,4BACF,IAAI,IACR,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,IAAI,CAAC,gBAAgB,EACnC,IAAI,EAAE,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EACrD,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,EAAE,EACd,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EACnC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC5C,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,EAAE,CACX,cAAc;gCAEZ,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;gCACvC,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;;4BACjC,GAAC,mDAA4C,IAAA,gBAAO,EAClD,WAAW,CACZ,CAAE,IACD,MAAM,CAAC,WAAW,KAAK,KAAK;gCAC5B,OAAO,WAAW,KAAK,QAAQ;gCAC/B,CAAC,CAAC,WAAW;gCACb,WAAW,KAAK,MAAM;iCAE1B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,EACpB,cAAc,CACf,IACD,CACH,CAAC;gBACJ,CAAC;gBACH,cAAC;YAAD,CAAC,AAjHD,CAAc,YAAY;YACjB,eAAY,2BACjB,SAAS,EAAE,EAAE,EACb,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAC3C,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,YAAY,EAAE,MAAM,CAAC,YAAY,IAC9B,OAAO,CAAC,YAAY,CACvB;YACK,YAAS;gBACd,OAAO;gBACP,cAAc;gBACd,UAAU;gBACV,mBAAmB;gBACnB,UAAU;gBACV,YAAY;eACT,CAAE,OAAe,CAAC,SAAS,IAAI,EAAE,CAAC,OACrC;YAEK,cAAW,GAAG,kBACnB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAI,MAAM,CAAC,IAAI,MAAG,CAAC,CAAC,CAAC,EAAE,CACpC;YACI,oBAAiB,GAAG,OAAQ;iBA2FrC,OAAO,CACD,CACT,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AApJD,gCAoJC;AAED,SAAgB,gBAAgB,CAAC,MAAsB;IACrD,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEnD,OAAO,IAAA,0BAAgB,kDAClB,MAAM,KACT,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EACnE,SAAS,EAAE,OAAc,EACzB,UAAU,EAAE,IAAI,IAChB,CAAC;AACL,CAAC;AATD,4CASC;AAED,SAAgB,QAAQ,CAAC,MAA2B;IAClD,OAAO,UAAU,SAA+B;QAC9C,IAAM,QAAQ,GAAG,gBAAgB,iDAC5B,MAAM,KACT,SAAS,WAAA,IACT,CAAC;QAEH,OAAO,QAAQ,CAAC,SAAgB,CAAC;IACnC,CAAC,CAAC;AACJ,CAAC;AATD,4BASC;AAED,kBAAe,QAAQ,CAAC",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport {IFormItemStore, IFormStore} from '../../store/form';\nimport {reaction} from 'mobx';\n\nimport {\n RendererProps,\n registerRenderer,\n TestFunc,\n RendererConfig\n} from '../../factory';\nimport {\n anyChanged,\n ucFirst,\n getWidthRate,\n autobind,\n isMobile\n} from '../../utils/helper';\nimport {observer} from 'mobx-react';\nimport {FormHorizontal, FormSchema, FormSchemaHorizontal} from '.';\nimport {Api, Schema} from '../../types';\nimport {filter} from '../../utils/tpl';\nimport {SchemaRemark} from '../Remark';\nimport {\n BaseSchema,\n SchemaApi,\n SchemaClassName,\n SchemaObject,\n SchemaType\n} from '../../Schema';\nimport {HocStoreFactory} from '../../WithStore';\nimport {wrapControl} from './wrapControl';\nimport type {OnEventProps} from '../../utils/renderer-event';\n\nexport type FormControlSchemaAlias = SchemaObject;\n\nexport interface FormBaseControl\n extends Omit<BaseSchema, 'type'>,\n OnEventProps {\n /**\n * 表单项类型\n */\n type: SchemaType;\n\n /**\n * 表单项大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n\n /**\n * 描述标题\n */\n label?: string | false;\n\n /**\n * 配置 label className\n */\n labelClassName?: SchemaClassName;\n\n /**\n * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c\n */\n name?: string;\n\n /**\n * 显示一个小图标, 鼠标放上去的时候显示提示内容\n */\n remark?: SchemaRemark;\n\n /**\n * 显示一个小图标, 鼠标放上去的时候显示提示内容, 这个小图标跟 label 在一起\n */\n labelRemark?: SchemaRemark;\n\n /**\n * 输入提示,聚焦的时候显示\n */\n hint?: string;\n\n /**\n * 当修改完的时候是否提交表单。\n */\n submitOnChange?: boolean;\n\n /**\n * 是否只读\n */\n readOnly?: boolean;\n\n /**\n * 不设置时,当表单提交过后表单项每次修改都会触发重新验证,\n * 如果设置了,则由此配置项来决定要不要每次修改都触发验证。\n */\n validateOnChange?: boolean;\n\n /**\n * 描述内容,支持 Html 片段。\n */\n description?: string;\n\n /**\n * @deprecated 用 description 代替\n */\n desc?: string;\n\n /**\n * 配置描述上的 className\n */\n descriptionClassName?: SchemaClassName;\n\n /**\n * 配置当前表单项展示模式\n */\n mode?: 'normal' | 'inline' | 'horizontal';\n\n /**\n * 当配置为水平布局的时候,用来配置具体的左右分配。\n */\n horizontal?: FormSchemaHorizontal;\n\n /**\n * 表单 control 是否为 inline 模式。\n */\n inline?: boolean;\n\n /**\n * 配置 input className\n */\n inputClassName?: SchemaClassName;\n\n /**\n * 占位符\n */\n placeholder?: string;\n\n /**\n * 是否为必填\n */\n required?: boolean;\n\n /**\n * 验证失败的提示信息\n */\n validationErrors?: {\n isAlpha?: string;\n isAlphanumeric?: string;\n isEmail?: string;\n isFloat?: string;\n isInt?: string;\n isJson?: string;\n isLength?: string;\n isNumeric?: string;\n isRequired?: string;\n isUrl?: string;\n matchRegexp?: string;\n matchRegexp2?: string;\n matchRegexp3?: string;\n matchRegexp4?: string;\n matchRegexp5?: string;\n maxLength?: string;\n maximum?: string;\n minLength?: string;\n minimum?: string;\n\n [propName: string]: any;\n };\n\n validations?:\n | string\n | {\n /**\n * 是否是字母\n */\n isAlpha?: boolean;\n\n /**\n * 是否为字母数字\n */\n isAlphanumeric?: boolean;\n\n /**\n * 是否为邮箱地址\n */\n isEmail?: boolean;\n\n /**\n * 是否为浮点型\n */\n isFloat?: boolean;\n\n /**\n * 是否为整型\n */\n isInt?: boolean;\n\n /**\n * 是否为 json\n */\n isJson?: boolean;\n\n /**\n * 长度等于指定值\n */\n isLength?: number;\n\n /**\n * 是否为数字\n */\n isNumeric?: boolean;\n\n /**\n * 是否为必填\n */\n isRequired?: boolean;\n\n /**\n * 是否为 URL 地址\n */\n isUrl?: boolean;\n\n /**\n * 内容命中指定正则\n */\n matchRegexp?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp1?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp2?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp3?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp4?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp5?: string;\n\n /**\n * 最大长度为指定值\n */\n maxLength?: number;\n\n /**\n * 最大值为指定值\n */\n maximum?: number;\n\n /**\n * 最小长度为指定值\n */\n minLength?: number;\n\n /**\n * 最小值为指定值\n */\n minimum?: number;\n\n [propName: string]: any;\n };\n\n /**\n * 默认值,切记只能是静态值,不支持取变量,跟数据关联是通过设置 name 属性来实现的。\n */\n value?: any;\n\n /**\n * 表单项隐藏时,是否在当前 Form 中删除掉该表单项值。注意同名的未隐藏的表单项值也会删掉\n */\n clearValueOnHidden?: boolean;\n\n /**\n * 远端校验表单项接口\n */\n validateApi?: SchemaApi;\n}\n\nexport interface FormItemBasicConfig extends Partial<RendererConfig> {\n type?: string;\n wrap?: boolean;\n renderLabel?: boolean;\n renderDescription?: boolean;\n test?: RegExp | TestFunc;\n storeType?: string;\n validations?: string;\n strictMode?: boolean;\n shouldComponentUpdate?: (props: any, prevProps: any) => boolean;\n descriptionClassName?: string;\n storeExtendsData?: boolean;\n sizeMutable?: boolean;\n weight?: number;\n extendsData?: boolean;\n showErrorMsg?: boolean;\n\n // 兼容老用法,新用法直接在 Component 里面定义 validate 方法即可。\n validate?: (values: any, value: any) => string | boolean;\n}\n\n// 自己接收到属性。\nexport interface FormItemProps extends RendererProps {\n name?: string;\n formStore?: IFormStore;\n formItem?: IFormItemStore;\n formInited: boolean;\n formMode: 'normal' | 'horizontal' | 'inline' | 'row' | 'default';\n formHorizontal: FormHorizontal;\n defaultSize?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n disabled?: boolean;\n btnDisabled: boolean;\n defaultValue: any;\n value?: any;\n prinstine: any;\n setPrinstineValue: (value: any) => void;\n onChange: (\n value: any,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) => void;\n onBulkChange?: (\n values: {[propName: string]: any},\n submitOnChange?: boolean\n ) => void;\n addHook: (fn: Function, mode?: 'validate' | 'init' | 'flush') => () => void;\n removeHook: (fn: Function, mode?: 'validate' | 'init' | 'flush') => void;\n renderFormItems: (\n schema: Partial<FormSchema>,\n region: string,\n props: any\n ) => JSX.Element;\n onFocus: (e: any) => void;\n onBlur: (e: any) => void;\n\n formItemValue: any; // 不建议使用 为了兼容 v1\n getValue: () => any; // 不建议使用 为了兼容 v1\n setValue: (value: any, key: string) => void; // 不建议使用 为了兼容 v1\n\n inputClassName?: string;\n renderControl?: (props: FormControlProps) => JSX.Element;\n\n inputOnly?: boolean;\n renderLabel?: boolean;\n renderDescription?: boolean;\n sizeMutable?: boolean;\n wrap?: boolean;\n hint?: string;\n description?: string;\n descriptionClassName?: string;\n // error 详情\n errors?: {\n [propName: string]: string;\n };\n // error string\n error?: string;\n showErrorMsg?: boolean;\n}\n\n// 下发下去的属性\nexport type FormControlProps = RendererProps & {\n onOpenDialog: (schema: Schema, data: any) => Promise<any>;\n} & Exclude<\n FormItemProps,\n | 'inputClassName'\n | 'renderControl'\n | 'defaultSize'\n | 'size'\n | 'error'\n | 'errors'\n | 'hint'\n | 'descriptionClassName'\n | 'inputOnly'\n | 'renderLabel'\n | 'renderDescription'\n | 'sizeMutable'\n | 'wrap'\n >;\n\nexport type FormItemComponent = React.ComponentType<FormItemProps>;\nexport type FormControlComponent = React.ComponentType<FormControlProps>;\n\nexport interface FormItemConfig extends FormItemBasicConfig {\n component: FormControlComponent;\n}\n\nexport class FormItemWrap extends React.Component<FormItemProps> {\n reaction: any;\n\n constructor(props: FormItemProps) {\n super(props);\n\n const {formItem: model} = props;\n\n if (model) {\n this.reaction = reaction(\n () => `${model.errors.join('')}${model.isFocused}${model.dialogOpen}`,\n () => this.forceUpdate()\n );\n }\n }\n\n componentWillUnmount() {\n this.reaction && this.reaction();\n }\n\n @autobind\n handleFocus(e: any) {\n const {formItem: model} = this.props;\n model && model.focus();\n this.props.onFocus && this.props.onFocus(e);\n }\n\n @autobind\n handleBlur(e: any) {\n const {formItem: model} = this.props;\n model && model.blur();\n this.props.onBlur && this.props.onBlur(e);\n }\n\n @autobind\n async handleOpenDialog(schema: Schema, data: any) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n\n return new Promise(resolve =>\n model.openDialog(schema, data, (result?: any) => resolve(result))\n );\n }\n\n @autobind\n handleDialogConfirm([values]: Array<any>) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n\n model.closeDialog(values);\n }\n\n @autobind\n handleDialogClose(confirmed = false) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n model.closeDialog(confirmed);\n }\n\n renderControl(): JSX.Element | null {\n const {\n inputClassName,\n formItem: model,\n classnames: cx,\n children,\n type,\n renderControl,\n formItemConfig,\n sizeMutable,\n size,\n defaultSize,\n useMobileUI,\n ...rest\n } = this.props;\n\n const mobileUI = useMobileUI && isMobile();\n if (renderControl) {\n const controlSize = size || defaultSize;\n return renderControl({\n ...rest,\n onOpenDialog: this.handleOpenDialog,\n type,\n classnames: cx,\n formItem: model,\n className: cx(\n `Form-control`,\n {\n 'is-inline': !!rest.inline && !mobileUI,\n 'is-error': model && !model.valid,\n [`Form-control--withSize Form-control--size${ucFirst(\n controlSize\n )}`]:\n sizeMutable !== false &&\n typeof controlSize === 'string' &&\n !!controlSize &&\n controlSize !== 'full'\n },\n model?.errClassNames,\n inputClassName\n )\n });\n }\n\n return null;\n }\n\n /**\n * 布局扩充点,可以自己扩充表单项的布局方式\n */\n static layoutRenderers: {\n [propsName: string]: (\n props: FormItemProps,\n renderControl: () => JSX.Element | null\n ) => JSX.Element;\n } = {\n horizontal: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n description,\n descriptionClassName,\n captionClassName,\n desc,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg,\n useMobileUI\n } = props;\n\n // 强制不渲染 label 的话\n if (renderLabel === false) {\n label = label === false ? false : '';\n }\n\n description = description || desc;\n const horizontal = props.horizontal || props.formHorizontal || {};\n const left = getWidthRate(horizontal.left);\n const right = getWidthRate(horizontal.right);\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--horizontal`,\n className,\n {\n [`is-error`]: model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label !== false ? (\n <label\n className={cx(\n `Form-label`,\n {\n [`Form-itemColumn--${\n typeof horizontal.leftFixed === 'string'\n ? horizontal.leftFixed\n : 'normal'\n }`]: horizontal.leftFixed,\n [`Form-itemColumn--${left}`]: !horizontal.leftFixed\n },\n labelClassName\n )}\n >\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : null}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n useMobileUI,\n className: cx(`Form-labelRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n <div\n className={cx(`Form-value`, {\n // [`Form-itemColumn--offset${getWidthRate(horizontal.offset)}`]: !label && label !== false,\n [`Form-itemColumn--${right}`]:\n !horizontal.leftFixed && !!right && right !== 12 - left\n })}\n >\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n tooltip: remark,\n className: cx(`Form-remark`),\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n </div>\n );\n },\n\n normal: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n descriptionClassName,\n captionClassName,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg,\n useMobileUI\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--normal`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : null}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n useMobileUI,\n container:\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n );\n },\n\n inline: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n descriptionClassName,\n captionClassName,\n formItem: model,\n remark,\n labelRemark,\n env,\n hint,\n renderLabel,\n renderDescription,\n data,\n showErrorMsg,\n useMobileUI\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--inline`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : label}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n <div className={cx(`Form-value`)}>\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n </div>\n );\n },\n\n row: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n descriptionClassName,\n captionClassName,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg,\n useMobileUI\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--row`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n <div className={cx('Form-rowInner')}>\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n container:\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </div>\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx('Form-feedback')}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {description && renderDescription !== false\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n );\n }\n };\n\n render() {\n const {formMode, inputOnly, wrap, render, formItem: model} = this.props;\n const mode = this.props.mode || formMode;\n\n if (wrap === false || inputOnly) {\n return this.renderControl();\n }\n\n const renderLayout =\n FormItemWrap.layoutRenderers[mode] ||\n FormItemWrap.layoutRenderers['normal'];\n\n return (\n <>\n {renderLayout(this.props, this.renderControl.bind(this))}\n\n {model\n ? render(\n 'modal',\n {\n type: 'dialog',\n ...model.dialogSchema\n },\n {\n show: model.dialogOpen,\n onClose: this.handleDialogClose,\n onConfirm: this.handleDialogConfirm,\n data: model.dialogData,\n formStore: undefined\n }\n )\n : null}\n </>\n );\n }\n}\n\n// 白名单形式,只有这些属性发生变化,才会往下更新。\n// 除非配置 strictMode\nexport const detectProps = [\n 'formPristine', // 这个千万不能干掉。\n 'formInited',\n 'addable',\n 'addButtonClassName',\n 'addButtonText',\n 'addOn',\n 'btnClassName',\n 'btnLabel',\n 'btnDisabled',\n 'className',\n 'clearable',\n 'columns',\n 'columnsCount',\n 'controls',\n 'desc',\n 'description',\n 'disabled',\n 'draggable',\n 'editable',\n 'editButtonClassName',\n 'formHorizontal',\n 'formMode',\n 'hideRoot',\n 'horizontal',\n 'icon',\n 'inline',\n 'inputClassName',\n 'label',\n 'labelClassName',\n 'labelField',\n 'language',\n 'level',\n 'max',\n 'maxRows',\n 'min',\n 'minRows',\n 'multiLine',\n 'multiple',\n 'option',\n 'placeholder',\n 'removable',\n 'required',\n 'remark',\n 'hint',\n 'rows',\n 'searchable',\n 'showCompressOptions',\n 'size',\n 'step',\n 'showInput',\n 'unit',\n 'value',\n 'diffValue',\n 'borderMode',\n 'items',\n 'showCounter',\n 'minLength',\n 'maxLength',\n 'embed'\n];\n\nexport function asFormItem(config: Omit<FormItemConfig, 'component'>) {\n return (Control: FormControlComponent) => {\n const isSFC = !(Control.prototype instanceof React.Component);\n\n // 兼容老的 FormItem 用法。\n if (config.validate && !Control.prototype.validate) {\n const fn = config.validate;\n Control.prototype.validate = function () {\n const host = {\n input: this\n };\n\n return fn.apply(host, arguments);\n };\n } else if (config.validate) {\n console.error(\n 'FormItem配置中的 validate 将不起作用,因为类的成员函数中已经定义了 validate 方法,将优先使用类里面的实现。'\n );\n }\n\n if (config.storeType) {\n Control = HocStoreFactory({\n storeType: config.storeType,\n extendsData: config.extendsData\n })(observer(Control));\n delete config.storeType;\n }\n\n return wrapControl(\n hoistNonReactStatic(\n class extends FormItemWrap {\n static defaultProps = {\n className: '',\n renderLabel: config.renderLabel,\n renderDescription: config.renderDescription,\n sizeMutable: config.sizeMutable,\n wrap: config.wrap,\n showErrorMsg: config.showErrorMsg,\n ...Control.defaultProps\n };\n static propsList: any = [\n 'value',\n 'defaultValue',\n 'onChange',\n 'setPrinstineValue',\n 'readOnly',\n 'strictMode',\n ...((Control as any).propsList || [])\n ];\n\n static displayName = `FormItem${\n config.type ? `(${config.type})` : ''\n }`;\n static ComposedComponent = Control;\n\n ref: any;\n\n constructor(props: FormItemProps) {\n super(props);\n this.refFn = this.refFn.bind(this);\n\n const {validations, formItem: model} = props;\n\n // 组件注册的时候可能默认指定验证器类型\n if (model && !validations && config.validations) {\n model.config({\n rules: config.validations\n });\n }\n }\n\n shouldComponentUpdate(nextProps: FormControlProps) {\n if (\n config.shouldComponentUpdate?.(this.props, nextProps) ||\n nextProps.strictMode === false ||\n config.strictMode === false\n ) {\n return true;\n }\n\n // 把可能会影响视图的白名单弄出来,减少重新渲染次数。\n if (anyChanged(detectProps, this.props, nextProps)) {\n return true;\n }\n\n return false;\n }\n\n getWrappedInstance() {\n return this.ref;\n }\n\n refFn(ref: any) {\n this.ref = ref;\n }\n\n renderControl() {\n const {\n inputClassName,\n formItem: model,\n classnames: cx,\n children,\n type,\n size,\n defaultSize,\n useMobileUI,\n ...rest\n } = this.props;\n\n const controlSize = size || defaultSize;\n const mobileUI = useMobileUI && isMobile();\n return (\n <Control\n {...rest}\n useMobileUI={useMobileUI}\n onOpenDialog={this.handleOpenDialog}\n size={config.sizeMutable !== false ? undefined : size}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n type={type}\n classnames={cx}\n ref={isSFC ? undefined : this.refFn}\n forwardedRef={isSFC ? this.refFn : undefined}\n formItem={model}\n className={cx(\n `Form-control`,\n {\n 'is-inline': !!rest.inline && !mobileUI,\n 'is-error': model && !model.valid,\n [`Form-control--withSize Form-control--size${ucFirst(\n controlSize\n )}`]:\n config.sizeMutable !== false &&\n typeof controlSize === 'string' &&\n !!controlSize &&\n controlSize !== 'full'\n },\n model?.errClassNames,\n inputClassName\n )}\n />\n );\n }\n },\n Control\n ) as any\n );\n };\n}\n\nexport function registerFormItem(config: FormItemConfig): RendererConfig {\n let Control = asFormItem(config)(config.component);\n\n return registerRenderer({\n ...config,\n weight: typeof config.weight !== 'undefined' ? config.weight : -100, // 优先级高点\n component: Control as any,\n isFormItem: true\n });\n}\n\nexport function FormItem(config: FormItemBasicConfig) {\n return function (component: FormControlComponent): any {\n const renderer = registerFormItem({\n ...config,\n component\n });\n\n return renderer.component as any;\n };\n}\n\nexport default FormItem;\n"
|
11
|
+
"import React from 'react';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport {IFormItemStore, IFormStore} from '../../store/form';\nimport {reaction} from 'mobx';\n\nimport {\n RendererProps,\n registerRenderer,\n TestFunc,\n RendererConfig\n} from '../../factory';\nimport {\n anyChanged,\n ucFirst,\n getWidthRate,\n autobind,\n isMobile\n} from '../../utils/helper';\nimport {observer} from 'mobx-react';\nimport {FormHorizontal, FormSchema, FormSchemaHorizontal} from '.';\nimport {Api, Schema} from '../../types';\nimport {filter} from '../../utils/tpl';\nimport {SchemaRemark} from '../Remark';\nimport {\n BaseSchema,\n SchemaApi,\n SchemaClassName,\n SchemaObject,\n SchemaType\n} from '../../Schema';\nimport {HocStoreFactory} from '../../WithStore';\nimport {wrapControl} from './wrapControl';\nimport type {OnEventProps} from '../../utils/renderer-event';\n\nexport type FormControlSchemaAlias = SchemaObject;\n\nexport interface FormBaseControl\n extends Omit<BaseSchema, 'type'>,\n OnEventProps {\n /**\n * 表单项类型\n */\n type: SchemaType;\n\n /**\n * 表单项大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n\n /**\n * 描述标题\n */\n label?: string | false;\n\n /**\n * 配置 label className\n */\n labelClassName?: SchemaClassName;\n\n /**\n * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c\n */\n name?: string;\n\n /**\n * 显示一个小图标, 鼠标放上去的时候显示提示内容\n */\n remark?: SchemaRemark;\n\n /**\n * 显示一个小图标, 鼠标放上去的时候显示提示内容, 这个小图标跟 label 在一起\n */\n labelRemark?: SchemaRemark;\n\n /**\n * 输入提示,聚焦的时候显示\n */\n hint?: string;\n\n /**\n * 当修改完的时候是否提交表单。\n */\n submitOnChange?: boolean;\n\n /**\n * 是否只读\n */\n readOnly?: boolean;\n\n /**\n * 不设置时,当表单提交过后表单项每次修改都会触发重新验证,\n * 如果设置了,则由此配置项来决定要不要每次修改都触发验证。\n */\n validateOnChange?: boolean;\n\n /**\n * 描述内容,支持 Html 片段。\n */\n description?: string;\n\n /**\n * @deprecated 用 description 代替\n */\n desc?: string;\n\n /**\n * 配置描述上的 className\n */\n descriptionClassName?: SchemaClassName;\n\n /**\n * 配置当前表单项展示模式\n */\n mode?: 'normal' | 'inline' | 'horizontal';\n\n /**\n * 当配置为水平布局的时候,用来配置具体的左右分配。\n */\n horizontal?: FormSchemaHorizontal;\n\n /**\n * 表单 control 是否为 inline 模式。\n */\n inline?: boolean;\n\n /**\n * 配置 input className\n */\n inputClassName?: SchemaClassName;\n\n /**\n * 占位符\n */\n placeholder?: string;\n\n /**\n * 是否为必填\n */\n required?: boolean;\n\n /**\n * 验证失败的提示信息\n */\n validationErrors?: {\n isAlpha?: string;\n isAlphanumeric?: string;\n isEmail?: string;\n isFloat?: string;\n isInt?: string;\n isJson?: string;\n isLength?: string;\n isNumeric?: string;\n isRequired?: string;\n isUrl?: string;\n matchRegexp?: string;\n matchRegexp2?: string;\n matchRegexp3?: string;\n matchRegexp4?: string;\n matchRegexp5?: string;\n maxLength?: string;\n maximum?: string;\n minLength?: string;\n minimum?: string;\n\n [propName: string]: any;\n };\n\n validations?:\n | string\n | {\n /**\n * 是否是字母\n */\n isAlpha?: boolean;\n\n /**\n * 是否为字母数字\n */\n isAlphanumeric?: boolean;\n\n /**\n * 是否为邮箱地址\n */\n isEmail?: boolean;\n\n /**\n * 是否为浮点型\n */\n isFloat?: boolean;\n\n /**\n * 是否为整型\n */\n isInt?: boolean;\n\n /**\n * 是否为 json\n */\n isJson?: boolean;\n\n /**\n * 长度等于指定值\n */\n isLength?: number;\n\n /**\n * 是否为数字\n */\n isNumeric?: boolean;\n\n /**\n * 是否为必填\n */\n isRequired?: boolean;\n\n /**\n * 是否为 URL 地址\n */\n isUrl?: boolean;\n\n /**\n * 内容命中指定正则\n */\n matchRegexp?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp1?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp2?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp3?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp4?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp5?: string;\n\n /**\n * 最大长度为指定值\n */\n maxLength?: number;\n\n /**\n * 最大值为指定值\n */\n maximum?: number;\n\n /**\n * 最小长度为指定值\n */\n minLength?: number;\n\n /**\n * 最小值为指定值\n */\n minimum?: number;\n\n [propName: string]: any;\n };\n\n /**\n * 默认值,切记只能是静态值,不支持取变量,跟数据关联是通过设置 name 属性来实现的。\n */\n value?: any;\n\n /**\n * 表单项隐藏时,是否在当前 Form 中删除掉该表单项值。注意同名的未隐藏的表单项值也会删掉\n */\n clearValueOnHidden?: boolean;\n\n /**\n * 远端校验表单项接口\n */\n validateApi?: SchemaApi;\n}\n\nexport interface FormItemBasicConfig extends Partial<RendererConfig> {\n type?: string;\n wrap?: boolean;\n renderLabel?: boolean;\n renderDescription?: boolean;\n test?: RegExp | TestFunc;\n storeType?: string;\n validations?: string;\n strictMode?: boolean;\n shouldComponentUpdate?: (props: any, prevProps: any) => boolean;\n descriptionClassName?: string;\n storeExtendsData?: boolean;\n sizeMutable?: boolean;\n weight?: number;\n extendsData?: boolean;\n showErrorMsg?: boolean;\n\n // 兼容老用法,新用法直接在 Component 里面定义 validate 方法即可。\n validate?: (values: any, value: any) => string | boolean;\n}\n\n// 自己接收到属性。\nexport interface FormItemProps extends RendererProps {\n name?: string;\n formStore?: IFormStore;\n formItem?: IFormItemStore;\n formInited: boolean;\n formMode: 'normal' | 'horizontal' | 'inline' | 'row' | 'default';\n formHorizontal: FormHorizontal;\n defaultSize?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n disabled?: boolean;\n btnDisabled: boolean;\n defaultValue: any;\n value?: any;\n prinstine: any;\n setPrinstineValue: (value: any) => void;\n onChange: (\n value: any,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) => void;\n onBulkChange?: (\n values: {[propName: string]: any},\n submitOnChange?: boolean\n ) => void;\n addHook: (fn: Function, mode?: 'validate' | 'init' | 'flush') => () => void;\n removeHook: (fn: Function, mode?: 'validate' | 'init' | 'flush') => void;\n renderFormItems: (\n schema: Partial<FormSchema>,\n region: string,\n props: any\n ) => JSX.Element;\n onFocus: (e: any) => void;\n onBlur: (e: any) => void;\n\n formItemValue: any; // 不建议使用 为了兼容 v1\n getValue: () => any; // 不建议使用 为了兼容 v1\n setValue: (value: any, key: string) => void; // 不建议使用 为了兼容 v1\n\n inputClassName?: string;\n renderControl?: (props: FormControlProps) => JSX.Element;\n\n inputOnly?: boolean;\n renderLabel?: boolean;\n renderDescription?: boolean;\n sizeMutable?: boolean;\n wrap?: boolean;\n hint?: string;\n description?: string;\n descriptionClassName?: string;\n // error 详情\n errors?: {\n [propName: string]: string;\n };\n // error string\n error?: string;\n showErrorMsg?: boolean;\n}\n\n// 下发下去的属性\nexport type FormControlProps = RendererProps & {\n onOpenDialog: (schema: Schema, data: any) => Promise<any>;\n} & Exclude<\n FormItemProps,\n | 'inputClassName'\n | 'renderControl'\n | 'defaultSize'\n | 'size'\n | 'error'\n | 'errors'\n | 'hint'\n | 'descriptionClassName'\n | 'inputOnly'\n | 'renderLabel'\n | 'renderDescription'\n | 'sizeMutable'\n | 'wrap'\n >;\n\nexport type FormItemComponent = React.ComponentType<FormItemProps>;\nexport type FormControlComponent = React.ComponentType<FormControlProps>;\n\nexport interface FormItemConfig extends FormItemBasicConfig {\n component: FormControlComponent;\n}\n\nexport class FormItemWrap extends React.Component<FormItemProps> {\n reaction: any;\n\n constructor(props: FormItemProps) {\n super(props);\n\n const {formItem: model} = props;\n\n if (model) {\n this.reaction = reaction(\n () => `${model.errors.join('')}${model.isFocused}${model.dialogOpen}`,\n () => this.forceUpdate()\n );\n }\n }\n\n componentWillUnmount() {\n this.reaction && this.reaction();\n }\n\n @autobind\n handleFocus(e: any) {\n const {formItem: model} = this.props;\n model && model.focus();\n this.props.onFocus && this.props.onFocus(e);\n }\n\n @autobind\n handleBlur(e: any) {\n const {formItem: model} = this.props;\n model && model.blur();\n this.props.onBlur && this.props.onBlur(e);\n }\n\n @autobind\n async handleOpenDialog(schema: Schema, data: any) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n\n return new Promise(resolve =>\n model.openDialog(schema, data, (result?: any) => resolve(result))\n );\n }\n\n @autobind\n handleDialogConfirm([values]: Array<any>) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n\n model.closeDialog(values);\n }\n\n @autobind\n handleDialogClose(confirmed = false) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n model.closeDialog(confirmed);\n }\n\n renderControl(): JSX.Element | null {\n const {\n inputClassName,\n formItem: model,\n classnames: cx,\n children,\n type,\n renderControl,\n formItemConfig,\n sizeMutable,\n size,\n defaultSize,\n useMobileUI,\n ...rest\n } = this.props;\n\n const mobileUI = useMobileUI && isMobile();\n if (renderControl) {\n const controlSize = size || defaultSize;\n return renderControl({\n ...rest,\n onOpenDialog: this.handleOpenDialog,\n type,\n classnames: cx,\n formItem: model,\n className: cx(\n `Form-control`,\n {\n 'is-inline': !!rest.inline && !mobileUI,\n 'is-error': model && !model.valid,\n [`Form-control--withSize Form-control--size${ucFirst(\n controlSize\n )}`]:\n sizeMutable !== false &&\n typeof controlSize === 'string' &&\n !!controlSize &&\n controlSize !== 'full'\n },\n model?.errClassNames,\n inputClassName\n )\n });\n }\n\n return null;\n }\n\n /**\n * 布局扩充点,可以自己扩充表单项的布局方式\n */\n static layoutRenderers: {\n [propsName: string]: (\n props: FormItemProps,\n renderControl: () => JSX.Element | null\n ) => JSX.Element;\n } = {\n horizontal: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n description,\n descriptionClassName,\n captionClassName,\n desc,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg,\n useMobileUI\n } = props;\n\n // 强制不渲染 label 的话\n if (renderLabel === false) {\n label = label === false ? false : '';\n }\n\n description = description || desc;\n const horizontal = props.horizontal || props.formHorizontal || {};\n const left = getWidthRate(horizontal.left);\n const right = getWidthRate(horizontal.right);\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--horizontal`,\n className,\n {\n 'Form-item--horizontal-justify': horizontal.justify,\n [`is-error`]: model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label !== false ? (\n <label\n className={cx(\n `Form-label`,\n {\n [`Form-itemColumn--${\n typeof horizontal.leftFixed === 'string'\n ? horizontal.leftFixed\n : 'normal'\n }`]: horizontal.leftFixed,\n [`Form-itemColumn--${left}`]: !horizontal.leftFixed\n },\n labelClassName\n )}\n >\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : null}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n useMobileUI,\n className: cx(`Form-labelRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n <div\n className={cx(`Form-value`, {\n // [`Form-itemColumn--offset${getWidthRate(horizontal.offset)}`]: !label && label !== false,\n [`Form-itemColumn--${right}`]:\n !horizontal.leftFixed && !!right && right !== 12 - left\n })}\n >\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n tooltip: remark,\n className: cx(`Form-remark`),\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n </div>\n );\n },\n\n normal: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n descriptionClassName,\n captionClassName,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg,\n useMobileUI\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--normal`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : null}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n useMobileUI,\n container:\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n );\n },\n\n inline: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n descriptionClassName,\n captionClassName,\n formItem: model,\n remark,\n labelRemark,\n env,\n hint,\n renderLabel,\n renderDescription,\n data,\n showErrorMsg,\n useMobileUI\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--inline`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : label}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n <div className={cx(`Form-value`)}>\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n </div>\n );\n },\n\n row: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n descriptionClassName,\n captionClassName,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg,\n useMobileUI\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--row`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n <div className={cx('Form-rowInner')}>\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n useMobileUI,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n container:\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </div>\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx('Form-feedback')}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {description && renderDescription !== false\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n );\n }\n };\n\n render() {\n const {formMode, inputOnly, wrap, render, formItem: model} = this.props;\n const mode = this.props.mode || formMode;\n\n if (wrap === false || inputOnly) {\n return this.renderControl();\n }\n\n const renderLayout =\n FormItemWrap.layoutRenderers[mode] ||\n FormItemWrap.layoutRenderers['normal'];\n\n return (\n <>\n {renderLayout(this.props, this.renderControl.bind(this))}\n\n {model\n ? render(\n 'modal',\n {\n type: 'dialog',\n ...model.dialogSchema\n },\n {\n show: model.dialogOpen,\n onClose: this.handleDialogClose,\n onConfirm: this.handleDialogConfirm,\n data: model.dialogData,\n formStore: undefined\n }\n )\n : null}\n </>\n );\n }\n}\n\n// 白名单形式,只有这些属性发生变化,才会往下更新。\n// 除非配置 strictMode\nexport const detectProps = [\n 'formPristine', // 这个千万不能干掉。\n 'formInited',\n 'addable',\n 'addButtonClassName',\n 'addButtonText',\n 'addOn',\n 'btnClassName',\n 'btnLabel',\n 'btnDisabled',\n 'className',\n 'clearable',\n 'columns',\n 'columnsCount',\n 'controls',\n 'desc',\n 'description',\n 'disabled',\n 'draggable',\n 'editable',\n 'editButtonClassName',\n 'formHorizontal',\n 'formMode',\n 'hideRoot',\n 'horizontal',\n 'icon',\n 'inline',\n 'inputClassName',\n 'label',\n 'labelClassName',\n 'labelField',\n 'language',\n 'level',\n 'max',\n 'maxRows',\n 'min',\n 'minRows',\n 'multiLine',\n 'multiple',\n 'option',\n 'placeholder',\n 'removable',\n 'required',\n 'remark',\n 'hint',\n 'rows',\n 'searchable',\n 'showCompressOptions',\n 'size',\n 'step',\n 'showInput',\n 'unit',\n 'value',\n 'diffValue',\n 'borderMode',\n 'items',\n 'showCounter',\n 'minLength',\n 'maxLength',\n 'embed'\n];\n\nexport function asFormItem(config: Omit<FormItemConfig, 'component'>) {\n return (Control: FormControlComponent) => {\n const isSFC = !(Control.prototype instanceof React.Component);\n\n // 兼容老的 FormItem 用法。\n if (config.validate && !Control.prototype.validate) {\n const fn = config.validate;\n Control.prototype.validate = function () {\n const host = {\n input: this\n };\n\n return fn.apply(host, arguments);\n };\n } else if (config.validate) {\n console.error(\n 'FormItem配置中的 validate 将不起作用,因为类的成员函数中已经定义了 validate 方法,将优先使用类里面的实现。'\n );\n }\n\n if (config.storeType) {\n Control = HocStoreFactory({\n storeType: config.storeType,\n extendsData: config.extendsData\n })(observer(Control));\n delete config.storeType;\n }\n\n return wrapControl(\n hoistNonReactStatic(\n class extends FormItemWrap {\n static defaultProps = {\n className: '',\n renderLabel: config.renderLabel,\n renderDescription: config.renderDescription,\n sizeMutable: config.sizeMutable,\n wrap: config.wrap,\n showErrorMsg: config.showErrorMsg,\n ...Control.defaultProps\n };\n static propsList: any = [\n 'value',\n 'defaultValue',\n 'onChange',\n 'setPrinstineValue',\n 'readOnly',\n 'strictMode',\n ...((Control as any).propsList || [])\n ];\n\n static displayName = `FormItem${\n config.type ? `(${config.type})` : ''\n }`;\n static ComposedComponent = Control;\n\n ref: any;\n\n constructor(props: FormItemProps) {\n super(props);\n this.refFn = this.refFn.bind(this);\n\n const {validations, formItem: model} = props;\n\n // 组件注册的时候可能默认指定验证器类型\n if (model && !validations && config.validations) {\n model.config({\n rules: config.validations\n });\n }\n }\n\n shouldComponentUpdate(nextProps: FormControlProps) {\n if (\n config.shouldComponentUpdate?.(this.props, nextProps) ||\n nextProps.strictMode === false ||\n config.strictMode === false\n ) {\n return true;\n }\n\n // 把可能会影响视图的白名单弄出来,减少重新渲染次数。\n if (anyChanged(detectProps, this.props, nextProps)) {\n return true;\n }\n\n return false;\n }\n\n getWrappedInstance() {\n return this.ref;\n }\n\n refFn(ref: any) {\n this.ref = ref;\n }\n\n renderControl() {\n const {\n inputClassName,\n formItem: model,\n classnames: cx,\n children,\n type,\n size,\n defaultSize,\n useMobileUI,\n ...rest\n } = this.props;\n\n const controlSize = size || defaultSize;\n const mobileUI = useMobileUI && isMobile();\n return (\n <Control\n {...rest}\n useMobileUI={useMobileUI}\n onOpenDialog={this.handleOpenDialog}\n size={config.sizeMutable !== false ? undefined : size}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n type={type}\n classnames={cx}\n ref={isSFC ? undefined : this.refFn}\n forwardedRef={isSFC ? this.refFn : undefined}\n formItem={model}\n className={cx(\n `Form-control`,\n {\n 'is-inline': !!rest.inline && !mobileUI,\n 'is-error': model && !model.valid,\n [`Form-control--withSize Form-control--size${ucFirst(\n controlSize\n )}`]:\n config.sizeMutable !== false &&\n typeof controlSize === 'string' &&\n !!controlSize &&\n controlSize !== 'full'\n },\n model?.errClassNames,\n inputClassName\n )}\n />\n );\n }\n },\n Control\n ) as any\n );\n };\n}\n\nexport function registerFormItem(config: FormItemConfig): RendererConfig {\n let Control = asFormItem(config)(config.component);\n\n return registerRenderer({\n ...config,\n weight: typeof config.weight !== 'undefined' ? config.weight : -100, // 优先级高点\n component: Control as any,\n isFormItem: true\n });\n}\n\nexport function FormItem(config: FormItemBasicConfig) {\n return function (component: FormControlComponent): any {\n const renderer = registerFormItem({\n ...config,\n component\n });\n\n return renderer.component as any;\n };\n}\n\nexport default FormItem;\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -748,7 +748,7 @@ var Form = /** @class */ (function (_super) {
|
|
748
748
|
formHorizontal: horizontal,
|
749
749
|
controlWidth: controlWidth,
|
750
750
|
disabled: disabled || control.disabled || form.loading,
|
751
|
-
btnDisabled: form.loading || form.validating,
|
751
|
+
btnDisabled: disabled || form.loading || form.validating,
|
752
752
|
onAction: this.handleAction,
|
753
753
|
onQuery: this.handleQuery,
|
754
754
|
onChange: this.handleChange,
|