@power-xa/m-ui 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/ActionSheet/index.d.ts +16 -0
- package/dist/ActionSheet/index.js +79 -0
- package/dist/ActionSheet/index.less +39 -0
- package/dist/Breadcrumb/index.d.ts +14 -0
- package/dist/Breadcrumb/index.js +31 -0
- package/dist/Breadcrumb/index.less +28 -0
- package/dist/Button/index.d.ts +16 -0
- package/dist/Button/index.js +53 -0
- package/dist/Button/index.less +42 -0
- package/dist/ConfigProvider/index.d.ts +23 -0
- package/dist/ConfigProvider/index.js +41 -0
- package/dist/CreatorEdit/index.d.ts +12 -0
- package/dist/CreatorEdit/index.js +70 -0
- package/dist/CreatorEdit/index.less +41 -0
- package/dist/Drawer/index.d.ts +12 -0
- package/dist/Drawer/index.js +71 -0
- package/dist/Drawer/index.less +24 -0
- package/dist/Empty/index.d.ts +12 -0
- package/dist/Empty/index.js +18 -0
- package/dist/Empty/index.less +15 -0
- package/dist/FloatButton/index.d.ts +10 -0
- package/dist/FloatButton/index.js +60 -0
- package/dist/FloatButton/index.less +26 -0
- package/dist/Grid/index.d.ts +15 -0
- package/dist/Grid/index.js +26 -0
- package/dist/Grid/index.less +4 -0
- package/dist/PageContainer/index.d.ts +17 -0
- package/dist/PageContainer/index.js +50 -0
- package/dist/PageContainer/index.less +41 -0
- package/dist/Popup/index.d.ts +13 -0
- package/dist/Popup/index.js +65 -0
- package/dist/Popup/index.less +22 -0
- package/dist/ProForm/Field/index.d.ts +8 -0
- package/dist/ProForm/Field/index.js +33 -0
- package/dist/ProForm/Field/index.less +96 -0
- package/dist/ProForm/Form/index.d.ts +7 -0
- package/dist/ProForm/Form/index.js +145 -0
- package/dist/ProForm/Form/index.less +61 -0
- package/dist/ProForm/Group/index.d.ts +7 -0
- package/dist/ProForm/Group/index.js +73 -0
- package/dist/ProForm/Group/index.less +32 -0
- package/dist/ProForm/controls/Date/index.d.ts +3 -0
- package/dist/ProForm/controls/Date/index.js +141 -0
- package/dist/ProForm/controls/List/index.d.ts +23 -0
- package/dist/ProForm/controls/List/index.js +77 -0
- package/dist/ProForm/controls/List/index.less +53 -0
- package/dist/ProForm/controls/Select/index.d.ts +4 -0
- package/dist/ProForm/controls/Select/index.js +263 -0
- package/dist/ProForm/controls/Select/index.less +120 -0
- package/dist/ProForm/controls/Text/index.d.ts +4 -0
- package/dist/ProForm/controls/Text/index.js +29 -0
- package/dist/ProForm/controls/Text/index.less +7 -0
- package/dist/ProForm/controls/TextArea/index.d.ts +4 -0
- package/dist/ProForm/controls/TextArea/index.js +63 -0
- package/dist/ProForm/controls/TextArea/index.less +46 -0
- package/dist/ProForm/controls/Upload/index.d.ts +4 -0
- package/dist/ProForm/controls/Upload/index.js +383 -0
- package/dist/ProForm/controls/Upload/index.less +174 -0
- package/dist/ProForm/index.d.ts +9 -0
- package/dist/ProForm/index.js +5 -0
- package/dist/ProForm/typings.d.ts +164 -0
- package/dist/ProList/index.d.ts +78 -0
- package/dist/ProList/index.js +323 -0
- package/dist/ProList/index.less +318 -0
- package/dist/RefreshList/index.d.ts +17 -0
- package/dist/RefreshList/index.js +43 -0
- package/dist/RefreshList/index.less +19 -0
- package/dist/Skeleton/index.d.ts +5 -0
- package/dist/Skeleton/index.js +37 -0
- package/dist/Skeleton/index.less +7 -0
- package/dist/Tabbar/index.d.ts +13 -0
- package/dist/Tabbar/index.js +77 -0
- package/dist/Tabbar/index.less +44 -0
- package/dist/Tabs/index.d.ts +26 -0
- package/dist/Tabs/index.js +186 -0
- package/dist/Tabs/index.less +249 -0
- package/dist/assets/fonts/PingFangSC-Light.ttf +0 -0
- package/dist/assets/fonts/PingFangSC-Medium.ttf +0 -0
- package/dist/assets/fonts/PingFangSC-Regular.ttf +0 -0
- package/dist/assets/less/mixins.less +37 -0
- package/dist/global.less +0 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +27 -0
- package/dist/request/index.d.ts +8 -0
- package/dist/request/index.js +61 -0
- package/dist/services/FileController/index.d.ts +12 -0
- package/dist/services/FileController/index.js +39 -0
- package/dist/services/FileController/typings.d.ts +52 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.js +2 -0
- package/dist/services/typings.d.ts +25 -0
- package/dist/utils/tools.d.ts +33 -0
- package/dist/utils/tools.js +231 -0
- package/package.json +88 -0
|
@@ -0,0 +1,145 @@
|
|
|
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
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
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); }
|
|
7
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
+
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."); }
|
|
9
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
|
+
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; } }
|
|
12
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
|
+
import React, { cloneElement, Fragment, useCallback, useEffect, useState } from "react";
|
|
14
|
+
import { getWindowInfo, showToast } from "@tarojs/taro";
|
|
15
|
+
import { ScrollView, Text, View } from "@tarojs/components";
|
|
16
|
+
import { Button, ActionSheet } from "../..";
|
|
17
|
+
import "./index.less";
|
|
18
|
+
var ProForm = function ProForm(_ref) {
|
|
19
|
+
var children = _ref.children,
|
|
20
|
+
_ref$className = _ref.className,
|
|
21
|
+
className = _ref$className === void 0 ? "" : _ref$className,
|
|
22
|
+
_ref$initialValues = _ref.initialValues,
|
|
23
|
+
initialValues = _ref$initialValues === void 0 ? {} : _ref$initialValues,
|
|
24
|
+
onOk = _ref.onOk,
|
|
25
|
+
onDelete = _ref.onDelete,
|
|
26
|
+
onSave = _ref.onSave,
|
|
27
|
+
disabled = _ref.disabled;
|
|
28
|
+
var _getWindowInfo = getWindowInfo(),
|
|
29
|
+
safeArea = _getWindowInfo.safeArea;
|
|
30
|
+
var _ref2 = safeArea,
|
|
31
|
+
height = _ref2.height,
|
|
32
|
+
bottom = _ref2.bottom;
|
|
33
|
+
var _useState = useState([]),
|
|
34
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
+
elementList = _useState2[0],
|
|
36
|
+
setElementList = _useState2[1];
|
|
37
|
+
var _useState3 = useState({}),
|
|
38
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
39
|
+
form = _useState4[0],
|
|
40
|
+
setForm = _useState4[1];
|
|
41
|
+
useEffect(function () {
|
|
42
|
+
if (initialValues && JSON.stringify(initialValues) !== "{}") {
|
|
43
|
+
setForm(initialValues || {});
|
|
44
|
+
}
|
|
45
|
+
}, [initialValues]);
|
|
46
|
+
useEffect(function () {
|
|
47
|
+
if (children instanceof Array) {
|
|
48
|
+
setElementList(children);
|
|
49
|
+
} else {
|
|
50
|
+
setElementList([children]);
|
|
51
|
+
}
|
|
52
|
+
}, [children]);
|
|
53
|
+
var saveForm = useCallback(function () {
|
|
54
|
+
var controlList = elementList.map(function (e) {
|
|
55
|
+
return e.props.children instanceof Array ? e.props.children.map(function (c) {
|
|
56
|
+
return c.props;
|
|
57
|
+
}) : [e.props.children];
|
|
58
|
+
}).flat();
|
|
59
|
+
var requiredList = controlList.filter(function (item) {
|
|
60
|
+
var _item$rules;
|
|
61
|
+
return item.name && !item.hidden && (item.required || ((_item$rules = item.rules) === null || _item$rules === void 0 ? void 0 : _item$rules.some(function (r) {
|
|
62
|
+
return r.required;
|
|
63
|
+
})));
|
|
64
|
+
});
|
|
65
|
+
var condition = function condition(item) {
|
|
66
|
+
return form[item.name] === undefined || form[item.name] instanceof Array && !form[item.name].length;
|
|
67
|
+
};
|
|
68
|
+
if (requiredList.some(condition)) {
|
|
69
|
+
var _requiredList$find, _requiredList$find2;
|
|
70
|
+
return showToast({
|
|
71
|
+
title: ((_requiredList$find = requiredList.find(condition)) === null || _requiredList$find === void 0 || (_requiredList$find = _requiredList$find.rules) === null || _requiredList$find === void 0 || (_requiredList$find = _requiredList$find.find(function (r) {
|
|
72
|
+
return r.required;
|
|
73
|
+
})) === null || _requiredList$find === void 0 ? void 0 : _requiredList$find.message) || ((_requiredList$find2 = requiredList.find(condition)) === null || _requiredList$find2 === void 0 ? void 0 : _requiredList$find2.label) + "必填",
|
|
74
|
+
icon: "error"
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
onOk === null || onOk === void 0 || onOk(form);
|
|
78
|
+
}, [elementList, form]);
|
|
79
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
80
|
+
className: "p-pro-form-container ".concat(className)
|
|
81
|
+
}, /*#__PURE__*/React.createElement(ScrollView, {
|
|
82
|
+
className: "p-pro-form-scroll-view",
|
|
83
|
+
scrollY: true,
|
|
84
|
+
enableFlex: true,
|
|
85
|
+
enhanced: true,
|
|
86
|
+
showScrollbar: false
|
|
87
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
88
|
+
className: "p-pro-form-scroll-view-content"
|
|
89
|
+
}, elementList.map(function (e, i) {
|
|
90
|
+
return /*#__PURE__*/cloneElement(e, {
|
|
91
|
+
key: 'p-pro-form-group-' + i,
|
|
92
|
+
disabled: disabled || e.props.disabled,
|
|
93
|
+
initialValues: form,
|
|
94
|
+
onChange: function onChange(key, value) {
|
|
95
|
+
return setForm(function (form) {
|
|
96
|
+
form[key] = value;
|
|
97
|
+
return _objectSpread({}, form);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}))), (onOk || onSave || onDelete) && /*#__PURE__*/React.createElement(View, {
|
|
102
|
+
className: "p-pro-form-footer",
|
|
103
|
+
style: {
|
|
104
|
+
paddingBottom: "".concat(bottom - height > 24 ? bottom - height : 24, "rpx")
|
|
105
|
+
}
|
|
106
|
+
}, onSave || onDelete ? /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(View, {
|
|
107
|
+
className: "button-group"
|
|
108
|
+
}, onDelete && /*#__PURE__*/React.createElement(ActionSheet, {
|
|
109
|
+
options: [{
|
|
110
|
+
key: "Tips",
|
|
111
|
+
subTitle: "\u60A8\u5C06\u5220\u9664\u5F53\u524D\u6570\u636E\uFF0C\u662F\u5426\u786E\u8BA4\uFF1F"
|
|
112
|
+
}, {
|
|
113
|
+
key: "Confirm",
|
|
114
|
+
title: "确认删除",
|
|
115
|
+
danger: true,
|
|
116
|
+
onTap: function onTap() {
|
|
117
|
+
return onDelete === null || onDelete === void 0 ? void 0 : onDelete(form);
|
|
118
|
+
}
|
|
119
|
+
}]
|
|
120
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
121
|
+
className: "button danger"
|
|
122
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
123
|
+
className: "iconfont icon-icon-psp-tuichu"
|
|
124
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
125
|
+
className: "text"
|
|
126
|
+
}, "\u5220\u9664"))), onSave && /*#__PURE__*/React.createElement(View, {
|
|
127
|
+
className: "button",
|
|
128
|
+
onTap: onSave
|
|
129
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
130
|
+
className: "iconfont icon-icon-caogaoxiang"
|
|
131
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
132
|
+
className: "text"
|
|
133
|
+
}, "\u5B58\u8349\u7A3F"))), /*#__PURE__*/React.createElement(Button, {
|
|
134
|
+
color: "primary",
|
|
135
|
+
className: "save-button",
|
|
136
|
+
round: true,
|
|
137
|
+
onTap: saveForm
|
|
138
|
+
}, "\u4FDD\u5B58")) : /*#__PURE__*/React.createElement(Button, {
|
|
139
|
+
color: "primary",
|
|
140
|
+
block: true,
|
|
141
|
+
round: true,
|
|
142
|
+
onTap: saveForm
|
|
143
|
+
}, "\u4FDD\u5B58")));
|
|
144
|
+
};
|
|
145
|
+
export default ProForm;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
@import "@power-xa/m-ui/dist/assets/less/mixins.less";
|
|
2
|
+
|
|
3
|
+
.p-pro-form-container {
|
|
4
|
+
width: 100%;
|
|
5
|
+
height: 100%;
|
|
6
|
+
background: #F6F7F9;
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
|
|
10
|
+
.p-pro-form-scroll-view {
|
|
11
|
+
padding: 32px;
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
flex: 1;
|
|
14
|
+
height: 0;
|
|
15
|
+
|
|
16
|
+
.p-pro-form-scroll-view-content {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
gap: 24px;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.p-pro-form-footer {
|
|
24
|
+
padding: 24px 32px;
|
|
25
|
+
background: #fff;
|
|
26
|
+
box-sizing: border-box;
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
justify-content: space-between;
|
|
30
|
+
|
|
31
|
+
.button-group {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
gap: 24px;
|
|
35
|
+
|
|
36
|
+
.button {
|
|
37
|
+
display: flex;
|
|
38
|
+
flex-direction: column;
|
|
39
|
+
align-items: center;
|
|
40
|
+
gap: 8px;
|
|
41
|
+
|
|
42
|
+
.iconfont {
|
|
43
|
+
font-size: 28px;
|
|
44
|
+
color: #333437;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.text {
|
|
48
|
+
.font(24, #333437)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&.danger {
|
|
52
|
+
|
|
53
|
+
.iconfont,
|
|
54
|
+
.text {
|
|
55
|
+
color: #ff4d4f;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
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); }
|
|
7
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
+
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."); }
|
|
9
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
|
+
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; } }
|
|
12
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
|
+
import React, { cloneElement, useEffect, useState } from "react";
|
|
14
|
+
import { Text, View } from "@tarojs/components";
|
|
15
|
+
import { getListAssignField } from "../..";
|
|
16
|
+
import "./index.less";
|
|
17
|
+
var ProFormGroup = function ProFormGroup(_ref) {
|
|
18
|
+
var _ref$className = _ref.className,
|
|
19
|
+
className = _ref$className === void 0 ? "" : _ref$className,
|
|
20
|
+
children = _ref.children,
|
|
21
|
+
disabled = _ref.disabled,
|
|
22
|
+
initialValues = _ref.initialValues,
|
|
23
|
+
_onChange = _ref.onChange,
|
|
24
|
+
hidden = _ref.hidden,
|
|
25
|
+
tag = _ref.tag;
|
|
26
|
+
var _useState = useState([]),
|
|
27
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
28
|
+
elementList = _useState2[0],
|
|
29
|
+
setElementList = _useState2[1];
|
|
30
|
+
useEffect(function () {
|
|
31
|
+
if (children instanceof Array) {
|
|
32
|
+
setElementList(children);
|
|
33
|
+
} else {
|
|
34
|
+
setElementList([children]);
|
|
35
|
+
}
|
|
36
|
+
}, [children]);
|
|
37
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
38
|
+
className: "p-pro-form-group-container ".concat(className, " ").concat(hidden ? 'hidden' : '')
|
|
39
|
+
}, elementList.map(function (e, i) {
|
|
40
|
+
return /*#__PURE__*/cloneElement(e, {
|
|
41
|
+
key: e.props.name,
|
|
42
|
+
className: "".concat(e.props["className"], " ").concat(i === elementList.length - 1 ? 'p-pro-form-item-last' : ""),
|
|
43
|
+
disabled: disabled || e.props.disabled,
|
|
44
|
+
hidden: hidden || e.props.hidden,
|
|
45
|
+
value: initialValues === null || initialValues === void 0 ? void 0 : initialValues[e.props.name],
|
|
46
|
+
onChange: function onChange(value) {
|
|
47
|
+
var _e$props$onChange, _e$props;
|
|
48
|
+
(_e$props$onChange = (_e$props = e.props).onChange) === null || _e$props$onChange === void 0 || _e$props$onChange.call(_e$props, value);
|
|
49
|
+
_onChange === null || _onChange === void 0 || _onChange(e.props.name, value);
|
|
50
|
+
},
|
|
51
|
+
getFormValue: function getFormValue(key) {
|
|
52
|
+
return initialValues === null || initialValues === void 0 ? void 0 : initialValues[key];
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}), tag && (initialValues === null || initialValues === void 0 ? void 0 : initialValues[tag.dataIndex]) && /*#__PURE__*/React.createElement(View, {
|
|
56
|
+
className: "p-pro-form-group-tag ".concat(tag.className || ""),
|
|
57
|
+
style: _objectSpread(_objectSpread({}, tag.position), {}, {
|
|
58
|
+
backgroundColor: getListAssignField(initialValues[tag.dataIndex], tag.map, {
|
|
59
|
+
value: "value",
|
|
60
|
+
label: "background"
|
|
61
|
+
})
|
|
62
|
+
})
|
|
63
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
64
|
+
className: "p-pro-form-group-tag-text",
|
|
65
|
+
style: {
|
|
66
|
+
color: getListAssignField(initialValues[tag.dataIndex], tag.map, {
|
|
67
|
+
value: "value",
|
|
68
|
+
label: "color"
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
}, getListAssignField(initialValues[tag.dataIndex], tag.map))));
|
|
72
|
+
};
|
|
73
|
+
export default ProFormGroup;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
@import "@power-xa/m-ui/dist/assets/less/mixins.less";
|
|
2
|
+
|
|
3
|
+
.p-pro-form-group-container {
|
|
4
|
+
padding: 12px 0;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
background-color: #fff;
|
|
7
|
+
border-radius: 28px;
|
|
8
|
+
position: relative;
|
|
9
|
+
|
|
10
|
+
&>.p-pro-form-item-last {
|
|
11
|
+
border-bottom: none;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.p-pro-form-group-tag {
|
|
15
|
+
position: absolute;
|
|
16
|
+
top: 0;
|
|
17
|
+
right: 0;
|
|
18
|
+
border-radius: 0 28px 0 28px;
|
|
19
|
+
padding: 4px 22px;
|
|
20
|
+
box-sizing: border-box;
|
|
21
|
+
display: flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
|
|
24
|
+
.p-pro-form-group-tag-text {
|
|
25
|
+
.font(24)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&.hidden {
|
|
30
|
+
display: none;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
4
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
5
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
6
|
+
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."); }
|
|
7
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
8
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
9
|
+
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; } }
|
|
10
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
11
|
+
import React, { useCallback, useEffect, useState } from "react";
|
|
12
|
+
import { Picker, Text } from "@tarojs/components";
|
|
13
|
+
import { dateFormat } from "../../..";
|
|
14
|
+
import ProFormField from "../../Field";
|
|
15
|
+
var ProFormDate = function ProFormDate(props) {
|
|
16
|
+
var _props$placeholder = props.placeholder,
|
|
17
|
+
placeholder = _props$placeholder === void 0 ? "请选择" : _props$placeholder,
|
|
18
|
+
_props$format = props.format,
|
|
19
|
+
format = _props$format === void 0 ? "YYYY-MM-DD" : _props$format,
|
|
20
|
+
onChange = props.onChange,
|
|
21
|
+
_props$value = props.value,
|
|
22
|
+
value = _props$value === void 0 ? "" : _props$value,
|
|
23
|
+
disabled = props.disabled;
|
|
24
|
+
var _useState = useState(new Date().getFullYear()),
|
|
25
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
26
|
+
year = _useState2[0],
|
|
27
|
+
setYear = _useState2[1];
|
|
28
|
+
var _useState3 = useState([]),
|
|
29
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
30
|
+
range = _useState4[0],
|
|
31
|
+
setRange = _useState4[1];
|
|
32
|
+
var _useState5 = useState([]),
|
|
33
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
34
|
+
current = _useState6[0],
|
|
35
|
+
setCurrent = _useState6[1];
|
|
36
|
+
useEffect(function () {
|
|
37
|
+
getFormatRange();
|
|
38
|
+
}, []);
|
|
39
|
+
useEffect(function () {
|
|
40
|
+
if (range.length && value) {
|
|
41
|
+
var list = value.split(/[\s:-]+/);
|
|
42
|
+
list.forEach(function (v, i) {
|
|
43
|
+
var _range$i;
|
|
44
|
+
current[i] = (_range$i = range[i]) === null || _range$i === void 0 ? void 0 : _range$i.findIndex(function (r) {
|
|
45
|
+
return r.indexOf(v) >= 0;
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
setCurrent(_toConsumableArray(current));
|
|
49
|
+
}
|
|
50
|
+
}, [value]);
|
|
51
|
+
var makeStringArray = useCallback(function (number, unit, zero) {
|
|
52
|
+
return Array(number).fill(null).map(function (_, index) {
|
|
53
|
+
return "".concat((zero ? index : index + 1) > 9 ? '' : '0') + (zero ? index : index + 1) + unit;
|
|
54
|
+
});
|
|
55
|
+
}, []);
|
|
56
|
+
var getFormatRange = useCallback(function () {
|
|
57
|
+
var yearList = Array.from({
|
|
58
|
+
length: 15
|
|
59
|
+
}, function (_, i) {
|
|
60
|
+
return year - 10 + i;
|
|
61
|
+
}).map(function (y) {
|
|
62
|
+
return y + "年";
|
|
63
|
+
});
|
|
64
|
+
var range = [];
|
|
65
|
+
var currentFormat = "";
|
|
66
|
+
switch (format) {
|
|
67
|
+
case "YYYY":
|
|
68
|
+
range = [yearList];
|
|
69
|
+
currentFormat = "YYYY年";
|
|
70
|
+
break;
|
|
71
|
+
case "YYYY-MM":
|
|
72
|
+
range = [yearList, makeStringArray(12, "月")];
|
|
73
|
+
currentFormat = "YYYY年-MM月";
|
|
74
|
+
break;
|
|
75
|
+
case "YYYY-MM-DD":
|
|
76
|
+
range = [yearList, makeStringArray(12, "月"), makeStringArray(31, "日")];
|
|
77
|
+
currentFormat = "YYYY年-MM月-DD日";
|
|
78
|
+
break;
|
|
79
|
+
case "YYYY-MM-DD HH:mm":
|
|
80
|
+
range = [yearList, makeStringArray(12, "月"), makeStringArray(31, "日"), makeStringArray(24, "时", true), makeStringArray(60, "分", true)];
|
|
81
|
+
currentFormat = "YYYY年-MM月-DD日-HH时-mm分";
|
|
82
|
+
break;
|
|
83
|
+
case "HH:mm":
|
|
84
|
+
range = [makeStringArray(24, "时", true), makeStringArray(60, "分", true)];
|
|
85
|
+
currentFormat = "HH时-mm分";
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
var value = dateFormat(new Date(), currentFormat).split("-");
|
|
89
|
+
range.forEach(function (r, i) {
|
|
90
|
+
current[i] = r.indexOf(value[i]);
|
|
91
|
+
});
|
|
92
|
+
setCurrent(_toConsumableArray(current));
|
|
93
|
+
setRange(range);
|
|
94
|
+
}, []);
|
|
95
|
+
var updateRange = useCallback(function (_ref) {
|
|
96
|
+
var column = _ref.column,
|
|
97
|
+
value = _ref.value;
|
|
98
|
+
var count = year % 4 === 0 ? 29 : 28;
|
|
99
|
+
if (column === 1 || column === 0) {
|
|
100
|
+
if (column === 0) setYear(parseFloat(range[0][value]));
|
|
101
|
+
var c = current.map(function (item, index) {
|
|
102
|
+
return index > column ? 0 : index === column ? value : item;
|
|
103
|
+
});
|
|
104
|
+
var month = c[1];
|
|
105
|
+
if ([0, 2, 4, 6, 7, 9, 11].includes(month)) {
|
|
106
|
+
range[2] = makeStringArray(31, "日");
|
|
107
|
+
} else if ([3, 5, 8, 10].includes(month)) {
|
|
108
|
+
range[2] = makeStringArray(30, "日");
|
|
109
|
+
} else {
|
|
110
|
+
range[2] = makeStringArray(count, "日");
|
|
111
|
+
}
|
|
112
|
+
setRange(_toConsumableArray(range));
|
|
113
|
+
setCurrent(c);
|
|
114
|
+
}
|
|
115
|
+
}, [range, year, current]);
|
|
116
|
+
var formatValue = useCallback(function (result) {
|
|
117
|
+
var value = result.map(function (v, i) {
|
|
118
|
+
return range[i][v];
|
|
119
|
+
}).join("");
|
|
120
|
+
onChange === null || onChange === void 0 || onChange(value.replace(/年|月/g, '-').replace(/(\d+)日/, '$1 ').replace(/(\d+)时/, '$1:').replace('分', '').replace(/[-\s:]+$/, '') // 移除末尾多余的符号
|
|
121
|
+
.trim());
|
|
122
|
+
}, [range]);
|
|
123
|
+
return /*#__PURE__*/React.createElement(ProFormField, props, /*#__PURE__*/React.createElement(Picker, {
|
|
124
|
+
mode: "multiSelector",
|
|
125
|
+
range: range,
|
|
126
|
+
value: current,
|
|
127
|
+
onColumnChange: function onColumnChange(e) {
|
|
128
|
+
return format.indexOf("MM-DD") >= 0 && updateRange(e.detail);
|
|
129
|
+
},
|
|
130
|
+
onChange: function onChange(e) {
|
|
131
|
+
return formatValue(e.detail.value);
|
|
132
|
+
},
|
|
133
|
+
disabled: disabled,
|
|
134
|
+
className: "p-pro-form-item-control-picker"
|
|
135
|
+
}, value ? /*#__PURE__*/React.createElement(Text, {
|
|
136
|
+
className: "p-pro-form-item-value"
|
|
137
|
+
}, value || "-") : /*#__PURE__*/React.createElement(Text, {
|
|
138
|
+
className: "p-pro-form-item-placeholder"
|
|
139
|
+
}, placeholder)));
|
|
140
|
+
};
|
|
141
|
+
export default ProFormDate;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FC, ReactElement } from "react";
|
|
2
|
+
import { ProListProps } from "../../../ProList";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
type ProFormListProps = ProFormAPI.ProFormItemProps & ProListProps & {
|
|
5
|
+
extra?: ReactElement;
|
|
6
|
+
onAdd?: (onChange: (value: {
|
|
7
|
+
[key: string]: any;
|
|
8
|
+
}) => void, value: {
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}[]) => void;
|
|
11
|
+
onEdit?: (record: {
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
}, onChange: (value: {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}) => void) => void;
|
|
16
|
+
onItem?: (data: {
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
}) => ({
|
|
19
|
+
onTap?: () => void;
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
declare const ProFormList: FC<ProFormListProps>;
|
|
23
|
+
export default ProFormList;
|
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
|
+
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); }
|
|
8
|
+
import React, { Fragment } from "react";
|
|
9
|
+
import { Text, View } from "@tarojs/components";
|
|
10
|
+
import { ProList } from "../../..";
|
|
11
|
+
import ProFormField from "../../Field";
|
|
12
|
+
import "./index.less";
|
|
13
|
+
var ProFormList = function ProFormList(props) {
|
|
14
|
+
var extra = props.extra,
|
|
15
|
+
onAdd = props.onAdd,
|
|
16
|
+
onEdit = props.onEdit,
|
|
17
|
+
_props$value = props.value,
|
|
18
|
+
value = _props$value === void 0 ? [] : _props$value,
|
|
19
|
+
onChange = props.onChange,
|
|
20
|
+
meta = props.meta,
|
|
21
|
+
disabled = props.disabled,
|
|
22
|
+
onItem = props.onItem;
|
|
23
|
+
return /*#__PURE__*/React.createElement(ProFormField, _extends({}, props, {
|
|
24
|
+
layout: "vertical",
|
|
25
|
+
className: "p-pro-form-item-list",
|
|
26
|
+
extra: !disabled && /*#__PURE__*/React.createElement(View, {
|
|
27
|
+
className: "p-pro-form-item-header-button",
|
|
28
|
+
onTap: function onTap() {
|
|
29
|
+
return onAdd === null || onAdd === void 0 ? void 0 : onAdd(function (data) {
|
|
30
|
+
console.log(data, value);
|
|
31
|
+
onChange === null || onChange === void 0 || onChange(data instanceof Array ? data : value.concat([data]));
|
|
32
|
+
}, value);
|
|
33
|
+
}
|
|
34
|
+
}, extra || /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(View, {
|
|
35
|
+
className: "iconfont icon-icon-psp-xinjian"
|
|
36
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
37
|
+
className: "text"
|
|
38
|
+
}, "\u6DFB\u52A0")))
|
|
39
|
+
}), /*#__PURE__*/React.createElement(ProList, {
|
|
40
|
+
dataSources: value || [],
|
|
41
|
+
scrollable: false,
|
|
42
|
+
meta: _objectSpread(_objectSpread({}, meta), {}, {
|
|
43
|
+
footer: !disabled && {
|
|
44
|
+
extra: {
|
|
45
|
+
dataIndex: "id",
|
|
46
|
+
render: function render(_, item, index) {
|
|
47
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
48
|
+
className: "option-group"
|
|
49
|
+
}, !_ && /*#__PURE__*/React.createElement(View, {
|
|
50
|
+
className: "option-button",
|
|
51
|
+
onTap: function onTap(e) {
|
|
52
|
+
e.stopPropagation();
|
|
53
|
+
onEdit === null || onEdit === void 0 || onEdit(item, function (data) {
|
|
54
|
+
value.splice(index, 1, data);
|
|
55
|
+
onChange === null || onChange === void 0 || onChange(value);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
59
|
+
className: "text"
|
|
60
|
+
}, "\u7F16\u8F91")), /*#__PURE__*/React.createElement(View, {
|
|
61
|
+
className: "option-button",
|
|
62
|
+
onTap: function onTap(e) {
|
|
63
|
+
e.stopPropagation();
|
|
64
|
+
value.splice(index, 1);
|
|
65
|
+
onChange === null || onChange === void 0 || onChange(value);
|
|
66
|
+
}
|
|
67
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
68
|
+
className: "text danger"
|
|
69
|
+
}, "\u5220\u9664")));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}),
|
|
74
|
+
onItem: onItem
|
|
75
|
+
}));
|
|
76
|
+
};
|
|
77
|
+
export default ProFormList;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
@import "@power-xa/m-ui/dist/assets/less/mixins.less";
|
|
2
|
+
|
|
3
|
+
.p-pro-form-item-list {
|
|
4
|
+
.p-pro-form-item-header-button {
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: 8px;
|
|
8
|
+
|
|
9
|
+
.iconfont {
|
|
10
|
+
font-size: 24px;
|
|
11
|
+
color: #333437;
|
|
12
|
+
line-height: 34px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.text {
|
|
16
|
+
.font(24, #333437)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.p-pro-list-view-container {
|
|
21
|
+
.p-pro-list-card-container {
|
|
22
|
+
padding: 0 0 30px;
|
|
23
|
+
border-bottom: 1px solid rgba(51, 52, 55, 0.1);
|
|
24
|
+
border-radius: 0;
|
|
25
|
+
|
|
26
|
+
.p-pro-list-card-footer {
|
|
27
|
+
padding-top: 0;
|
|
28
|
+
border: none;
|
|
29
|
+
|
|
30
|
+
.option-group {
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
gap: 28px;
|
|
34
|
+
|
|
35
|
+
.option-button {
|
|
36
|
+
.text {
|
|
37
|
+
.font(24, #2c82f9);
|
|
38
|
+
|
|
39
|
+
&.danger {
|
|
40
|
+
color: #ff4d4f;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&:nth-last-of-type(1) {
|
|
48
|
+
padding: 0;
|
|
49
|
+
border-bottom: none;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|