Commit 91af8307571161df3ee7cea77ecf608c8653ce87
1 parent
d88eaac5
优化Textarea组件
Showing
3 changed files
with
62 additions
and
85 deletions
Show diff stats
build/Textarea/Textarea.js
1 | -/** | ||
2 | - * 多行文本框 | ||
3 | - */ | ||
4 | import template from "./Textarea.html"; | 1 | import template from "./Textarea.html"; |
5 | import style from "antd/lib/input/style/index.css"; | 2 | import style from "antd/lib/input/style/index.css"; |
6 | -angular.module("esNgAntd").directive("antdTextarea", function () { | ||
7 | - return { | ||
8 | - controllerAs: "antdTextarea", | ||
9 | - restrict: "E", | ||
10 | - transclude: true, | ||
11 | - replace: true, | ||
12 | - scope: { | ||
13 | - context: "=", | ||
14 | - showCount: "@", | ||
15 | - maxLength: "@", | ||
16 | - placeholder: "@", | ||
17 | - onChange: "&", | ||
18 | - value: "@", | ||
19 | - }, | ||
20 | - template: template, | ||
21 | - controller: function ($scope, $element, $attrs) { | ||
22 | - this.getContext = function () { | ||
23 | - return $scope; | ||
24 | - }; | 3 | +angular.module("esNgAntd").directive("antdTextarea", ["esNgAntd", function (esNgAntd) { |
4 | + return { | ||
5 | + template: template, | ||
6 | + restrict: "E", | ||
7 | + replace: true, | ||
8 | + transclude: true, | ||
9 | + scope: { | ||
10 | + value: "@", | ||
11 | + placeholder: "@", | ||
12 | + showCount: "=", | ||
13 | + maxLength: "=", | ||
14 | + onChange: "&" | ||
15 | + }, | ||
16 | + controller: function ($scope) { | ||
17 | + $scope.state = { | ||
18 | + value: $scope.value, | ||
19 | + count: 0, | ||
20 | + maxLength: $scope.maxLength || "off" | ||
21 | + }; | ||
25 | 22 | ||
26 | - $scope.state = { | ||
27 | - value: $scope.value, | ||
28 | - count: 0, | ||
29 | - maxLength: $scope.maxLength || "off", | ||
30 | - }; | 23 | + $scope.handleKeyup = function (event) { |
24 | + if (!$scope.event) { | ||
25 | + $scope.event = event; | ||
26 | + } | ||
31 | 27 | ||
32 | - $scope.handleKeyup = function (event) { | ||
33 | - if (!$scope.event) { | ||
34 | - $scope.event = event; | ||
35 | - } | 28 | + if ($scope.state.maxLength === "off") { |
29 | + return; | ||
30 | + } | ||
36 | 31 | ||
37 | - if ($scope.state.maxLength === "off") { | ||
38 | - return; | ||
39 | - } | 32 | + let target = event.target; |
33 | + $scope.state.count = target.value.length; | ||
34 | + }; | ||
40 | 35 | ||
41 | - let target = event.target; | ||
42 | - $scope.state.count = target.value.length; | ||
43 | - }; | 36 | + $scope.handleClick = function (event) { |
37 | + if (!$scope.event) { | ||
38 | + $scope.event = event; | ||
39 | + } | ||
40 | + }; | ||
44 | 41 | ||
45 | - $scope.handleClick = function (event) { | ||
46 | - if (!$scope.event) { | ||
47 | - $scope.event = event; | ||
48 | - } | ||
49 | - }; | ||
50 | - | ||
51 | - $scope.handleChange = function () { | ||
52 | - // this.props.onChange(this.state.value, this.props.context); | ||
53 | - $scope.onChange({ | ||
54 | - event: $scope.event, | ||
55 | - }); | ||
56 | - }; | ||
57 | - }, | ||
58 | - link: function ($scope, $element, $attrs, $controllers, $transclude) { | ||
59 | - if (!document.querySelector("#ant-input")) { | ||
60 | - let styleElement = document.createElement("style"); | ||
61 | - styleElement.setAttribute("id", "ant-input"); | ||
62 | - styleElement.setAttribute("type", "text/css"); | ||
63 | - styleElement.innerHTML = style.toString(); | ||
64 | - document.head.appendChild(styleElement); | ||
65 | - } | ||
66 | - }, | ||
67 | - }; | ||
68 | -}); | 42 | + $scope.handleChange = function () { |
43 | + $scope.onChange({ | ||
44 | + event: $scope.event | ||
45 | + }); | ||
46 | + }; | ||
47 | + }, | ||
48 | + link: function ($scope) { | ||
49 | + esNgAntd.createStyle("ant-input", style); | ||
50 | + } | ||
51 | + }; | ||
52 | +}]); | ||
69 | \ No newline at end of file | 53 | \ No newline at end of file |
dist/ng-antd.js
@@ -433,7 +433,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Tab | @@ -433,7 +433,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Tab | ||
433 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { | 433 | /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { |
434 | 434 | ||
435 | "use strict"; | 435 | "use strict"; |
436 | -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Textarea_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Textarea.html */ \"./build/Textarea/Textarea.html\");\n/* harmony import */ var antd_lib_input_style_index_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! antd/lib/input/style/index.css */ \"./node_modules/antd/lib/input/style/index.css\");\n/**\n * 多行文本框\n */\n\n\nangular.module(\"esNgAntd\").directive(\"antdTextarea\", function () {\n return {\n controllerAs: \"antdTextarea\",\n restrict: \"E\",\n transclude: true,\n replace: true,\n scope: {\n context: \"=\",\n showCount: \"@\",\n maxLength: \"@\",\n placeholder: \"@\",\n onChange: \"&\",\n value: \"@\",\n },\n template: _Textarea_html__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n controller: function ($scope, $element, $attrs) {\n this.getContext = function () {\n return $scope;\n };\n\n $scope.state = {\n value: $scope.value,\n count: 0,\n maxLength: $scope.maxLength || \"off\",\n };\n\n $scope.handleKeyup = function (event) {\n if (!$scope.event) {\n $scope.event = event;\n }\n\n if ($scope.state.maxLength === \"off\") {\n return;\n }\n\n let target = event.target;\n $scope.state.count = target.value.length;\n };\n\n $scope.handleClick = function (event) {\n if (!$scope.event) {\n $scope.event = event;\n }\n };\n\n $scope.handleChange = function () {\n // this.props.onChange(this.state.value, this.props.context);\n $scope.onChange({\n event: $scope.event,\n });\n };\n },\n link: function ($scope, $element, $attrs, $controllers, $transclude) {\n if (!document.querySelector(\"#ant-input\")) {\n let styleElement = document.createElement(\"style\");\n styleElement.setAttribute(\"id\", \"ant-input\");\n styleElement.setAttribute(\"type\", \"text/css\");\n styleElement.innerHTML = antd_lib_input_style_index_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].toString();\n document.head.appendChild(styleElement);\n }\n },\n };\n});\n\n\n//# sourceURL=webpack://ng-antd/./build/Textarea/Textarea.js?"); | 436 | +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Textarea_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Textarea.html */ \"./build/Textarea/Textarea.html\");\n/* harmony import */ var antd_lib_input_style_index_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! antd/lib/input/style/index.css */ \"./node_modules/antd/lib/input/style/index.css\");\n\n\nangular.module(\"esNgAntd\").directive(\"antdTextarea\", [\"esNgAntd\", function (esNgAntd) {\n return {\n template: _Textarea_html__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n restrict: \"E\",\n replace: true,\n transclude: true,\n scope: {\n value: \"@\",\n placeholder: \"@\",\n showCount: \"=\",\n maxLength: \"=\",\n onChange: \"&\"\n },\n controller: function ($scope) {\n $scope.state = {\n value: $scope.value,\n count: 0,\n maxLength: $scope.maxLength || \"off\"\n };\n\n $scope.handleKeyup = function (event) {\n if (!$scope.event) {\n $scope.event = event;\n }\n\n if ($scope.state.maxLength === \"off\") {\n return;\n }\n\n let target = event.target;\n $scope.state.count = target.value.length;\n };\n\n $scope.handleClick = function (event) {\n if (!$scope.event) {\n $scope.event = event;\n }\n };\n\n $scope.handleChange = function () {\n $scope.onChange({\n event: $scope.event\n });\n };\n },\n link: function ($scope) {\n esNgAntd.createStyle(\"ant-input\", antd_lib_input_style_index_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n }\n };\n}]);\n\n//# sourceURL=webpack://ng-antd/./build/Textarea/Textarea.js?"); |
437 | 437 | ||
438 | /***/ }), | 438 | /***/ }), |
439 | 439 |
src/Textarea/Textarea.js
1 | -/** | ||
2 | - * 多行文本框 | ||
3 | - */ | ||
4 | import template from "./Textarea.html"; | 1 | import template from "./Textarea.html"; |
5 | import style from "antd/lib/input/style/index.css"; | 2 | import style from "antd/lib/input/style/index.css"; |
6 | 3 | ||
7 | class Textarea { | 4 | class Textarea { |
8 | - props = { | ||
9 | - context: Object, | ||
10 | - showCount: Boolean, | ||
11 | - maxLength: Number, | ||
12 | - placeholder: String, | ||
13 | - onChange: Function, | ||
14 | - value: String, | ||
15 | - }; | 5 | + useModules = ["esNgAntd"]; |
16 | 6 | ||
17 | state = { | 7 | state = { |
18 | value: this.props.value, | 8 | value: this.props.value, |
@@ -20,7 +10,9 @@ class Textarea { | @@ -20,7 +10,9 @@ class Textarea { | ||
20 | maxLength: this.props.maxLength || "off", | 10 | maxLength: this.props.maxLength || "off", |
21 | }; | 11 | }; |
22 | 12 | ||
23 | - template = template; | 13 | + constructor() { |
14 | + esNgAntd.createStyle("ant-input", style); | ||
15 | + } | ||
24 | 16 | ||
25 | handleKeyup(event) { | 17 | handleKeyup(event) { |
26 | if (!this.event) { | 18 | if (!this.event) { |
@@ -40,19 +32,20 @@ class Textarea { | @@ -40,19 +32,20 @@ class Textarea { | ||
40 | } | 32 | } |
41 | 33 | ||
42 | handleChange() { | 34 | handleChange() { |
43 | - // this.props.onChange(this.state.value, this.props.context); | ||
44 | this.props.onChange({ | 35 | this.props.onChange({ |
45 | - event: this.event | ||
46 | - }) | 36 | + event: this.event, |
37 | + }); | ||
47 | } | 38 | } |
48 | 39 | ||
49 | - constructor() { | ||
50 | - if (!document.querySelector("#ant-input")) { | ||
51 | - let styleElement = document.createElement("style"); | ||
52 | - styleElement.setAttribute("id", "ant-input"); | ||
53 | - styleElement.setAttribute("type", "text/css"); | ||
54 | - styleElement.innerHTML = style.toString(); | ||
55 | - document.head.appendChild(styleElement); | ||
56 | - } | 40 | + render() { |
41 | + return template; | ||
57 | } | 42 | } |
58 | } | 43 | } |
44 | + | ||
45 | +Textarea.propTypes = { | ||
46 | + value: PropTypes.string, | ||
47 | + placeholder: PropTypes.string, | ||
48 | + showCount: PropTypes.boolean, | ||
49 | + maxLength: PropTypes.number, | ||
50 | + onChange: PropTypes.function, | ||
51 | +}; |