amis 1.3.5-beta.7 → 1.4.2-beta.11
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 +26 -2
- 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/AnchorNav.d.ts +22 -21
- package/lib/components/AnchorNav.js +7 -3
- package/lib/components/AnchorNav.js.map +2 -2
- package/lib/components/ArrayInput.d.ts +84 -84
- package/lib/components/AssociatedSelection.d.ts +930 -0
- package/lib/components/AssociatedSelection.js +89 -0
- package/lib/components/AssociatedSelection.js.map +13 -0
- package/lib/components/Badge.d.ts +16 -3
- package/lib/components/Badge.js +54 -5
- 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/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
- package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
- package/lib/components/ChainedSelection.js.map +13 -0
- 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/ColorPicker.d.ts +84 -84
- package/lib/components/DatePicker.d.ts +84 -84
- package/lib/components/DatePicker.js +1 -1
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.d.ts +84 -84
- 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/Editor.d.ts +84 -84
- package/lib/components/GroupedSelection.d.ts +907 -0
- package/lib/components/GroupedSelection.js +48 -0
- package/lib/components/GroupedSelection.js.map +13 -0
- package/lib/components/InputBox.js +1 -1
- package/lib/components/InputBox.js.map +2 -2
- package/lib/components/Link.d.ts +84 -0
- package/lib/components/Link.js +43 -0
- package/lib/components/Link.js.map +13 -0
- package/lib/components/ListGroup.d.ts +21 -21
- package/lib/components/Modal.js +1 -1
- package/lib/components/Modal.js.map +2 -2
- package/lib/components/ModalManager.js +1 -1
- package/lib/components/ModalManager.js.map +2 -2
- package/lib/components/MonthRangePicker.d.ts +84 -84
- package/lib/components/MonthRangePicker.js +1 -1
- package/lib/components/MonthRangePicker.js.map +2 -2
- package/lib/components/NumberInput.d.ts +20 -20
- package/lib/components/PickerColumn.d.ts +514 -0
- package/lib/components/PickerColumn.js +279 -0
- package/lib/components/PickerColumn.js.map +13 -0
- package/lib/components/PickerContainer.d.ts +513 -0
- package/lib/components/PickerContainer.js +96 -0
- package/lib/components/PickerContainer.js.map +13 -0
- package/lib/components/Radios.d.ts +22 -21
- package/lib/components/Radios.js +1 -0
- package/lib/components/Radios.js.map +2 -2
- package/lib/components/Rating.d.ts +21 -21
- package/lib/components/ResultBox.d.ts +84 -84
- 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/SearchBox.d.ts +84 -84
- package/lib/components/SearchBox.js +4 -4
- package/lib/components/SearchBox.js.map +2 -2
- package/lib/components/Select.d.ts +252 -237
- package/lib/components/Select.js +28 -4
- package/lib/components/Select.js.map +2 -2
- package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
- package/lib/components/Selection.js +134 -0
- package/lib/components/Selection.js.map +13 -0
- 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/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
- package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
- package/lib/components/TableSelection.js.map +13 -0
- package/lib/components/Tabs.d.ts +20 -20
- package/lib/components/TabsTransfer.d.ts +84 -84
- package/lib/components/TabsTransfer.js +9 -9
- package/lib/components/TabsTransfer.js.map +2 -2
- package/lib/components/TabsTransferPicker.d.ts +489 -0
- package/lib/components/TabsTransferPicker.js +60 -0
- package/lib/components/TabsTransferPicker.js.map +13 -0
- package/lib/components/Toast.js +2 -2
- package/lib/components/Toast.js.map +2 -2
- package/lib/components/Transfer.d.ts +908 -274
- package/lib/components/Transfer.js +31 -24
- package/lib/components/Transfer.js.map +2 -2
- package/lib/components/TransferDropDown.d.ts +487 -0
- package/lib/components/TransferDropDown.js +59 -0
- package/lib/components/TransferDropDown.js.map +13 -0
- package/lib/components/TransferPicker.d.ts +489 -0
- package/lib/components/TransferPicker.js +60 -0
- package/lib/components/TransferPicker.js.map +13 -0
- package/lib/components/Tree.d.ts +84 -84
- package/lib/components/Tree.js +5 -3
- package/lib/components/Tree.js.map +2 -2
- package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
- package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
- package/lib/components/TreeSelection.js.map +13 -0
- package/lib/components/WithRemoteConfig.d.ts +8 -0
- package/lib/components/WithRemoteConfig.js +29 -3
- 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 +5 -3
- package/lib/components/condition-builder/Field.js.map +2 -2
- package/lib/components/condition-builder/Func.js +2 -2
- package/lib/components/condition-builder/Func.js.map +2 -2
- package/lib/components/condition-builder/InputSwitch.js +2 -2
- package/lib/components/condition-builder/InputSwitch.js.map +2 -2
- package/lib/components/condition-builder/Item.js +3 -3
- package/lib/components/condition-builder/Item.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/components/index.d.ts +8 -8
- package/lib/components/index.js +16 -16
- package/lib/components/index.js.map +2 -2
- package/lib/envOverwrite.js.map +2 -2
- package/lib/factory.d.ts +9 -1
- package/lib/factory.js +13 -6
- package/lib/factory.js.map +2 -2
- package/lib/helper.css.map +1 -1
- package/lib/hooks/index.d.ts +5 -0
- package/lib/hooks/index.js +14 -0
- package/lib/hooks/index.js.map +13 -0
- package/lib/hooks/use-set-state.d.ts +2 -0
- package/lib/hooks/use-set-state.js +15 -0
- package/lib/hooks/use-set-state.js.map +13 -0
- package/lib/hooks/use-touch.d.ts +16 -0
- package/lib/hooks/use-touch.js +73 -0
- package/lib/hooks/use-touch.js.map +13 -0
- package/lib/hooks/use-update-effect.d.ts +3 -0
- package/lib/hooks/use-update-effect.js +17 -0
- package/lib/hooks/use-update-effect.js.map +13 -0
- 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.d.ts +3 -0
- package/lib/index.js +4 -1
- package/lib/index.js.map +2 -2
- package/lib/locale/de-DE.js +5 -0
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +6 -1
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +9 -4
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.d.ts +17 -1
- package/lib/renderers/Action.js +21 -8
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/AnchorNav.d.ts +1 -0
- package/lib/renderers/AnchorNav.js +2 -2
- package/lib/renderers/AnchorNav.js.map +2 -2
- package/lib/renderers/Avatar.js +3 -3
- package/lib/renderers/Avatar.js.map +2 -2
- package/lib/renderers/Breadcrumb.js +1 -1
- package/lib/renderers/Breadcrumb.js.map +2 -2
- package/lib/renderers/CRUD.d.ts +9 -0
- package/lib/renderers/CRUD.js +48 -23
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Card.d.ts +4 -0
- package/lib/renderers/Card.js +29 -23
- package/lib/renderers/Card.js.map +2 -2
- package/lib/renderers/Chart.js +1 -1
- package/lib/renderers/Chart.js.map +2 -2
- package/lib/renderers/Collapse.d.ts +1 -1
- package/lib/renderers/Collapse.js +8 -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/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 +4 -5
- package/lib/renderers/Form/Editor.d.ts +3 -4
- package/lib/renderers/Form/Editor.js +1 -1
- package/lib/renderers/Form/Editor.js.map +2 -2
- package/lib/renderers/Form/InputCity.d.ts +84 -84
- package/lib/renderers/Form/InputCity.js +7 -6
- package/lib/renderers/Form/InputCity.js.map +2 -2
- package/lib/renderers/Form/InputColor.d.ts +84 -84
- 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 +12 -6
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputImage.d.ts +8 -0
- package/lib/renderers/Form/InputImage.js +18 -8
- 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/Item.d.ts +1 -1
- package/lib/renderers/Form/Item.js.map +1 -1
- package/lib/renderers/Form/Options.js +19 -6
- 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/Select.d.ts +41 -4
- package/lib/renderers/Form/Select.js +23 -3
- package/lib/renderers/Form/Select.js.map +2 -2
- package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
- package/lib/renderers/Form/TabsTransferPicker.js +29 -0
- package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
- package/lib/renderers/Form/Transfer.js +3 -2
- package/lib/renderers/Form/Transfer.js.map +2 -2
- package/lib/renderers/Form/TransferPicker.d.ts +48 -0
- package/lib/renderers/Form/TransferPicker.js +29 -0
- package/lib/renderers/Form/TransferPicker.js.map +13 -0
- package/lib/renderers/Form/TreeSelect.js +2 -2
- package/lib/renderers/Form/TreeSelect.js.map +2 -2
- package/lib/renderers/Form/index.js +1 -1
- package/lib/renderers/Form/index.js.map +2 -2
- package/lib/renderers/Form/wrapControl.js +15 -3
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/IFrame.js +3 -5
- 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.d.ts +4 -0
- package/lib/renderers/Json.js +7 -12
- package/lib/renderers/Json.js.map +2 -2
- package/lib/renderers/Link.d.ts +18 -3
- package/lib/renderers/Link.js +27 -15
- package/lib/renderers/Link.js.map +2 -2
- package/lib/renderers/List.js +1 -1
- package/lib/renderers/List.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/Mapping.d.ts +9 -2
- package/lib/renderers/Mapping.js +18 -6
- package/lib/renderers/Mapping.js.map +2 -2
- package/lib/renderers/Nav.d.ts +81 -25
- package/lib/renderers/Nav.js +292 -31
- 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/Portlet.d.ts +125 -0
- package/lib/renderers/Portlet.js +156 -0
- package/lib/renderers/Portlet.js.map +13 -0
- package/lib/renderers/Property.js +2 -1
- package/lib/renderers/Property.js.map +2 -2
- package/lib/renderers/SearchBox.d.ts +6 -1
- package/lib/renderers/SearchBox.js +19 -5
- package/lib/renderers/SearchBox.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.map +1 -1
- package/lib/renderers/Table/TableCell.js +3 -1
- package/lib/renderers/Table/TableCell.js.map +2 -2
- package/lib/renderers/Table/TableContent.d.ts +5 -2
- package/lib/renderers/Table/TableContent.js +21 -1
- package/lib/renderers/Table/TableContent.js.map +2 -2
- package/lib/renderers/Table/index.d.ts +27 -5
- package/lib/renderers/Table/index.js +251 -101
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/renderers/Tabs.js +9 -1
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/WebComponent.js +1 -1
- package/lib/renderers/WebComponent.js.map +2 -2
- package/lib/store/app.d.ts +0 -1
- package/lib/store/combo.d.ts +2 -18
- package/lib/store/crud.d.ts +0 -1
- package/lib/store/crud.js +3 -7
- package/lib/store/crud.js.map +2 -2
- package/lib/store/form.d.ts +1 -2
- package/lib/store/form.js +5 -6
- package/lib/store/form.js.map +2 -2
- 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 +5 -17
- package/lib/store/service.js.map +2 -2
- package/lib/store/table.d.ts +260 -5
- package/lib/store/table.js +83 -7
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +1360 -244
- package/lib/themes/ang.css +1360 -244
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +1360 -244
- package/lib/themes/antd.css +1360 -244
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +1960 -517
- package/lib/themes/cxd.css +1960 -517
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +1360 -244
- package/lib/themes/dark.css +1360 -244
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +1960 -517
- package/lib/themes/default.css.map +1 -1
- package/lib/types.d.ts +37 -0
- package/lib/types.js +0 -5
- package/lib/types.js.map +2 -2
- package/lib/utils/api.d.ts +3 -2
- package/lib/utils/api.js +43 -15
- 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/dom.d.ts +4 -0
- package/lib/utils/dom.js +11 -1
- package/lib/utils/dom.js.map +2 -2
- 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 +3 -1
- package/lib/utils/helper.js +14 -5
- package/lib/utils/helper.js.map +2 -2
- package/lib/utils/icon.js +3 -0
- package/lib/utils/icon.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 +3638 -1030
- package/scss/_mixins.scss +27 -0
- package/scss/_properties.scss +88 -13
- package/scss/_utilities.scss +4 -0
- package/scss/base/_normalize.scss +2 -0
- package/scss/components/_anchor-nav.scss +88 -29
- package/scss/components/_badge.scss +67 -2
- package/scss/components/_button.scss +34 -3
- package/scss/components/_card.scss +8 -14
- package/scss/components/_collapse.scss +41 -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/_mapping.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/_picker-columns.scss +123 -0
- package/scss/components/_popover.scss +17 -0
- package/scss/components/_portlet.scss +51 -0
- package/scss/components/_progress.scss +2 -0
- package/scss/components/_spinner.scss +6 -2
- package/scss/components/_status.scss +1 -1
- package/scss/components/_steps.scss +1 -1
- package/scss/components/_table.scss +51 -1
- package/scss/components/form/_checks.scss +0 -351
- 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 +6 -3
- 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/_selection.scss +354 -0
- package/scss/components/form/_text.scss +13 -0
- package/scss/components/form/_textarea.scss +10 -0
- package/scss/components/form/_transfer.scss +77 -18
- package/scss/themes/_common.scss +7 -0
- package/scss/themes/_cxd-colors.scss +56 -0
- package/scss/themes/_cxd-variables.scss +219 -91
- package/scss/themes/cxd.scss +370 -0
- package/sdk/ang-ie11.css +1752 -431
- package/sdk/ang.css +1706 -323
- package/sdk/antd-ie11.css +1739 -420
- package/sdk/antd.css +1706 -323
- package/sdk/charts.js +13 -13
- package/sdk/color-picker.js +65 -69
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +3015 -1397
- package/sdk/cxd.css +2402 -651
- package/sdk/dark-ie11.css +1750 -429
- package/sdk/dark.css +1706 -323
- 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 +5 -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 +20 -30
- package/sdk/rich-text.js +62 -64
- package/sdk/sdk-ie11.css +3015 -1397
- package/sdk/sdk.css +2402 -651
- package/sdk/sdk.js +1278 -1220
- 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 +32 -0
- package/src/components/Alert.tsx +3 -1
- package/src/components/AnchorNav.tsx +15 -4
- package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
- package/src/components/Badge.tsx +126 -23
- package/src/components/Button.tsx +23 -7
- package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
- 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/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
- package/src/components/InputBox.tsx +1 -1
- package/src/components/Link.tsx +85 -0
- package/src/components/Modal.tsx +3 -2
- package/src/components/ModalManager.ts +1 -1
- package/src/components/MonthRangePicker.tsx +10 -2
- package/src/components/PickerColumn.tsx +429 -0
- package/src/components/PickerContainer.tsx +128 -0
- package/src/components/Radios.tsx +3 -8
- package/src/components/RichText.tsx +244 -3
- package/src/components/SearchBox.tsx +4 -5
- package/src/components/Select.tsx +61 -5
- package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
- package/src/components/SparkLine.tsx +4 -1
- package/src/components/Steps.tsx +3 -3
- package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
- package/src/components/TabsTransfer.tsx +13 -7
- package/src/components/TabsTransferPicker.tsx +85 -0
- package/src/components/Toast.tsx +5 -5
- package/src/components/Transfer.tsx +71 -50
- package/src/components/TransferDropDown.tsx +117 -0
- package/src/components/TransferPicker.tsx +84 -0
- package/src/components/Tree.tsx +6 -8
- package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
- package/src/components/WithRemoteConfig.tsx +44 -4
- package/src/components/calendar/DaysView.tsx +2 -2
- package/src/components/condition-builder/Field.tsx +6 -7
- package/src/components/condition-builder/Func.tsx +3 -3
- package/src/components/condition-builder/InputSwitch.tsx +3 -3
- package/src/components/condition-builder/Item.tsx +5 -12
- 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/components/index.tsx +13 -13
- package/src/envOverwrite.ts +0 -1
- package/src/factory.tsx +31 -6
- package/src/hooks/index.ts +5 -0
- package/src/hooks/use-set-state.ts +19 -0
- package/src/hooks/use-touch.ts +100 -0
- package/src/hooks/use-update-effect.ts +16 -0
- 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/index.tsx +3 -0
- package/src/locale/de-DE.ts +5 -0
- package/src/locale/en-US.ts +6 -1
- package/src/locale/zh-CN.ts +9 -4
- package/src/renderers/Action.tsx +99 -15
- package/src/renderers/AnchorNav.tsx +4 -0
- package/src/renderers/Avatar.tsx +8 -4
- package/src/renderers/Breadcrumb.tsx +5 -1
- package/src/renderers/CRUD.tsx +70 -56
- package/src/renderers/Card.tsx +63 -34
- package/src/renderers/Chart.tsx +6 -2
- package/src/renderers/Collapse.tsx +9 -3
- 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/Checkbox.tsx +8 -0
- package/src/renderers/Form/Combo.tsx +2 -3
- package/src/renderers/Form/Editor.tsx +19 -20
- package/src/renderers/Form/InputCity.tsx +4 -8
- package/src/renderers/Form/InputExcel.tsx +28 -3
- package/src/renderers/Form/InputFile.tsx +30 -20
- package/src/renderers/Form/InputImage.tsx +39 -13
- package/src/renderers/Form/InputTable.tsx +88 -9
- package/src/renderers/Form/Item.tsx +1 -1
- package/src/renderers/Form/Options.tsx +32 -7
- package/src/renderers/Form/Picker.tsx +3 -2
- package/src/renderers/Form/Select.tsx +144 -21
- package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
- package/src/renderers/Form/Transfer.tsx +3 -2
- package/src/renderers/Form/TransferPicker.tsx +123 -0
- package/src/renderers/Form/TreeSelect.tsx +25 -0
- package/src/renderers/Form/index.tsx +1 -1
- package/src/renderers/Form/wrapControl.tsx +28 -3
- package/src/renderers/IFrame.tsx +4 -5
- package/src/renderers/Image.tsx +10 -0
- package/src/renderers/Json.tsx +19 -10
- package/src/renderers/Link.tsx +53 -14
- package/src/renderers/List.tsx +1 -1
- package/src/renderers/Log.tsx +16 -3
- package/src/renderers/Mapping.tsx +27 -11
- package/src/renderers/Nav.tsx +392 -60
- package/src/renderers/Page.tsx +3 -1
- package/src/renderers/Portlet.tsx +423 -0
- package/src/renderers/Property.tsx +3 -2
- package/src/renderers/SearchBox.tsx +23 -4
- 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 +1 -1
- package/src/renderers/Table/TableCell.tsx +16 -1
- package/src/renderers/Table/TableContent.tsx +41 -3
- package/src/renderers/Table/index.tsx +318 -92
- package/src/renderers/Tabs.tsx +9 -1
- package/src/renderers/WebComponent.tsx +2 -2
- package/src/store/crud.ts +3 -8
- package/src/store/form.ts +5 -10
- package/src/store/modal.ts +4 -0
- package/src/store/service.ts +5 -23
- package/src/store/table.ts +103 -4
- package/src/types.ts +57 -0
- package/src/utils/api.ts +63 -23
- package/src/utils/attachmentAdpator.ts +90 -0
- package/src/utils/dom.tsx +12 -0
- package/src/utils/handleAction.ts +41 -0
- package/src/utils/helper.ts +12 -3
- package/src/utils/icon.tsx +4 -0
- package/src/utils/tpl-builtin.ts +48 -17
- package/src/utils/validations.ts +80 -12
- package/dump.rdb +0 -0
- package/lib/components/AssociatedCheckboxes.d.ts +0 -762
- package/lib/components/AssociatedCheckboxes.js +0 -90
- package/lib/components/AssociatedCheckboxes.js.map +0 -13
- package/lib/components/ChainedCheckboxes.js.map +0 -13
- package/lib/components/Checkboxes.js +0 -101
- package/lib/components/Checkboxes.js.map +0 -13
- package/lib/components/ListCheckboxes.d.ts +0 -739
- package/lib/components/ListCheckboxes.js +0 -48
- package/lib/components/ListCheckboxes.js.map +0 -13
- package/lib/components/ListRadios.d.ts +0 -763
- package/lib/components/ListRadios.js +0 -86
- package/lib/components/ListRadios.js.map +0 -13
- package/lib/components/TableCheckboxes.js.map +0 -13
- package/lib/components/TreeCheckboxes.js.map +0 -13
- package/lib/components/TreeRadios.d.ts +0 -838
- package/lib/components/TreeRadios.js +0 -116
- package/lib/components/TreeRadios.js.map +0 -13
- package/src/components/ListRadios.tsx +0 -159
- package/src/components/TreeRadios.tsx +0 -202
package/src/renderers/Tabs.tsx
CHANGED
@@ -374,7 +374,15 @@ export default class Tabs extends React.Component<TabsProps, TabsState> {
|
|
374
374
|
|
375
375
|
@autobind
|
376
376
|
handleSelect(key: any) {
|
377
|
-
const {env, onSelect} = this.props;
|
377
|
+
const {env, onSelect, id} = this.props;
|
378
|
+
|
379
|
+
env.tracker?.({
|
380
|
+
eventType: 'tabChange',
|
381
|
+
eventData: {
|
382
|
+
id,
|
383
|
+
key
|
384
|
+
}
|
385
|
+
});
|
378
386
|
|
379
387
|
// 是 hash,需要更新到地址栏
|
380
388
|
if (typeof key === 'string' && env) {
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import {Renderer, RendererProps} from '../factory';
|
3
3
|
import {BaseSchema, SchemaCollection} from '../Schema';
|
4
|
-
import {resolveVariable} from '../utils/tpl-builtin';
|
4
|
+
import {resolveVariable, resolveVariableAndFilter} from '../utils/tpl-builtin';
|
5
5
|
import mapValues from 'lodash/mapValues';
|
6
6
|
|
7
7
|
/**
|
@@ -43,7 +43,7 @@ export default class WebComponent extends React.Component<RendererProps> {
|
|
43
43
|
|
44
44
|
const propsValues = mapValues(props, s => {
|
45
45
|
if (typeof s === 'string') {
|
46
|
-
return
|
46
|
+
return resolveVariableAndFilter(s, data, '| raw') || s;
|
47
47
|
} else {
|
48
48
|
return s;
|
49
49
|
}
|
package/src/store/crud.ts
CHANGED
@@ -21,6 +21,7 @@ import {
|
|
21
21
|
import {Api, Payload, fetchOptions, Action, ApiObject} from '../types';
|
22
22
|
import pick from 'lodash/pick';
|
23
23
|
import {resolveVariableAndFilter} from '../utils/tpl-builtin';
|
24
|
+
import {normalizeApiResponseData} from '../utils/api';
|
24
25
|
|
25
26
|
class ServerError extends Error {
|
26
27
|
type = 'ServerError';
|
@@ -228,13 +229,7 @@ export const CRUDStore = ServiceStore.named('CRUDStore')
|
|
228
229
|
}
|
229
230
|
|
230
231
|
self.updatedAt = Date.now();
|
231
|
-
let result = json.data;
|
232
|
-
|
233
|
-
if (Array.isArray(result)) {
|
234
|
-
result = {
|
235
|
-
items: result
|
236
|
-
};
|
237
|
-
}
|
232
|
+
let result = normalizeApiResponseData(json.data);
|
238
233
|
|
239
234
|
const {
|
240
235
|
total,
|
@@ -384,7 +379,7 @@ export const CRUDStore = ServiceStore.named('CRUDStore')
|
|
384
379
|
|
385
380
|
if (!isEmpty(json.data) || json.ok) {
|
386
381
|
self.updateData(
|
387
|
-
json.data,
|
382
|
+
normalizeApiResponseData(json.data),
|
388
383
|
{
|
389
384
|
__saved: Date.now()
|
390
385
|
},
|
package/src/store/form.ts
CHANGED
@@ -29,6 +29,7 @@ import isEqual from 'lodash/isEqual';
|
|
29
29
|
import flatten from 'lodash/flatten';
|
30
30
|
import {getStoreById, removeStore} from './manager';
|
31
31
|
import {filter} from '../utils/tpl';
|
32
|
+
import {normalizeApiResponseData} from '../utils/api';
|
32
33
|
|
33
34
|
export const FormStore = ServiceStore.named('FormStore')
|
34
35
|
.props({
|
@@ -305,7 +306,7 @@ export const FormStore = ServiceStore.named('FormStore')
|
|
305
306
|
self.updatedAt = Date.now();
|
306
307
|
|
307
308
|
setValues(
|
308
|
-
json.data,
|
309
|
+
normalizeApiResponseData(json.data),
|
309
310
|
json.ok
|
310
311
|
? {
|
311
312
|
__saved: Date.now()
|
@@ -587,14 +588,9 @@ export const FormStore = ServiceStore.named('FormStore')
|
|
587
588
|
self.persistData = value;
|
588
589
|
}
|
589
590
|
|
590
|
-
const setLocalPersistData =
|
591
|
-
|
592
|
-
|
593
|
-
{
|
594
|
-
trailing: true,
|
595
|
-
leading: false
|
596
|
-
}
|
597
|
-
);
|
591
|
+
const setLocalPersistData = () => {
|
592
|
+
localStorage.setItem(self.persistKey, JSON.stringify(self.data));
|
593
|
+
};
|
598
594
|
|
599
595
|
function getLocalPersistData() {
|
600
596
|
let data = localStorage.getItem(self.persistKey);
|
@@ -638,7 +634,6 @@ export const FormStore = ServiceStore.named('FormStore')
|
|
638
634
|
clearRestError,
|
639
635
|
beforeDestroy() {
|
640
636
|
syncOptions.cancel();
|
641
|
-
setLocalPersistData.cancel();
|
642
637
|
}
|
643
638
|
};
|
644
639
|
});
|
package/src/store/modal.ts
CHANGED
package/src/store/service.ts
CHANGED
@@ -3,6 +3,7 @@ import {iRendererStore} from './iRenderer';
|
|
3
3
|
import {Api, ApiObject, Payload, fetchOptions} from '../types';
|
4
4
|
import {extendObject, isEmpty, isObject} from '../utils/helper';
|
5
5
|
import {ServerError} from '../utils/errors';
|
6
|
+
import {normalizeApiResponseData} from '../utils/api';
|
6
7
|
|
7
8
|
export const ServiceStore = iRendererStore
|
8
9
|
.named('ServiceStore')
|
@@ -96,7 +97,7 @@ export const ServiceStore = iRendererStore
|
|
96
97
|
let replace = !!(api as ApiObject).replaceData;
|
97
98
|
let data = {
|
98
99
|
...(replace ? {} : self.data),
|
99
|
-
...json.data
|
100
|
+
...normalizeApiResponseData(json.data)
|
100
101
|
};
|
101
102
|
reInitData(data, replace);
|
102
103
|
self.hasRemoteData = true;
|
@@ -140,24 +141,6 @@ export const ServiceStore = iRendererStore
|
|
140
141
|
}
|
141
142
|
});
|
142
143
|
|
143
|
-
const fetchWSData = (ws: string, afterDataFetch: (data: any) => any) => {
|
144
|
-
const env = getEnv(self);
|
145
|
-
|
146
|
-
env.wsFetcher(
|
147
|
-
ws,
|
148
|
-
(data: any) => {
|
149
|
-
self.updateData(data, undefined, false);
|
150
|
-
setHasRemoteData();
|
151
|
-
// 因为 WebSocket 只会获取纯数据,所以没有 msg 之类的
|
152
|
-
afterDataFetch({ok: true, data: data});
|
153
|
-
},
|
154
|
-
(error: any) => {
|
155
|
-
updateMessage(error, true);
|
156
|
-
env.notify('error', error);
|
157
|
-
}
|
158
|
-
);
|
159
|
-
};
|
160
|
-
|
161
144
|
const setHasRemoteData = () => {
|
162
145
|
self.hasRemoteData = true;
|
163
146
|
};
|
@@ -194,7 +177,7 @@ export const ServiceStore = iRendererStore
|
|
194
177
|
|
195
178
|
json.data &&
|
196
179
|
self.updateData(
|
197
|
-
json.data,
|
180
|
+
normalizeApiResponseData(json.data),
|
198
181
|
undefined,
|
199
182
|
!!(api as ApiObject).replaceData
|
200
183
|
);
|
@@ -282,7 +265,7 @@ export const ServiceStore = iRendererStore
|
|
282
265
|
|
283
266
|
json.data &&
|
284
267
|
self.updateData(
|
285
|
-
json.data,
|
268
|
+
normalizeApiResponseData(json.data),
|
286
269
|
undefined,
|
287
270
|
!!(api as ApiObject).replaceData
|
288
271
|
);
|
@@ -424,7 +407,7 @@ export const ServiceStore = iRendererStore
|
|
424
407
|
: {
|
425
408
|
type: 'wrapper',
|
426
409
|
wrap: false,
|
427
|
-
...json.data
|
410
|
+
...normalizeApiResponseData(json.data)
|
428
411
|
};
|
429
412
|
self.schemaKey = '' + Date.now();
|
430
413
|
isObject(json.data.data) &&
|
@@ -505,7 +488,6 @@ export const ServiceStore = iRendererStore
|
|
505
488
|
markBusying,
|
506
489
|
fetchInitData,
|
507
490
|
fetchData,
|
508
|
-
fetchWSData,
|
509
491
|
reInitData,
|
510
492
|
updateMessage,
|
511
493
|
clearMessage,
|
package/src/store/table.ts
CHANGED
@@ -45,6 +45,7 @@ export const Column = types
|
|
45
45
|
checkdisable: false,
|
46
46
|
isPrimary: false,
|
47
47
|
searchable: types.maybe(types.frozen()),
|
48
|
+
enableSearch: true,
|
48
49
|
sortable: false,
|
49
50
|
filterable: types.optional(types.frozen(), undefined),
|
50
51
|
fixed: '',
|
@@ -66,8 +67,13 @@ export const Column = types
|
|
66
67
|
|
67
68
|
table.persistSaveToggledColumns();
|
68
69
|
},
|
70
|
+
|
69
71
|
setToggled(value: boolean) {
|
70
72
|
self.toggled = value;
|
73
|
+
},
|
74
|
+
|
75
|
+
setEnableSearch(value: boolean) {
|
76
|
+
self.enableSearch = value;
|
71
77
|
}
|
72
78
|
}));
|
73
79
|
|
@@ -292,6 +298,10 @@ export const TableStore = iRendererStore
|
|
292
298
|
keepItemSelectionOnPageChange: false
|
293
299
|
})
|
294
300
|
.views(self => {
|
301
|
+
function getColumnsExceptBuiltinTypes() {
|
302
|
+
return self.columns.filter(item => !/^__/.test(item.type));
|
303
|
+
}
|
304
|
+
|
295
305
|
function getForms() {
|
296
306
|
return self.formsRef.map(item => ({
|
297
307
|
store: getStoreById(item.id) as IFormStore,
|
@@ -414,8 +424,8 @@ export const TableStore = iRendererStore
|
|
414
424
|
return getMovedRows().length;
|
415
425
|
}
|
416
426
|
|
417
|
-
function
|
418
|
-
return self.rows.
|
427
|
+
function getHovedRow(): IRow | undefined {
|
428
|
+
return flattenTree<IRow>(self.rows).find((item: IRow) => item.isHover);
|
419
429
|
}
|
420
430
|
|
421
431
|
function getUnSelectedRows() {
|
@@ -499,11 +509,46 @@ export const TableStore = iRendererStore
|
|
499
509
|
});
|
500
510
|
}
|
501
511
|
|
512
|
+
function getFirstToggledColumnIndex() {
|
513
|
+
const column = self.columns.find(
|
514
|
+
column => !/^__/.test(column.type) && column.toggled
|
515
|
+
);
|
516
|
+
|
517
|
+
return column == null ? null : column.index;
|
518
|
+
}
|
519
|
+
|
520
|
+
function getSearchableColumns() {
|
521
|
+
return self.columns.filter(
|
522
|
+
column => column.searchable && isObject(column.searchable)
|
523
|
+
);
|
524
|
+
}
|
525
|
+
|
526
|
+
function getActivedSearchableColumns() {
|
527
|
+
return self.columns.filter(
|
528
|
+
column =>
|
529
|
+
column.searchable &&
|
530
|
+
isObject(column.searchable) &&
|
531
|
+
column.enableSearch
|
532
|
+
);
|
533
|
+
}
|
534
|
+
|
502
535
|
return {
|
536
|
+
get columnsData() {
|
537
|
+
return getColumnsExceptBuiltinTypes();
|
538
|
+
},
|
539
|
+
|
503
540
|
get forms() {
|
504
541
|
return getForms();
|
505
542
|
},
|
506
543
|
|
544
|
+
get searchableColumns() {
|
545
|
+
return getSearchableColumns();
|
546
|
+
},
|
547
|
+
|
548
|
+
get activedSearchableColumns() {
|
549
|
+
return getSearchableColumns().filter(column => column.enableSearch);
|
550
|
+
},
|
551
|
+
|
507
552
|
get filteredColumns() {
|
508
553
|
return getFilteredColumns();
|
509
554
|
},
|
@@ -583,8 +628,8 @@ export const TableStore = iRendererStore
|
|
583
628
|
return getMovedRows();
|
584
629
|
},
|
585
630
|
|
586
|
-
get
|
587
|
-
return
|
631
|
+
get hoverRow() {
|
632
|
+
return getHovedRow();
|
588
633
|
},
|
589
634
|
|
590
635
|
get disabledHeadCheckbox() {
|
@@ -598,6 +643,10 @@ export const TableStore = iRendererStore
|
|
598
643
|
return maxLength === selectedLength;
|
599
644
|
},
|
600
645
|
|
646
|
+
get firstToggledColumnIndex() {
|
647
|
+
return getFirstToggledColumnIndex();
|
648
|
+
},
|
649
|
+
|
601
650
|
getData,
|
602
651
|
|
603
652
|
get columnGroup() {
|
@@ -984,11 +1033,16 @@ export const TableStore = iRendererStore
|
|
984
1033
|
}
|
985
1034
|
}
|
986
1035
|
|
1036
|
+
// 记录最近一次点击的多选框,主要用于 shift 多选时判断上一个选的是什么
|
1037
|
+
let lastCheckedRow: any = null;
|
1038
|
+
|
987
1039
|
function toggle(row: IRow) {
|
988
1040
|
if (!row.checkable) {
|
989
1041
|
return;
|
990
1042
|
}
|
991
1043
|
|
1044
|
+
lastCheckedRow = row;
|
1045
|
+
|
992
1046
|
const idx = self.selectedRows.indexOf(row);
|
993
1047
|
|
994
1048
|
if (self.multiple) {
|
@@ -1000,6 +1054,50 @@ export const TableStore = iRendererStore
|
|
1000
1054
|
}
|
1001
1055
|
}
|
1002
1056
|
|
1057
|
+
// 按住 shift 的时候点击选项
|
1058
|
+
function toggleShift(row: IRow) {
|
1059
|
+
// 如果是同一个或非 multiple 模式下就和不用 shift 一样
|
1060
|
+
if (!lastCheckedRow || row === lastCheckedRow || !self.multiple) {
|
1061
|
+
toggle(row);
|
1062
|
+
return;
|
1063
|
+
}
|
1064
|
+
|
1065
|
+
const maxLength = self.maxKeepItemSelectionLength;
|
1066
|
+
const checkableRows = self.checkableRows;
|
1067
|
+
const lastCheckedRowIndex = checkableRows.findIndex(
|
1068
|
+
row => row === lastCheckedRow
|
1069
|
+
);
|
1070
|
+
const rowIndex = checkableRows.findIndex(rowItem => row === rowItem);
|
1071
|
+
const minIndex =
|
1072
|
+
lastCheckedRowIndex > rowIndex ? rowIndex : lastCheckedRowIndex;
|
1073
|
+
const maxIndex =
|
1074
|
+
lastCheckedRowIndex > rowIndex ? lastCheckedRowIndex : rowIndex;
|
1075
|
+
|
1076
|
+
const rows = checkableRows.slice(minIndex, maxIndex);
|
1077
|
+
rows.push(row); // 将当前行也加入进行判断
|
1078
|
+
for (const rowItem of rows) {
|
1079
|
+
const idx = self.selectedRows.indexOf(rowItem);
|
1080
|
+
if (idx === -1) {
|
1081
|
+
// 如果上一个是选中状态,则将之间的所有 check 都变成可选
|
1082
|
+
if (lastCheckedRow.checked) {
|
1083
|
+
if (maxLength) {
|
1084
|
+
if (self.selectedRows.length < maxLength) {
|
1085
|
+
self.selectedRows.push(rowItem);
|
1086
|
+
}
|
1087
|
+
} else {
|
1088
|
+
self.selectedRows.push(rowItem);
|
1089
|
+
}
|
1090
|
+
}
|
1091
|
+
} else {
|
1092
|
+
if (!lastCheckedRow.checked) {
|
1093
|
+
self.selectedRows.splice(idx, 1);
|
1094
|
+
}
|
1095
|
+
}
|
1096
|
+
}
|
1097
|
+
|
1098
|
+
lastCheckedRow = row;
|
1099
|
+
}
|
1100
|
+
|
1003
1101
|
function updateCheckDisable() {
|
1004
1102
|
if (!self.data) {
|
1005
1103
|
return;
|
@@ -1134,6 +1232,7 @@ export const TableStore = iRendererStore
|
|
1134
1232
|
updateSelected,
|
1135
1233
|
toggleAll,
|
1136
1234
|
toggle,
|
1235
|
+
toggleShift,
|
1137
1236
|
toggleExpandAll,
|
1138
1237
|
toggleExpanded,
|
1139
1238
|
collapseAllAtDepth,
|
package/src/types.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import type {ActionSchema} from './renderers/Action';
|
1
2
|
import {SchemaApiObject} from './Schema';
|
2
3
|
|
3
4
|
export interface ApiObject extends SchemaApiObject {
|
@@ -157,3 +158,59 @@ export interface JSONSchema {
|
|
157
158
|
// export type ExtractProps<
|
158
159
|
// TComponentOrTProps
|
159
160
|
// > = TComponentOrTProps extends React.ComponentType<infer P> ? P : never;
|
161
|
+
|
162
|
+
/**
|
163
|
+
* 事件跟踪的定义
|
164
|
+
*/
|
165
|
+
export interface EventTrack {
|
166
|
+
/**
|
167
|
+
* 事件类型,目前有以下几种
|
168
|
+
*
|
169
|
+
* api: 所有 fetcher 前调用
|
170
|
+
* url: 打开外部链接,组件有可能是 action 也有可能是 link
|
171
|
+
* link: 打开内部链接
|
172
|
+
* dialog: action 的弹框
|
173
|
+
* drawer: action 的抽出式弹框
|
174
|
+
* copy: action 里的复制
|
175
|
+
* reload: action 里的 reload
|
176
|
+
* email: action 里的 email
|
177
|
+
* prev: action 里的 prev
|
178
|
+
* next: action 里的 next
|
179
|
+
* cancel: action 里的 cancel
|
180
|
+
* close: action 里的 close
|
181
|
+
* submit: 有可能是 action 里的 submit,也有可能是表单提交
|
182
|
+
* confirm: action 里的 confirm
|
183
|
+
* add: action 里的 add
|
184
|
+
* reset: action 里的 reset
|
185
|
+
* reset-and-submit: action 里的 reset-and-submit
|
186
|
+
* formItemChange: 表单项内容变化
|
187
|
+
* formError: 表单验证失败
|
188
|
+
* formSubmit: 表单成功提交,在表单验证成功之后才会触发,这个可能会和 api 重合
|
189
|
+
* tabChange: tab 切换
|
190
|
+
* netError: api 报错
|
191
|
+
*/
|
192
|
+
eventType:
|
193
|
+
| 'api'
|
194
|
+
| 'url'
|
195
|
+
| 'link'
|
196
|
+
| 'dialog'
|
197
|
+
| 'drawer'
|
198
|
+
| 'copy'
|
199
|
+
| 'reload'
|
200
|
+
| 'email'
|
201
|
+
| 'prev'
|
202
|
+
| 'next'
|
203
|
+
| 'cancel'
|
204
|
+
| 'close'
|
205
|
+
| 'submit'
|
206
|
+
| 'confirm'
|
207
|
+
| 'reset'
|
208
|
+
| 'reset-and-submit'
|
209
|
+
| 'formItemChange'
|
210
|
+
| 'tabChange';
|
211
|
+
|
212
|
+
/**
|
213
|
+
* 事件数据
|
214
|
+
*/
|
215
|
+
eventData: ActionSchema | Api;
|
216
|
+
}
|
package/src/utils/api.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
import
|
1
|
+
import omit from 'lodash/omit';
|
2
|
+
import {Api, ApiObject, EventTrack, fetcherResult, Payload} from '../types';
|
2
3
|
import {fetcherConfig} from '../factory';
|
3
4
|
import {tokenize, dataMapping} from './tpl-builtin';
|
4
5
|
import {evalExpression} from './tpl';
|
@@ -12,6 +13,7 @@ import {
|
|
12
13
|
createObject,
|
13
14
|
qsparse
|
14
15
|
} from './helper';
|
16
|
+
import isPlainObject from 'lodash/isPlainObject';
|
15
17
|
|
16
18
|
const rSchema = /(?:^|raw\:)(get|post|put|delete|patch|options|head):/i;
|
17
19
|
|
@@ -22,6 +24,8 @@ interface ApiCacheConfig extends ApiObject {
|
|
22
24
|
|
23
25
|
const apiCaches: Array<ApiCacheConfig> = [];
|
24
26
|
|
27
|
+
const isIE = !!(document as any).documentMode;
|
28
|
+
|
25
29
|
export function normalizeApi(
|
26
30
|
api: Api,
|
27
31
|
defaultMethod: string = 'get'
|
@@ -59,6 +63,23 @@ export function buildApi(
|
|
59
63
|
};
|
60
64
|
api.method = (api.method || (options as any).method || 'get').toLowerCase();
|
61
65
|
|
66
|
+
if (api.headers) {
|
67
|
+
api.headers = dataMapping(api.headers, data, undefined, false);
|
68
|
+
}
|
69
|
+
|
70
|
+
if (api.requestAdaptor && typeof api.requestAdaptor === 'string') {
|
71
|
+
api.requestAdaptor = str2function(api.requestAdaptor, 'api') as any;
|
72
|
+
}
|
73
|
+
|
74
|
+
if (api.adaptor && typeof api.adaptor === 'string') {
|
75
|
+
api.adaptor = str2function(
|
76
|
+
api.adaptor,
|
77
|
+
'payload',
|
78
|
+
'response',
|
79
|
+
'api'
|
80
|
+
) as any;
|
81
|
+
}
|
82
|
+
|
62
83
|
if (!data) {
|
63
84
|
return api;
|
64
85
|
} else if (
|
@@ -80,7 +101,9 @@ export function buildApi(
|
|
80
101
|
);
|
81
102
|
api.url =
|
82
103
|
tokenize(api.url.substring(0, idx + 1), data, '| url_encode') +
|
83
|
-
qsstringify(
|
104
|
+
qsstringify(
|
105
|
+
(api.query = dataMapping(params, data, undefined, api.convertKeyToPath))
|
106
|
+
) +
|
84
107
|
(~hashIdx ? api.url.substring(hashIdx) : '');
|
85
108
|
} else {
|
86
109
|
api.url = tokenize(api.url, data, '| url_encode');
|
@@ -91,7 +114,12 @@ export function buildApi(
|
|
91
114
|
}
|
92
115
|
|
93
116
|
if (api.data) {
|
94
|
-
api.body = api.data = dataMapping(
|
117
|
+
api.body = api.data = dataMapping(
|
118
|
+
api.data,
|
119
|
+
data,
|
120
|
+
undefined,
|
121
|
+
api.convertKeyToPath
|
122
|
+
);
|
95
123
|
} else if (api.method === 'post' || api.method === 'put') {
|
96
124
|
api.body = api.data = cloneObject(data);
|
97
125
|
}
|
@@ -135,23 +163,6 @@ export function buildApi(
|
|
135
163
|
}
|
136
164
|
}
|
137
165
|
|
138
|
-
if (api.headers) {
|
139
|
-
api.headers = dataMapping(api.headers, data);
|
140
|
-
}
|
141
|
-
|
142
|
-
if (api.requestAdaptor && typeof api.requestAdaptor === 'string') {
|
143
|
-
api.requestAdaptor = str2function(api.requestAdaptor, 'api') as any;
|
144
|
-
}
|
145
|
-
|
146
|
-
if (api.adaptor && typeof api.adaptor === 'string') {
|
147
|
-
api.adaptor = str2function(
|
148
|
-
api.adaptor,
|
149
|
-
'payload',
|
150
|
-
'response',
|
151
|
-
'api'
|
152
|
-
) as any;
|
153
|
-
}
|
154
|
-
|
155
166
|
return api;
|
156
167
|
}
|
157
168
|
|
@@ -188,7 +199,7 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
|
|
188
199
|
let hasStatusField = true;
|
189
200
|
|
190
201
|
if (!data) {
|
191
|
-
throw new Error('Response is empty
|
202
|
+
throw new Error('Response is empty');
|
192
203
|
}
|
193
204
|
|
194
205
|
// 兼容几种常见写法
|
@@ -246,7 +257,9 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
|
|
246
257
|
items: payload.data
|
247
258
|
}
|
248
259
|
: payload.data) || {}
|
249
|
-
)
|
260
|
+
),
|
261
|
+
undefined,
|
262
|
+
api.convertKeyToPath
|
250
263
|
);
|
251
264
|
}
|
252
265
|
|
@@ -254,7 +267,8 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
|
|
254
267
|
}
|
255
268
|
|
256
269
|
export function wrapFetcher(
|
257
|
-
fn: (config: fetcherConfig) => Promise<fetcherResult
|
270
|
+
fn: (config: fetcherConfig) => Promise<fetcherResult>,
|
271
|
+
tracker?: (eventTrack: EventTrack, data: any) => void
|
258
272
|
): (api: Api, data: object, options?: object) => Promise<Payload | void> {
|
259
273
|
return function (api, data, options) {
|
260
274
|
api = buildApi(api, data, options) as ApiObject;
|
@@ -284,6 +298,11 @@ export function wrapFetcher(
|
|
284
298
|
api.headers['Content-Type'] = 'application/json';
|
285
299
|
}
|
286
300
|
|
301
|
+
tracker?.(
|
302
|
+
{eventType: 'api', eventData: omit(api, ['config', 'data', 'body'])},
|
303
|
+
api.data
|
304
|
+
);
|
305
|
+
|
287
306
|
if (typeof api.cache === 'number' && api.cache > 0) {
|
288
307
|
const apiCache = getApiCache(api);
|
289
308
|
return wrapAdaptor(
|
@@ -293,6 +312,15 @@ export function wrapFetcher(
|
|
293
312
|
api
|
294
313
|
);
|
295
314
|
}
|
315
|
+
// IE 下 get 请求会被缓存,所以自动加个时间戳
|
316
|
+
if (isIE && api && api.method?.toLocaleLowerCase() === 'get') {
|
317
|
+
const timeStamp = `_t=${Date.now()}`;
|
318
|
+
if (api.url.indexOf('?') === -1) {
|
319
|
+
api.url = api.url + `?${timeStamp}`;
|
320
|
+
} else {
|
321
|
+
api.url = api.url + `&${timeStamp}`;
|
322
|
+
}
|
323
|
+
}
|
296
324
|
return wrapAdaptor(fn(api), api);
|
297
325
|
};
|
298
326
|
}
|
@@ -449,4 +477,16 @@ export function clearApiCache() {
|
|
449
477
|
apiCaches.splice(0, apiCaches.length);
|
450
478
|
}
|
451
479
|
|
480
|
+
export function normalizeApiResponseData(data: any) {
|
481
|
+
if (typeof data === 'undefined') {
|
482
|
+
data = {};
|
483
|
+
} else if (!isPlainObject(data)) {
|
484
|
+
data = {
|
485
|
+
[Array.isArray(data) ? 'items' : 'result']: data
|
486
|
+
};
|
487
|
+
}
|
488
|
+
|
489
|
+
return data;
|
490
|
+
}
|
491
|
+
|
452
492
|
// window.apiCaches = apiCaches;
|