amis 1.4.2-beta.1 → 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/lib/Schema.d.ts +9 -2
- package/lib/Schema.js.map +1 -1
- 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.js +2 -2
- package/lib/components/Badge.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/ColorPicker.d.ts +84 -84
- package/lib/components/DatePicker.d.ts +84 -84
- package/lib/components/DateRangePicker.d.ts +84 -84
- 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/Link.d.ts +29 -36
- package/lib/components/Link.js +14 -15
- package/lib/components/Link.js.map +2 -2
- package/lib/components/ListGroup.d.ts +21 -21
- 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/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/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 +245 -237
- package/lib/components/Select.js +25 -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/{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/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/{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.js +1 -1
- package/lib/components/WithRemoteConfig.js.map +2 -2
- package/lib/components/condition-builder/Field.js +5 -2
- 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/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 +4 -0
- package/lib/factory.js +4 -2
- 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/index.d.ts +3 -0
- package/lib/index.js +4 -1
- package/lib/index.js.map +2 -2
- package/lib/locale/de-DE.js +2 -0
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +2 -0
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +4 -2
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.d.ts +4 -3
- package/lib/renderers/Action.js +17 -4
- 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 +24 -4
- 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.js +3 -2
- package/lib/renderers/Collapse.js.map +2 -2
- package/lib/renderers/DropDownButton.js +1 -1
- package/lib/renderers/DropDownButton.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.d.ts +4 -3
- package/lib/renderers/Form/Editor.d.ts +3 -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/InputFile.js +10 -4
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputImage.js +11 -4
- package/lib/renderers/Form/InputImage.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 +13 -3
- package/lib/renderers/Form/Options.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 +13 -1
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/IFrame.js +1 -3
- package/lib/renderers/IFrame.js.map +2 -2
- package/lib/renderers/Json.d.ts +4 -0
- package/lib/renderers/Json.js +4 -13
- package/lib/renderers/Json.js.map +2 -2
- package/lib/renderers/Link.d.ts +4 -2
- package/lib/renderers/Link.js +15 -6
- 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/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 +21 -21
- package/lib/renderers/Nav.js +39 -21
- package/lib/renderers/Nav.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/Table/TableContent.d.ts +4 -1
- package/lib/renderers/Table/TableContent.js +21 -1
- package/lib/renderers/Table/TableContent.js.map +2 -2
- package/lib/renderers/Table/index.d.ts +5 -1
- package/lib/renderers/Table/index.js +64 -29
- 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/combo.d.ts +2 -16
- package/lib/store/crud.js +3 -7
- package/lib/store/crud.js.map +2 -2
- package/lib/store/form.d.ts +1 -1
- package/lib/store/form.js +5 -6
- package/lib/store/form.js.map +2 -2
- package/lib/store/service.js +5 -4
- package/lib/store/service.js.map +2 -2
- package/lib/store/table.d.ts +2 -2
- package/lib/themes/ang-ie11.css +422 -149
- package/lib/themes/ang.css +422 -149
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +422 -149
- package/lib/themes/antd.css +422 -149
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +456 -182
- package/lib/themes/cxd.css +456 -182
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +422 -149
- package/lib/themes/dark.css +422 -149
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +456 -182
- 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 +28 -12
- package/lib/utils/api.js.map +2 -2
- 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/helper.d.ts +2 -0
- package/lib/utils/helper.js +11 -2
- package/lib/utils/helper.js.map +2 -2
- package/lib/utils/icon.js +3 -0
- package/lib/utils/icon.js.map +2 -2
- package/package.json +1 -1
- package/schema.json +3038 -790
- package/scss/_mixins.scss +1 -3
- package/scss/_properties.scss +25 -1
- package/scss/base/_normalize.scss +2 -0
- package/scss/components/_anchor-nav.scss +88 -29
- package/scss/components/_card.scss +8 -14
- package/scss/components/_collapse.scss +16 -1
- package/scss/components/_mapping.scss +6 -0
- package/scss/components/_nav.scss +1 -1
- 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/_status.scss +1 -1
- package/scss/components/_table.scss +26 -0
- package/scss/components/form/_checks.scss +0 -351
- package/scss/components/form/_fieldset.scss +5 -1
- package/scss/components/form/_selection.scss +354 -0
- package/scss/components/form/_transfer.scss +75 -18
- package/scss/themes/_common.scss +4 -0
- package/scss/themes/_cxd-variables.scss +4 -1
- package/scss/themes/cxd.scss +16 -12
- package/sdk/ang-ie11.css +457 -152
- package/sdk/ang.css +480 -154
- package/sdk/antd-ie11.css +456 -151
- package/sdk/antd.css +480 -154
- package/sdk/charts.js +13 -13
- package/sdk/color-picker.js +65 -69
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +496 -194
- package/sdk/cxd.css +517 -190
- package/sdk/dark-ie11.css +457 -152
- package/sdk/dark.css +480 -154
- package/sdk/exceljs.js +1 -1
- package/sdk/helper.css.map +1 -1
- package/sdk/locale/de-DE.js +2 -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 -28
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +496 -194
- package/sdk/sdk.css +517 -190
- package/sdk/sdk.js +1268 -1236
- 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 +14 -0
- package/src/components/AnchorNav.tsx +15 -4
- package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
- package/src/components/Badge.tsx +3 -3
- package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
- package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
- package/src/components/Link.tsx +28 -37
- package/src/components/ModalManager.ts +1 -1
- package/src/components/PickerColumn.tsx +429 -0
- package/src/components/PickerContainer.tsx +128 -0
- package/src/components/Radios.tsx +3 -8
- package/src/components/SearchBox.tsx +4 -5
- package/src/components/Select.tsx +57 -5
- package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
- 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/Transfer.tsx +71 -50
- package/src/components/TransferDropDown.tsx +117 -0
- package/src/components/TransferPicker.tsx +84 -0
- package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
- package/src/components/WithRemoteConfig.tsx +7 -2
- package/src/components/condition-builder/Field.tsx +5 -5
- 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/index.tsx +13 -13
- package/src/envOverwrite.ts +0 -1
- package/src/factory.tsx +18 -3
- 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/index.tsx +3 -0
- package/src/locale/de-DE.ts +2 -0
- package/src/locale/en-US.ts +2 -0
- package/src/locale/zh-CN.ts +4 -2
- package/src/renderers/Action.tsx +28 -2
- 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 +33 -3
- package/src/renderers/Card.tsx +63 -34
- package/src/renderers/Chart.tsx +6 -2
- package/src/renderers/Collapse.tsx +4 -2
- package/src/renderers/DropDownButton.tsx +1 -1
- package/src/renderers/Form/InputCity.tsx +4 -8
- package/src/renderers/Form/InputFile.tsx +29 -20
- package/src/renderers/Form/InputImage.tsx +11 -3
- package/src/renderers/Form/Item.tsx +1 -1
- package/src/renderers/Form/Options.tsx +16 -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 +26 -1
- package/src/renderers/IFrame.tsx +2 -4
- package/src/renderers/Json.tsx +9 -9
- package/src/renderers/Link.tsx +27 -13
- package/src/renderers/List.tsx +1 -1
- package/src/renderers/Mapping.tsx +27 -11
- package/src/renderers/Nav.tsx +108 -60
- package/src/renderers/Portlet.tsx +423 -0
- package/src/renderers/Property.tsx +3 -2
- package/src/renderers/SearchBox.tsx +23 -4
- package/src/renderers/Table/TableContent.tsx +40 -2
- package/src/renderers/Table/index.tsx +87 -41
- 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/service.ts +5 -4
- package/src/types.ts +57 -0
- package/src/utils/api.ts +40 -20
- package/src/utils/dom.tsx +12 -0
- package/src/utils/helper.ts +8 -0
- package/src/utils/icon.tsx +4 -0
- 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
@@ -9,6 +9,7 @@ import './ColumnToggler';
|
|
9
9
|
import Checkbox from '../../components/Checkbox';
|
10
10
|
import Button from '../../components/Button';
|
11
11
|
import {TableStore, ITableStore, IColumn, IRow} from '../../store/table';
|
12
|
+
import {saveAs} from 'file-saver';
|
12
13
|
import {
|
13
14
|
anyChanged,
|
14
15
|
getScrollParent,
|
@@ -19,7 +20,8 @@ import {
|
|
19
20
|
getVariable,
|
20
21
|
removeHTMLTag,
|
21
22
|
eachTree,
|
22
|
-
isObject
|
23
|
+
isObject,
|
24
|
+
createObject
|
23
25
|
} from '../../utils/helper';
|
24
26
|
import {
|
25
27
|
isPureVariable,
|
@@ -53,9 +55,10 @@ import {TableBody} from './TableBody';
|
|
53
55
|
import {TplSchema} from '../Tpl';
|
54
56
|
import {MappingSchema} from '../Mapping';
|
55
57
|
import {isAlive, getSnapshot} from 'mobx-state-tree';
|
56
|
-
import ItemActionsWrapper from './ItemActionsWrapper';
|
57
58
|
import ColumnToggler from './ColumnToggler';
|
58
59
|
import {BadgeSchema} from '../../components/Badge';
|
60
|
+
import offset from '../../utils/offset';
|
61
|
+
import {getStyleNumber} from '../../utils/dom';
|
59
62
|
|
60
63
|
/**
|
61
64
|
* 表格列,不指定类型时默认为文本类型。
|
@@ -422,7 +425,8 @@ export default class Table extends React.Component<TableProps, object> {
|
|
422
425
|
'headerToolbarClassName',
|
423
426
|
'toolbarClassName',
|
424
427
|
'footerToolbarClassName',
|
425
|
-
'itemBadge'
|
428
|
+
'itemBadge',
|
429
|
+
'autoFillHeight'
|
426
430
|
];
|
427
431
|
static defaultProps: Partial<TableProps> = {
|
428
432
|
className: '',
|
@@ -497,6 +501,7 @@ export default class Table extends React.Component<TableProps, object> {
|
|
497
501
|
this.subFormRef = this.subFormRef.bind(this);
|
498
502
|
this.handleColumnToggle = this.handleColumnToggle.bind(this);
|
499
503
|
this.renderAutoFilterForm = this.renderAutoFilterForm.bind(this);
|
504
|
+
this.updateAutoFillHeight = this.updateAutoFillHeight.bind(this);
|
500
505
|
|
501
506
|
const {
|
502
507
|
store,
|
@@ -607,6 +612,68 @@ export default class Table extends React.Component<TableProps, object> {
|
|
607
612
|
this.affixDetect();
|
608
613
|
parent.addEventListener('scroll', this.affixDetect);
|
609
614
|
window.addEventListener('resize', this.affixDetect);
|
615
|
+
this.updateAutoFillHeight();
|
616
|
+
window.addEventListener('resize', this.updateAutoFillHeight);
|
617
|
+
}
|
618
|
+
|
619
|
+
/**
|
620
|
+
* 自动设置表格高度占满界面剩余区域
|
621
|
+
* 用 css 实现有点麻烦,要改很多结构,所以先用 dom hack 了,避免对之前的功能有影响
|
622
|
+
*/
|
623
|
+
updateAutoFillHeight() {
|
624
|
+
const {autoFillHeight, footerToolbar, classPrefix: ns} = this.props;
|
625
|
+
if (!autoFillHeight) {
|
626
|
+
return;
|
627
|
+
}
|
628
|
+
const table = findDOMNode(this) as HTMLElement;
|
629
|
+
const tableContent = table.querySelector(
|
630
|
+
`.${ns}Table-content`
|
631
|
+
) as HTMLElement;
|
632
|
+
const tableContentWrap = table.querySelector(
|
633
|
+
`.${ns}Table-contentWrap`
|
634
|
+
) as HTMLElement;
|
635
|
+
const footToolbar = table.querySelector(
|
636
|
+
`.${ns}Table-footToolbar`
|
637
|
+
) as HTMLElement;
|
638
|
+
if (!tableContent) {
|
639
|
+
return;
|
640
|
+
}
|
641
|
+
|
642
|
+
// 计算 table-content 在 dom 中的位置
|
643
|
+
const tableContentTop = offset(tableContent).top;
|
644
|
+
const viewportHeight = window.innerHeight;
|
645
|
+
// 有时候会拿不到 footToolbar?
|
646
|
+
const footToolbarHeight = footToolbar ? offset(footToolbar).height : 0;
|
647
|
+
// 有时候会拿不到 footToolbar,等一下在执行
|
648
|
+
if (!footToolbarHeight && footerToolbar && footerToolbar.length) {
|
649
|
+
setTimeout(() => {
|
650
|
+
this.updateAutoFillHeight();
|
651
|
+
}, 100);
|
652
|
+
return;
|
653
|
+
}
|
654
|
+
const tableContentWrapMarginButtom = getStyleNumber(
|
655
|
+
tableContentWrap,
|
656
|
+
'margin-bottom'
|
657
|
+
);
|
658
|
+
|
659
|
+
// 循环计算父级节点的 pddding,这里不考虑父级节点还可能会有其它兄弟节点的情况了
|
660
|
+
let allParentPaddingButtom = 0;
|
661
|
+
let parentNode = tableContent.parentElement;
|
662
|
+
while (parentNode) {
|
663
|
+
const paddingButtom = getStyleNumber(parentNode, 'padding-bottom');
|
664
|
+
const borderBottom = getStyleNumber(parentNode, 'border-bottom-width');
|
665
|
+
allParentPaddingButtom =
|
666
|
+
allParentPaddingButtom + paddingButtom + borderBottom;
|
667
|
+
parentNode = parentNode.parentElement;
|
668
|
+
}
|
669
|
+
|
670
|
+
tableContent.style.height = `${
|
671
|
+
viewportHeight -
|
672
|
+
tableContentTop -
|
673
|
+
tableContentWrapMarginButtom -
|
674
|
+
footToolbarHeight -
|
675
|
+
allParentPaddingButtom
|
676
|
+
}px`;
|
610
677
|
}
|
611
678
|
|
612
679
|
componentDidUpdate(prevProps: TableProps) {
|
@@ -692,6 +759,7 @@ export default class Table extends React.Component<TableProps, object> {
|
|
692
759
|
const parent = this.parentNode;
|
693
760
|
parent && parent.removeEventListener('scroll', this.affixDetect);
|
694
761
|
window.removeEventListener('resize', this.affixDetect);
|
762
|
+
window.removeEventListener('resize', this.updateAutoFillHeight);
|
695
763
|
(this.updateTableInfoLazy as any).cancel();
|
696
764
|
this.unSensor && this.unSensor();
|
697
765
|
|
@@ -881,7 +949,7 @@ export default class Table extends React.Component<TableProps, object> {
|
|
881
949
|
}
|
882
950
|
|
883
951
|
affixDetect() {
|
884
|
-
if (!this.props.affixHeader || !this.table) {
|
952
|
+
if (!this.props.affixHeader || !this.table || this.props.autoFillHeight) {
|
885
953
|
return;
|
886
954
|
}
|
887
955
|
|
@@ -2381,7 +2449,10 @@ export default class Table extends React.Component<TableProps, object> {
|
|
2381
2449
|
} else {
|
2382
2450
|
if ((column as TplSchema).tpl) {
|
2383
2451
|
sheetRow.getCell(columIndex).value = removeHTMLTag(
|
2384
|
-
filter(
|
2452
|
+
filter(
|
2453
|
+
(column as TplSchema).tpl,
|
2454
|
+
createObject(data, row.data)
|
2455
|
+
)
|
2385
2456
|
);
|
2386
2457
|
} else {
|
2387
2458
|
sheetRow.getCell(columIndex).value = value;
|
@@ -2584,39 +2655,6 @@ export default class Table extends React.Component<TableProps, object> {
|
|
2584
2655
|
: footerNode || toolbarNode || null;
|
2585
2656
|
}
|
2586
2657
|
|
2587
|
-
renderItemActions() {
|
2588
|
-
const {itemActions, render, store, classnames: cx} = this.props;
|
2589
|
-
const finalActions = Array.isArray(itemActions)
|
2590
|
-
? itemActions.filter(action => !action.hiddenOnHover)
|
2591
|
-
: [];
|
2592
|
-
|
2593
|
-
if (!finalActions.length) {
|
2594
|
-
return null;
|
2595
|
-
}
|
2596
|
-
|
2597
|
-
return (
|
2598
|
-
<ItemActionsWrapper store={store} classnames={cx}>
|
2599
|
-
<div className={cx('Table-itemActions')}>
|
2600
|
-
{finalActions.map((action, index) =>
|
2601
|
-
render(
|
2602
|
-
`itemAction/${index}`,
|
2603
|
-
{
|
2604
|
-
...(action as any),
|
2605
|
-
isMenuItem: true
|
2606
|
-
},
|
2607
|
-
{
|
2608
|
-
key: index,
|
2609
|
-
item: store.hoverRow,
|
2610
|
-
data: store.hoverRow!.locals,
|
2611
|
-
rowIndex: store.hoverRow!.index
|
2612
|
-
}
|
2613
|
-
)
|
2614
|
-
)}
|
2615
|
-
</div>
|
2616
|
-
</ItemActionsWrapper>
|
2617
|
-
);
|
2618
|
-
}
|
2619
|
-
|
2620
2658
|
renderTableContent() {
|
2621
2659
|
const {
|
2622
2660
|
classnames: cx,
|
@@ -2631,8 +2669,11 @@ export default class Table extends React.Component<TableProps, object> {
|
|
2631
2669
|
prefixRow,
|
2632
2670
|
locale,
|
2633
2671
|
affixRow,
|
2672
|
+
tableContentClassName,
|
2634
2673
|
translate,
|
2635
|
-
itemAction
|
2674
|
+
itemAction,
|
2675
|
+
autoFillHeight,
|
2676
|
+
itemActions
|
2636
2677
|
} = this.props;
|
2637
2678
|
|
2638
2679
|
// 理论上来说 store.rows 应该也行啊
|
@@ -2643,9 +2684,13 @@ export default class Table extends React.Component<TableProps, object> {
|
|
2643
2684
|
<TableContent
|
2644
2685
|
tableClassName={cx(
|
2645
2686
|
store.combineNum > 0 ? 'Table-table--withCombine' : '',
|
2687
|
+
{'Table-table--checkOnItemClick': checkOnItemClick},
|
2646
2688
|
tableClassName
|
2647
2689
|
)}
|
2690
|
+
className={tableContentClassName}
|
2691
|
+
itemActions={itemActions}
|
2648
2692
|
itemAction={itemAction}
|
2693
|
+
store={store}
|
2649
2694
|
classnames={cx}
|
2650
2695
|
columns={store.filteredColumns}
|
2651
2696
|
columnsGroup={store.columnGroup}
|
@@ -2681,6 +2726,7 @@ export default class Table extends React.Component<TableProps, object> {
|
|
2681
2726
|
store,
|
2682
2727
|
classnames: cx,
|
2683
2728
|
affixColumns,
|
2729
|
+
autoFillHeight,
|
2684
2730
|
autoGenerateFilter
|
2685
2731
|
} = this.props;
|
2686
2732
|
|
@@ -2697,7 +2743,8 @@ export default class Table extends React.Component<TableProps, object> {
|
|
2697
2743
|
return (
|
2698
2744
|
<div
|
2699
2745
|
className={cx('Table', className, {
|
2700
|
-
'Table--unsaved': !!store.modified || !!store.moved
|
2746
|
+
'Table--unsaved': !!store.modified || !!store.moved,
|
2747
|
+
'Table--autoFillHeight': autoFillHeight
|
2701
2748
|
})}
|
2702
2749
|
>
|
2703
2750
|
{autoGenerateFilter ? this.renderAutoFilterForm() : null}
|
@@ -2734,7 +2781,6 @@ export default class Table extends React.Component<TableProps, object> {
|
|
2734
2781
|
: null}
|
2735
2782
|
</div>
|
2736
2783
|
{this.renderTableContent()}
|
2737
|
-
{store.hoverRow ? this.renderItemActions() : null}
|
2738
2784
|
</div>
|
2739
2785
|
{this.renderAffixHeader(tableClassName)}
|
2740
2786
|
{footer}
|
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/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;
|
@@ -176,7 +177,7 @@ export const ServiceStore = iRendererStore
|
|
176
177
|
|
177
178
|
json.data &&
|
178
179
|
self.updateData(
|
179
|
-
json.data,
|
180
|
+
normalizeApiResponseData(json.data),
|
180
181
|
undefined,
|
181
182
|
!!(api as ApiObject).replaceData
|
182
183
|
);
|
@@ -264,7 +265,7 @@ export const ServiceStore = iRendererStore
|
|
264
265
|
|
265
266
|
json.data &&
|
266
267
|
self.updateData(
|
267
|
-
json.data,
|
268
|
+
normalizeApiResponseData(json.data),
|
268
269
|
undefined,
|
269
270
|
!!(api as ApiObject).replaceData
|
270
271
|
);
|
@@ -406,7 +407,7 @@ export const ServiceStore = iRendererStore
|
|
406
407
|
: {
|
407
408
|
type: 'wrapper',
|
408
409
|
wrap: false,
|
409
|
-
...json.data
|
410
|
+
...normalizeApiResponseData(json.data)
|
410
411
|
};
|
411
412
|
self.schemaKey = '' + Date.now();
|
412
413
|
isObject(json.data.data) &&
|
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
|
|
@@ -61,6 +63,23 @@ export function buildApi(
|
|
61
63
|
};
|
62
64
|
api.method = (api.method || (options as any).method || 'get').toLowerCase();
|
63
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
|
+
|
64
83
|
if (!data) {
|
65
84
|
return api;
|
66
85
|
} else if (
|
@@ -144,23 +163,6 @@ export function buildApi(
|
|
144
163
|
}
|
145
164
|
}
|
146
165
|
|
147
|
-
if (api.headers) {
|
148
|
-
api.headers = dataMapping(api.headers, data, undefined, false);
|
149
|
-
}
|
150
|
-
|
151
|
-
if (api.requestAdaptor && typeof api.requestAdaptor === 'string') {
|
152
|
-
api.requestAdaptor = str2function(api.requestAdaptor, 'api') as any;
|
153
|
-
}
|
154
|
-
|
155
|
-
if (api.adaptor && typeof api.adaptor === 'string') {
|
156
|
-
api.adaptor = str2function(
|
157
|
-
api.adaptor,
|
158
|
-
'payload',
|
159
|
-
'response',
|
160
|
-
'api'
|
161
|
-
) as any;
|
162
|
-
}
|
163
|
-
|
164
166
|
return api;
|
165
167
|
}
|
166
168
|
|
@@ -197,7 +199,7 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
|
|
197
199
|
let hasStatusField = true;
|
198
200
|
|
199
201
|
if (!data) {
|
200
|
-
throw new Error('Response is empty
|
202
|
+
throw new Error('Response is empty');
|
201
203
|
}
|
202
204
|
|
203
205
|
// 兼容几种常见写法
|
@@ -265,7 +267,8 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
|
|
265
267
|
}
|
266
268
|
|
267
269
|
export function wrapFetcher(
|
268
|
-
fn: (config: fetcherConfig) => Promise<fetcherResult
|
270
|
+
fn: (config: fetcherConfig) => Promise<fetcherResult>,
|
271
|
+
tracker?: (eventTrack: EventTrack, data: any) => void
|
269
272
|
): (api: Api, data: object, options?: object) => Promise<Payload | void> {
|
270
273
|
return function (api, data, options) {
|
271
274
|
api = buildApi(api, data, options) as ApiObject;
|
@@ -295,6 +298,11 @@ export function wrapFetcher(
|
|
295
298
|
api.headers['Content-Type'] = 'application/json';
|
296
299
|
}
|
297
300
|
|
301
|
+
tracker?.(
|
302
|
+
{eventType: 'api', eventData: omit(api, ['config', 'data', 'body'])},
|
303
|
+
api.data
|
304
|
+
);
|
305
|
+
|
298
306
|
if (typeof api.cache === 'number' && api.cache > 0) {
|
299
307
|
const apiCache = getApiCache(api);
|
300
308
|
return wrapAdaptor(
|
@@ -469,4 +477,16 @@ export function clearApiCache() {
|
|
469
477
|
apiCaches.splice(0, apiCaches.length);
|
470
478
|
}
|
471
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
|
+
|
472
492
|
// window.apiCaches = apiCaches;
|
package/src/utils/dom.tsx
CHANGED
@@ -267,3 +267,15 @@ export function calculatePosition(
|
|
267
267
|
activePlacement
|
268
268
|
};
|
269
269
|
}
|
270
|
+
|
271
|
+
/**
|
272
|
+
* 专门用来获取样式的像素值,默认返回 0
|
273
|
+
*/
|
274
|
+
export function getStyleNumber(element: HTMLElement, styleName: string) {
|
275
|
+
if (!element) {
|
276
|
+
return 0;
|
277
|
+
}
|
278
|
+
return (
|
279
|
+
parseInt(getComputedStyle(element).getPropertyValue(styleName), 10) || 0
|
280
|
+
);
|
281
|
+
}
|
package/src/utils/helper.ts
CHANGED
@@ -16,6 +16,14 @@ import {
|
|
16
16
|
} from './tpl-builtin';
|
17
17
|
import {isObservable} from 'mobx';
|
18
18
|
|
19
|
+
export function isMobile() {
|
20
|
+
return (window as any).matchMedia?.('(max-width: 768px)').matches;
|
21
|
+
}
|
22
|
+
|
23
|
+
export function range(num: number, min: number, max: number): number {
|
24
|
+
return Math.min(Math.max(num, min), max);
|
25
|
+
}
|
26
|
+
|
19
27
|
// 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
|
20
28
|
export function createObject(
|
21
29
|
superProps?: {[propName: string]: any},
|
package/src/utils/icon.tsx
CHANGED
package/dump.rdb
DELETED
Binary file
|