form-render-v3 3.0.0-alpha.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/LICENSE +21 -0
- package/README.md +126 -0
- package/es/derivative/SearchForm/ActionView.d.ts +3 -0
- package/es/derivative/SearchForm/ActionView.js +72 -0
- package/es/derivative/SearchForm/index.css +31 -0
- package/es/derivative/SearchForm/index.d.ts +5 -0
- package/es/derivative/SearchForm/index.js +294 -0
- package/es/derivative/SlimRender/index.d.ts +3 -0
- package/es/derivative/SlimRender/index.js +6 -0
- package/es/form-core/connectForm.d.ts +3 -0
- package/es/form-core/connectForm.js +12 -0
- package/es/form-core/index.css +19 -0
- package/es/form-core/index.d.ts +5 -0
- package/es/form-core/index.js +305 -0
- package/es/index.d.ts +10 -0
- package/es/index.js +10 -0
- package/es/locales/en_US.d.ts +28 -0
- package/es/locales/en_US.js +27 -0
- package/es/locales/index.d.ts +57 -0
- package/es/locales/index.js +6 -0
- package/es/locales/zh_CN.d.ts +28 -0
- package/es/locales/zh_CN.js +27 -0
- package/es/models/bindValues.d.ts +2 -0
- package/es/models/bindValues.js +172 -0
- package/es/models/context.d.ts +3 -0
- package/es/models/context.js +3 -0
- package/es/models/expression.d.ts +7 -0
- package/es/models/expression.js +135 -0
- package/es/models/fieldShouldUpdate.d.ts +2 -0
- package/es/models/fieldShouldUpdate.js +70 -0
- package/es/models/filterValuesHidden.d.ts +5 -0
- package/es/models/filterValuesHidden.js +61 -0
- package/es/models/filterValuesUndefined.d.ts +2 -0
- package/es/models/filterValuesUndefined.js +47 -0
- package/es/models/flattenSchema.d.ts +3 -0
- package/es/models/flattenSchema.js +91 -0
- package/es/models/formCoreUtils.d.ts +8 -0
- package/es/models/formCoreUtils.js +190 -0
- package/es/models/formDataSkeleton.d.ts +1 -0
- package/es/models/formDataSkeleton.js +31 -0
- package/es/models/layout.d.ts +4 -0
- package/es/models/layout.js +88 -0
- package/es/models/mapping.d.ts +89 -0
- package/es/models/mapping.js +119 -0
- package/es/models/sortProperties.d.ts +2 -0
- package/es/models/sortProperties.js +41 -0
- package/es/models/store.d.ts +10 -0
- package/es/models/store.js +22 -0
- package/es/models/transformProps.d.ts +34 -0
- package/es/models/transformProps.js +80 -0
- package/es/models/useForm.d.ts +3 -0
- package/es/models/useForm.js +322 -0
- package/es/models/validateMessage.d.ts +93 -0
- package/es/models/validateMessage.js +95 -0
- package/es/models/validates.d.ts +3 -0
- package/es/models/validates.js +201 -0
- package/es/render-core/FieldItem/field.d.ts +3 -0
- package/es/render-core/FieldItem/field.js +81 -0
- package/es/render-core/FieldItem/index.d.ts +3 -0
- package/es/render-core/FieldItem/index.js +54 -0
- package/es/render-core/FieldItem/main.d.ts +3 -0
- package/es/render-core/FieldItem/main.js +228 -0
- package/es/render-core/FieldItem/module.d.ts +18 -0
- package/es/render-core/FieldItem/module.js +337 -0
- package/es/render-core/FieldList/field.d.ts +3 -0
- package/es/render-core/FieldList/field.js +300 -0
- package/es/render-core/FieldList/index.d.ts +3 -0
- package/es/render-core/FieldList/index.js +44 -0
- package/es/render-core/FieldList/main.d.ts +3 -0
- package/es/render-core/FieldList/main.js +99 -0
- package/es/render-core/FieldList/modules.d.ts +7 -0
- package/es/render-core/FieldList/modules.js +108 -0
- package/es/render-core/index.css +29 -0
- package/es/render-core/index.d.ts +9 -0
- package/es/render-core/index.js +85 -0
- package/es/type.d.ts +405 -0
- package/es/type.js +1 -0
- package/es/utils/index.d.ts +75 -0
- package/es/utils/index.js +120 -0
- package/es/widgets/ErrorSchema/index.d.ts +3 -0
- package/es/widgets/ErrorSchema/index.js +14 -0
- package/es/widgets/boxCollapse/index.css +53 -0
- package/es/widgets/boxCollapse/index.d.ts +18 -0
- package/es/widgets/boxCollapse/index.js +70 -0
- package/es/widgets/boxLineTitle/index.css +18 -0
- package/es/widgets/boxLineTitle/index.d.ts +8 -0
- package/es/widgets/boxLineTitle/index.js +23 -0
- package/es/widgets/boxSubInline/index.css +11 -0
- package/es/widgets/boxSubInline/index.d.ts +4 -0
- package/es/widgets/boxSubInline/index.js +56 -0
- package/es/widgets/boxcard/index.css +17 -0
- package/es/widgets/boxcard/index.d.ts +8 -0
- package/es/widgets/boxcard/index.js +20 -0
- package/es/widgets/components/DatePicker/index.d.ts +3 -0
- package/es/widgets/components/DatePicker/index.js +15 -0
- package/es/widgets/components/FButton/index.d.ts +3 -0
- package/es/widgets/components/FButton/index.js +24 -0
- package/es/widgets/components/HeaderTitle/index.css +0 -0
- package/es/widgets/components/HeaderTitle/index.d.ts +4 -0
- package/es/widgets/components/HeaderTitle/index.js +14 -0
- package/es/widgets/components/PanelView/index.css +6 -0
- package/es/widgets/components/PanelView/index.d.ts +4 -0
- package/es/widgets/components/PanelView/index.js +13 -0
- package/es/widgets/components/TimePicker/index.d.ts +2 -0
- package/es/widgets/components/TimePicker/index.js +18 -0
- package/es/widgets/fields/checkbox/index.d.ts +3 -0
- package/es/widgets/fields/checkbox/index.js +15 -0
- package/es/widgets/fields/checkboxes/index.d.ts +3 -0
- package/es/widgets/fields/checkboxes/index.js +31 -0
- package/es/widgets/fields/date/index.d.ts +3 -0
- package/es/widgets/fields/date/index.js +45 -0
- package/es/widgets/fields/dateRange/index.d.ts +7 -0
- package/es/widgets/fields/dateRange/index.js +64 -0
- package/es/widgets/fields/html/index.d.ts +2 -0
- package/es/widgets/fields/html/index.js +53 -0
- package/es/widgets/fields/imageInput/index.css +7 -0
- package/es/widgets/fields/imageInput/index.d.ts +4 -0
- package/es/widgets/fields/imageInput/index.js +38 -0
- package/es/widgets/fields/input/index.d.ts +2 -0
- package/es/widgets/fields/input/index.js +4 -0
- package/es/widgets/fields/number/index.d.ts +2 -0
- package/es/widgets/fields/number/index.js +4 -0
- package/es/widgets/fields/percentSlider/index.d.ts +17 -0
- package/es/widgets/fields/percentSlider/index.js +82 -0
- package/es/widgets/fields/radio/index.d.ts +3 -0
- package/es/widgets/fields/radio/index.js +31 -0
- package/es/widgets/fields/rate/index.d.ts +2 -0
- package/es/widgets/fields/rate/index.js +4 -0
- package/es/widgets/fields/select/index.d.ts +2 -0
- package/es/widgets/fields/select/index.js +4 -0
- package/es/widgets/fields/slider/index.css +5 -0
- package/es/widgets/fields/slider/index.d.ts +7 -0
- package/es/widgets/fields/slider/index.js +58 -0
- package/es/widgets/fields/switch/index.d.ts +2 -0
- package/es/widgets/fields/switch/index.js +4 -0
- package/es/widgets/fields/textArea/index.d.ts +3 -0
- package/es/widgets/fields/textArea/index.js +14 -0
- package/es/widgets/fields/time/index.d.ts +3 -0
- package/es/widgets/fields/time/index.js +29 -0
- package/es/widgets/fields/timeRange/index.d.ts +9 -0
- package/es/widgets/fields/timeRange/index.js +48 -0
- package/es/widgets/fields/treeSelect/index.d.ts +2 -0
- package/es/widgets/fields/treeSelect/index.js +4 -0
- package/es/widgets/fields/upload/index.css +28 -0
- package/es/widgets/fields/upload/index.d.ts +13 -0
- package/es/widgets/fields/upload/index.js +57 -0
- package/es/widgets/fields/urlInput/index.d.ts +3 -0
- package/es/widgets/fields/urlInput/index.js +63 -0
- package/es/widgets/index.d.ts +33 -0
- package/es/widgets/index.js +33 -0
- package/es/widgets/listCard/index.css +20 -0
- package/es/widgets/listCard/index.d.ts +4 -0
- package/es/widgets/listCard/index.js +141 -0
- package/es/widgets/listDrawer/drawerForm.d.ts +3 -0
- package/es/widgets/listDrawer/drawerForm.js +40 -0
- package/es/widgets/listDrawer/index.css +16 -0
- package/es/widgets/listDrawer/index.d.ts +12 -0
- package/es/widgets/listDrawer/index.js +288 -0
- package/es/widgets/listSimple/index.css +27 -0
- package/es/widgets/listSimple/index.d.ts +4 -0
- package/es/widgets/listSimple/index.js +124 -0
- package/es/widgets/listTab/index.css +0 -0
- package/es/widgets/listTab/index.d.ts +13 -0
- package/es/widgets/listTab/index.js +113 -0
- package/es/widgets/listTable/index.css +28 -0
- package/es/widgets/listTable/index.d.ts +14 -0
- package/es/widgets/listTable/index.js +227 -0
- package/es/widgets/listTable/tableCell.d.ts +3 -0
- package/es/widgets/listTable/tableCell.js +62 -0
- package/es/widgets/listVirtual/index.css +28 -0
- package/es/widgets/listVirtual/index.d.ts +14 -0
- package/es/widgets/listVirtual/index.js +213 -0
- package/es/widgets/listVirtual/virtualCell.d.ts +3 -0
- package/es/widgets/listVirtual/virtualCell.js +61 -0
- package/es/widgets/utils/hooks.d.ts +2 -0
- package/es/widgets/utils/hooks.js +14 -0
- package/es/widgets/utils/index.d.ts +4 -0
- package/es/widgets/utils/index.js +80 -0
- package/es/widgets/utils/withFieldWrap.d.ts +3 -0
- package/es/widgets/utils/withFieldWrap.js +17 -0
- package/es/widgets/voidTitle/index.css +7 -0
- package/es/widgets/voidTitle/index.d.ts +6 -0
- package/es/widgets/voidTitle/index.js +13 -0
- package/es/withProvider.d.ts +3 -0
- package/es/withProvider.js +70 -0
- package/lib/derivative/SearchForm/ActionView.d.ts +3 -0
- package/lib/derivative/SearchForm/ActionView.js +81 -0
- package/lib/derivative/SearchForm/index.css +31 -0
- package/lib/derivative/SearchForm/index.d.ts +5 -0
- package/lib/derivative/SearchForm/index.js +302 -0
- package/lib/derivative/SlimRender/index.d.ts +3 -0
- package/lib/derivative/SlimRender/index.js +13 -0
- package/lib/form-core/connectForm.d.ts +3 -0
- package/lib/form-core/connectForm.js +21 -0
- package/lib/form-core/index.css +19 -0
- package/lib/form-core/index.d.ts +5 -0
- package/lib/form-core/index.js +313 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.js +66 -0
- package/lib/locales/en_US.d.ts +28 -0
- package/lib/locales/en_US.js +33 -0
- package/lib/locales/index.d.ts +57 -0
- package/lib/locales/index.js +13 -0
- package/lib/locales/zh_CN.d.ts +28 -0
- package/lib/locales/zh_CN.js +33 -0
- package/lib/models/bindValues.d.ts +2 -0
- package/lib/models/bindValues.js +178 -0
- package/lib/models/context.d.ts +3 -0
- package/lib/models/context.js +9 -0
- package/lib/models/expression.d.ts +7 -0
- package/lib/models/expression.js +141 -0
- package/lib/models/fieldShouldUpdate.d.ts +2 -0
- package/lib/models/fieldShouldUpdate.js +76 -0
- package/lib/models/filterValuesHidden.d.ts +5 -0
- package/lib/models/filterValuesHidden.js +67 -0
- package/lib/models/filterValuesUndefined.d.ts +2 -0
- package/lib/models/filterValuesUndefined.js +53 -0
- package/lib/models/flattenSchema.d.ts +3 -0
- package/lib/models/flattenSchema.js +100 -0
- package/lib/models/formCoreUtils.d.ts +8 -0
- package/lib/models/formCoreUtils.js +199 -0
- package/lib/models/formDataSkeleton.d.ts +1 -0
- package/lib/models/formDataSkeleton.js +36 -0
- package/lib/models/layout.d.ts +4 -0
- package/lib/models/layout.js +94 -0
- package/lib/models/mapping.d.ts +89 -0
- package/lib/models/mapping.js +127 -0
- package/lib/models/sortProperties.d.ts +2 -0
- package/lib/models/sortProperties.js +47 -0
- package/lib/models/store.d.ts +10 -0
- package/lib/models/store.js +28 -0
- package/lib/models/transformProps.d.ts +34 -0
- package/lib/models/transformProps.js +86 -0
- package/lib/models/useForm.d.ts +3 -0
- package/lib/models/useForm.js +329 -0
- package/lib/models/validateMessage.d.ts +93 -0
- package/lib/models/validateMessage.js +101 -0
- package/lib/models/validates.d.ts +3 -0
- package/lib/models/validates.js +208 -0
- package/lib/render-core/FieldItem/field.d.ts +3 -0
- package/lib/render-core/FieldItem/field.js +90 -0
- package/lib/render-core/FieldItem/index.d.ts +3 -0
- package/lib/render-core/FieldItem/index.js +63 -0
- package/lib/render-core/FieldItem/main.d.ts +3 -0
- package/lib/render-core/FieldItem/main.js +236 -0
- package/lib/render-core/FieldItem/module.d.ts +18 -0
- package/lib/render-core/FieldItem/module.js +343 -0
- package/lib/render-core/FieldList/field.d.ts +3 -0
- package/lib/render-core/FieldList/field.js +309 -0
- package/lib/render-core/FieldList/index.d.ts +3 -0
- package/lib/render-core/FieldList/index.js +53 -0
- package/lib/render-core/FieldList/main.d.ts +3 -0
- package/lib/render-core/FieldList/main.js +108 -0
- package/lib/render-core/FieldList/modules.d.ts +7 -0
- package/lib/render-core/FieldList/modules.js +115 -0
- package/lib/render-core/index.css +29 -0
- package/lib/render-core/index.d.ts +9 -0
- package/lib/render-core/index.js +92 -0
- package/lib/type.d.ts +405 -0
- package/lib/type.js +7 -0
- package/lib/utils/index.d.ts +75 -0
- package/lib/utils/index.js +142 -0
- package/lib/widgets/ErrorSchema/index.d.ts +3 -0
- package/lib/widgets/ErrorSchema/index.js +23 -0
- package/lib/widgets/boxCollapse/index.css +53 -0
- package/lib/widgets/boxCollapse/index.d.ts +18 -0
- package/lib/widgets/boxCollapse/index.js +79 -0
- package/lib/widgets/boxLineTitle/index.css +18 -0
- package/lib/widgets/boxLineTitle/index.d.ts +8 -0
- package/lib/widgets/boxLineTitle/index.js +30 -0
- package/lib/widgets/boxSubInline/index.css +11 -0
- package/lib/widgets/boxSubInline/index.d.ts +4 -0
- package/lib/widgets/boxSubInline/index.js +63 -0
- package/lib/widgets/boxcard/index.css +17 -0
- package/lib/widgets/boxcard/index.d.ts +8 -0
- package/lib/widgets/boxcard/index.js +27 -0
- package/lib/widgets/components/DatePicker/index.d.ts +3 -0
- package/lib/widgets/components/DatePicker/index.js +22 -0
- package/lib/widgets/components/FButton/index.d.ts +3 -0
- package/lib/widgets/components/FButton/index.js +31 -0
- package/lib/widgets/components/HeaderTitle/index.css +0 -0
- package/lib/widgets/components/HeaderTitle/index.d.ts +4 -0
- package/lib/widgets/components/HeaderTitle/index.js +21 -0
- package/lib/widgets/components/PanelView/index.css +6 -0
- package/lib/widgets/components/PanelView/index.d.ts +4 -0
- package/lib/widgets/components/PanelView/index.js +20 -0
- package/lib/widgets/components/TimePicker/index.d.ts +2 -0
- package/lib/widgets/components/TimePicker/index.js +27 -0
- package/lib/widgets/fields/checkbox/index.d.ts +3 -0
- package/lib/widgets/fields/checkbox/index.js +22 -0
- package/lib/widgets/fields/checkboxes/index.d.ts +3 -0
- package/lib/widgets/fields/checkboxes/index.js +38 -0
- package/lib/widgets/fields/date/index.d.ts +3 -0
- package/lib/widgets/fields/date/index.js +54 -0
- package/lib/widgets/fields/dateRange/index.d.ts +7 -0
- package/lib/widgets/fields/dateRange/index.js +74 -0
- package/lib/widgets/fields/html/index.d.ts +2 -0
- package/lib/widgets/fields/html/index.js +60 -0
- package/lib/widgets/fields/imageInput/index.css +7 -0
- package/lib/widgets/fields/imageInput/index.d.ts +4 -0
- package/lib/widgets/fields/imageInput/index.js +47 -0
- package/lib/widgets/fields/input/index.d.ts +2 -0
- package/lib/widgets/fields/input/index.js +11 -0
- package/lib/widgets/fields/number/index.d.ts +2 -0
- package/lib/widgets/fields/number/index.js +11 -0
- package/lib/widgets/fields/percentSlider/index.d.ts +17 -0
- package/lib/widgets/fields/percentSlider/index.js +91 -0
- package/lib/widgets/fields/radio/index.d.ts +3 -0
- package/lib/widgets/fields/radio/index.js +38 -0
- package/lib/widgets/fields/rate/index.d.ts +2 -0
- package/lib/widgets/fields/rate/index.js +11 -0
- package/lib/widgets/fields/select/index.d.ts +2 -0
- package/lib/widgets/fields/select/index.js +11 -0
- package/lib/widgets/fields/slider/index.css +5 -0
- package/lib/widgets/fields/slider/index.d.ts +7 -0
- package/lib/widgets/fields/slider/index.js +66 -0
- package/lib/widgets/fields/switch/index.d.ts +2 -0
- package/lib/widgets/fields/switch/index.js +11 -0
- package/lib/widgets/fields/textArea/index.d.ts +3 -0
- package/lib/widgets/fields/textArea/index.js +21 -0
- package/lib/widgets/fields/time/index.d.ts +3 -0
- package/lib/widgets/fields/time/index.js +36 -0
- package/lib/widgets/fields/timeRange/index.d.ts +9 -0
- package/lib/widgets/fields/timeRange/index.js +54 -0
- package/lib/widgets/fields/treeSelect/index.d.ts +2 -0
- package/lib/widgets/fields/treeSelect/index.js +11 -0
- package/lib/widgets/fields/upload/index.css +28 -0
- package/lib/widgets/fields/upload/index.d.ts +13 -0
- package/lib/widgets/fields/upload/index.js +66 -0
- package/lib/widgets/fields/urlInput/index.d.ts +3 -0
- package/lib/widgets/fields/urlInput/index.js +72 -0
- package/lib/widgets/index.d.ts +33 -0
- package/lib/widgets/index.js +236 -0
- package/lib/widgets/listCard/index.css +20 -0
- package/lib/widgets/listCard/index.d.ts +4 -0
- package/lib/widgets/listCard/index.js +148 -0
- package/lib/widgets/listDrawer/drawerForm.d.ts +3 -0
- package/lib/widgets/listDrawer/drawerForm.js +49 -0
- package/lib/widgets/listDrawer/index.css +16 -0
- package/lib/widgets/listDrawer/index.d.ts +12 -0
- package/lib/widgets/listDrawer/index.js +296 -0
- package/lib/widgets/listSimple/index.css +27 -0
- package/lib/widgets/listSimple/index.d.ts +4 -0
- package/lib/widgets/listSimple/index.js +131 -0
- package/lib/widgets/listTab/index.css +0 -0
- package/lib/widgets/listTab/index.d.ts +13 -0
- package/lib/widgets/listTab/index.js +122 -0
- package/lib/widgets/listTable/index.css +28 -0
- package/lib/widgets/listTable/index.d.ts +14 -0
- package/lib/widgets/listTable/index.js +234 -0
- package/lib/widgets/listTable/tableCell.d.ts +3 -0
- package/lib/widgets/listTable/tableCell.js +71 -0
- package/lib/widgets/listVirtual/index.css +28 -0
- package/lib/widgets/listVirtual/index.d.ts +14 -0
- package/lib/widgets/listVirtual/index.js +220 -0
- package/lib/widgets/listVirtual/virtualCell.d.ts +3 -0
- package/lib/widgets/listVirtual/virtualCell.js +70 -0
- package/lib/widgets/utils/hooks.d.ts +2 -0
- package/lib/widgets/utils/hooks.js +21 -0
- package/lib/widgets/utils/index.d.ts +4 -0
- package/lib/widgets/utils/index.js +89 -0
- package/lib/widgets/utils/withFieldWrap.d.ts +3 -0
- package/lib/widgets/utils/withFieldWrap.js +24 -0
- package/lib/widgets/voidTitle/index.css +7 -0
- package/lib/widgets/voidTitle/index.d.ts +6 -0
- package/lib/widgets/voidTitle/index.js +20 -0
- package/lib/withProvider.d.ts +3 -0
- package/lib/withProvider.js +79 -0
- package/package.json +64 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2019-present XRender Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<div style="display:flex;align-items:center;margin-bottom:24px">
|
|
2
|
+
<img src="https://img.alicdn.com/tfs/TB17UtINiLaK1RjSZFxXXamPFXa-606-643.png" alt="logo" width="48px"/>
|
|
3
|
+
<h4 style="font-size:30px;font-weight:600;display:inline-block;margin-left:12px">FormRender</h4>
|
|
4
|
+
</div>
|
|
5
|
+
<p style="display:flex;justify-content:space-between;width:440px">
|
|
6
|
+
<a href="https://www.npmjs.com/package/form-render?_blank">
|
|
7
|
+
<img alt="npm" src="https://img.shields.io/npm/v/form-render.svg?maxAge=3600&style=flat-square">
|
|
8
|
+
</a>
|
|
9
|
+
<a href="https://npmjs.org/package/form-render">
|
|
10
|
+
<img alt="NPM downloads" src="https://img.shields.io/npm/dm/form-render.svg?style=flat-square">
|
|
11
|
+
</a>
|
|
12
|
+
<a href="https://npmjs.org/package/form-render">
|
|
13
|
+
<img alt="NPM all downloads" src="https://img.shields.io/npm/dt/form-render.svg?style=flat-square">
|
|
14
|
+
</a>
|
|
15
|
+
<a>
|
|
16
|
+
<img alt="PRs Welcome" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square">
|
|
17
|
+
</a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
> 一站式中后台**表单解决方案**
|
|
21
|
+
|
|
22
|
+
## 官网
|
|
23
|
+
|
|
24
|
+
<https://xrender.fun/form-render>
|
|
25
|
+
|
|
26
|
+
FormRender 是中后台开箱即用的表单解决方案,通过 JsonSchema 协议动态渲染表单。为了能切实承接日益复杂的表单场景需求,2.0 我们进行了底层重构。我们的目标是以强大的扩展能力对表单场景 100% 的覆盖支持,同时保持开发者能快速上手,并以表单编辑器、插件、自定义组件等一系列周边产品带来极致的开发体验。在开发 1.0 的道路上,我们做了一系列的取舍,详见[v2 升级方案](https://xrender.fun/form-render/migrate)
|
|
27
|
+
|
|
28
|
+
## 安装
|
|
29
|
+
|
|
30
|
+
FormRender 依赖 ant design,单独使用不要忘记同时安装 `antd`
|
|
31
|
+
|
|
32
|
+
```shell
|
|
33
|
+
npm i form-render --save
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 使用
|
|
37
|
+
|
|
38
|
+
**最简使用 demo:**
|
|
39
|
+
|
|
40
|
+
```jsx
|
|
41
|
+
import React from 'react';
|
|
42
|
+
import { Button } from 'antd';
|
|
43
|
+
import FormRender, { connectForm } from 'form-render';
|
|
44
|
+
|
|
45
|
+
const schema = {
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
input1: {
|
|
49
|
+
title: '简单输入框',
|
|
50
|
+
type: 'string',
|
|
51
|
+
required: true,
|
|
52
|
+
},
|
|
53
|
+
select1: {
|
|
54
|
+
title: '单选',
|
|
55
|
+
type: 'string',
|
|
56
|
+
props: {
|
|
57
|
+
options: [
|
|
58
|
+
{ label: '早', value: 'a' },
|
|
59
|
+
{ label: '中', value: 'b' },
|
|
60
|
+
{ label: '晚', value: 'c' }
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
class Demo extends React.Component {
|
|
68
|
+
render() {
|
|
69
|
+
const { form } = this.props;
|
|
70
|
+
return (
|
|
71
|
+
<div>
|
|
72
|
+
<FormRender form={form} schema={schema} />
|
|
73
|
+
<Button type="primary" onClick={form.submit}>
|
|
74
|
+
提交
|
|
75
|
+
</Button>
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export default connectForm(Demo);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**对于函数组件,FormRender 提供了 `useForm` hooks, 书写更为灵活**
|
|
85
|
+
|
|
86
|
+
```jsx
|
|
87
|
+
import React from 'react';
|
|
88
|
+
import { Button } from 'antd';
|
|
89
|
+
import FormRender, { useForm } from 'form-render';
|
|
90
|
+
|
|
91
|
+
const schema = {
|
|
92
|
+
type: 'object',
|
|
93
|
+
properties: {
|
|
94
|
+
input1: {
|
|
95
|
+
title: '简单输入框',
|
|
96
|
+
type: 'string',
|
|
97
|
+
required: true,
|
|
98
|
+
},
|
|
99
|
+
select1: {
|
|
100
|
+
title: '单选',
|
|
101
|
+
type: 'string',
|
|
102
|
+
props: {
|
|
103
|
+
options: [
|
|
104
|
+
{ label: '早', value: 'a' },
|
|
105
|
+
{ label: '中', value: 'b' },
|
|
106
|
+
{ label: '晚', value: 'c' }
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const Demo = () => {
|
|
114
|
+
const form = useForm();
|
|
115
|
+
return (
|
|
116
|
+
<div>
|
|
117
|
+
<FormRender form={form} schema={schema} />
|
|
118
|
+
<Button type="primary" onClick={form.submit}>
|
|
119
|
+
提交
|
|
120
|
+
</Button>
|
|
121
|
+
</div>
|
|
122
|
+
);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
export default Demo;
|
|
126
|
+
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import _DownOutlined from "@ant-design/icons/es/icons/DownOutlined";
|
|
2
|
+
import _UpOutlined from "@ant-design/icons/es/icons/UpOutlined";
|
|
3
|
+
import "antd/es/button/style";
|
|
4
|
+
import _Button from "antd/es/button";
|
|
5
|
+
import "antd/es/space/style";
|
|
6
|
+
import _Space from "antd/es/space";
|
|
7
|
+
import "antd/es/config-provider/style";
|
|
8
|
+
import _ConfigProvider from "antd/es/config-provider";
|
|
9
|
+
import React, { useContext } from 'react';
|
|
10
|
+
import { translation } from '../../utils';
|
|
11
|
+
var ActionView = function ActionView(props) {
|
|
12
|
+
var onReset = props.onReset,
|
|
13
|
+
searchBtnRender = props.searchBtnRender,
|
|
14
|
+
style = props.style,
|
|
15
|
+
className = props.className,
|
|
16
|
+
form = props.form,
|
|
17
|
+
searchText = props.searchText,
|
|
18
|
+
resetText = props.resetText,
|
|
19
|
+
hasCollapse = props.hasCollapse,
|
|
20
|
+
setLimitHeight = props.setLimitHeight,
|
|
21
|
+
setExpand = props.setExpand,
|
|
22
|
+
isExpand = props.isExpand,
|
|
23
|
+
loading = props.loading,
|
|
24
|
+
retainBtn = props.retainBtn,
|
|
25
|
+
mode = props.mode;
|
|
26
|
+
var configCtx = useContext(_ConfigProvider.ConfigContext);
|
|
27
|
+
var t = translation(configCtx);
|
|
28
|
+
var handleReset = function handleReset() {
|
|
29
|
+
if (onReset) {
|
|
30
|
+
onReset(form);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
form.resetFields();
|
|
34
|
+
form.submit();
|
|
35
|
+
};
|
|
36
|
+
var handleCollapse = function handleCollapse() {
|
|
37
|
+
setExpand(!isExpand);
|
|
38
|
+
};
|
|
39
|
+
var searchBtnArr = typeof searchBtnRender === 'function' ? searchBtnRender(form.submit, handleReset, {
|
|
40
|
+
loading: loading
|
|
41
|
+
}) : [];
|
|
42
|
+
if (searchBtnRender) {
|
|
43
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
44
|
+
className: 'flex justify-end w-100'
|
|
45
|
+
}, Array.isArray(searchBtnArr) && searchBtnArr.map(function (ui, idx) {
|
|
46
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
47
|
+
key: idx.toString(),
|
|
48
|
+
style: {
|
|
49
|
+
marginLeft: 8
|
|
50
|
+
}
|
|
51
|
+
}, ui);
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
var submitShow = mode === 'simple' && (typeof retainBtn === 'boolean' || (retainBtn === null || retainBtn === void 0 ? void 0 : retainBtn.includes('submit'))) || mode !== 'simple';
|
|
55
|
+
var resetShow = mode === 'simple' && (typeof retainBtn === 'boolean' || (retainBtn === null || retainBtn === void 0 ? void 0 : retainBtn.includes('reset'))) || mode !== 'simple';
|
|
56
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
57
|
+
className: "flex justify-end w-100 ".concat(className || ''),
|
|
58
|
+
style: style
|
|
59
|
+
}, /*#__PURE__*/React.createElement(_Space, null, submitShow && /*#__PURE__*/React.createElement(_Button, {
|
|
60
|
+
loading: loading,
|
|
61
|
+
type: 'primary',
|
|
62
|
+
onClick: form.submit
|
|
63
|
+
}, searchText), resetShow && /*#__PURE__*/React.createElement(_Button, {
|
|
64
|
+
onClick: handleReset
|
|
65
|
+
}, resetText), hasCollapse && (/*#__PURE__*/React.createElement("a", {
|
|
66
|
+
onClick: handleCollapse,
|
|
67
|
+
style: {
|
|
68
|
+
cursor: 'pointer'
|
|
69
|
+
}
|
|
70
|
+
}, isExpand ? (/*#__PURE__*/React.createElement(React.Fragment, null, t('fold'), /*#__PURE__*/React.createElement(_UpOutlined, null))) : (/*#__PURE__*/React.createElement(React.Fragment, null, t('expand'), /*#__PURE__*/React.createElement(_DownOutlined, null)))))));
|
|
71
|
+
};
|
|
72
|
+
export default ActionView;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
.fr-search {
|
|
2
|
+
width: 100%;
|
|
3
|
+
background: #fff;
|
|
4
|
+
padding: 24px 24px 0 16px;
|
|
5
|
+
margin-bottom: 16px;
|
|
6
|
+
box-sizing: border-box;
|
|
7
|
+
position: relative;
|
|
8
|
+
}
|
|
9
|
+
.fr-search .search-action-col {
|
|
10
|
+
flex: 1;
|
|
11
|
+
display: flex;
|
|
12
|
+
justify-content: flex-end;
|
|
13
|
+
align-items: baseline;
|
|
14
|
+
height: 56px;
|
|
15
|
+
}
|
|
16
|
+
.fr-search .search-action-fixed {
|
|
17
|
+
position: absolute;
|
|
18
|
+
right: 0;
|
|
19
|
+
bottom: 0;
|
|
20
|
+
background-color: #fff;
|
|
21
|
+
padding-right: 24px !important;
|
|
22
|
+
}
|
|
23
|
+
.fr-search .search-action-column {
|
|
24
|
+
height: auto;
|
|
25
|
+
}
|
|
26
|
+
.fr-search .fr-form > .ant-row {
|
|
27
|
+
align-items: center;
|
|
28
|
+
}
|
|
29
|
+
.fr-column-search {
|
|
30
|
+
padding-left: 24px;
|
|
31
|
+
}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
import "antd/es/col/style";
|
|
3
|
+
import _Col from "antd/es/col";
|
|
4
|
+
import "antd/es/config-provider/style";
|
|
5
|
+
import _ConfigProvider from "antd/es/config-provider";
|
|
6
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
7
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
8
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
9
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
10
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
11
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
12
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
13
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
14
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
15
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
16
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
17
|
+
import { __awaiter, __rest } from "tslib";
|
|
18
|
+
import React, { useContext, useMemo, useRef } from 'react';
|
|
19
|
+
import { useUpdateEffect, useMount, useSetState } from 'ahooks';
|
|
20
|
+
import classnames from 'classnames';
|
|
21
|
+
import { debounce } from 'lodash-es';
|
|
22
|
+
import FormRender from '../../form-core';
|
|
23
|
+
import { translation } from '../../utils';
|
|
24
|
+
import withProvider from '../../withProvider';
|
|
25
|
+
import ActionView from './ActionView';
|
|
26
|
+
import { Input, InputNumber, TextArea, Select, MultiSelect, Checkbox, Checkboxes, Radio, DatePicker, DateRange, TimePicker, TimeRange, Slider, Switch, TreeSelect, UrlInput, ImageInput, Html, PercentSlider } from '../../widgets';
|
|
27
|
+
import "./index.css";
|
|
28
|
+
var getIsColumn = function getIsColumn(isColumn, obj, column) {
|
|
29
|
+
var count = 0;
|
|
30
|
+
Object.keys(obj || {}).forEach(function (key) {
|
|
31
|
+
var item = obj[key];
|
|
32
|
+
if (item.visible === undefined) {
|
|
33
|
+
count += 1;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return isColumn && count % column !== 0;
|
|
37
|
+
};
|
|
38
|
+
var SearchForm = function SearchForm(props) {
|
|
39
|
+
if (props.hidden) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
var configCtx = useContext(_ConfigProvider.ConfigContext);
|
|
43
|
+
var t = translation(configCtx);
|
|
44
|
+
var className = props.className,
|
|
45
|
+
style = props.style,
|
|
46
|
+
mode = props.mode,
|
|
47
|
+
_props$layoutAuto = props.layoutAuto,
|
|
48
|
+
layoutAuto = _props$layoutAuto === void 0 ? false : _props$layoutAuto,
|
|
49
|
+
form = props.form,
|
|
50
|
+
hidden = props.hidden,
|
|
51
|
+
loading = props.loading,
|
|
52
|
+
_props$column = props.column,
|
|
53
|
+
_column = _props$column === void 0 ? 4 : _props$column,
|
|
54
|
+
collapsed = props.collapsed,
|
|
55
|
+
_props$defaultCollaps = props.defaultCollapsed,
|
|
56
|
+
defaultCollapsed = _props$defaultCollaps === void 0 ? true : _props$defaultCollaps,
|
|
57
|
+
schema = props.schema,
|
|
58
|
+
retainBtn = props.retainBtn,
|
|
59
|
+
closeReturnSearch = props.closeReturnSearch,
|
|
60
|
+
resetAfter = props.resetAfter,
|
|
61
|
+
searchBtnStyle = props.searchBtnStyle,
|
|
62
|
+
searchBtnClassName = props.searchBtnClassName,
|
|
63
|
+
_props$searchText = props.searchText,
|
|
64
|
+
searchText = _props$searchText === void 0 ? t('search') : _props$searchText,
|
|
65
|
+
_props$resetText = props.resetText,
|
|
66
|
+
resetText = _props$resetText === void 0 ? t('reset') : _props$resetText,
|
|
67
|
+
_props$searchWithErro = props.searchWithError,
|
|
68
|
+
searchWithError = _props$searchWithErro === void 0 ? true : _props$searchWithErro,
|
|
69
|
+
_props$searchOnMount = props.searchOnMount,
|
|
70
|
+
searchOnMount = _props$searchOnMount === void 0 ? true : _props$searchOnMount,
|
|
71
|
+
onMount = props.onMount,
|
|
72
|
+
onSearch = props.onSearch,
|
|
73
|
+
onReset = props.onReset,
|
|
74
|
+
searchBtnRender = props.searchBtnRender,
|
|
75
|
+
restProps = __rest(props, ["className", "style", "mode", "layoutAuto", "form", "hidden", "loading", "column", "collapsed", "defaultCollapsed", "schema", "retainBtn", "closeReturnSearch", "resetAfter", "searchBtnStyle", "searchBtnClassName", "searchText", "resetText", "searchWithError", "searchOnMount", "onMount", "onSearch", "onReset", "searchBtnRender"]);
|
|
76
|
+
var fieldNum = Object.keys((schema === null || schema === void 0 ? void 0 : schema.properties) || {}).length;
|
|
77
|
+
var isColumn = (restProps.displayType || schema.displayType) === 'column';
|
|
78
|
+
var operateShow = mode !== 'simple' || mode === 'simple' && retainBtn;
|
|
79
|
+
var containerRef = useRef(null);
|
|
80
|
+
var _useSetState = useSetState({
|
|
81
|
+
hasCollapse: false,
|
|
82
|
+
isExpand: !defaultCollapsed,
|
|
83
|
+
column: schema.column || _column // 一行几列
|
|
84
|
+
}),
|
|
85
|
+
_useSetState2 = _slicedToArray(_useSetState, 2),
|
|
86
|
+
state = _useSetState2[0],
|
|
87
|
+
setState = _useSetState2[1];
|
|
88
|
+
var hasCollapse = state.hasCollapse,
|
|
89
|
+
isExpand = state.isExpand,
|
|
90
|
+
column = state.column;
|
|
91
|
+
var actionProps = {
|
|
92
|
+
style: searchBtnStyle,
|
|
93
|
+
className: searchBtnClassName,
|
|
94
|
+
searchText: searchText,
|
|
95
|
+
resetText: resetText,
|
|
96
|
+
loading: loading,
|
|
97
|
+
form: form,
|
|
98
|
+
hasCollapse: hasCollapse,
|
|
99
|
+
isExpand: isExpand,
|
|
100
|
+
onReset: onReset,
|
|
101
|
+
searchBtnRender: searchBtnRender
|
|
102
|
+
};
|
|
103
|
+
useMount(function () {
|
|
104
|
+
initMount();
|
|
105
|
+
});
|
|
106
|
+
useUpdateEffect(function () {
|
|
107
|
+
if (isExpand) {
|
|
108
|
+
initMount();
|
|
109
|
+
}
|
|
110
|
+
}, [isExpand]);
|
|
111
|
+
useMount(function () {
|
|
112
|
+
if (!collapsed) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (!isColumn && fieldNum > column * 2 - 1 || isColumn && fieldNum > column - 1) {
|
|
116
|
+
setState({
|
|
117
|
+
hasCollapse: true
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
handleContainerResize();
|
|
121
|
+
});
|
|
122
|
+
useUpdateEffect(function () {
|
|
123
|
+
if (!collapsed) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (!isColumn && fieldNum > column * 2 - 1 || isColumn && fieldNum > column - 1) {
|
|
127
|
+
setState({
|
|
128
|
+
hasCollapse: true
|
|
129
|
+
});
|
|
130
|
+
} else {
|
|
131
|
+
setState({
|
|
132
|
+
hasCollapse: true
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}, [column]);
|
|
136
|
+
useUpdateEffect(function () {
|
|
137
|
+
if (collapsed) {
|
|
138
|
+
if (!isColumn && fieldNum > column * 2 - 1 || isColumn && fieldNum > column - 1) {
|
|
139
|
+
setState({
|
|
140
|
+
hasCollapse: true,
|
|
141
|
+
isExpand: !defaultCollapsed
|
|
142
|
+
});
|
|
143
|
+
} else {
|
|
144
|
+
setState({
|
|
145
|
+
hasCollapse: false,
|
|
146
|
+
isExpand: true
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
setState({
|
|
151
|
+
hasCollapse: false,
|
|
152
|
+
isExpand: true
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}, [collapsed]);
|
|
156
|
+
var initMount = function initMount() {
|
|
157
|
+
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee() {
|
|
158
|
+
return _regenerator().w(function (_context) {
|
|
159
|
+
while (1) switch (_context.n) {
|
|
160
|
+
case 0:
|
|
161
|
+
if (searchOnMount) {
|
|
162
|
+
_context.n = 1;
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
return _context.a(2);
|
|
166
|
+
case 1:
|
|
167
|
+
if (!(typeof onMount === 'function')) {
|
|
168
|
+
_context.n = 2;
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
_context.n = 2;
|
|
172
|
+
return onMount();
|
|
173
|
+
case 2:
|
|
174
|
+
form.submit();
|
|
175
|
+
case 3:
|
|
176
|
+
return _context.a(2);
|
|
177
|
+
}
|
|
178
|
+
}, _callee);
|
|
179
|
+
}));
|
|
180
|
+
};
|
|
181
|
+
var properties = useMemo(function () {
|
|
182
|
+
if (!collapsed) {
|
|
183
|
+
return schema === null || schema === void 0 ? void 0 : schema.properties;
|
|
184
|
+
}
|
|
185
|
+
var result = {};
|
|
186
|
+
Object.keys((schema === null || schema === void 0 ? void 0 : schema.properties) || {}).forEach(function (key, index) {
|
|
187
|
+
var item = Object.assign({}, schema.properties[key] || {});
|
|
188
|
+
if (!isExpand && isColumn && index >= column - 1 || !isExpand && !isColumn && index >= column * 2 - 1 // 只显示两行
|
|
189
|
+
) {
|
|
190
|
+
item.visible = false;
|
|
191
|
+
}
|
|
192
|
+
result[key] = item;
|
|
193
|
+
});
|
|
194
|
+
return result;
|
|
195
|
+
}, [JSON.stringify(schema), column, isColumn, isExpand, collapsed]);
|
|
196
|
+
var handleContainerResize = function handleContainerResize() {
|
|
197
|
+
if (!layoutAuto) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
var resizeObserver = new ResizeObserver(debounce(function () {
|
|
201
|
+
var _ref = (containerRef === null || containerRef === void 0 ? void 0 : containerRef.current) || {},
|
|
202
|
+
clientWidth = _ref.clientWidth;
|
|
203
|
+
for (var i = _column; i > 0; i--) {
|
|
204
|
+
var item = clientWidth / i;
|
|
205
|
+
if (item >= ((layoutAuto === null || layoutAuto === void 0 ? void 0 : layoutAuto.fieldMinWidth) || 340)) {
|
|
206
|
+
setState({
|
|
207
|
+
column: i
|
|
208
|
+
});
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
if (i === 1) {
|
|
212
|
+
setState({
|
|
213
|
+
column: 1
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}, 300, {
|
|
218
|
+
leading: true
|
|
219
|
+
}));
|
|
220
|
+
resizeObserver.observe(containerRef.current);
|
|
221
|
+
(function () {
|
|
222
|
+
resizeObserver.disconnect();
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
|
+
var handleFinish = function handleFinish(values) {
|
|
226
|
+
onSearch === null || onSearch === void 0 ? void 0 : onSearch(values);
|
|
227
|
+
};
|
|
228
|
+
var handleFinishFailed = function handleFinishFailed(_ref2) {
|
|
229
|
+
var values = _ref2.values;
|
|
230
|
+
if (!searchWithError) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
onSearch === null || onSearch === void 0 ? void 0 : onSearch(values);
|
|
234
|
+
};
|
|
235
|
+
var handleKeyDown = function handleKeyDown(ev) {
|
|
236
|
+
if (ev.keyCode !== 13) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
form.submit();
|
|
240
|
+
};
|
|
241
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
242
|
+
className: classnames('fr-search', _defineProperty(_defineProperty({}, className, !!className), 'fr-column-search', isColumn)),
|
|
243
|
+
style: style,
|
|
244
|
+
ref: containerRef,
|
|
245
|
+
onKeyDown: !closeReturnSearch ? handleKeyDown : undefined
|
|
246
|
+
}, /*#__PURE__*/React.createElement(FormRender, Object.assign({
|
|
247
|
+
displayType: 'row'
|
|
248
|
+
}, restProps, {
|
|
249
|
+
schema: Object.assign(Object.assign({}, schema), {
|
|
250
|
+
properties: properties,
|
|
251
|
+
column: column
|
|
252
|
+
}),
|
|
253
|
+
onFinish: handleFinish,
|
|
254
|
+
onFinishFailed: handleFinishFailed,
|
|
255
|
+
form: form,
|
|
256
|
+
operateExtra: operateShow && (/*#__PURE__*/React.createElement(_Col, {
|
|
257
|
+
className: classnames('search-action-col', {
|
|
258
|
+
'search-action-column': getIsColumn(isColumn, properties, column)
|
|
259
|
+
}),
|
|
260
|
+
style: {
|
|
261
|
+
minWidth: 1 / column * 100 + '%'
|
|
262
|
+
}
|
|
263
|
+
}, /*#__PURE__*/React.createElement(ActionView, Object.assign({}, actionProps, {
|
|
264
|
+
retainBtn: retainBtn,
|
|
265
|
+
mode: mode,
|
|
266
|
+
setExpand: function setExpand(value) {
|
|
267
|
+
return setState({
|
|
268
|
+
isExpand: value
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
}))))
|
|
272
|
+
})));
|
|
273
|
+
};
|
|
274
|
+
export default withProvider(SearchForm, {
|
|
275
|
+
Input: Input,
|
|
276
|
+
InputNumber: InputNumber,
|
|
277
|
+
TextArea: TextArea,
|
|
278
|
+
Select: Select,
|
|
279
|
+
MultiSelect: MultiSelect,
|
|
280
|
+
Switch: Switch,
|
|
281
|
+
Radio: Radio,
|
|
282
|
+
Checkbox: Checkbox,
|
|
283
|
+
Checkboxes: Checkboxes,
|
|
284
|
+
DatePicker: DatePicker,
|
|
285
|
+
DateRange: DateRange,
|
|
286
|
+
TimePicker: TimePicker,
|
|
287
|
+
TimeRange: TimeRange,
|
|
288
|
+
TreeSelect: TreeSelect,
|
|
289
|
+
ImageInput: ImageInput,
|
|
290
|
+
UrlInput: UrlInput,
|
|
291
|
+
Slider: Slider,
|
|
292
|
+
Html: Html,
|
|
293
|
+
PercentSlider: PercentSlider
|
|
294
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import useForm from '../models/useForm';
|
|
3
|
+
export default (function (Component) {
|
|
4
|
+
return /*#__PURE__*/forwardRef(function (props, ref) {
|
|
5
|
+
var form = useForm();
|
|
6
|
+
return /*#__PURE__*/React.createElement(Component, Object.assign({
|
|
7
|
+
ref: ref
|
|
8
|
+
}, props, {
|
|
9
|
+
form: form
|
|
10
|
+
}));
|
|
11
|
+
});
|
|
12
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.fr-hide-label > .ant-form-item-row > .ant-form-item-label {
|
|
2
|
+
visibility: hidden;
|
|
3
|
+
}
|
|
4
|
+
.fr-field .ant-form-item-row {
|
|
5
|
+
flex-wrap: nowrap;
|
|
6
|
+
}
|
|
7
|
+
.fr-field .ant-form-item-control-input-content {
|
|
8
|
+
display: flex;
|
|
9
|
+
}
|
|
10
|
+
.fr-field-visibility {
|
|
11
|
+
width: 0;
|
|
12
|
+
height: 0;
|
|
13
|
+
visibility: hidden;
|
|
14
|
+
position: absolute;
|
|
15
|
+
opacity: 0;
|
|
16
|
+
}
|
|
17
|
+
.fr-form .fr-inline-field .ant-form-item-control {
|
|
18
|
+
width: auto;
|
|
19
|
+
}
|