/**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     $pattern = Html::escapeJsRegularExpression($this->pattern);
     $options = ['pattern' => new JsExpression($pattern), 'not' => $this->not, 'message' => Leaps::$app->getI18n()->format($this->message, ['attribute' => $model->getAttributeLabel($attribute)], Leaps::$app->language)];
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     ValidationAsset::register($view);
     return 'leaps.validation.regularExpression(value, messages, ' . Json::htmlEncode($options) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     if ($this->filter !== 'trim') {
         return null;
     }
     $options = [];
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     ValidationAsset::register($view);
     return 'value = leaps.validation.trim($form, attribute, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     $options = ['trueValue' => $this->trueValue, 'falseValue' => $this->falseValue, 'message' => Leaps::$app->getI18n()->format($this->message, ['attribute' => $model->getAttributeLabel($attribute), 'true' => $this->trueValue, 'false' => $this->falseValue], Leaps::$app->language)];
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     if ($this->strict) {
         $options['strict'] = 1;
     }
     ValidationAsset::register($view);
     return 'leaps.validation.boolean(value, messages, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     $options = [];
     if ($this->requiredValue !== null) {
         $options['message'] = Leaps::$app->getI18n()->format($this->message, ['requiredValue' => $this->requiredValue], Leaps::$app->language);
         $options['requiredValue'] = $this->requiredValue;
     } else {
         $options['message'] = $this->message;
     }
     if ($this->strict) {
         $options['strict'] = 1;
     }
     $options['message'] = Leaps::$app->getI18n()->format($options['message'], ['attribute' => $model->getAttributeLabel($attribute)], Leaps::$app->language);
     ValidationAsset::register($view);
     return 'leaps.validation.required(value, messages, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     ValidationAsset::register($view);
     $options = $this->getClientOptions($model, $attribute);
     return 'leaps.validation.image(attribute, messages, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ', deferred);';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     if (strpos($this->pattern, '{schemes}') !== false) {
         $pattern = str_replace('{schemes}', '(' . implode('|', $this->validSchemes) . ')', $this->pattern);
     } else {
         $pattern = $this->pattern;
     }
     $options = ['pattern' => new JsExpression($pattern), 'message' => Leaps::$app->getI18n()->format($this->message, ['attribute' => $model->getAttributeLabel($attribute)], Leaps::$app->language), 'enableIDN' => (bool) $this->enableIDN];
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     if ($this->defaultScheme !== null) {
         $options['defaultScheme'] = $this->defaultScheme;
     }
     ValidationAsset::register($view);
     if ($this->enableIDN) {
         PunycodeAsset::register($view);
     }
     return 'leaps.validation.url(value, messages, ' . Json::htmlEncode($options) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     $label = $model->getAttributeLabel($attribute);
     $options = ['message' => Leaps::$app->getI18n()->format($this->message, ['attribute' => $label], Leaps::$app->language)];
     if ($this->min !== null) {
         $options['min'] = $this->min;
         $options['tooShort'] = Leaps::$app->getI18n()->format($this->tooShort, ['attribute' => $label, 'min' => $this->min], Leaps::$app->language);
     }
     if ($this->max !== null) {
         $options['max'] = $this->max;
         $options['tooLong'] = Leaps::$app->getI18n()->format($this->tooLong, ['attribute' => $label, 'max' => $this->max], Leaps::$app->language);
     }
     if ($this->length !== null) {
         $options['is'] = $this->length;
         $options['notEqual'] = Leaps::$app->getI18n()->format($this->notEqual, ['attribute' => $label, 'length' => $this->length], Leaps::$app->language);
     }
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     ValidationAsset::register($view);
     return 'leaps.validation.string(value, messages, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($object, $attribute, $view)
 {
     $captcha = $this->createCaptchaAction();
     $code = $captcha->getVerifyCode(false);
     $hash = $captcha->generateValidationHash($this->caseSensitive ? $code : strtolower($code));
     $options = ['hash' => $hash, 'hashKey' => 'leapsCaptcha/' . $this->captchaAction, 'caseSensitive' => $this->caseSensitive, 'message' => Leaps::$app->getI18n()->format($this->message, ['attribute' => $object->getAttributeLabel($attribute)], Leaps::$app->language)];
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     ValidationAsset::register($view);
     return 'leaps.validation.captcha(value, messages, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     $label = $model->getAttributeLabel($attribute);
     $options = ['pattern' => new JsExpression($this->integerOnly ? $this->integerPattern : $this->numberPattern), 'message' => Leaps::$app->getI18n()->format($this->message, ['attribute' => $label], Leaps::$app->language)];
     if ($this->min !== null) {
         $options['min'] = is_string($this->min) ? (double) $this->min : $this->min;
         $options['tooSmall'] = Leaps::$app->getI18n()->format($this->tooSmall, ['attribute' => $label, 'min' => $this->min], Leaps::$app->language);
     }
     if ($this->max !== null) {
         $options['max'] = is_string($this->max) ? (double) $this->max : $this->max;
         $options['tooBig'] = Leaps::$app->getI18n()->format($this->tooBig, ['attribute' => $label, 'max' => $this->max], Leaps::$app->language);
     }
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     ValidationAsset::register($view);
     return 'leaps.validation.number(value, messages, ' . Json::htmlEncode($options) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     $options = ['pattern' => new JsExpression($this->pattern), 'fullPattern' => new JsExpression($this->fullPattern), 'allowName' => $this->allowName, 'message' => Leaps::$app->getI18n()->format($this->message, ['attribute' => $model->getAttributeLabel($attribute)], Leaps::$app->language), 'enableIDN' => (bool) $this->enableIDN];
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     ValidationAsset::register($view);
     if ($this->enableIDN) {
         PunycodeAsset::register($view);
     }
     return 'leaps.validation.email(value, messages, ' . Json::htmlEncode($options) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     $options = ['operator' => $this->operator, 'type' => $this->type];
     if ($this->compareValue !== null) {
         $options['compareValue'] = $this->compareValue;
         $compareValue = $this->compareValue;
     } else {
         $compareAttribute = $this->compareAttribute === null ? $attribute . '_repeat' : $this->compareAttribute;
         $compareValue = $model->getAttributeLabel($compareAttribute);
         $options['compareAttribute'] = Html::getInputId($model, $compareAttribute);
     }
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     $options['message'] = Leaps::$app->getI18n()->format($this->message, ['attribute' => $model->getAttributeLabel($attribute), 'compareAttribute' => $compareValue, 'compareValue' => $compareValue], Leaps::$app->language);
     ValidationAsset::register($view);
     return 'leaps.validation.compare(value, messages, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ');';
 }
 /**
  * @inheritdoc
  */
 public function clientValidateAttribute($model, $attribute, $view)
 {
     $range = [];
     foreach ($this->range as $value) {
         $range[] = (string) $value;
     }
     $options = ['range' => $range, 'not' => $this->not, 'message' => Leaps::$app->getI18n()->format($this->message, ['attribute' => $model->getAttributeLabel($attribute)], Leaps::$app->language)];
     if ($this->skipOnEmpty) {
         $options['skipOnEmpty'] = 1;
     }
     if ($this->allowArray) {
         $options['allowArray'] = 1;
     }
     ValidationAsset::register($view);
     return 'leaps.validation.range(value, messages, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ');';
 }