1: <?php
2:
3: declare(strict_types=1);
4:
5: namespace Atk4\Ui\Js;
6:
7: use Atk4\Core\DiContainerTrait;
8: use Atk4\Ui\Form;
9:
10: class JsConditionalForm implements JsExpressionable
11: {
12: use DiContainerTrait;
13:
14: /** @var Form The form where rules should apply. */
15: public $form;
16:
17: /** @var array|null The field rules for that form. */
18: public $fieldRules;
19:
20: /** @var string The HTML class name parent for input. */
21: public $selector;
22:
23: public function __construct(Form $form, array $rules = null, string $selector = '.field')
24: {
25: $this->form = $form;
26: $this->fieldRules = $rules;
27: $this->selector = $selector;
28: }
29:
30: /**
31: * Set field rules for the form.
32: *
33: * @param array $rules
34: */
35: public function setRules($rules): void
36: {
37: $this->fieldRules = $rules;
38: }
39:
40: #[\Override]
41: public function jsRender(): string
42: {
43: $chain = (new Jquery($this->form))
44: ->atkConditionalForm([
45: 'fieldRules' => $this->fieldRules,
46: 'selector' => $this->selector,
47: ]);
48:
49: return $chain->jsRender();
50: }
51: }
52: