@riil-frontend/component-page-config
Version:
page config components,include components list,component attribute panel and page canvas
191 lines (179 loc) • 5.21 kB
JavaScript
import _Box from "@alifd/next/es/box";
import _Button from "@alifd/next/es/button";
import _Icon from "@alifd/next/es/icon";
import _Select from "@alifd/next/es/select";
import _NumberPicker from "@alifd/next/es/number-picker";
import _Dialog from "@alifd/next/es/dialog";
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
import React from 'react';
import './ColEdit.scss';
import { MAX5, MIN5, TOTAL } from './constant';
var ColEdit = function ColEdit(props) {
var onChange = props.onChange,
value = props.value,
validator = props.validator,
other = _objectWithoutPropertiesLoose(props, ["onChange", "value", "validator"]);
var onChangeInner = function onChangeInner(newValue) {
onChange(newValue);
};
var onInputChange = function onInputChange(val, index) {
var newValue = value.map(function (item, idx) {
if (index === idx) {
return _extends({}, item, {
span: val
});
} else {
return item;
}
});
onChangeInner(newValue);
}; // const onInputChange = (val, index) => {
// let sum = value.reduce((pre, cur, idx) => {
// if (index === idx) {
// return pre + val;
// }
// return pre + cur.span;
// }, 0);
// let count = sum - 24;
// const newValue = value.map((item, idx) => {
// if (index === idx) {
// return { ...item, span: val };
// } else if (idx > index) {
// let _value = item.span - count;
// if (_value < 1) {
// count = count - (item.span - 1);
// _value = 1;
// } else {
// count = 0;
// }
// return { ...item, span: _value };
// } else {
// return item;
// }
// });
// onChangeInner(newValue);
// };
var addOne = function addOne() {
var newOne = {
span: 6,
direction: 'row',
widgets: []
};
onChangeInner(averageCol([].concat(value, [newOne])));
};
var deleteOne = function deleteOne(index) {
_Dialog.confirm({
title: '删除',
content: '删除列会同时删除内部组件,是否继续?',
messageProps: {
type: 'warning'
},
onOk: function onOk() {
onChangeInner(averageCol(value.filter(function (item, idx) {
return idx != index;
})));
}
});
};
var onSelectChange = function onSelectChange(val, index) {
var newValue = value.map(function (item, idx) {
if (index === idx) {
return _extends({}, item, {
direction: val
});
} else {
return item;
}
});
onChangeInner(newValue);
};
/**
* 均分栅格方法
* @param {array} val
* @returns
*/
var averageCol = function averageCol(val) {
var len = val.length;
if (len === 5) {
return val.map(function (item, index) {
if (index === 4) {
return _extends({}, item, {
span: MIN5
});
} else {
return _extends({}, item, {
span: MAX5
});
}
});
} else {
return val.map(function (item) {
return _extends({}, item, {
span: TOTAL / len
});
});
}
};
var addBtnDisabled = value.length >= 6;
var delBtnDisabled = value.length === 1;
return /*#__PURE__*/React.createElement(_Box, {
direction: "column",
spacing: 12,
className: "col-edit-wrap"
}, value.map(function (item, index) {
return /*#__PURE__*/React.createElement(_Box, {
key: 'form-' + index,
direction: "column",
spacing: 8
}, /*#__PURE__*/React.createElement(_Box, {
direction: "row",
spacing: 8,
align: "center",
justify: "flex-start"
}, /*#__PURE__*/React.createElement("span", {
style: {
fontSize: 12
}
}, "\u5217" + (index + 1)), /*#__PURE__*/React.createElement(_NumberPicker, {
className: "col-edit-number-picker",
max: TOTAL,
min: 1,
value: item.span,
onChange: function onChange(val) {
return onInputChange(val, index);
}
}), /*#__PURE__*/React.createElement(_Select, {
value: item.direction,
onChange: function onChange(val) {
onSelectChange(val, index);
},
followTrigger: true,
autoWidth: false
}, /*#__PURE__*/React.createElement(_Select.Option, {
value: "row"
}, "\u5DE6\u53F3\u5C55\u793A\u591A\u7EC4\u4EF6"), /*#__PURE__*/React.createElement(_Select.Option, {
value: "column"
}, "\u4E0A\u4E0B\u663E\u793A\u591A\u7EC4\u4EF6")), /*#__PURE__*/React.createElement(_Button, {
text: true,
onClick: function onClick() {
deleteOne(index);
},
style: {
lineHeight: 0
},
disabled: delBtnDisabled
}, /*#__PURE__*/React.createElement(_Icon, {
type: "ashbin"
}))));
}), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_Button, {
onClick: addOne,
style: {
padding: '0 8px'
},
disabled: addBtnDisabled
}, /*#__PURE__*/React.createElement(_Icon, {
type: "add"
}))));
};
export default ColEdit;