amis 1.3.5-beta.6 → 1.4.2-beta.1
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/README.md +1 -1
- package/lib/Schema.d.ts +17 -0
- package/lib/Schema.js.map +1 -1
- package/lib/components/Alert.js +3 -1
- package/lib/components/Alert.js.map +2 -2
- package/lib/components/Badge.d.ts +16 -3
- package/lib/components/Badge.js +53 -4
- package/lib/components/Badge.js.map +2 -2
- package/lib/components/Button.d.ts +24 -22
- package/lib/components/Button.js +13 -7
- package/lib/components/Button.js.map +2 -2
- package/lib/components/Checkbox.d.ts +1 -1
- package/lib/components/Checkbox.js +1 -1
- package/lib/components/Checkbox.js.map +2 -2
- package/lib/components/Collapse.js +1 -1
- package/lib/components/Collapse.js.map +2 -2
- package/lib/components/DatePicker.js +1 -1
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.js +1 -1
- package/lib/components/DateRangePicker.js.map +2 -2
- package/lib/components/Drawer.js +1 -1
- package/lib/components/Drawer.js.map +2 -2
- package/lib/components/InputBox.js +1 -1
- package/lib/components/InputBox.js.map +2 -2
- package/lib/components/Link.d.ts +91 -0
- package/lib/components/Link.js +44 -0
- package/lib/components/Link.js.map +13 -0
- package/lib/components/Modal.js +1 -1
- package/lib/components/Modal.js.map +2 -2
- package/lib/components/MonthRangePicker.js +1 -1
- package/lib/components/MonthRangePicker.js.map +2 -2
- package/lib/components/RichText.d.ts +6 -1
- package/lib/components/RichText.js +207 -8
- package/lib/components/RichText.js.map +2 -2
- package/lib/components/Select.d.ts +7 -0
- package/lib/components/Select.js +3 -0
- package/lib/components/Select.js.map +2 -2
- package/lib/components/SparkLine.d.ts +85 -84
- package/lib/components/SparkLine.js +2 -2
- package/lib/components/SparkLine.js.map +2 -2
- package/lib/components/Steps.d.ts +3 -3
- package/lib/components/Steps.js.map +1 -1
- package/lib/components/Toast.js +2 -2
- package/lib/components/Toast.js.map +2 -2
- package/lib/components/Tree.js +5 -3
- package/lib/components/Tree.js.map +2 -2
- package/lib/components/WithRemoteConfig.d.ts +8 -0
- package/lib/components/WithRemoteConfig.js +28 -2
- package/lib/components/WithRemoteConfig.js.map +2 -2
- package/lib/components/calendar/DaysView.js +2 -2
- package/lib/components/calendar/DaysView.js.map +2 -2
- package/lib/components/condition-builder/Field.js +0 -1
- package/lib/components/condition-builder/Field.js.map +2 -2
- package/lib/components/condition-builder/Value.js +2 -1
- package/lib/components/condition-builder/Value.js.map +2 -2
- package/lib/components/condition-builder/types.d.ts +5 -0
- package/lib/components/condition-builder/types.js.map +1 -1
- package/lib/components/icons.js +14 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/factory.d.ts +5 -1
- package/lib/factory.js +9 -4
- package/lib/factory.js.map +2 -2
- package/lib/helper.css.map +1 -1
- package/lib/icons/clock.js +10 -0
- package/lib/icons/loading-outline.js +7 -0
- package/lib/icons/status-close.js +11 -0
- package/lib/icons/status-fail.js +11 -0
- package/lib/icons/status-info.js +10 -0
- package/lib/icons/status-success.js +11 -0
- package/lib/icons/status-warning.js +10 -0
- package/lib/index.js +1 -1
- package/lib/locale/de-DE.js +3 -0
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +4 -1
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +5 -2
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.d.ts +16 -1
- package/lib/renderers/Action.js +5 -5
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/CRUD.d.ts +2 -2
- package/lib/renderers/CRUD.js +32 -26
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Collapse.d.ts +1 -1
- package/lib/renderers/Collapse.js +7 -3
- package/lib/renderers/Collapse.js.map +2 -2
- package/lib/renderers/Dialog.d.ts +0 -252
- package/lib/renderers/Dialog.js +1 -4
- package/lib/renderers/Dialog.js.map +2 -2
- package/lib/renderers/Drawer.js +0 -3
- package/lib/renderers/Drawer.js.map +2 -2
- package/lib/renderers/DropDownButton.d.ts +13 -1
- package/lib/renderers/DropDownButton.js +9 -5
- package/lib/renderers/DropDownButton.js.map +2 -2
- package/lib/renderers/Form/ButtonGroupSelect.js +3 -0
- package/lib/renderers/Form/ButtonGroupSelect.js.map +2 -2
- package/lib/renderers/Form/Checkbox.d.ts +5 -0
- package/lib/renderers/Form/Checkbox.js +4 -0
- package/lib/renderers/Form/Checkbox.js.map +2 -2
- package/lib/renderers/Form/Combo.js +2 -2
- package/lib/renderers/Form/Combo.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.d.ts +0 -2
- package/lib/renderers/Form/Editor.d.ts +0 -2
- package/lib/renderers/Form/Editor.js +1 -1
- package/lib/renderers/Form/Editor.js.map +2 -2
- package/lib/renderers/Form/InputExcel.d.ts +5 -0
- package/lib/renderers/Form/InputExcel.js +24 -3
- package/lib/renderers/Form/InputExcel.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +2 -2
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputImage.d.ts +8 -0
- package/lib/renderers/Form/InputImage.js +7 -4
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputTable.d.ts +23 -5
- package/lib/renderers/Form/InputTable.js +32 -3
- package/lib/renderers/Form/InputTable.js.map +2 -2
- package/lib/renderers/Form/Options.js +6 -3
- package/lib/renderers/Form/Options.js.map +2 -2
- package/lib/renderers/Form/Picker.js +2 -2
- package/lib/renderers/Form/Picker.js.map +2 -2
- package/lib/renderers/Form/wrapControl.js +2 -2
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/IFrame.js +2 -2
- package/lib/renderers/IFrame.js.map +2 -2
- package/lib/renderers/Image.d.ts +1 -0
- package/lib/renderers/Image.js +15 -1
- package/lib/renderers/Image.js.map +2 -2
- package/lib/renderers/Json.js +5 -1
- package/lib/renderers/Json.js.map +2 -2
- package/lib/renderers/Link.d.ts +16 -3
- package/lib/renderers/Link.js +16 -13
- package/lib/renderers/Link.js.map +2 -2
- package/lib/renderers/Log.d.ts +2 -2
- package/lib/renderers/Log.js +7 -1
- package/lib/renderers/Log.js.map +2 -2
- package/lib/renderers/Nav.d.ts +81 -25
- package/lib/renderers/Nav.js +272 -29
- package/lib/renderers/Nav.js.map +2 -2
- package/lib/renderers/Page.js +4 -1
- package/lib/renderers/Page.js.map +2 -2
- package/lib/renderers/Service.d.ts +10 -1
- package/lib/renderers/Service.js +85 -3
- package/lib/renderers/Service.js.map +2 -2
- package/lib/renderers/SparkLine.d.ts +4 -0
- package/lib/renderers/SparkLine.js.map +2 -2
- package/lib/renderers/Steps.d.ts +4 -4
- package/lib/renderers/Steps.js +5 -2
- package/lib/renderers/Steps.js.map +2 -2
- package/lib/renderers/Table/ColumnToggler.d.ts +113 -0
- package/lib/renderers/Table/ColumnToggler.js +216 -0
- package/lib/renderers/Table/ColumnToggler.js.map +13 -0
- package/lib/renderers/Table/ItemActionsWrapper.d.ts +11 -0
- package/lib/renderers/Table/ItemActionsWrapper.js +31 -0
- package/lib/renderers/Table/ItemActionsWrapper.js.map +13 -0
- package/lib/renderers/Table/TableBody.d.ts +5 -1
- package/lib/renderers/Table/TableBody.js +5 -1
- package/lib/renderers/Table/TableBody.js.map +2 -2
- package/lib/renderers/Table/TableCell.js +3 -1
- package/lib/renderers/Table/TableCell.js.map +2 -2
- package/lib/renderers/Table/TableContent.d.ts +1 -1
- package/lib/renderers/Table/TableContent.js +4 -0
- package/lib/renderers/Table/TableContent.js.map +2 -2
- package/lib/renderers/Table/index.d.ts +22 -4
- package/lib/renderers/Table/index.js +196 -81
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/store/app.d.ts +0 -1
- package/lib/store/combo.d.ts +0 -2
- package/lib/store/crud.d.ts +3 -3
- package/lib/store/crud.js +41 -36
- package/lib/store/crud.js.map +2 -2
- package/lib/store/form.d.ts +0 -1
- package/lib/store/modal.d.ts +1 -1
- package/lib/store/modal.js +4 -0
- package/lib/store/modal.js.map +2 -2
- package/lib/store/root.d.ts +0 -1
- package/lib/store/service.d.ts +0 -1
- package/lib/store/service.js +0 -13
- package/lib/store/service.js.map +2 -2
- package/lib/store/table.d.ts +258 -3
- package/lib/store/table.js +83 -7
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +941 -98
- package/lib/themes/ang.css +941 -98
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +941 -98
- package/lib/themes/antd.css +941 -98
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +1580 -411
- package/lib/themes/cxd.css +1580 -411
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +941 -98
- package/lib/themes/dark.css +941 -98
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +1580 -411
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/api.js +16 -4
- package/lib/utils/api.js.map +2 -2
- package/lib/utils/attachmentAdpator.d.ts +7 -0
- package/lib/utils/attachmentAdpator.js +82 -0
- package/lib/utils/attachmentAdpator.js.map +13 -0
- package/lib/utils/handleAction.d.ts +7 -0
- package/lib/utils/handleAction.js +30 -0
- package/lib/utils/handleAction.js.map +13 -0
- package/lib/utils/helper.d.ts +1 -1
- package/lib/utils/helper.js +3 -3
- package/lib/utils/helper.js.map +2 -2
- package/lib/utils/tpl-builtin.d.ts +1 -1
- package/lib/utils/tpl-builtin.js +25 -15
- package/lib/utils/tpl-builtin.js.map +2 -2
- package/lib/utils/validations.js +62 -5
- package/lib/utils/validations.js.map +2 -2
- package/package.json +1 -2
- package/schema.json +633 -273
- package/scss/_mixins.scss +29 -0
- package/scss/_properties.scss +64 -13
- package/scss/_utilities.scss +4 -0
- package/scss/components/_badge.scss +67 -2
- package/scss/components/_button.scss +34 -3
- package/scss/components/_collapse.scss +26 -8
- package/scss/components/_column-toggler.scss +234 -0
- package/scss/components/_dropdown.scss +2 -1
- package/scss/components/_image-gallery.scss +1 -1
- package/scss/components/_images.scss +2 -1
- package/scss/components/_link.scss +6 -0
- package/scss/components/_markdown.scss +266 -0
- package/scss/components/_nav.scss +236 -154
- package/scss/components/_page.scss +5 -4
- package/scss/components/_progress.scss +2 -0
- package/scss/components/_spinner.scss +6 -2
- package/scss/components/_steps.scss +1 -1
- package/scss/components/_table.scss +25 -1
- package/scss/components/form/_color.scss +1 -0
- package/scss/components/form/_date-range.scss +2 -0
- package/scss/components/form/_date.scss +2 -0
- package/scss/components/form/_fieldset.scss +1 -2
- package/scss/components/form/_file.scss +5 -4
- package/scss/components/form/_group.scss +4 -0
- package/scss/components/form/_image.scss +7 -2
- package/scss/components/form/_list.scss +1 -0
- package/scss/components/form/_location.scss +1 -1
- package/scss/components/form/_text.scss +13 -0
- package/scss/components/form/_textarea.scss +10 -0
- package/scss/components/form/_transfer.scss +2 -0
- package/scss/themes/_common.scss +3 -0
- package/scss/themes/_cxd-colors.scss +56 -0
- package/scss/themes/_cxd-variables.scss +217 -92
- package/scss/themes/cxd.scss +366 -0
- package/sdk/ang-ie11.css +1192 -176
- package/sdk/ang.css +1175 -118
- package/sdk/antd-ie11.css +1177 -163
- package/sdk/antd.css +1175 -118
- package/sdk/charts.js +13 -13
- package/sdk/color-picker.js +67 -67
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +2538 -1222
- package/sdk/cxd.css +1825 -401
- package/sdk/dark-ie11.css +1192 -176
- package/sdk/dark.css +1175 -118
- package/sdk/exceljs.js +1 -1
- package/sdk/helper.css.map +1 -1
- package/sdk/ie11-patch.css +1 -0
- package/sdk/locale/de-DE.js +3 -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 +22 -24
- package/sdk/rich-text.js +62 -64
- package/sdk/sdk-ie11.css +2538 -1222
- package/sdk/sdk.css +1825 -401
- package/sdk/sdk.js +1139 -1113
- 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/Schema.ts +18 -0
- package/src/components/Alert.tsx +3 -1
- package/src/components/Badge.tsx +124 -21
- package/src/components/Button.tsx +23 -7
- package/src/components/Checkbox.tsx +5 -2
- package/src/components/Collapse.tsx +14 -9
- package/src/components/DatePicker.tsx +1 -1
- package/src/components/DateRangePicker.tsx +23 -11
- package/src/components/Drawer.tsx +3 -2
- package/src/components/InputBox.tsx +1 -1
- package/src/components/Link.tsx +94 -0
- package/src/components/Modal.tsx +3 -2
- package/src/components/MonthRangePicker.tsx +10 -2
- package/src/components/RichText.tsx +244 -3
- package/src/components/Select.tsx +4 -0
- package/src/components/SparkLine.tsx +4 -1
- package/src/components/Steps.tsx +3 -3
- package/src/components/Toast.tsx +5 -5
- package/src/components/Tree.tsx +6 -8
- package/src/components/WithRemoteConfig.tsx +37 -2
- package/src/components/calendar/DaysView.tsx +2 -2
- package/src/components/condition-builder/Field.tsx +1 -2
- package/src/components/condition-builder/Value.tsx +3 -0
- package/src/components/condition-builder/types.ts +6 -0
- package/src/components/icons.tsx +15 -0
- package/src/factory.tsx +13 -3
- package/src/icons/clock.svg +1 -0
- package/src/icons/loading-outline.svg +4 -0
- package/src/icons/status-close.svg +10 -0
- package/src/icons/status-fail.svg +10 -0
- package/src/icons/status-info.svg +8 -0
- package/src/icons/status-success.svg +10 -0
- package/src/icons/status-warning.svg +8 -0
- package/src/locale/de-DE.ts +3 -0
- package/src/locale/en-US.ts +4 -1
- package/src/locale/zh-CN.ts +5 -2
- package/src/renderers/Action.tsx +71 -13
- package/src/renderers/CRUD.tsx +44 -59
- package/src/renderers/Collapse.tsx +6 -2
- package/src/renderers/Dialog.tsx +1 -5
- package/src/renderers/Drawer.tsx +0 -4
- package/src/renderers/DropDownButton.tsx +34 -12
- package/src/renderers/Form/ButtonGroupSelect.tsx +3 -0
- package/src/renderers/Form/Checkbox.tsx +8 -0
- package/src/renderers/Form/Combo.tsx +2 -3
- package/src/renderers/Form/Editor.tsx +19 -20
- package/src/renderers/Form/InputExcel.tsx +28 -3
- package/src/renderers/Form/InputFile.tsx +2 -1
- package/src/renderers/Form/InputImage.tsx +28 -10
- package/src/renderers/Form/InputTable.tsx +88 -9
- package/src/renderers/Form/Options.tsx +16 -5
- package/src/renderers/Form/Picker.tsx +3 -2
- package/src/renderers/Form/wrapControl.tsx +2 -2
- package/src/renderers/IFrame.tsx +2 -1
- package/src/renderers/Image.tsx +10 -0
- package/src/renderers/Json.tsx +10 -1
- package/src/renderers/Link.tsx +36 -11
- package/src/renderers/Log.tsx +16 -3
- package/src/renderers/Nav.tsx +340 -56
- package/src/renderers/Page.tsx +3 -1
- package/src/renderers/Service.tsx +101 -3
- package/src/renderers/SparkLine.tsx +5 -0
- package/src/renderers/Steps.tsx +12 -9
- package/src/renderers/Table/ColumnToggler.tsx +544 -0
- package/src/renderers/Table/ItemActionsWrapper.tsx +44 -0
- package/src/renderers/Table/TableBody.tsx +3 -2
- package/src/renderers/Table/TableCell.tsx +16 -1
- package/src/renderers/Table/TableContent.tsx +3 -1
- package/src/renderers/Table/index.tsx +240 -60
- package/src/store/crud.ts +34 -38
- package/src/store/modal.ts +4 -0
- package/src/store/service.ts +0 -19
- package/src/store/table.ts +103 -4
- package/src/utils/api.ts +24 -4
- package/src/utils/attachmentAdpator.ts +90 -0
- package/src/utils/handleAction.ts +41 -0
- package/src/utils/helper.ts +4 -3
- package/src/utils/tpl-builtin.ts +48 -17
- package/src/utils/validations.ts +80 -12
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/components/WithRemoteConfig.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA;;;GAGG;AACH,6DAA0B;AAC1B,iGAA0D;
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"/**\n * 一个可以拉取远程配置的 HOC\n *\n */\nimport React from 'react';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport {Api, Payload} from '../types';\nimport {SchemaApi, SchemaTokenizeableString} from '../Schema';\nimport {withStore} from './WithStore';\n\nimport {EnvContext, RendererEnv} from '../env';\n\nimport {flow, Instance, isAlive, types} from 'mobx-state-tree';\nimport {buildApi, isEffectiveApi, normalizeApi} from '../utils/api';\nimport {\n isPureVariable,\n resolveVariableAndFilter,\n tokenize\n} from '../utils/tpl-builtin';\nimport {reaction} from 'mobx';\nimport {createObject, findIndex, findTreeIndex} from '../utils/helper';\n\nexport const Store = types\n .model('RemoteConfigStore')\n .props({\n fetching: false,\n errorMsg: '',\n config: types.frozen(),\n data: types.frozen({})\n })\n .actions(self => {\n let component: any = undefined;\n\n const load: (\n env: RendererEnv,\n api: Api,\n ctx: any,\n config: WithRemoteConfigSettings\n ) => Promise<any> = flow(function* (env, api, ctx, config = {}): any {\n try {\n self.fetching = true;\n const ret: Payload = yield env.fetcher(api, ctx);\n if (!isAlive(self)) {\n return;\n }\n\n if (ret.ok) {\n const data = ret.data || {};\n let options = config.adaptor\n ? config.adaptor(data, component.props)\n : data;\n (self as any).setConfig(options, config, 'remote');\n config.afterLoad?.(data, self.config, component.props);\n return ret;\n } else {\n throw new Error(ret.msg || 'fetch error');\n }\n } catch (e) {\n isAlive(self) && (self.errorMsg = e.message);\n } finally {\n isAlive(self) && (self.fetching = false);\n }\n });\n\n return {\n setComponent(c: any) {\n component = c;\n },\n\n load,\n setData(data: any) {\n self.data = data || {};\n },\n setConfig(\n options: any,\n config: WithRemoteConfigSettings,\n motivation?: any\n ) {\n if (config.normalizeConfig) {\n options =\n config.normalizeConfig(\n options,\n self.config,\n component.props,\n motivation\n ) || options;\n }\n\n self.config = options;\n }\n };\n });\n\nexport type IStore = Instance<typeof Store>;\n\nexport interface OutterProps {\n env?: RendererEnv;\n data: any;\n source?: SchemaApi | SchemaTokenizeableString;\n deferApi?: SchemaApi;\n remoteConfigRef?: (\n instance:\n | {\n loadConfig: (ctx?: any) => Promise<any> | void;\n setConfig: (value: any) => void;\n }\n | undefined\n ) => void;\n}\n\nexport interface RemoteOptionsProps<T = any> {\n config: T;\n loading?: boolean;\n deferLoad: (item: any) => Promise<any>;\n updateConfig: (value: T, ctx?: any) => void;\n}\n\nexport interface WithRemoteConfigSettings {\n /**\n * 从接口返回数据适配到配置\n */\n adaptor?: (json: any, props: any) => any;\n\n /**\n * 配置格式化\n */\n normalizeConfig?: (\n config: any,\n origin: any,\n props: any,\n motivation?: any\n ) => any;\n\n /**\n * 请求返回后的回调\n */\n afterLoad?: (ret: any, config: any, props: any) => void;\n\n /**\n * 懒加载选项相关,开始懒加载的回调\n */\n beforeDeferLoad?: (\n item: any,\n indexes: Array<number>,\n config: any,\n props: any\n ) => any;\n\n /**\n * 懒加载选项相关,结束懒加载的回调\n */\n afterDeferLoad?: (\n item: any,\n indexes: Array<number>,\n reponse: Payload,\n config: any,\n props: any\n ) => any;\n}\n\nexport function withRemoteConfig<P = any>(\n config: WithRemoteConfigSettings = {}\n) {\n return function <\n T extends React.ComponentType<\n React.ComponentProps<T> & RemoteOptionsProps<P>\n >\n >(ComposedComponent: T) {\n type FinalOutterProps = JSX.LibraryManagedAttributes<\n T,\n Omit<React.ComponentProps<T>, keyof RemoteOptionsProps<P>>\n > &\n OutterProps;\n\n const result = hoistNonReactStatic(\n withStore(() => Store.create())(\n class extends React.Component<\n FinalOutterProps & {\n store: IStore;\n }\n > {\n static displayName = `WithRemoteConfig(${\n ComposedComponent.displayName || ComposedComponent.name\n })`;\n static ComposedComponent = ComposedComponent as React.ComponentType<T>;\n static contextType = EnvContext;\n toDispose: Array<() => void> = [];\n\n constructor(\n props: FinalOutterProps & {\n store: IStore;\n }\n ) {\n super(props);\n\n this.setConfig = this.setConfig.bind(this);\n props.store.setComponent(this);\n this.deferLoadConfig = this.deferLoadConfig.bind(this);\n props.remoteConfigRef?.(this);\n }\n\n componentDidMount() {\n const env: RendererEnv = this.props.env || this.context;\n const {store, source, data} = this.props;\n\n store.setData(data);\n\n if (isPureVariable(source)) {\n this.syncConfig();\n this.toDispose.push(\n reaction(\n () =>\n resolveVariableAndFilter(\n source as string,\n store.data,\n '| raw'\n ),\n () => this.syncConfig()\n )\n );\n } else if (env && isEffectiveApi(source, data)) {\n this.loadConfig();\n source.autoRefresh !== false &&\n this.toDispose.push(\n reaction(\n () => {\n const api = normalizeApi(source as string);\n return api.trackExpression\n ? tokenize(api.trackExpression, store.data)\n : buildApi(api, store.data, {\n ignoreData: true\n }).url;\n },\n () => this.loadConfig()\n )\n );\n }\n }\n\n componentDidUpdate(prevProps: any) {\n const props = this.props;\n\n if (props.data !== prevProps.data) {\n props.store.setData(props.data);\n }\n }\n\n componentWillUnmount() {\n this.toDispose.forEach(fn => fn());\n this.toDispose = [];\n\n this.props.remoteConfigRef?.(undefined);\n }\n\n async loadConfig(ctx = this.props.data) {\n const env: RendererEnv = this.props.env || this.context;\n const {store, source} = this.props;\n\n if (env && isEffectiveApi(source, ctx)) {\n await store.load(env, source, ctx, config);\n }\n }\n\n setConfig(value: any, ctx?: any) {\n const {store} = this.props;\n store.setConfig(value, config, ctx);\n }\n\n syncConfig() {\n const {store, source, data} = this.props;\n\n if (isPureVariable(source)) {\n store.setConfig(\n resolveVariableAndFilter(source as string, data, '| raw') || [],\n config,\n 'syncConfig'\n );\n }\n }\n\n async deferLoadConfig(item: any) {\n const {store, source, data, deferApi} = this.props;\n const env: RendererEnv = this.props.env || this.context;\n const indexes = findTreeIndex(store.config, a => a === item)!;\n\n const ret = config.beforeDeferLoad?.(\n item,\n indexes,\n store.config,\n this.props\n );\n\n ret && store.setConfig(ret, config, 'before-defer-load');\n let response: Payload;\n try {\n if (!isEffectiveApi(item.deferApi || deferApi || source)) {\n throw new Error('deferApi is required');\n }\n\n response = await env.fetcher(\n item.deferApi || deferApi || source,\n createObject(data, item)\n );\n } catch (e) {\n response = {\n ok: false,\n msg: e.message,\n status: 500,\n data: undefined\n };\n }\n const ret2 = config.afterDeferLoad?.(\n item,\n indexes, // 只能假定还是那个 index 了\n response,\n store.config,\n this.props\n );\n ret2 && store.setConfig(ret2, config, 'after-defer-load');\n }\n\n render() {\n const store = this.props.store;\n const injectedProps: RemoteOptionsProps<P> = {\n config: store.config,\n loading: store.fetching,\n deferLoad: this.deferLoadConfig,\n updateConfig: this.setConfig\n };\n const {remoteConfigRef, ...rest} = this.props;\n\n return (\n <ComposedComponent\n {...(rest as JSX.LibraryManagedAttributes<\n T,\n React.ComponentProps<T>\n >)}\n {...injectedProps}\n />\n );\n }\n }\n ),\n ComposedComponent\n );\n\n return result as typeof result & {\n ComposedComponent: T;\n };\n };\n}\n"
|
11
|
+
"/**\n * 一个可以拉取远程配置的 HOC\n *\n */\nimport React from 'react';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport debounce from 'lodash/debounce';\nimport {Api, Payload} from '../types';\nimport {SchemaApi, SchemaTokenizeableString} from '../Schema';\nimport {withStore} from './WithStore';\n\nimport {EnvContext, RendererEnv} from '../env';\n\nimport {flow, Instance, isAlive, types} from 'mobx-state-tree';\nimport {buildApi, isEffectiveApi, normalizeApi} from '../utils/api';\nimport {\n isPureVariable,\n resolveVariableAndFilter,\n tokenize\n} from '../utils/tpl-builtin';\nimport {reaction} from 'mobx';\nimport {createObject, findIndex, findTreeIndex} from '../utils/helper';\n\nexport const Store = types\n .model('RemoteConfigStore')\n .props({\n fetching: false,\n errorMsg: '',\n config: types.frozen(),\n data: types.frozen({})\n })\n .actions(self => {\n let component: any = undefined;\n\n const load: (\n env: RendererEnv,\n api: Api,\n ctx: any,\n config: WithRemoteConfigSettings\n ) => Promise<any> = flow(function* (env, api, ctx, config = {}): any {\n try {\n self.fetching = true;\n const ret: Payload = yield env.fetcher(api, ctx);\n if (!isAlive(self)) {\n return;\n }\n\n if (ret.ok) {\n const data = ret.data || {};\n let options = config.adaptor\n ? config.adaptor(data, component.props)\n : data;\n (self as any).setConfig(options, config, 'remote');\n config.afterLoad?.(data, self.config, component.props);\n return ret;\n } else {\n throw new Error(ret.msg || 'fetch error');\n }\n } catch (e) {\n isAlive(self) && (self.errorMsg = e.message);\n } finally {\n isAlive(self) && (self.fetching = false);\n }\n });\n\n return {\n setComponent(c: any) {\n component = c;\n },\n\n load,\n setData(data: any) {\n self.data = data || {};\n },\n setConfig(\n options: any,\n config: WithRemoteConfigSettings,\n motivation?: any\n ) {\n if (config.normalizeConfig) {\n options =\n config.normalizeConfig(\n options,\n self.config,\n component.props,\n motivation\n ) || options;\n }\n\n self.config = options;\n }\n };\n });\n\nexport type IStore = Instance<typeof Store>;\n\nexport interface OutterProps {\n env?: RendererEnv;\n data: any;\n source?: SchemaApi | SchemaTokenizeableString;\n autoComplete?: SchemaApi | SchemaTokenizeableString;\n deferApi?: SchemaApi;\n remoteConfigRef?: (\n instance:\n | {\n loadConfig: (ctx?: any) => Promise<any> | void;\n setConfig: (value: any) => void;\n }\n | undefined\n ) => void;\n}\n\nexport interface RemoteOptionsProps<T = any> {\n config: T;\n loading?: boolean;\n deferLoad: (item: any) => Promise<any>;\n updateConfig: (value: T, ctx?: any) => void;\n}\n\nexport interface WithRemoteConfigSettings {\n /**\n * 从接口返回数据适配到配置\n */\n adaptor?: (json: any, props: any) => any;\n\n /**\n * 配置格式化\n */\n normalizeConfig?: (\n config: any,\n origin: any,\n props: any,\n motivation?: any\n ) => any;\n\n /**\n * 请求返回后的回调\n */\n afterLoad?: (ret: any, config: any, props: any) => void;\n\n /**\n * 懒加载选项相关,开始懒加载的回调\n */\n beforeDeferLoad?: (\n item: any,\n indexes: Array<number>,\n config: any,\n props: any\n ) => any;\n\n /**\n * 懒加载选项相关,结束懒加载的回调\n */\n afterDeferLoad?: (\n item: any,\n indexes: Array<number>,\n reponse: Payload,\n config: any,\n props: any\n ) => any;\n}\n\nexport function withRemoteConfig<P = any>(\n config: WithRemoteConfigSettings = {}\n) {\n return function <\n T extends React.ComponentType<\n React.ComponentProps<T> & RemoteOptionsProps<P>\n >\n >(ComposedComponent: T) {\n type FinalOutterProps = JSX.LibraryManagedAttributes<\n T,\n Omit<React.ComponentProps<T>, keyof RemoteOptionsProps<P>>\n > &\n OutterProps;\n\n const result = hoistNonReactStatic(\n withStore(() => Store.create())(\n class extends React.Component<\n FinalOutterProps & {\n store: IStore;\n }\n > {\n static displayName = `WithRemoteConfig(${\n ComposedComponent.displayName || ComposedComponent.name\n })`;\n static ComposedComponent =\n ComposedComponent as React.ComponentType<T>;\n static contextType = EnvContext;\n toDispose: Array<() => void> = [];\n\n loadOptions = debounce(this.loadAutoComplete.bind(this), 250, {\n trailing: true,\n leading: false\n });\n\n constructor(\n props: FinalOutterProps & {\n store: IStore;\n }\n ) {\n super(props);\n\n this.setConfig = this.setConfig.bind(this);\n props.store.setComponent(this);\n this.deferLoadConfig = this.deferLoadConfig.bind(this);\n props.remoteConfigRef?.(this);\n }\n\n componentDidMount() {\n const env: RendererEnv = this.props.env || this.context;\n const {store, source, data} = this.props;\n\n store.setData(data);\n\n if (isPureVariable(source)) {\n this.syncConfig();\n this.toDispose.push(\n reaction(\n () =>\n resolveVariableAndFilter(\n source as string,\n store.data,\n '| raw'\n ),\n () => this.syncConfig()\n )\n );\n } else if (env && isEffectiveApi(source, data)) {\n this.loadConfig();\n source.autoRefresh !== false &&\n this.toDispose.push(\n reaction(\n () => {\n const api = normalizeApi(source as string);\n return api.trackExpression\n ? tokenize(api.trackExpression, store.data)\n : buildApi(api, store.data, {\n ignoreData: true\n }).url;\n },\n () => this.loadConfig()\n )\n );\n }\n }\n\n componentDidUpdate(prevProps: any) {\n const props = this.props;\n\n if (props.data !== prevProps.data) {\n props.store.setData(props.data);\n }\n }\n\n componentWillUnmount() {\n this.toDispose.forEach(fn => fn());\n this.toDispose = [];\n\n this.props.remoteConfigRef?.(undefined);\n this.loadOptions.cancel();\n }\n\n async loadConfig(ctx = this.props.data) {\n const env: RendererEnv = this.props.env || this.context;\n const {store, source} = this.props;\n\n if (env && isEffectiveApi(source, ctx)) {\n await store.load(env, source, ctx, config);\n }\n }\n\n loadAutoComplete(input: string) {\n const env: RendererEnv = this.props.env || this.context;\n const {autoComplete, data, store} = this.props;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n const ctx = createObject(data, {\n term: input,\n value: input\n });\n\n if (!isEffectiveApi(autoComplete, ctx)) {\n return Promise.resolve({\n options: []\n });\n }\n\n return store.load(env, autoComplete, ctx, config);\n }\n\n setConfig(value: any, ctx?: any) {\n const {store} = this.props;\n store.setConfig(value, config, ctx);\n }\n\n syncConfig() {\n const {store, source, data} = this.props;\n\n if (isPureVariable(source)) {\n store.setConfig(\n resolveVariableAndFilter(source as string, data, '| raw') || [],\n config,\n 'syncConfig'\n );\n }\n }\n\n async deferLoadConfig(item: any) {\n const {store, source, data, deferApi} = this.props;\n const env: RendererEnv = this.props.env || this.context;\n const indexes = findTreeIndex(store.config, a => a === item)!;\n\n const ret = config.beforeDeferLoad?.(\n item,\n indexes,\n store.config,\n this.props\n );\n\n ret && store.setConfig(ret, config, 'before-defer-load');\n let response: Payload;\n try {\n if (!isEffectiveApi(item.deferApi || deferApi || source)) {\n throw new Error('deferApi is required');\n }\n\n response = await env.fetcher(\n item.deferApi || deferApi || source,\n createObject(data, item)\n );\n } catch (e) {\n response = {\n ok: false,\n msg: e.message,\n status: 500,\n data: undefined\n };\n }\n const ret2 = config.afterDeferLoad?.(\n item,\n indexes, // 只能假定还是那个 index 了\n response,\n store.config,\n this.props\n );\n ret2 && store.setConfig(ret2, config, 'after-defer-load');\n }\n\n render() {\n const store = this.props.store;\n const env: RendererEnv = this.props.env || this.context;\n const injectedProps: RemoteOptionsProps<P> = {\n config: store.config,\n loading: store.fetching,\n deferLoad: this.deferLoadConfig,\n updateConfig: this.setConfig\n };\n const {remoteConfigRef, autoComplete, ...rest} = this.props;\n\n return (\n <ComposedComponent\n {...(rest as JSX.LibraryManagedAttributes<\n T,\n React.ComponentProps<T>\n >)}\n {...(env && isEffectiveApi(autoComplete) && this.loadOptions\n ? {loadOptions: this.loadOptions}\n : {})}\n {...injectedProps}\n />\n );\n }\n }\n ),\n ComposedComponent\n );\n\n return result as typeof result & {\n ComposedComponent: T;\n };\n };\n}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -53,8 +53,8 @@ var CustomDaysView = /** @class */ (function (_super) {
|
|
53
53
|
_this.confirm = function () {
|
54
54
|
var _a, _b;
|
55
55
|
var date = (_this.props.selectedDate || _this.props.viewDate).clone();
|
56
|
-
// 如果 minDate
|
57
|
-
if (((_a = _this.props.minDate) === null || _a === void 0 ? void 0 : _a.isValid()) && ((_b = _this.props.minDate) === null || _b === void 0 ? void 0 : _b.
|
56
|
+
// 如果 minDate 是可用的,且比当前日期晚,则用 minDate
|
57
|
+
if (((_a = _this.props.minDate) === null || _a === void 0 ? void 0 : _a.isValid()) && ((_b = _this.props.minDate) === null || _b === void 0 ? void 0 : _b.isAfter(date))) {
|
58
58
|
date = _this.props.minDate.clone();
|
59
59
|
}
|
60
60
|
_this.props.setDateTimeState({
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/components/calendar/DaysView.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AACA,aAAa;AACb,sFAAmD;AACnD,6DAA0B;AAC1B,qEAAkC;AAClC,uCAAqD;AAsCrD;IAAoC,+CAAQ;IAA5C;QAAA,qEAkSC;QA7RC,wBAAkB,GAAG,UAAC,KAA4B;YAChD,eAAe;YACf,IAAI,KAAI,CAAC,KAAK,CAAC,eAAe,EAAE;gBAC9B,IAAM,QAAQ,GAAG,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC7C,IAAM,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC;gBAExD,IAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;gBAC3C,IAAI,QAAQ,GAAG,CAAC,CAAC;gBAEjB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACvC,QAAQ,GAAG,CAAC,CAAC;iBACd;gBACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACvC,QAAQ,GAAG,CAAC,CAAC,CAAC;iBACf;gBAED,QAAQ;qBACL,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC;qBAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAW,EAAE,EAAE,CAAC,CAAC;qBAC/D,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;qBAC1B,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;qBAC9B,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;qBAC9B,YAAY,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;gBAE5C,KAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;oBAC1B,QAAQ,UAAA;oBACR,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE;iBAC/B,CAAC,CAAC;gBACH,OAAO;aACR;YAED,KAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEF,aAAO,GAAG,UACR,IAAsD,EACtD,KAAa;YAEb,IAAM,IAAI,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,YAAY,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YAElB,KAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBAC1B,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE;gBACtB,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,EAAE;gBAC/B,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC3B;QACH,CAAC,CAAC;QAEF,aAAO,GAAG;;YACR,IAAI,IAAI,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,YAAY,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;YAEpE,qCAAqC;YACrC,IAAI,CAAA,MAAA,KAAI,CAAC,KAAK,CAAC,OAAO,0CAAE,OAAO,EAAE,MAAI,MAAA,KAAI,CAAC,KAAK,CAAC,OAAO,0CAAE,
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import moment from 'moment';\n// @ts-ignore\nimport DaysView from 'react-datetime/src/DaysView';\nimport React from 'react';\nimport Downshift from 'downshift';\nimport {LocaleProps, localeable} from '../../locale';\nimport {ClassNamesFn} from '../../theme';\n\ninterface CustomDaysViewProps extends LocaleProps {\n classPrefix?: string;\n prevIcon?: string;\n nextIcon?: string;\n viewDate: moment.Moment;\n selectedDate: moment.Moment;\n minDate: moment.Moment;\n timeFormat: string;\n requiredConfirm?: boolean;\n isEndDate?: boolean;\n renderDay?: Function;\n onClose?: () => void;\n onChange: (value: moment.Moment) => void;\n setDateTimeState: (state: any) => void;\n setTime: (type: string, amount: number) => void;\n subtractTime: (\n amount: number,\n type: string,\n toSelected?: moment.Moment\n ) => () => void;\n addTime: (\n amount: number,\n type: string,\n toSelected?: moment.Moment\n ) => () => void;\n isValidDate?: (\n currentDate: moment.Moment,\n selected?: moment.Moment\n ) => boolean;\n showView: (view: string) => () => void;\n updateSelectedDate: (event: React.MouseEvent<any>, close?: boolean) => void;\n handleClickOutside: () => void;\n classnames: ClassNamesFn;\n}\n\nexport class CustomDaysView extends DaysView {\n props: CustomDaysViewProps;\n getDaysOfWeek: (locale: any) => any;\n renderDays: () => JSX.Element;\n\n updateSelectedDate = (event: React.MouseEvent<any>) => {\n // need confirm\n if (this.props.requiredConfirm) {\n const viewDate = this.props.viewDate.clone();\n const currentDate = this.props.selectedDate || viewDate;\n\n const target = event.target as HTMLElement;\n let modifier = 0;\n\n if (~target.className.indexOf('rdtNew')) {\n modifier = 1;\n }\n if (~target.className.indexOf('rdtOld')) {\n modifier = -1;\n }\n\n viewDate\n .month(viewDate.month() + modifier)\n .date(parseInt(target.getAttribute('data-value') as string, 10))\n .hours(currentDate.hours())\n .minutes(currentDate.minutes())\n .seconds(currentDate.seconds())\n .milliseconds(currentDate.milliseconds());\n\n this.props.setDateTimeState({\n viewDate,\n selectedDate: viewDate.clone()\n });\n return;\n }\n\n this.props.updateSelectedDate(event, true);\n };\n\n setTime = (\n type: 'hours' | 'minutes' | 'seconds' | 'milliseconds',\n value: number\n ) => {\n const date = (this.props.selectedDate || this.props.viewDate).clone();\n date[type](value);\n\n this.props.setDateTimeState({\n viewDate: date.clone(),\n selectedDate: date.clone()\n });\n\n if (!this.props.requiredConfirm) {\n this.props.onChange(date);\n }\n };\n\n confirm = () => {\n let date = (this.props.selectedDate || this.props.viewDate).clone();\n\n // 如果 minDate
|
11
|
+
"import moment from 'moment';\n// @ts-ignore\nimport DaysView from 'react-datetime/src/DaysView';\nimport React from 'react';\nimport Downshift from 'downshift';\nimport {LocaleProps, localeable} from '../../locale';\nimport {ClassNamesFn} from '../../theme';\n\ninterface CustomDaysViewProps extends LocaleProps {\n classPrefix?: string;\n prevIcon?: string;\n nextIcon?: string;\n viewDate: moment.Moment;\n selectedDate: moment.Moment;\n minDate: moment.Moment;\n timeFormat: string;\n requiredConfirm?: boolean;\n isEndDate?: boolean;\n renderDay?: Function;\n onClose?: () => void;\n onChange: (value: moment.Moment) => void;\n setDateTimeState: (state: any) => void;\n setTime: (type: string, amount: number) => void;\n subtractTime: (\n amount: number,\n type: string,\n toSelected?: moment.Moment\n ) => () => void;\n addTime: (\n amount: number,\n type: string,\n toSelected?: moment.Moment\n ) => () => void;\n isValidDate?: (\n currentDate: moment.Moment,\n selected?: moment.Moment\n ) => boolean;\n showView: (view: string) => () => void;\n updateSelectedDate: (event: React.MouseEvent<any>, close?: boolean) => void;\n handleClickOutside: () => void;\n classnames: ClassNamesFn;\n}\n\nexport class CustomDaysView extends DaysView {\n props: CustomDaysViewProps;\n getDaysOfWeek: (locale: any) => any;\n renderDays: () => JSX.Element;\n\n updateSelectedDate = (event: React.MouseEvent<any>) => {\n // need confirm\n if (this.props.requiredConfirm) {\n const viewDate = this.props.viewDate.clone();\n const currentDate = this.props.selectedDate || viewDate;\n\n const target = event.target as HTMLElement;\n let modifier = 0;\n\n if (~target.className.indexOf('rdtNew')) {\n modifier = 1;\n }\n if (~target.className.indexOf('rdtOld')) {\n modifier = -1;\n }\n\n viewDate\n .month(viewDate.month() + modifier)\n .date(parseInt(target.getAttribute('data-value') as string, 10))\n .hours(currentDate.hours())\n .minutes(currentDate.minutes())\n .seconds(currentDate.seconds())\n .milliseconds(currentDate.milliseconds());\n\n this.props.setDateTimeState({\n viewDate,\n selectedDate: viewDate.clone()\n });\n return;\n }\n\n this.props.updateSelectedDate(event, true);\n };\n\n setTime = (\n type: 'hours' | 'minutes' | 'seconds' | 'milliseconds',\n value: number\n ) => {\n const date = (this.props.selectedDate || this.props.viewDate).clone();\n date[type](value);\n\n this.props.setDateTimeState({\n viewDate: date.clone(),\n selectedDate: date.clone()\n });\n\n if (!this.props.requiredConfirm) {\n this.props.onChange(date);\n }\n };\n\n confirm = () => {\n let date = (this.props.selectedDate || this.props.viewDate).clone();\n\n // 如果 minDate 是可用的,且比当前日期晚,则用 minDate\n if (this.props.minDate?.isValid() && this.props.minDate?.isAfter(date)) {\n date = this.props.minDate.clone();\n }\n\n this.props.setDateTimeState({\n selectedDate: date\n });\n this.props.onChange(date);\n this.props.onClose && this.props.onClose();\n };\n\n cancel = () => {\n this.props.onClose && this.props.onClose();\n };\n\n renderDay = (props: any, currentDate: moment.Moment) => {\n return <td {...props}>{currentDate.date()}</td>;\n };\n\n computedTimeOptions(total: number) {\n const times: {label: string; value: string}[] = [];\n\n for (let t = 0; t < total; t++) {\n const label = t < 10 ? `0${t}` : `${t}`;\n times.push({label, value: label});\n }\n\n return times;\n }\n\n renderTimes = () => {\n const {\n timeFormat,\n selectedDate,\n viewDate,\n isEndDate,\n classnames: cx\n } = this.props;\n\n const date = selectedDate || (isEndDate ? viewDate.endOf('day') : viewDate);\n const inputs: Array<React.ReactNode> = [];\n\n timeFormat.split(':').forEach((format, i) => {\n const type = /h/i.test(format)\n ? 'hours'\n : /m/.test(format)\n ? 'minutes'\n : /s/.test(format)\n ? 'seconds'\n : '';\n if (type) {\n const min = 0;\n const max = type === 'hours' ? 23 : 59;\n const hours = this.computedTimeOptions(24);\n const times = this.computedTimeOptions(60);\n const options = type === 'hours' ? hours : times;\n const formatMap = {\n hours: 'HH',\n minutes: 'mm',\n seconds: 'ss'\n };\n\n inputs.push(\n <Downshift\n key={i + 'input'}\n inputValue={date.format(formatMap[type])}\n >\n {({isOpen, getInputProps, openMenu, closeMenu}) => {\n const inputProps = getInputProps({\n onFocus: () => openMenu(),\n onChange: (e: any) =>\n this.setTime(\n type,\n Math.max(\n min,\n Math.min(\n parseInt(\n e.currentTarget.value.replace(/\\D/g, ''),\n 10\n ) || 0,\n max\n )\n )\n )\n });\n return (\n <div className={cx('CalendarInputWrapper')}>\n <input\n type=\"text\"\n value={date.format(formatMap[type])}\n className={cx('CalendarInput')}\n min={min}\n max={max}\n {...inputProps}\n />\n {isOpen ? (\n <div className={cx('CalendarInput-sugs')}>\n {options.map(option => {\n return (\n <div\n key={option.value}\n className={cx('CalendarInput-sugsItem', {\n 'is-highlight':\n option.value === date.format(formatMap[type])\n })}\n onClick={() => {\n this.setTime(type, parseInt(option.value, 10));\n closeMenu();\n }}\n >\n {option.value}\n </div>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n }}\n </Downshift>\n );\n\n inputs.push(<span key={i + 'divider'}>:</span>);\n }\n });\n\n inputs.length && inputs.pop();\n\n return <div>{inputs}</div>;\n };\n\n renderFooter = () => {\n if (!this.props.timeFormat && !this.props.requiredConfirm) {\n return null;\n }\n\n const {translate: __, classnames: cx} = this.props;\n\n return (\n <tfoot key=\"tf\">\n <tr>\n <td colSpan={7}>\n {this.props.timeFormat ? this.renderTimes() : null}\n {this.props.requiredConfirm ? (\n <div key=\"button\" className=\"rdtActions\">\n <a\n className={cx('Button', 'Button--default')}\n onClick={this.cancel}\n >\n {__('cancel')}\n </a>\n <a\n className={cx('Button', 'Button--primary', 'm-l-sm')}\n onClick={this.confirm}\n >\n {__('confirm')}\n </a>\n </div>\n ) : null}\n </td>\n </tr>\n </tfoot>\n );\n };\n\n render() {\n const footer = this.renderFooter();\n const date = this.props.viewDate;\n const locale = date.localeData();\n const __ = this.props.translate;\n\n const tableChildren = [\n <thead key=\"th\">\n <tr>\n <th colSpan={7}>\n <div className=\"rdtHeader\">\n <a\n className=\"rdtPrev\"\n onClick={this.props.subtractTime(1, 'years')}\n >\n «\n </a>\n <a\n className=\"rdtPrev\"\n onClick={this.props.subtractTime(1, 'months')}\n >\n ‹\n </a>\n\n <div className=\"rdtCenter\">\n <a className=\"rdtSwitch\" onClick={this.props.showView('years')}>\n {date.format(__('dateformat.year'))}\n </a>\n <a\n className=\"rdtSwitch\"\n onClick={this.props.showView('months')}\n >\n {date.format(__('MMM'))}\n </a>\n </div>\n\n <a className=\"rdtNext\" onClick={this.props.addTime(1, 'months')}>\n ›\n </a>\n <a className=\"rdtNext\" onClick={this.props.addTime(1, 'years')}>\n »\n </a>\n </div>\n </th>\n </tr>\n <tr>\n {this.getDaysOfWeek(locale).map((day: number, index: number) => (\n <th key={day + index} className=\"dow\">\n {day}\n </th>\n ))}\n </tr>\n </thead>,\n\n <tbody key=\"tb\">{this.renderDays()}</tbody>\n ];\n\n footer && tableChildren.push(footer);\n\n return (\n <div className=\"rdtDays\">\n <table>{tableChildren}</table>\n </div>\n );\n }\n}\n\nexport default localeable(\n CustomDaysView as any as React.ComponentClass<CustomDaysViewProps>\n);\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -20,7 +20,6 @@ var ConditionField = /** @class */ (function (_super) {
|
|
20
20
|
options: props.options
|
21
21
|
};
|
22
22
|
_this.onSearch = _this.onSearch.bind(_this);
|
23
|
-
_this.onSearch = _this.onSearch.bind(_this);
|
24
23
|
return _this;
|
25
24
|
}
|
26
25
|
ConditionField.prototype.onSearch = function (text) {
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/components/condition-builder/Field.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAC1B,sFAAmD;AACnD,0EAAuC;AACvC,wEAAqC;AACrC,qCAAgE;AAChE,kCAA8B;AAC9B,6CAAkD;AAClD,uCAAqD;AACrD,wEAAqC;AAerC,IAAM,YAAY,GAAG,UAAC,IAAS,IAAK,OAAA,IAAI,CAAC,IAAI,EAAT,CAAS,CAAC;AAE9C;IAAoC,+CAGnC;IACC,wBAAY,KAA0B;QAAtC,YACE,kBAAM,KAAK,CAAC,
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport PopOverContainer from '../PopOverContainer';\nimport ListRadios from '../ListRadios';\nimport ResultBox from '../ResultBox';\nimport {ClassNamesFn, ThemeProps, themeable} from '../../theme';\nimport {Icon} from '../icons';\nimport {findTree, noop} from '../../utils/helper';\nimport {localeable, LocaleProps} from '../../locale';\nimport SearchBox from '../SearchBox';\n\nexport interface ConditionFieldProps extends ThemeProps, LocaleProps {\n options: Array<any>;\n value: any;\n onChange: (value: any) => void;\n disabled?: boolean;\n fieldClassName?: string;\n searchable?: boolean;\n}\n\nexport interface ConditionFieldState {\n options: Array<any>;\n}\n\nconst option2value = (item: any) => item.name;\n\nexport class ConditionField extends React.Component<\n ConditionFieldProps,\n ConditionFieldState\n> {\n constructor(props: ConditionFieldProps) {\n super(props);\n this.state = {\n options: props.options\n };\n this.onSearch = this.onSearch.bind(this);\n
|
11
|
+
"import React from 'react';\nimport PopOverContainer from '../PopOverContainer';\nimport ListRadios from '../ListRadios';\nimport ResultBox from '../ResultBox';\nimport {ClassNamesFn, ThemeProps, themeable} from '../../theme';\nimport {Icon} from '../icons';\nimport {findTree, noop} from '../../utils/helper';\nimport {localeable, LocaleProps} from '../../locale';\nimport SearchBox from '../SearchBox';\n\nexport interface ConditionFieldProps extends ThemeProps, LocaleProps {\n options: Array<any>;\n value: any;\n onChange: (value: any) => void;\n disabled?: boolean;\n fieldClassName?: string;\n searchable?: boolean;\n}\n\nexport interface ConditionFieldState {\n options: Array<any>;\n}\n\nconst option2value = (item: any) => item.name;\n\nexport class ConditionField extends React.Component<\n ConditionFieldProps,\n ConditionFieldState\n> {\n constructor(props: ConditionFieldProps) {\n super(props);\n this.state = {\n options: props.options\n };\n this.onSearch = this.onSearch.bind(this);\n }\n\n onSearch(text: string) {\n let txt = text.toLowerCase();\n\n this.setState({\n options: this.props.options\n .map((item: any) => {\n if (item.children) {\n let children = item.children.filter((child: any) => {\n return (\n child.name.toLowerCase().includes(txt) ||\n child.label.toLowerCase().includes(txt)\n );\n });\n return children.length > 0\n ? Object.assign({}, item, {children}) // 需要copy一份,防止覆盖原始数据\n : false;\n } else {\n return item.name.toLowerCase().includes(txt) ||\n item.label.toLowerCase().includes(txt)\n ? item\n : false;\n }\n })\n .filter((item: any) => {\n return !!item;\n })\n });\n }\n\n // 选了值,还原options\n onPopClose(e: React.MouseEvent, onClose: () => void) {\n this.setState({\n options: this.props.options\n });\n onClose();\n }\n\n render() {\n const {\n options,\n onChange,\n value,\n classnames: cx,\n fieldClassName,\n disabled,\n translate: __,\n searchable\n } = this.props;\n return (\n <PopOverContainer\n popOverRender={({onClose}) => (\n <>\n {searchable ? (\n <SearchBox mini={false} onSearch={this.onSearch} />\n ) : null}\n <ListRadios\n onClick={e => this.onPopClose(e, onClose)}\n showRadio={false}\n options={this.state.options}\n value={value}\n option2value={option2value}\n onChange={onChange}\n />\n </>\n )}\n >\n {({onClick, ref, isOpened}) => (\n <div className={cx('CBGroup-field')}>\n <ResultBox\n className={cx(\n 'CBGroup-fieldInput',\n fieldClassName,\n isOpened ? 'is-active' : ''\n )}\n ref={ref}\n allowInput={false}\n result={\n value\n ? findTree(options, item => item.name === value)?.label\n : ''\n }\n onResultChange={noop}\n onResultClick={onClick}\n placeholder={__('Condition.field_placeholder')}\n disabled={disabled}\n >\n <span className={cx('CBGroup-fieldCaret')}>\n <Icon icon=\"caret\" className=\"icon\" />\n </span>\n </ResultBox>\n </div>\n )}\n </PopOverContainer>\n );\n }\n}\n\nexport default themeable(localeable(ConditionField));\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -35,7 +35,8 @@ var Value = /** @class */ (function (_super) {
|
|
35
35
|
input = (react_1.default.createElement(DatePicker_1.default, { placeholder: __(field.placeholder) || 'Time.placeholder', format: field.format || '', inputFormat: field.inputFormat || 'YYYY-MM-DD HH:mm', value: value !== null && value !== void 0 ? value : field.defaultValue, onChange: onChange, timeFormat: field.timeFormat || 'HH:mm', disabled: disabled }));
|
36
36
|
}
|
37
37
|
else if (field.type === 'select') {
|
38
|
-
|
38
|
+
var autoComplete = field.autoComplete;
|
39
|
+
input = (react_1.default.createElement(Select_1.SelectWithRemoteOptions, { simpleValue: true, options: field.options, source: field.source, autoComplete: autoComplete, searchable: field.searchable, value: (_a = value !== null && value !== void 0 ? value : field.defaultValue) !== null && _a !== void 0 ? _a : '', data: data, onChange: onChange, multiple: op === 'select_any_in' || op === 'select_not_any_in', disabled: disabled }));
|
39
40
|
}
|
40
41
|
else if (field.type === 'boolean') {
|
41
42
|
input = (react_1.default.createElement(Switch_1.default, { value: value !== null && value !== void 0 ? value : field.defaultValue, onChange: onChange, disabled: disabled }));
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/components/condition-builder/Value.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAE1B,qCAAkD;AAClD,sEAAmC;AACnC,4EAAyC;AACzC,0EAAuC;AACvC,oCAA4D;AAC5D,kEAA+B;AAC/B,uCAAqD;AAWrD;IAA2B,sCAA2B;IAAtD;;
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport {FieldSimple, OperatorType} from './types';\nimport {ThemeProps, themeable} from '../../theme';\nimport InputBox from '../InputBox';\nimport NumberInput from '../NumberInput';\nimport DatePicker from '../DatePicker';\nimport {SelectWithRemoteOptions as Select} from '../Select';\nimport Switch from '../Switch';\nimport {localeable, LocaleProps} from '../../locale';\n\nexport interface ValueProps extends ThemeProps, LocaleProps {\n value: any;\n data?: any;\n onChange: (value: any) => void;\n field: FieldSimple;\n op?: OperatorType;\n disabled?: boolean;\n}\n\nexport class Value extends React.Component<ValueProps> {\n render() {\n const {\n classnames: cx,\n field,\n value,\n onChange,\n op,\n translate: __,\n data,\n disabled\n } = this.props;\n let input: JSX.Element | undefined = undefined;\n\n if (field.type === 'text') {\n input = (\n <InputBox\n value={value ?? field.defaultValue}\n onChange={onChange}\n placeholder={__(field.placeholder)}\n disabled={disabled}\n />\n );\n } else if (field.type === 'number') {\n input = (\n <NumberInput\n placeholder={__(field.placeholder) || __('NumberInput.placeholder')}\n step={field.step}\n min={field.minimum}\n max={field.maximum}\n precision={field.precision}\n value={value ?? field.defaultValue}\n onChange={onChange}\n disabled={disabled}\n />\n );\n } else if (field.type === 'date') {\n input = (\n <DatePicker\n placeholder={__(field.placeholder) || __('Date.placeholder')}\n format={field.format || 'YYYY-MM-DD'}\n inputFormat={field.inputFormat || 'YYYY-MM-DD'}\n value={value ?? field.defaultValue}\n onChange={onChange}\n timeFormat=\"\"\n disabled={disabled}\n />\n );\n } else if (field.type === 'time') {\n input = (\n <DatePicker\n viewMode=\"time\"\n placeholder={__(field.placeholder) || 'Time.placeholder'}\n format={field.format || 'HH:mm'}\n inputFormat={field.inputFormat || 'HH:mm'}\n value={value ?? field.defaultValue}\n onChange={onChange}\n dateFormat=\"\"\n timeFormat={field.format || 'HH:mm'}\n disabled={disabled}\n />\n );\n } else if (field.type === 'datetime') {\n input = (\n <DatePicker\n placeholder={__(field.placeholder) || 'Time.placeholder'}\n format={field.format || ''}\n inputFormat={field.inputFormat || 'YYYY-MM-DD HH:mm'}\n value={value ?? field.defaultValue}\n onChange={onChange}\n timeFormat={field.timeFormat || 'HH:mm'}\n disabled={disabled}\n />\n );\n } else if (field.type === 'select') {\n input = (\n <Select\n simpleValue\n options={field.options!}\n source={field.source}\n searchable={field.searchable}\n value={value ?? field.defaultValue ?? ''}\n data={data}\n onChange={onChange}\n multiple={op === 'select_any_in' || op === 'select_not_any_in'}\n disabled={disabled}\n />\n );\n } else if (field.type === 'boolean') {\n input = (\n <Switch\n value={value ?? field.defaultValue}\n onChange={onChange}\n disabled={disabled}\n />\n );\n }\n\n return <div className={cx('CBValue')}>{input}</div>;\n }\n}\n\nexport default themeable(localeable(Value));\n"
|
11
|
+
"import React from 'react';\nimport {FieldSimple, OperatorType} from './types';\nimport {ThemeProps, themeable} from '../../theme';\nimport InputBox from '../InputBox';\nimport NumberInput from '../NumberInput';\nimport DatePicker from '../DatePicker';\nimport {SelectWithRemoteOptions as Select} from '../Select';\nimport Switch from '../Switch';\nimport {localeable, LocaleProps} from '../../locale';\n\nexport interface ValueProps extends ThemeProps, LocaleProps {\n value: any;\n data?: any;\n onChange: (value: any) => void;\n field: FieldSimple;\n op?: OperatorType;\n disabled?: boolean;\n}\n\nexport class Value extends React.Component<ValueProps> {\n render() {\n const {\n classnames: cx,\n field,\n value,\n onChange,\n op,\n translate: __,\n data,\n disabled\n } = this.props;\n let input: JSX.Element | undefined = undefined;\n\n if (field.type === 'text') {\n input = (\n <InputBox\n value={value ?? field.defaultValue}\n onChange={onChange}\n placeholder={__(field.placeholder)}\n disabled={disabled}\n />\n );\n } else if (field.type === 'number') {\n input = (\n <NumberInput\n placeholder={__(field.placeholder) || __('NumberInput.placeholder')}\n step={field.step}\n min={field.minimum}\n max={field.maximum}\n precision={field.precision}\n value={value ?? field.defaultValue}\n onChange={onChange}\n disabled={disabled}\n />\n );\n } else if (field.type === 'date') {\n input = (\n <DatePicker\n placeholder={__(field.placeholder) || __('Date.placeholder')}\n format={field.format || 'YYYY-MM-DD'}\n inputFormat={field.inputFormat || 'YYYY-MM-DD'}\n value={value ?? field.defaultValue}\n onChange={onChange}\n timeFormat=\"\"\n disabled={disabled}\n />\n );\n } else if (field.type === 'time') {\n input = (\n <DatePicker\n viewMode=\"time\"\n placeholder={__(field.placeholder) || 'Time.placeholder'}\n format={field.format || 'HH:mm'}\n inputFormat={field.inputFormat || 'HH:mm'}\n value={value ?? field.defaultValue}\n onChange={onChange}\n dateFormat=\"\"\n timeFormat={field.format || 'HH:mm'}\n disabled={disabled}\n />\n );\n } else if (field.type === 'datetime') {\n input = (\n <DatePicker\n placeholder={__(field.placeholder) || 'Time.placeholder'}\n format={field.format || ''}\n inputFormat={field.inputFormat || 'YYYY-MM-DD HH:mm'}\n value={value ?? field.defaultValue}\n onChange={onChange}\n timeFormat={field.timeFormat || 'HH:mm'}\n disabled={disabled}\n />\n );\n } else if (field.type === 'select') {\n const autoComplete = field.autoComplete;\n\n input = (\n <Select\n simpleValue\n options={field.options!}\n source={field.source}\n autoComplete={autoComplete}\n searchable={field.searchable}\n value={value ?? field.defaultValue ?? ''}\n data={data}\n onChange={onChange}\n multiple={op === 'select_any_in' || op === 'select_not_any_in'}\n disabled={disabled}\n />\n );\n } else if (field.type === 'boolean') {\n input = (\n <Switch\n value={value ?? field.defaultValue}\n onChange={onChange}\n disabled={disabled}\n />\n );\n }\n\n return <div className={cx('CBValue')}>{input}</div>;\n }\n}\n\nexport default themeable(localeable(Value));\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -95,6 +95,11 @@ interface SelectField extends BaseField {
|
|
95
95
|
options?: Array<any>;
|
96
96
|
source?: SchemaApi;
|
97
97
|
searchable?: boolean;
|
98
|
+
/**
|
99
|
+
* 自动完成 API,当输入部分文字的时候,会将这些文字通过 ${term} 可以取到,发送给接口。
|
100
|
+
* 接口可以返回匹配到的选项,帮助用户输入。
|
101
|
+
*/
|
102
|
+
autoComplete?: SchemaApi;
|
98
103
|
}
|
99
104
|
interface BooleanField extends BaseField {
|
100
105
|
type: 'boolean';
|
@@ -8,6 +8,6 @@
|
|
8
8
|
"names": [],
|
9
9
|
"mappings": "",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import {SchemaApi} from '../../Schema';\nimport {Api} from '../../types';\n\nexport type FieldTypes =\n | 'text'\n | 'number'\n | 'boolean'\n | 'date'\n | 'time'\n | 'datetime'\n | 'select';\n\nexport type OperatorType =\n | 'equal'\n | 'not_equal'\n | 'is_empty'\n | 'is_not_empty'\n | 'like'\n | 'not_like'\n | 'starts_with'\n | 'ends_with'\n | 'less'\n | 'less_or_equal'\n | 'greater'\n | 'greater_or_equal'\n | 'between'\n | 'not_between'\n | 'select_equals'\n | 'select_not_equals'\n | 'select_any_in'\n | 'select_not_any_in';\n\nexport type FieldItem = {\n type: 'text';\n operators: Array<OperatorType>;\n};\n\nexport type ExpressionSimple = string | number | object | undefined;\nexport type ExpressionValue =\n | ExpressionSimple\n | {\n type: 'value';\n value: ExpressionSimple;\n };\nexport type ExpressionFunc = {\n type: 'func';\n func: string;\n args: Array<ExpressionComplex>;\n};\nexport type ExpressionField = {\n type: 'field';\n field: string;\n};\nexport type ExpressionFormula = {\n type: 'formula';\n value: string;\n};\n\nexport type ExpressionComplex =\n | ExpressionValue\n | ExpressionFunc\n | ExpressionField\n | ExpressionFormula;\n\nexport interface ConditionRule {\n id: any;\n left?: ExpressionComplex;\n op?: OperatorType;\n right?: ExpressionComplex | Array<ExpressionComplex>;\n}\n\nexport interface ConditionGroupValue {\n id: string;\n conjunction: 'and' | 'or';\n not?: boolean;\n children?: Array<ConditionRule | ConditionGroupValue>;\n}\n\nexport interface ConditionValue extends ConditionGroupValue {}\n\ninterface BaseField {\n type: FieldTypes;\n label: string;\n valueTypes?: Array<'value' | 'field' | 'func' | 'formula'>;\n operators?: Array<string>;\n\n // valueTypes 里面配置 func 才有效。\n funcs?: Array<string>;\n\n defaultValue?: any;\n placeholder?: string;\n}\n\nexport type FieldGroup = {\n label: string;\n children: Array<FieldSimple>;\n};\n\ninterface TextField extends BaseField {\n name: string;\n type: 'text';\n minLength?: number;\n maxLength?: number;\n}\n\ninterface NumberField extends BaseField {\n name: string;\n type: 'number';\n maximum?: number;\n minimum?: number;\n step?: number;\n precision?: number;\n}\n\ninterface DateField extends BaseField {\n name: string;\n type: 'date';\n format?: string;\n inputFormat?: string;\n minDate?: any;\n maxDate?: any;\n}\n\ninterface TimeField extends BaseField {\n name: string;\n type: 'time';\n minTime?: any;\n maxTime?: any;\n format?: string;\n inputFormat?: string;\n}\n\ninterface DatetimeField extends BaseField {\n type: 'datetime';\n name: string;\n format?: string;\n inputFormat?: string;\n timeFormat?: string;\n}\n\ninterface SelectField extends BaseField {\n type: 'select';\n name: string;\n multiple?: boolean;\n options?: Array<any>;\n source?: SchemaApi;\n searchable?: boolean;\n}\n\ninterface BooleanField extends BaseField {\n type: 'boolean';\n name: string;\n}\n\ninterface GroupField {\n type: 'group';\n label: string;\n name: string;\n children: Array<FieldSimple>;\n}\n\nexport type FieldSimple =\n | TextField\n | NumberField\n | DateField\n | TimeField\n | DatetimeField\n | SelectField\n | BooleanField;\n\nexport type Field = FieldSimple | FieldGroup | GroupField;\n\ninterface FuncGroup {\n label: string;\n children: Array<Func>;\n}\n\nexport interface Func {\n type: string;\n returnType: FieldTypes;\n args: Array<FuncArg>;\n label: string;\n}\nexport interface FuncArg extends BaseField {\n isOptional?: boolean;\n}\nexport type Funcs = Array<Func | FuncGroup>;\nexport type Fields = Array<Field>;\n\nexport type Type = {\n defaultOp?: OperatorType;\n operators: Array<OperatorType>;\n placeholder?: string;\n valueTypes?: Array<'value' | 'field' | 'func' | 'formula'>;\n};\n"
|
11
|
+
"import {SchemaApi} from '../../Schema';\nimport {Api} from '../../types';\n\nexport type FieldTypes =\n | 'text'\n | 'number'\n | 'boolean'\n | 'date'\n | 'time'\n | 'datetime'\n | 'select';\n\nexport type OperatorType =\n | 'equal'\n | 'not_equal'\n | 'is_empty'\n | 'is_not_empty'\n | 'like'\n | 'not_like'\n | 'starts_with'\n | 'ends_with'\n | 'less'\n | 'less_or_equal'\n | 'greater'\n | 'greater_or_equal'\n | 'between'\n | 'not_between'\n | 'select_equals'\n | 'select_not_equals'\n | 'select_any_in'\n | 'select_not_any_in';\n\nexport type FieldItem = {\n type: 'text';\n operators: Array<OperatorType>;\n};\n\nexport type ExpressionSimple = string | number | object | undefined;\nexport type ExpressionValue =\n | ExpressionSimple\n | {\n type: 'value';\n value: ExpressionSimple;\n };\nexport type ExpressionFunc = {\n type: 'func';\n func: string;\n args: Array<ExpressionComplex>;\n};\nexport type ExpressionField = {\n type: 'field';\n field: string;\n};\nexport type ExpressionFormula = {\n type: 'formula';\n value: string;\n};\n\nexport type ExpressionComplex =\n | ExpressionValue\n | ExpressionFunc\n | ExpressionField\n | ExpressionFormula;\n\nexport interface ConditionRule {\n id: any;\n left?: ExpressionComplex;\n op?: OperatorType;\n right?: ExpressionComplex | Array<ExpressionComplex>;\n}\n\nexport interface ConditionGroupValue {\n id: string;\n conjunction: 'and' | 'or';\n not?: boolean;\n children?: Array<ConditionRule | ConditionGroupValue>;\n}\n\nexport interface ConditionValue extends ConditionGroupValue {}\n\ninterface BaseField {\n type: FieldTypes;\n label: string;\n valueTypes?: Array<'value' | 'field' | 'func' | 'formula'>;\n operators?: Array<string>;\n\n // valueTypes 里面配置 func 才有效。\n funcs?: Array<string>;\n\n defaultValue?: any;\n placeholder?: string;\n}\n\nexport type FieldGroup = {\n label: string;\n children: Array<FieldSimple>;\n};\n\ninterface TextField extends BaseField {\n name: string;\n type: 'text';\n minLength?: number;\n maxLength?: number;\n}\n\ninterface NumberField extends BaseField {\n name: string;\n type: 'number';\n maximum?: number;\n minimum?: number;\n step?: number;\n precision?: number;\n}\n\ninterface DateField extends BaseField {\n name: string;\n type: 'date';\n format?: string;\n inputFormat?: string;\n minDate?: any;\n maxDate?: any;\n}\n\ninterface TimeField extends BaseField {\n name: string;\n type: 'time';\n minTime?: any;\n maxTime?: any;\n format?: string;\n inputFormat?: string;\n}\n\ninterface DatetimeField extends BaseField {\n type: 'datetime';\n name: string;\n format?: string;\n inputFormat?: string;\n timeFormat?: string;\n}\n\ninterface SelectField extends BaseField {\n type: 'select';\n name: string;\n multiple?: boolean;\n options?: Array<any>;\n source?: SchemaApi;\n searchable?: boolean;\n\n /**\n * 自动完成 API,当输入部分文字的时候,会将这些文字通过 ${term} 可以取到,发送给接口。\n * 接口可以返回匹配到的选项,帮助用户输入。\n */\n autoComplete?: SchemaApi;\n}\n\ninterface BooleanField extends BaseField {\n type: 'boolean';\n name: string;\n}\n\ninterface GroupField {\n type: 'group';\n label: string;\n name: string;\n children: Array<FieldSimple>;\n}\n\nexport type FieldSimple =\n | TextField\n | NumberField\n | DateField\n | TimeField\n | DatetimeField\n | SelectField\n | BooleanField;\n\nexport type Field = FieldSimple | FieldGroup | GroupField;\n\ninterface FuncGroup {\n label: string;\n children: Array<Func>;\n}\n\nexport interface Func {\n type: string;\n returnType: FieldTypes;\n args: Array<FuncArg>;\n label: string;\n}\nexport interface FuncArg extends BaseField {\n isOptional?: boolean;\n}\nexport type Funcs = Array<Func | FuncGroup>;\nexport type Fields = Array<Field>;\n\nexport type Type = {\n defaultOp?: OperatorType;\n operators: Array<OperatorType>;\n placeholder?: string;\n valueTypes?: Array<'value' | 'field' | 'func' | 'formula'>;\n};\n"
|
12
12
|
]
|
13
13
|
}
|
package/lib/components/icons.js
CHANGED
@@ -10,6 +10,7 @@ var tslib_1 = require("tslib");
|
|
10
10
|
var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
11
11
|
var close_svg_1 = (0, tslib_1.__importDefault)(require("../icons/close.js"));
|
12
12
|
exports.CloseIcon = close_svg_1.default;
|
13
|
+
var status_close_svg_1 = (0, tslib_1.__importDefault)(require("../icons/status-close.js"));
|
13
14
|
var undo_svg_1 = (0, tslib_1.__importDefault)(require("../icons/undo.js"));
|
14
15
|
exports.UnDoIcon = undo_svg_1.default;
|
15
16
|
var redo_svg_1 = (0, tslib_1.__importDefault)(require("../icons/redo.js"));
|
@@ -41,6 +42,10 @@ var remove_svg_1 = (0, tslib_1.__importDefault)(require("../icons/remove.js"));
|
|
41
42
|
var retry_svg_1 = (0, tslib_1.__importDefault)(require("../icons/retry.js"));
|
42
43
|
var upload_svg_1 = (0, tslib_1.__importDefault)(require("../icons/upload.js"));
|
43
44
|
var file_svg_1 = (0, tslib_1.__importDefault)(require("../icons/file.js"));
|
45
|
+
var status_success_svg_1 = (0, tslib_1.__importDefault)(require("../icons/status-success.js"));
|
46
|
+
var status_fail_svg_1 = (0, tslib_1.__importDefault)(require("../icons/status-fail.js"));
|
47
|
+
var status_info_svg_1 = (0, tslib_1.__importDefault)(require("../icons/status-info.js"));
|
48
|
+
var status_warning_svg_1 = (0, tslib_1.__importDefault)(require("../icons/status-warning.js"));
|
44
49
|
var success_svg_1 = (0, tslib_1.__importDefault)(require("../icons/success.js"));
|
45
50
|
var fail_svg_1 = (0, tslib_1.__importDefault)(require("../icons/fail.js"));
|
46
51
|
var search_svg_1 = (0, tslib_1.__importDefault)(require("../icons/search.js"));
|
@@ -53,6 +58,7 @@ var reload_svg_1 = (0, tslib_1.__importDefault)(require("../icons/reload.js"));
|
|
53
58
|
var exchange_svg_1 = (0, tslib_1.__importDefault)(require("../icons/exchange.js"));
|
54
59
|
var columns_svg_1 = (0, tslib_1.__importDefault)(require("../icons/columns.js"));
|
55
60
|
var calendar_svg_1 = (0, tslib_1.__importDefault)(require("../icons/calendar.js"));
|
61
|
+
var clock_svg_1 = (0, tslib_1.__importDefault)(require("../icons/clock.js"));
|
56
62
|
var copy_svg_1 = (0, tslib_1.__importDefault)(require("../icons/copy.js"));
|
57
63
|
var filter_svg_1 = (0, tslib_1.__importDefault)(require("../icons/filter.js"));
|
58
64
|
var caret_svg_1 = (0, tslib_1.__importDefault)(require("../icons/caret.js"));
|
@@ -78,6 +84,7 @@ var ellipsis_v_svg_1 = (0, tslib_1.__importDefault)(require("../icons/ellipsis-v
|
|
78
84
|
var expand_alt_svg_1 = (0, tslib_1.__importDefault)(require("../icons/expand-alt.js"));
|
79
85
|
var compress_alt_svg_1 = (0, tslib_1.__importDefault)(require("../icons/compress-alt.js"));
|
80
86
|
var transparent_svg_1 = (0, tslib_1.__importDefault)(require("../icons/transparent.js"));
|
87
|
+
var loading_outline_svg_1 = (0, tslib_1.__importDefault)(require("../icons/loading-outline.js"));
|
81
88
|
// 兼容原来的用法,后续不直接试用。
|
82
89
|
exports.closeIcon = react_1.default.createElement(close_svg_1.default, null);
|
83
90
|
exports.unDoIcon = react_1.default.createElement(undo_svg_1.default, null);
|
@@ -103,6 +110,7 @@ function registerIcon(key, component) {
|
|
103
110
|
}
|
104
111
|
exports.registerIcon = registerIcon;
|
105
112
|
registerIcon('close', close_svg_1.default);
|
113
|
+
registerIcon('status-close', status_close_svg_1.default);
|
106
114
|
registerIcon('undo', undo_svg_1.default);
|
107
115
|
registerIcon('redo', redo_svg_1.default);
|
108
116
|
registerIcon('enter', enter_svg_1.default);
|
@@ -124,6 +132,10 @@ registerIcon('remove', remove_svg_1.default);
|
|
124
132
|
registerIcon('retry', retry_svg_1.default);
|
125
133
|
registerIcon('upload', upload_svg_1.default);
|
126
134
|
registerIcon('file', file_svg_1.default);
|
135
|
+
registerIcon('status-success', status_success_svg_1.default);
|
136
|
+
registerIcon('status-fail', status_fail_svg_1.default);
|
137
|
+
registerIcon('status-info', status_info_svg_1.default);
|
138
|
+
registerIcon('status-warning', status_warning_svg_1.default);
|
127
139
|
registerIcon('success', success_svg_1.default);
|
128
140
|
registerIcon('fail', fail_svg_1.default);
|
129
141
|
registerIcon('warning', warning_svg_1.default);
|
@@ -139,6 +151,7 @@ registerIcon('reload', reload_svg_1.default);
|
|
139
151
|
registerIcon('exchange', exchange_svg_1.default);
|
140
152
|
registerIcon('columns', columns_svg_1.default);
|
141
153
|
registerIcon('calendar', calendar_svg_1.default);
|
154
|
+
registerIcon('clock', clock_svg_1.default);
|
142
155
|
registerIcon('copy', copy_svg_1.default);
|
143
156
|
registerIcon('filter', filter_svg_1.default);
|
144
157
|
registerIcon('column-filter', column_filter_svg_1.default);
|
@@ -161,6 +174,7 @@ registerIcon('ellipsis-v', ellipsis_v_svg_1.default);
|
|
161
174
|
registerIcon('expand-alt', expand_alt_svg_1.default);
|
162
175
|
registerIcon('compress-alt', compress_alt_svg_1.default);
|
163
176
|
registerIcon('transparent', transparent_svg_1.default);
|
177
|
+
registerIcon('loading-outline', loading_outline_svg_1.default);
|
164
178
|
function Icon(_a) {
|
165
179
|
var icon = _a.icon, className = _a.className, rest = (0, tslib_1.__rest)(_a, ["icon", "className"]);
|
166
180
|
// jest 运行环境下,把指定的 icon 也输出到 snapshot 中。
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/components/icons.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA;;;;GAIG;AACH,6DAA0B;AAE1B,8EAA2C;
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"/**\n * @file Icon\n * @description\n * @author fex\n */\nimport React from 'react';\n\nimport CloseIcon from '../icons/close.svg';\nimport UnDoIcon from '../icons/undo.svg';\nimport ReDoIcon from '../icons/redo.svg';\nimport EnterIcon from '../icons/enter.svg';\nimport VolumeIcon from '../icons/volume.svg';\nimport MuteIcon from '../icons/mute.svg';\nimport PlayIcon from '../icons/play.svg';\nimport PauseIcon from '../icons/pause.svg';\nimport LeftArrowIcon from '../icons/left-arrow.svg';\nimport RightArrowIcon from '../icons/right-arrow.svg';\nimport CheckIcon from '../icons/check.svg';\nimport PlusIcon from '../icons/plus.svg';\nimport MinusIcon from '../icons/minus.svg';\nimport PencilIcon from '../icons/pencil.svg';\nimport ViewIcon from '../icons/view.svg';\nimport RemoveIcon from '../icons/remove.svg';\nimport RetryIcon from '../icons/retry.svg';\nimport UploadIcon from '../icons/upload.svg';\nimport FileIcon from '../icons/file.svg';\nimport SuccessIcon from '../icons/success.svg';\nimport FailIcon from '../icons/fail.svg';\nimport SearchIcon from '../icons/search.svg';\nimport BackIcon from '../icons/back.svg';\nimport MoveIcon from '../icons/move.svg';\nimport InfoIcon from '../icons/info.svg';\nimport LocationIcon from '../icons/location.svg';\nimport DragBarIcon from '../icons/drag-bar.svg';\nimport ReloadIcon from '../icons/reload.svg';\nimport ExchangeIcon from '../icons/exchange.svg';\nimport ColmunsIcon from '../icons/columns.svg';\nimport CalendarIcon from '../icons/calendar.svg';\nimport CopyIcon from '../icons/copy.svg';\nimport FilterIcon from '../icons/filter.svg';\nimport CaretIcon from '../icons/caret.svg';\nimport RightArrowBoldIcon from '../icons/right-arrow-bold.svg';\nimport ColumnFilterIcon from '../icons/column-filter.svg';\nimport ZoomInIcon from '../icons/zoom-in.svg';\nimport ZoomOutIcon from '../icons/zoom-out.svg';\nimport QuestionIcon from '../icons/question.svg';\nimport QuestionMarkIcon from '../icons/question-mark.svg';\nimport WindowRestoreIcon from '../icons/window-restore.svg';\nimport InfoCircleIcon from '../icons/info-circle.svg';\nimport WarningIcon from '../icons/warning.svg';\nimport WarningMarkIcon from '../icons/warning-mark.svg';\nimport ScheduleIcon from '../icons/schedule.svg';\nimport HomeIcon from '../icons/home.svg';\nimport FolderIcon from '../icons/folder.svg';\nimport SortDefaultIcon from '../icons/sort-default.svg';\nimport SortAscIcon from '../icons/sort-asc.svg';\nimport SortDescIcon from '../icons/sort-desc.svg';\nimport SettingIcon from '../icons/setting.svg';\nimport PlusCicleIcon from '../icons/plus-cicle.svg';\nimport EllipsisVIcon from '../icons/ellipsis-v.svg';\nimport ExpandAltIcon from '../icons/expand-alt.svg';\nimport CompressAltIcon from '../icons/compress-alt.svg';\nimport TransparentIcon from '../icons/transparent.svg';\n\n// 兼容原来的用法,后续不直接试用。\n\nexport const closeIcon = <CloseIcon />;\nexport const unDoIcon = <UnDoIcon />;\nexport const reDoIcon = <ReDoIcon />;\nexport const enterIcon = <EnterIcon />;\nexport const volumeIcon = <VolumeIcon />;\nexport const muteIcon = <MuteIcon />;\nexport const playIcon = <PlayIcon />;\nexport const pauseIcon = <PauseIcon />;\nexport const leftArrowIcon = <LeftArrowIcon />;\nexport const rightArrowIcon = <RightArrowIcon />;\nconst iconFactory: {\n [propName: string]: React.ReactType<{}>;\n} = {};\n\nexport function getIcon(key: string) {\n return iconFactory[key];\n}\n\nexport function hasIcon(iconName: string) {\n return !!getIcon(iconName);\n}\n\nexport function registerIcon(key: string, component: React.ReactType<{}>) {\n iconFactory[key] = component;\n}\n\nregisterIcon('close', CloseIcon);\nregisterIcon('undo', UnDoIcon);\nregisterIcon('redo', ReDoIcon);\nregisterIcon('enter', EnterIcon);\nregisterIcon('volume', VolumeIcon);\nregisterIcon('mute', MuteIcon);\nregisterIcon('play', PlayIcon);\nregisterIcon('pause', PauseIcon);\nregisterIcon('left-arrow', LeftArrowIcon);\nregisterIcon('right-arrow', RightArrowIcon);\nregisterIcon('prev', LeftArrowIcon);\nregisterIcon('next', RightArrowIcon);\nregisterIcon('check', CheckIcon);\nregisterIcon('plus', PlusIcon);\nregisterIcon('add', PlusIcon);\nregisterIcon('minus', MinusIcon);\nregisterIcon('pencil', PencilIcon);\nregisterIcon('view', ViewIcon);\nregisterIcon('remove', RemoveIcon);\nregisterIcon('retry', RetryIcon);\nregisterIcon('upload', UploadIcon);\nregisterIcon('file', FileIcon);\nregisterIcon('success', SuccessIcon);\nregisterIcon('fail', FailIcon);\nregisterIcon('warning', WarningIcon);\nregisterIcon('warning-mark', WarningMarkIcon);\nregisterIcon('search', SearchIcon);\nregisterIcon('back', BackIcon);\nregisterIcon('move', MoveIcon);\nregisterIcon('info', InfoIcon);\nregisterIcon('info-circle', InfoCircleIcon);\nregisterIcon('location', LocationIcon);\nregisterIcon('drag-bar', DragBarIcon);\nregisterIcon('reload', ReloadIcon);\nregisterIcon('exchange', ExchangeIcon);\nregisterIcon('columns', ColmunsIcon);\nregisterIcon('calendar', CalendarIcon);\nregisterIcon('copy', CopyIcon);\nregisterIcon('filter', FilterIcon);\nregisterIcon('column-filter', ColumnFilterIcon);\nregisterIcon('caret', CaretIcon);\nregisterIcon('right-arrow-bold', RightArrowBoldIcon);\nregisterIcon('zoom-in', ZoomInIcon);\nregisterIcon('zoom-out', ZoomOutIcon);\nregisterIcon('question', QuestionIcon);\nregisterIcon('question-mark', QuestionMarkIcon);\nregisterIcon('window-restore', WindowRestoreIcon);\nregisterIcon('schedule', ScheduleIcon);\nregisterIcon('home', HomeIcon);\nregisterIcon('folder', FolderIcon);\nregisterIcon('sort-default', SortDefaultIcon);\nregisterIcon('sort-asc', SortAscIcon);\nregisterIcon('sort-desc', SortDescIcon);\nregisterIcon('setting', SettingIcon);\nregisterIcon('plus-cicle', PlusCicleIcon);\nregisterIcon('ellipsis-v', EllipsisVIcon);\nregisterIcon('expand-alt', ExpandAltIcon);\nregisterIcon('compress-alt', CompressAltIcon);\nregisterIcon('transparent', TransparentIcon);\n\nexport function Icon({\n icon,\n className,\n ...rest\n}: {\n icon: string;\n} & React.ComponentProps<any>) {\n // jest 运行环境下,把指定的 icon 也输出到 snapshot 中。\n if (typeof jest !== 'undefined') {\n rest.icon = icon;\n }\n\n const Component = getIcon(icon);\n return Component ? (\n <Component {...rest} className={`${className || ''} icon-${icon}`} />\n ) : (\n <span className=\"text-danger\">没有 icon {icon}</span>\n );\n}\n\nexport {\n CloseIcon,\n UnDoIcon,\n ReDoIcon,\n EnterIcon,\n VolumeIcon,\n MuteIcon,\n PlayIcon,\n PauseIcon,\n LeftArrowIcon,\n RightArrowIcon,\n CheckIcon,\n PlusIcon,\n MinusIcon,\n PencilIcon\n};\n"
|
11
|
+
"/**\n * @file Icon\n * @description\n * @author fex\n */\nimport React from 'react';\n\nimport CloseIcon from '../icons/close.svg';\nimport StatusCloseIcon from '../icons/status-close.svg';\nimport UnDoIcon from '../icons/undo.svg';\nimport ReDoIcon from '../icons/redo.svg';\nimport EnterIcon from '../icons/enter.svg';\nimport VolumeIcon from '../icons/volume.svg';\nimport MuteIcon from '../icons/mute.svg';\nimport PlayIcon from '../icons/play.svg';\nimport PauseIcon from '../icons/pause.svg';\nimport LeftArrowIcon from '../icons/left-arrow.svg';\nimport RightArrowIcon from '../icons/right-arrow.svg';\nimport CheckIcon from '../icons/check.svg';\nimport PlusIcon from '../icons/plus.svg';\nimport MinusIcon from '../icons/minus.svg';\nimport PencilIcon from '../icons/pencil.svg';\nimport ViewIcon from '../icons/view.svg';\nimport RemoveIcon from '../icons/remove.svg';\nimport RetryIcon from '../icons/retry.svg';\nimport UploadIcon from '../icons/upload.svg';\nimport FileIcon from '../icons/file.svg';\nimport StatusSuccessIcon from '../icons/status-success.svg';\nimport StatusFailIcon from '../icons/status-fail.svg';\nimport StatusInfoIcon from '../icons/status-info.svg';\nimport StatusWarningIcon from '../icons/status-warning.svg';\nimport SuccessIcon from '../icons/success.svg';\nimport FailIcon from '../icons/fail.svg';\nimport SearchIcon from '../icons/search.svg';\nimport BackIcon from '../icons/back.svg';\nimport MoveIcon from '../icons/move.svg';\nimport InfoIcon from '../icons/info.svg';\nimport LocationIcon from '../icons/location.svg';\nimport DragBarIcon from '../icons/drag-bar.svg';\nimport ReloadIcon from '../icons/reload.svg';\nimport ExchangeIcon from '../icons/exchange.svg';\nimport ColmunsIcon from '../icons/columns.svg';\nimport CalendarIcon from '../icons/calendar.svg';\nimport ClockIcon from '../icons/clock.svg';\n\nimport CopyIcon from '../icons/copy.svg';\nimport FilterIcon from '../icons/filter.svg';\nimport CaretIcon from '../icons/caret.svg';\nimport RightArrowBoldIcon from '../icons/right-arrow-bold.svg';\nimport ColumnFilterIcon from '../icons/column-filter.svg';\nimport ZoomInIcon from '../icons/zoom-in.svg';\nimport ZoomOutIcon from '../icons/zoom-out.svg';\nimport QuestionIcon from '../icons/question.svg';\nimport QuestionMarkIcon from '../icons/question-mark.svg';\nimport WindowRestoreIcon from '../icons/window-restore.svg';\nimport InfoCircleIcon from '../icons/info-circle.svg';\nimport WarningIcon from '../icons/warning.svg';\nimport WarningMarkIcon from '../icons/warning-mark.svg';\nimport ScheduleIcon from '../icons/schedule.svg';\nimport HomeIcon from '../icons/home.svg';\nimport FolderIcon from '../icons/folder.svg';\nimport SortDefaultIcon from '../icons/sort-default.svg';\nimport SortAscIcon from '../icons/sort-asc.svg';\nimport SortDescIcon from '../icons/sort-desc.svg';\nimport SettingIcon from '../icons/setting.svg';\nimport PlusCicleIcon from '../icons/plus-cicle.svg';\nimport EllipsisVIcon from '../icons/ellipsis-v.svg';\nimport ExpandAltIcon from '../icons/expand-alt.svg';\nimport CompressAltIcon from '../icons/compress-alt.svg';\nimport TransparentIcon from '../icons/transparent.svg';\nimport LoadingOutline from '../icons/loading-outline.svg';\n\n// 兼容原来的用法,后续不直接试用。\n\nexport const closeIcon = <CloseIcon />;\nexport const unDoIcon = <UnDoIcon />;\nexport const reDoIcon = <ReDoIcon />;\nexport const enterIcon = <EnterIcon />;\nexport const volumeIcon = <VolumeIcon />;\nexport const muteIcon = <MuteIcon />;\nexport const playIcon = <PlayIcon />;\nexport const pauseIcon = <PauseIcon />;\nexport const leftArrowIcon = <LeftArrowIcon />;\nexport const rightArrowIcon = <RightArrowIcon />;\nconst iconFactory: {\n [propName: string]: React.ReactType<{}>;\n} = {};\n\nexport function getIcon(key: string) {\n return iconFactory[key];\n}\n\nexport function hasIcon(iconName: string) {\n return !!getIcon(iconName);\n}\n\nexport function registerIcon(key: string, component: React.ReactType<{}>) {\n iconFactory[key] = component;\n}\n\nregisterIcon('close', CloseIcon);\nregisterIcon('status-close', StatusCloseIcon);\nregisterIcon('undo', UnDoIcon);\nregisterIcon('redo', ReDoIcon);\nregisterIcon('enter', EnterIcon);\nregisterIcon('volume', VolumeIcon);\nregisterIcon('mute', MuteIcon);\nregisterIcon('play', PlayIcon);\nregisterIcon('pause', PauseIcon);\nregisterIcon('left-arrow', LeftArrowIcon);\nregisterIcon('right-arrow', RightArrowIcon);\nregisterIcon('prev', LeftArrowIcon);\nregisterIcon('next', RightArrowIcon);\nregisterIcon('check', CheckIcon);\nregisterIcon('plus', PlusIcon);\nregisterIcon('add', PlusIcon);\nregisterIcon('minus', MinusIcon);\nregisterIcon('pencil', PencilIcon);\nregisterIcon('view', ViewIcon);\nregisterIcon('remove', RemoveIcon);\nregisterIcon('retry', RetryIcon);\nregisterIcon('upload', UploadIcon);\nregisterIcon('file', FileIcon);\nregisterIcon('status-success', StatusSuccessIcon);\nregisterIcon('status-fail', StatusFailIcon);\nregisterIcon('status-info', StatusInfoIcon);\nregisterIcon('status-warning', StatusWarningIcon);\nregisterIcon('success', SuccessIcon);\nregisterIcon('fail', FailIcon);\nregisterIcon('warning', WarningIcon);\nregisterIcon('warning-mark', WarningMarkIcon);\nregisterIcon('search', SearchIcon);\nregisterIcon('back', BackIcon);\nregisterIcon('move', MoveIcon);\nregisterIcon('info', InfoIcon);\nregisterIcon('info-circle', InfoCircleIcon);\nregisterIcon('location', LocationIcon);\nregisterIcon('drag-bar', DragBarIcon);\nregisterIcon('reload', ReloadIcon);\nregisterIcon('exchange', ExchangeIcon);\nregisterIcon('columns', ColmunsIcon);\nregisterIcon('calendar', CalendarIcon);\nregisterIcon('clock', ClockIcon);\nregisterIcon('copy', CopyIcon);\nregisterIcon('filter', FilterIcon);\nregisterIcon('column-filter', ColumnFilterIcon);\nregisterIcon('caret', CaretIcon);\nregisterIcon('right-arrow-bold', RightArrowBoldIcon);\nregisterIcon('zoom-in', ZoomInIcon);\nregisterIcon('zoom-out', ZoomOutIcon);\nregisterIcon('question', QuestionIcon);\nregisterIcon('question-mark', QuestionMarkIcon);\nregisterIcon('window-restore', WindowRestoreIcon);\nregisterIcon('schedule', ScheduleIcon);\nregisterIcon('home', HomeIcon);\nregisterIcon('folder', FolderIcon);\nregisterIcon('sort-default', SortDefaultIcon);\nregisterIcon('sort-asc', SortAscIcon);\nregisterIcon('sort-desc', SortDescIcon);\nregisterIcon('setting', SettingIcon);\nregisterIcon('plus-cicle', PlusCicleIcon);\nregisterIcon('ellipsis-v', EllipsisVIcon);\nregisterIcon('expand-alt', ExpandAltIcon);\nregisterIcon('compress-alt', CompressAltIcon);\nregisterIcon('transparent', TransparentIcon);\nregisterIcon('loading-outline', LoadingOutline);\n\nexport function Icon({\n icon,\n className,\n ...rest\n}: {\n icon: string;\n} & React.ComponentProps<any>) {\n // jest 运行环境下,把指定的 icon 也输出到 snapshot 中。\n if (typeof jest !== 'undefined') {\n rest.icon = icon;\n }\n\n const Component = getIcon(icon);\n return Component ? (\n <Component {...rest} className={`${className || ''} icon-${icon}`} />\n ) : (\n <span className=\"text-danger\">没有 icon {icon}</span>\n );\n}\n\nexport {\n CloseIcon,\n UnDoIcon,\n ReDoIcon,\n EnterIcon,\n VolumeIcon,\n MuteIcon,\n PlayIcon,\n PauseIcon,\n LeftArrowIcon,\n RightArrowIcon,\n CheckIcon,\n PlusIcon,\n MinusIcon,\n PencilIcon\n};\n"
|
12
12
|
]
|
13
13
|
}
|
package/lib/factory.d.ts
CHANGED
@@ -43,10 +43,14 @@ export interface RendererConfig extends RendererBasicConfig {
|
|
43
43
|
export interface RenderSchemaFilter {
|
44
44
|
(schema: Schema, renderer: RendererConfig, props?: any): Schema;
|
45
45
|
}
|
46
|
+
export interface wsObject {
|
47
|
+
url: string;
|
48
|
+
body?: any;
|
49
|
+
}
|
46
50
|
export interface RenderOptions {
|
47
51
|
session?: string;
|
48
52
|
fetcher?: (config: fetcherConfig) => Promise<fetcherResult>;
|
49
|
-
wsFetcher?: (ws:
|
53
|
+
wsFetcher?: (ws: wsObject, onMessage: (data: any) => void, onError: (error: any) => void) => void;
|
50
54
|
isCancel?: (value: any) => boolean;
|
51
55
|
notify?: (type: 'error' | 'success', msg: string, conf?: {
|
52
56
|
closeButton?: boolean;
|
package/lib/factory.js
CHANGED
@@ -108,15 +108,20 @@ var defaultOptions = {
|
|
108
108
|
// 使用 WebSocket 来实时获取数据
|
109
109
|
wsFetcher: function (ws, onMessage, onError) {
|
110
110
|
if (ws) {
|
111
|
-
var
|
112
|
-
|
111
|
+
var socket_1 = new WebSocket(ws.url);
|
112
|
+
socket_1.onopen = function (event) {
|
113
|
+
if (ws.body) {
|
114
|
+
socket_1.send(JSON.stringify(ws.body));
|
115
|
+
}
|
116
|
+
};
|
117
|
+
socket_1.onmessage = function (event) {
|
113
118
|
if (event.data) {
|
114
119
|
onMessage(JSON.parse(event.data));
|
115
120
|
}
|
116
121
|
};
|
117
|
-
|
122
|
+
socket_1.onerror = onError;
|
118
123
|
return {
|
119
|
-
close:
|
124
|
+
close: socket_1.close
|
120
125
|
};
|
121
126
|
}
|
122
127
|
else {
|