Textarea.js 1.17 KB
import template from "./Textarea.html";
import style from "antd/lib/input/style/index.css";
angular.module("esNgAntd").directive("antdTextarea", ["esNgAntd", function (esNgAntd) {
  return {
    template: template,
    restrict: "E",
    replace: true,
    transclude: true,
    scope: {
      value: "@",
      placeholder: "@",
      showCount: "=",
      maxLength: "=",
      onChange: "&"
    },
    controller: function ($scope) {
      $scope.state = {
        value: $scope.value,
        count: 0,
        maxLength: $scope.maxLength || "off"
      };

      $scope.handleKeyup = function (event) {
        if (!$scope.event) {
          $scope.event = event;
        }

        if ($scope.state.maxLength === "off") {
          return;
        }

        let target = event.target;
        $scope.state.count = target.value.length;
      };

      $scope.handleClick = function (event) {
        if (!$scope.event) {
          $scope.event = event;
        }
      };

      $scope.handleChange = function () {
        $scope.onChange({
          event: $scope.event
        });
      };
    },
    link: function ($scope) {
      esNgAntd.createStyle("ant-input", style);
    }
  };
}]);