<commit_before>Represents the button control. By default is being searched by the content and value (`button` by content text and `input` by `value` attribute). Handles any `input` element with `type="button"`, `type="submit"`, `type="reset"` or `button` element.

```html
<button>Save</button>
```

### Button Control

```cs
using Atata;
using _ = SampleApp.SamplePage;

namespace SampleApp
{
    public class SamplePage : Page<_>
    {
        public ButtonControl<_> Save { get; private set; }
    }
}
```
```cs
Go.To<SamplePage>().
    Save.Click();
```

### Button Delegate

It is recommended to use `Button` delegate as it simplifies the usage by refusing `Click` and `ClickAndGo` methods.

```cs
using Atata;
using _ = SampleApp.SamplePage;

namespace SampleApp
{
    public class SamplePage : Page<_>
    {
        public Button<_> Save { get; private set; }
    }
}
```
```cs
Go.To<SamplePage>().
    Save();
```

As it is a delegate type, the use of `Should`, `Content` and `IsEnabled` properties should be performed like methods (extensions), e.g. `Save.Should().Exist()`.
{:class="warning"}

Supports `[GoTemporarily]` settings attribute.
{:class="info"}<commit_msg>Update button component<commit_after>Represents the button control. By default is being searched by the content and value (`button` by content text and `input` by `value` attribute). Handles any `input` element with `type="button"`, `type="submit"`, `type="reset"` or `button` element.

```html
<button>Save</button>
```

Supports `[GoTemporarily]` settings attribute.
{:class="info"}

### Button Control

```cs
using Atata;
using _ = SampleApp.SamplePage;

namespace SampleApp
{
    public class SamplePage : Page<_>
    {
        public ButtonControl<_> Save { get; private set; }
    }
}
```
```cs
Go.To<SamplePage>().
    Save.Click();
```

### Button Delegate

It is recommended to use `Button` delegate as it simplifies the usage by refusing `Click` and `ClickAndGo` methods.

```cs
using Atata;
using _ = SampleApp.SamplePage;

namespace SampleApp
{
    public class SamplePage : Page<_>
    {
        public Button<_> Save { get; private set; }
    }
}
```
```cs
Go.To<SamplePage>().
    Save();
```

As it is a delegate type, the use of `Should`, `Content` and `IsEnabled` properties should be performed like methods (extensions), e.g. `Save.Should().Exist()`.
{:class="warning"}

### Navigation

It is possible to pass another gereric argument of `PageObject` type, meaning that after the click the navigation to this `PageObject` should be performed. Works the same way for the control and delegate.

```cs
using Atata;
using _ = SampleApp.SamplePage1;

namespace SampleApp
{
    public class SamplePage1 : Page<_>
    {
        public Button<SamplePage2, _> Save { get; private set; }
    }
}
```
```cs
using Atata;
using _ = SampleApp.SamplePage2;

namespace SampleApp
{
    public class SamplePage2 : Page<_>
    {
        public ButtonControl<SamplePage1, _> GoBack { get; private set; }
    }
}
```
```cs
Go.To<SamplePage1>().
    Save().
        GoBack.ClickAndGo();
```

Note that `Save` delegate property is being used as the method that returns the instance of `SamplePage2` class. But for `GoBack` property it is needed to call `ClickAndGo` method as it is a property of `ButtonControl` class type.
{:class="info"}
{'fraction_non_alphanumeric': 0.13431934802293993, 'fraction_numerical': 0.0024147298520977964, 'mean_word_length': 4.036474164133739, 'pattern_counts': {'":': 0, '<': 24, '<?xml version=': 0, '>': 24, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2337077', 'n_tokens_mistral': 1042, 'n_tokens_neox': 998, 'n_words': 364}