From 8220c352d416eab22b8a9fc8c6211a4326ece6a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Vodi=C4=8Dka?= Date: Thu, 11 Jul 2024 15:55:47 +0200 Subject: [PATCH 01/24] new layout --- src/Form.php | 8 +++ src/control/Checkbox.php | 2 +- src/control/RadioList.php | 132 ++++++++++++++++++++++++++++++++++- src/control/SubmitButton.php | 2 +- src/enum/RadioEnum.php | 10 +++ src/helper/CoreList.php | 2 +- 6 files changed, 151 insertions(+), 5 deletions(-) create mode 100644 src/enum/RadioEnum.php diff --git a/src/Form.php b/src/Form.php index 456088a..e3c7606 100644 --- a/src/Form.php +++ b/src/Form.php @@ -304,6 +304,14 @@ public function addDate(string $name, $label = null): Control\DateTimeInput } + public function addDateWeek(string $name, $label = null): Control\DateTimeInput + { + return $this[$name] = (new Control\TextInput($label)) + ->setHtmlAttribute('type', week); + } + + + public function addDateTime(string $name, $label = null, bool $withSeconds = false): Control\DateTimeInput { $dateInput = new Control\DateTimeInput($label, DateTimeControl::TypeDateTime, $withSeconds); diff --git a/src/control/Checkbox.php b/src/control/Checkbox.php index ec297a7..14fe658 100644 --- a/src/control/Checkbox.php +++ b/src/control/Checkbox.php @@ -72,7 +72,7 @@ public function getCoreControl(): string|Html } else { - $inputClass = 'form-check-input' . ($this->color ? ' checkbox-' . $this->color : null); + $inputClass = 'form-check-input' . ($this->color ? ' ' . $this->color : null); $labelClass = 'form-check-label'; $labelAttribute = 'width: auto'; } diff --git a/src/control/RadioList.php b/src/control/RadioList.php index 3c8410d..4c1ce8d 100644 --- a/src/control/RadioList.php +++ b/src/control/RadioList.php @@ -5,6 +5,7 @@ namespace ModulIS\Form\Control; use ModulIS\Form\Helper; +use Nette\Utils\Html; class RadioList extends \Nette\Forms\Controls\RadioList implements Renderable, Signalable, \Nette\Application\UI\SignalReceiver { @@ -19,7 +20,134 @@ class RadioList extends \Nette\Forms\Controls\RadioList implements Renderable, S use Helper\WrapControl; use Helper\RenderInline; use Helper\ControlClass; - use Helper\RenderBasic; + use Helper\RenderBasic + { + render as public baseRender; + } use Helper\Signals; use Helper\ToggleButton; -} + + private bool $big = false; + + + public function setBig(bool $big = true): self + { + $this->big = $big; + + return $this; + } + + + /** + * @param class-string $enumClass + */ + public function setValuesFromEnum(string $enumClass): self + { + $this->setItems($enumClass::getList()); + + $this->setTooltips($enumClass::getDescription()); + + return $this; + } + + + public function render(): Html|string + { + if(!$this->big) + { + return $this->baseRender(); + } + + if($this->getOption('hide') || $this->autoRenderSkip) + { + return ''; + } + + $wrap = Html::el('div') + ->class('btn-group row w-100'); + + foreach($this->getItems() as $case => $caseString) + { + if(isset($this->tooltips[$case])) + { + $tooltip = Html::el('p') + ->class('mb-0 text-muted') + ->addText($this->tooltips[$case]); + } + else + { + $tooltip = null; + } + + $input = $this->getControlPart($case); + + $currentClass = $input->getAttribute('class') ? ' ' . $input->getAttribute('class') : null; + + $input->class('btn-check z-1 top-50 start-0 ms-4 round-16 position-relative' . $currentClass); + + $labelString = Html::el('h6') + ->class('fs-4 fw-semibold mb-0') + ->addText($caseString); + + $labelStringWrap = Html::el('div') + ->class('text-start ps-2') + ->addHtml($labelString) + ->addHtml($tooltip); + + $color = $this->color ?: 'primary'; + + $label = Html::el('label') + ->class("btn btn-outline-$color mb-0 p-3 rounded ps-5 w-100") + ->for($input->id) + ->addHtml($labelStringWrap); + + $inputLabelWrap = Html::el('div') + ->class('position-relative col-lg-' . 12 / $this->itemsPerRow . ' ' . $this->itemClass) + ->addHtml($input) + ->addHtml($label); + + $wrap->addHtml($inputLabelWrap); + } + + $validationFeedBack = ''; + $validationClass = ''; + $cardClass = ''; + + $form = $this->getForm(); + \assert($form instanceof \ModulIS\Form\Form); + + if($form->isAnchored() && $form->isSubmitted()) + { + if($this->hasErrors()) + { + $cardClass = ' border-danger'; + $validationClass = ' is-invalid'; + $validationFeedBack = Html::el('div') + ->class('invalid-feedback') + ->addHtml($this->getError()); + } + elseif($this->getValidationSuccessMessage()) + { + $cardClass = ' border-success'; + $validationClass = ' is-valid'; + $validationFeedBack = Html::el('div') + ->class('valid-feedback') + ->addHtml($this->getValidationSuccessMessage()); + } + } + + $mainLabel = Html::el('h6') + ->class('mb-3 fw-semibold fs-4' . $validationClass) + ->addHtml($this->getLabel()); + + $cardBody = Html::el('div') + ->class('card-body p-4') + ->addHtml($mainLabel) + ->addHtml($wrap) + ->addHtml($validationFeedBack); + + return Html::el('div') + ->class('btn-group-active card shadow-none border' . $cardClass . $this->inputClass) + ->addHtml($cardBody); + } +} \ No newline at end of file diff --git a/src/control/SubmitButton.php b/src/control/SubmitButton.php index 86372dd..3e8dfc7 100644 --- a/src/control/SubmitButton.php +++ b/src/control/SubmitButton.php @@ -22,7 +22,7 @@ public function getCoreControl(): Html $button = Html::el('button') ->name($this->getName()) - ->class('btn ' . $input->getAttribute('class') . ' btn-' . $color) + ->class('btn rounded-pill px-4 ' . $input->getAttribute('class') . ' btn-' . $color) ->type('submit') ->formnovalidate(true) ->addHtml($this->icon ? \Kravcik\LatteFontAwesomeIcon\Extension::render($this->icon) . ' ' : '') diff --git a/src/enum/RadioEnum.php b/src/enum/RadioEnum.php new file mode 100644 index 0000000..65f62f9 --- /dev/null +++ b/src/enum/RadioEnum.php @@ -0,0 +1,10 @@ +getControlPart($key); - $inputColorClass = $this->color ? ' checkbox-' . $this->color : null; + $inputColorClass = $this->color ? ' ' . $this->color : null; $currentClass = $input->getAttribute('class') ? ' ' . $input->getAttribute('class') : null; From 0a9c3e1b16ac30d6cb1e3df96c3e0b961ece3478 Mon Sep 17 00:00:00 2001 From: KrejciFili <91294159+KrejciFili@users.noreply.github.com> Date: Fri, 2 Aug 2024 13:53:24 +0200 Subject: [PATCH 02/24] Update RadioList.php --- src/control/RadioList.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/control/RadioList.php b/src/control/RadioList.php index 4c1ce8d..18f949d 100644 --- a/src/control/RadioList.php +++ b/src/control/RadioList.php @@ -76,7 +76,7 @@ public function render(): Html|string } else { - $tooltip = null; + $tooltip = ''; } $input = $this->getControlPart($case); @@ -150,4 +150,4 @@ public function render(): Html|string ->class('btn-group-active card shadow-none border' . $cardClass . $this->inputClass) ->addHtml($cardBody); } -} \ No newline at end of file +} From 67427bfc475a98d5a295f1ed9237227ed203ccab Mon Sep 17 00:00:00 2001 From: KrejciFili <91294159+KrejciFili@users.noreply.github.com> Date: Wed, 7 Aug 2024 11:19:26 +0200 Subject: [PATCH 03/24] Update RadioList.php --- src/control/RadioList.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/control/RadioList.php b/src/control/RadioList.php index 18f949d..9feeeb1 100644 --- a/src/control/RadioList.php +++ b/src/control/RadioList.php @@ -26,6 +26,7 @@ class RadioList extends \Nette\Forms\Controls\RadioList implements Renderable, S } use Helper\Signals; use Helper\ToggleButton; + use Helper\WrapControl; private bool $big = false; @@ -137,7 +138,7 @@ public function render(): Html|string } $mainLabel = Html::el('h6') - ->class('mb-3 fw-semibold fs-4' . $validationClass) + ->class('mb-3 fw-semibold fs-4' . $validationClass . ' ' . $this->labelClass) ->addHtml($this->getLabel()); $cardBody = Html::el('div') From 47ba9cf5ce2eed6bf039cecbeab5b23a65b828dc Mon Sep 17 00:00:00 2001 From: KrejciFili <91294159+KrejciFili@users.noreply.github.com> Date: Thu, 8 Aug 2024 11:39:49 +0200 Subject: [PATCH 04/24] Update WrapControl.php --- src/helper/WrapControl.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/helper/WrapControl.php b/src/helper/WrapControl.php index 64949d9..0a3258b 100644 --- a/src/helper/WrapControl.php +++ b/src/helper/WrapControl.php @@ -25,6 +25,12 @@ public function setLabelWrapClass(string $class): self } + public function getLabelWrapClass(): ?string + { + return $this->labelClass; + } + + public function setInputWrapClass(string $class): self { $this->inputClass = $class; @@ -33,6 +39,12 @@ public function setInputWrapClass(string $class): self } + public function getInputWrapClass(): ?string + { + return $this->inputClass; + } + + public function setRowClass(string $class): self { $this->rowClass = $class; From 40ddd461b4b0cf2fb9a49a5eb6782ebad701f4c0 Mon Sep 17 00:00:00 2001 From: KrejciFili <91294159+KrejciFili@users.noreply.github.com> Date: Thu, 15 Aug 2024 10:36:33 +0200 Subject: [PATCH 05/24] Update RadioList.php --- src/control/RadioList.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/control/RadioList.php b/src/control/RadioList.php index 9feeeb1..66c799a 100644 --- a/src/control/RadioList.php +++ b/src/control/RadioList.php @@ -39,6 +39,14 @@ public function setBig(bool $big = true): self } + public function setItemsColor(string $color): self + { + $this->color = $color; + + return $this; + } + + /** * @param class-string $enumClass */ From dbf1d64e3ed79494e4b30f576c6c434f0bc96010 Mon Sep 17 00:00:00 2001 From: KrejciFili <91294159+KrejciFili@users.noreply.github.com> Date: Thu, 15 Aug 2024 11:59:15 +0200 Subject: [PATCH 06/24] Update basic.latte --- tests/InputTest/ContainerTest/basic.latte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/InputTest/ContainerTest/basic.latte b/tests/InputTest/ContainerTest/basic.latte index 7b7d532..559e310 100644 --- a/tests/InputTest/ContainerTest/basic.latte +++ b/tests/InputTest/ContainerTest/basic.latte @@ -12,6 +12,6 @@ - + \ No newline at end of file From 2844e252078a597393ef328f5ff51938a1fd3d66 Mon Sep 17 00:00:00 2001 From: KrejciFili <91294159+KrejciFili@users.noreply.github.com> Date: Thu, 15 Aug 2024 12:02:09 +0200 Subject: [PATCH 07/24] Update card.latte --- tests/InputTest/ContainerTest/card.latte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/InputTest/ContainerTest/card.latte b/tests/InputTest/ContainerTest/card.latte index b47da09..e24349c 100644 --- a/tests/InputTest/ContainerTest/card.latte +++ b/tests/InputTest/ContainerTest/card.latte @@ -19,7 +19,7 @@ From a53830b18cfec47633846228148a36266314f5fd Mon Sep 17 00:00:00 2001 From: KrejciFili <91294159+KrejciFili@users.noreply.github.com> Date: Sun, 18 Aug 2024 11:04:45 +0200 Subject: [PATCH 08/24] Update Checkbox.php --- src/control/Checkbox.php | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/control/Checkbox.php b/src/control/Checkbox.php index 14fe658..589db2b 100644 --- a/src/control/Checkbox.php +++ b/src/control/Checkbox.php @@ -24,6 +24,10 @@ class Checkbox extends \Nette\Forms\Controls\Checkbox implements Renderable, Sig private ?string $inputClass = null; + private ?string $labelClass = null; + + private ?string $checkboxClass = null; + private ?string $wrapClass = null; @@ -49,6 +53,21 @@ public function setInputWrapClass(string $class): self } + public function setLabelWrapClass(string $class): self + { + $this->labelClass = $class; + + return $this; + } + + public function setCheckboxWrapClass(string $class): self + { + $this->checkboxClass = $class; + + return $this; + } + + public function setWrapClass(string $class): self { $this->wrapClass = $class; @@ -77,6 +96,8 @@ public function getCoreControl(): string|Html $labelAttribute = 'width: auto'; } + $labelClass = $this->labelClass ? $labelClass . ' ' . $this->labelClass : $labelClass; + $input->class($inputClass . ' ' . $input->getAttribute('class') . ($validationClass ? ' ' . $validationClass : null)); if($this instanceof \ModulIS\Form\Control\Signalable && $this->hasSignal()) @@ -91,9 +112,10 @@ public function getCoreControl(): string|Html ->addHtml($this->caption); $switchClass = $this->switch ? ' form-switch' : null; + $checkboxClass = $this->checkboxClass ? ' ' . $this->checkboxClass : null; $wrapDiv = Html::el('div') - ->class('form-check' . $switchClass) + ->class('form-check' . $switchClass . $checkboxClass) ->addHtml($input . $label); if($this->tooltip) From 75e25581966451b2a45bfc6406bc5f6bb967ca7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Vodi=C4=8Dka?= Date: Mon, 19 Aug 2024 10:44:46 +0200 Subject: [PATCH 09/24] fix CI --- src/Container.php | 7 +++++++ src/Form.php | 4 ++-- src/control/RadioList.php | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Container.php b/src/Container.php index 87db818..bcb7d5b 100644 --- a/src/Container.php +++ b/src/Container.php @@ -152,6 +152,13 @@ public function addDateTime(string $name, $label = null, bool $withSeconds = fal } + public function addDateWeek(string $name, $label = null): Control\TextInput + { + return $this[$name] = (new Control\TextInput($label)) + ->setHtmlAttribute('type', 'week'); + } + + public function addTime(string $name, $label = null, bool $withSeconds = false): Control\DateTimeInput { return $this[$name] = (new Control\DateTimeInput($label, DateTimeControl::TypeTime, $withSeconds)) diff --git a/src/Form.php b/src/Form.php index e3c7606..9b13b4c 100644 --- a/src/Form.php +++ b/src/Form.php @@ -304,10 +304,10 @@ public function addDate(string $name, $label = null): Control\DateTimeInput } - public function addDateWeek(string $name, $label = null): Control\DateTimeInput + public function addDateWeek(string $name, $label = null): Control\TextInput { return $this[$name] = (new Control\TextInput($label)) - ->setHtmlAttribute('type', week); + ->setHtmlAttribute('type', 'week'); } diff --git a/src/control/RadioList.php b/src/control/RadioList.php index 66c799a..744bc62 100644 --- a/src/control/RadioList.php +++ b/src/control/RadioList.php @@ -48,7 +48,7 @@ public function setItemsColor(string $color): self /** - * @param class-string $enumClass + * @param class-string<\BackedEnum&\ModulIS\Form\Enum\RadioEnum> $enumClass */ public function setValuesFromEnum(string $enumClass): self { From 46a38b961979c8a1ed5ec65fe3b1b98688ff8abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Vodi=C4=8Dka?= Date: Mon, 19 Aug 2024 10:47:43 +0200 Subject: [PATCH 10/24] cs --- composer.lock | 336 ++++++++++++++++++++------------------ src/Form.php | 1 - src/control/Checkbox.php | 1 + src/control/RadioList.php | 2 +- src/enum/RadioEnum.php | 2 + 5 files changed, 178 insertions(+), 164 deletions(-) diff --git a/composer.lock b/composer.lock index 9e9f374..c975bc0 100644 --- a/composer.lock +++ b/composer.lock @@ -59,37 +59,38 @@ }, { "name": "latte/latte", - "version": "v3.0.16", + "version": "v3.0.18", "source": { "type": "git", "url": "https://github.com/nette/latte.git", - "reference": "0984953d961123075e95a9fa33ec4c4f4de266d2" + "reference": "fca0a3eddd70213201b3b3abec0cb8dde7bbc259" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/latte/zipball/0984953d961123075e95a9fa33ec4c4f4de266d2", - "reference": "0984953d961123075e95a9fa33ec4c4f4de266d2", + "url": "https://api.github.com/repos/nette/latte/zipball/fca0a3eddd70213201b3b3abec0cb8dde7bbc259", + "reference": "fca0a3eddd70213201b3b3abec0cb8dde7bbc259", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "php": "8.0 - 8.3" + "php": "8.0 - 8.4" }, "conflict": { "nette/application": "<3.1.7", "nette/caching": "<3.1.4" }, "require-dev": { - "nette/php-generator": "^3.6 || ^4.0", - "nette/tester": "^2.0", - "nette/utils": "^3.0", + "nette/php-generator": "^4.0", + "nette/tester": "^2.5", + "nette/utils": "^4.0", "phpstan/phpstan": "^1", - "tracy/tracy": "^2.3" + "tracy/tracy": "^2.10" }, "suggest": { "ext-fileinfo": "to use filter |datastream", "ext-iconv": "to use filters |reverse, |substring", + "ext-intl": "to use Latte\\Engine::setLocale()", "ext-mbstring": "to use filters like lower, upper, capitalize, ...", "nette/php-generator": "to use tag {templatePrint}", "nette/utils": "to use filter |webalize" @@ -138,9 +139,9 @@ ], "support": { "issues": "https://github.com/nette/latte/issues", - "source": "https://github.com/nette/latte/tree/v3.0.16" + "source": "https://github.com/nette/latte/tree/v3.0.18" }, - "time": "2024-05-14T09:54:10+00:00" + "time": "2024-08-06T07:58:55+00:00" }, { "name": "nette/application", @@ -298,23 +299,23 @@ }, { "name": "nette/forms", - "version": "v3.2.3", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/nette/forms.git", - "reference": "441926313d3f7ef78e9bc6996661310ae6f1c2f7" + "reference": "e61535036669a78bcafb061dcfa46da827fcf377" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/forms/zipball/441926313d3f7ef78e9bc6996661310ae6f1c2f7", - "reference": "441926313d3f7ef78e9bc6996661310ae6f1c2f7", + "url": "https://api.github.com/repos/nette/forms/zipball/e61535036669a78bcafb061dcfa46da827fcf377", + "reference": "e61535036669a78bcafb061dcfa46da827fcf377", "shasum": "" }, "require": { "nette/component-model": "^3.1", "nette/http": "^3.3", "nette/utils": "^4.0.4", - "php": "8.1 - 8.3" + "php": "8.1 - 8.4" }, "conflict": { "latte/latte": ">=3.0.0 <3.0.12 || >=3.1" @@ -369,9 +370,9 @@ ], "support": { "issues": "https://github.com/nette/forms/issues", - "source": "https://github.com/nette/forms/tree/v3.2.3" + "source": "https://github.com/nette/forms/tree/v3.2.4" }, - "time": "2024-05-05T15:02:00+00:00" + "time": "2024-08-05T23:11:27+00:00" }, { "name": "nette/http", @@ -589,20 +590,20 @@ }, { "name": "nette/utils", - "version": "v4.0.4", + "version": "v4.0.5", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", - "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", "shasum": "" }, "require": { - "php": ">=8.0 <8.4" + "php": "8.0 - 8.4" }, "conflict": { "nette/finder": "<3", @@ -669,38 +670,46 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.4" + "source": "https://github.com/nette/utils/tree/v4.0.5" }, - "time": "2024-01-17T16:50:36+00:00" + "time": "2024-08-07T15:39:19+00:00" } ], "packages-dev": [ { "name": "composer/pcre", - "version": "3.1.3", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" + "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "url": "https://api.github.com/repos/composer/pcre/zipball/ea4ab6f9580a4fd221e0418f2c357cdd39102a90", + "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, + "conflict": { + "phpstan/phpstan": "<1.11.8" + }, "require-dev": { - "phpstan/phpstan": "^1.3", + "phpstan/phpstan": "^1.11.8", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { "branch-alias": { "dev-main": "3.x-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -728,7 +737,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.3" + "source": "https://github.com/composer/pcre/tree/3.2.0" }, "funding": [ { @@ -744,20 +753,20 @@ "type": "tidelift" } ], - "time": "2024-03-19T10:26:25+00:00" + "time": "2024-07-25T09:36:02+00:00" }, { "name": "composer/semver", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", "shasum": "" }, "require": { @@ -809,7 +818,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "source": "https://github.com/composer/semver/tree/3.4.2" }, "funding": [ { @@ -825,7 +834,7 @@ "type": "tidelift" } ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2024-07-12T11:35:52+00:00" }, { "name": "composer/xdebug-handler", @@ -1268,16 +1277,16 @@ }, { "name": "modul-is/coding-standard", - "version": "v4.2.3", + "version": "v4.2.5", "source": { "type": "git", "url": "https://github.com/modul-is/coding-standard.git", - "reference": "b7809b681696d6e14d16b24e560d488116ac3a2d" + "reference": "03bedecded57de75bb4f480e55844e19c6c2a1cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/modul-is/coding-standard/zipball/b7809b681696d6e14d16b24e560d488116ac3a2d", - "reference": "b7809b681696d6e14d16b24e560d488116ac3a2d", + "url": "https://api.github.com/repos/modul-is/coding-standard/zipball/03bedecded57de75bb4f480e55844e19c6c2a1cd", + "reference": "03bedecded57de75bb4f480e55844e19c6c2a1cd", "shasum": "" }, "require": { @@ -1305,26 +1314,26 @@ ], "support": { "issues": "https://github.com/modul-is/coding-standard/issues", - "source": "https://github.com/modul-is/coding-standard/tree/v4.2.3" + "source": "https://github.com/modul-is/coding-standard/tree/v4.2.5" }, - "time": "2024-01-22T14:34:03+00:00" + "time": "2024-07-23T14:57:12+00:00" }, { "name": "nette/tester", - "version": "v2.5.2", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/nette/tester.git", - "reference": "328d7b64579cdbc82e0e01d92ea9c58b9cf0a327" + "reference": "ee0a4b8402a8c1831db547ec0a56d18196906b51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tester/zipball/328d7b64579cdbc82e0e01d92ea9c58b9cf0a327", - "reference": "328d7b64579cdbc82e0e01d92ea9c58b9cf0a327", + "url": "https://api.github.com/repos/nette/tester/zipball/ee0a4b8402a8c1831db547ec0a56d18196906b51", + "reference": "ee0a4b8402a8c1831db547ec0a56d18196906b51", "shasum": "" }, "require": { - "php": ">=8.0 <8.4" + "php": "8.0 - 8.3" }, "require-dev": { "ext-simplexml": "*", @@ -1380,22 +1389,22 @@ ], "support": { "issues": "https://github.com/nette/tester/issues", - "source": "https://github.com/nette/tester/tree/v2.5.2" + "source": "https://github.com/nette/tester/tree/v2.5.3" }, - "time": "2024-01-08T11:41:26+00:00" + "time": "2024-06-18T18:44:12+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.0", + "version": "1.29.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", "shasum": "" }, "require": { @@ -1427,22 +1436,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" }, - "time": "2024-05-06T12:04:23+00:00" + "time": "2024-05-31T08:52:43+00:00" }, { "name": "phpstan/phpstan", - "version": "1.11.1", + "version": "1.11.10", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "e524358f930e41a2b4cca1320e3b04fc26b39e0b" + "reference": "640410b32995914bde3eed26fa89552f9c2c082f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e524358f930e41a2b4cca1320e3b04fc26b39e0b", - "reference": "e524358f930e41a2b4cca1320e3b04fc26b39e0b", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/640410b32995914bde3eed26fa89552f9c2c082f", + "reference": "640410b32995914bde3eed26fa89552f9c2c082f", "shasum": "" }, "require": { @@ -1487,25 +1496,25 @@ "type": "github" } ], - "time": "2024-05-15T08:00:59+00:00" + "time": "2024-08-08T09:02:50+00:00" }, { "name": "phpstan/phpstan-nette", - "version": "1.3.0", + "version": "1.3.6", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-nette.git", - "reference": "8af94743efcc6d1e685f2ffd7ab279e39c96429c" + "reference": "ea836536487f46d10bb17b0245d6d6c0f332793d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-nette/zipball/8af94743efcc6d1e685f2ffd7ab279e39c96429c", - "reference": "8af94743efcc6d1e685f2ffd7ab279e39c96429c", + "url": "https://api.github.com/repos/phpstan/phpstan-nette/zipball/ea836536487f46d10bb17b0245d6d6c0f332793d", + "reference": "ea836536487f46d10bb17b0245d6d6c0f332793d", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.11.10" }, "conflict": { "nette/application": "<2.3.0", @@ -1523,7 +1532,7 @@ "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/phpstan-phpunit": "^1.0", "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "~9.5.28" }, "type": "phpstan-extension", "extra": { @@ -1546,9 +1555,9 @@ "description": "Nette Framework class reflection extension for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-nette/issues", - "source": "https://github.com/phpstan/phpstan-nette/tree/1.3.0" + "source": "https://github.com/phpstan/phpstan-nette/tree/1.3.6" }, - "time": "2024-04-20T06:40:32+00:00" + "time": "2024-08-08T08:27:49+00:00" }, { "name": "psr/cache", @@ -1886,16 +1895,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.0", + "version": "3.10.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "57e09801c2fbae2d257b8b75bebb3deeb7e9deb2" + "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/57e09801c2fbae2d257b8b75bebb3deeb7e9deb2", - "reference": "57e09801c2fbae2d257b8b75bebb3deeb7e9deb2", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/86e5f5dd9a840c46810ebe5ff1885581c42a3017", + "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017", "shasum": "" }, "require": { @@ -1962,20 +1971,20 @@ "type": "open_collective" } ], - "time": "2024-05-20T08:11:32+00:00" + "time": "2024-07-21T23:26:44+00:00" }, { "name": "symfony/console", - "version": "v6.4.7", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f" + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", + "url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc", + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc", "shasum": "" }, "require": { @@ -2040,7 +2049,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.7" + "source": "https://github.com/symfony/console/tree/v6.4.10" }, "funding": [ { @@ -2056,7 +2065,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-07-26T12:30:32+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2127,16 +2136,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d84384f3f67de3cb650db64d685d70395dacfc3f" + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d84384f3f67de3cb650db64d685d70395dacfc3f", - "reference": "d84384f3f67de3cb650db64d685d70395dacfc3f", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b", + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b", "shasum": "" }, "require": { @@ -2187,7 +2196,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.8" }, "funding": [ { @@ -2203,7 +2212,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -2283,23 +2292,25 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.7", + "version": "v6.4.9", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "78dde75f8f6dbbca4ec436a4b0087f7af02076d4" + "reference": "b51ef8059159330b74a4d52f68e671033c0fe463" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/78dde75f8f6dbbca4ec436a4b0087f7af02076d4", - "reference": "78dde75f8f6dbbca4ec436a4b0087f7af02076d4", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b51ef8059159330b74a4d52f68e671033c0fe463", + "reference": "b51ef8059159330b74a4d52f68e671033c0fe463", "shasum": "" }, "require": { "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/process": "^5.4|^6.4" + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" }, "type": "library", "autoload": { @@ -2327,7 +2338,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.7" + "source": "https://github.com/symfony/filesystem/tree/v6.4.9" }, "funding": [ { @@ -2343,20 +2354,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-06-28T09:49:33+00:00" }, { "name": "symfony/finder", - "version": "v6.4.7", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "511c48990be17358c23bf45c5d71ab85d40fb764" + "reference": "af29198d87112bebdd397bd7735fbd115997824c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/511c48990be17358c23bf45c5d71ab85d40fb764", - "reference": "511c48990be17358c23bf45c5d71ab85d40fb764", + "url": "https://api.github.com/repos/symfony/finder/zipball/af29198d87112bebdd397bd7735fbd115997824c", + "reference": "af29198d87112bebdd397bd7735fbd115997824c", "shasum": "" }, "require": { @@ -2391,7 +2402,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.7" + "source": "https://github.com/symfony/finder/tree/v6.4.10" }, "funding": [ { @@ -2407,20 +2418,20 @@ "type": "tidelift" } ], - "time": "2024-04-23T10:36:43+00:00" + "time": "2024-07-24T07:06:38+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "9a3c92b490716ba6771f5beced13c6eda7183eed" + "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/9a3c92b490716ba6771f5beced13c6eda7183eed", - "reference": "9a3c92b490716ba6771f5beced13c6eda7183eed", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22ab9e9101ab18de37839074f8a1197f55590c1b", + "reference": "22ab9e9101ab18de37839074f8a1197f55590c1b", "shasum": "" }, "require": { @@ -2458,7 +2469,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.4.7" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.8" }, "funding": [ { @@ -2474,20 +2485,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "reference": "0424dff1c58f028c451efff2045f5d92410bd540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540", "shasum": "" }, "require": { @@ -2537,7 +2548,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" }, "funding": [ { @@ -2553,20 +2564,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", "shasum": "" }, "require": { @@ -2615,7 +2626,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" }, "funding": [ { @@ -2631,20 +2642,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", "shasum": "" }, "require": { @@ -2696,7 +2707,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" }, "funding": [ { @@ -2712,20 +2723,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", "shasum": "" }, "require": { @@ -2776,7 +2787,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" }, "funding": [ { @@ -2792,20 +2803,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", "shasum": "" }, "require": { @@ -2856,7 +2867,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" }, "funding": [ { @@ -2872,20 +2883,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", "shasum": "" }, "require": { @@ -2932,7 +2943,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" }, "funding": [ { @@ -2948,20 +2959,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/process", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "cdb1c81c145fd5aa9b0038bab694035020943381" + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/cdb1c81c145fd5aa9b0038bab694035020943381", - "reference": "cdb1c81c145fd5aa9b0038bab694035020943381", + "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5", + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5", "shasum": "" }, "require": { @@ -2993,7 +3004,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.7" + "source": "https://github.com/symfony/process/tree/v6.4.8" }, "funding": [ { @@ -3009,7 +3020,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/service-contracts", @@ -3096,16 +3107,16 @@ }, { "name": "symfony/stopwatch", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "ffec95ba269e541eb2232126c0c20f83086b5c68" + "reference": "63e069eb616049632cde9674c46957819454b8aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/ffec95ba269e541eb2232126c0c20f83086b5c68", - "reference": "ffec95ba269e541eb2232126c0c20f83086b5c68", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/63e069eb616049632cde9674c46957819454b8aa", + "reference": "63e069eb616049632cde9674c46957819454b8aa", "shasum": "" }, "require": { @@ -3138,7 +3149,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.7" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.8" }, "funding": [ { @@ -3154,20 +3165,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/string", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63" + "reference": "ea272a882be7f20cad58d5d78c215001617b7f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07", + "reference": "ea272a882be7f20cad58d5d78c215001617b7f07", "shasum": "" }, "require": { @@ -3181,6 +3192,7 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { + "symfony/emoji": "^7.1", "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", @@ -3224,7 +3236,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.7" + "source": "https://github.com/symfony/string/tree/v7.1.3" }, "funding": [ { @@ -3240,7 +3252,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-07-22T10:25:37+00:00" } ], "aliases": [], diff --git a/src/Form.php b/src/Form.php index 9b13b4c..7f9a6bb 100644 --- a/src/Form.php +++ b/src/Form.php @@ -311,7 +311,6 @@ public function addDateWeek(string $name, $label = null): Control\TextInput } - public function addDateTime(string $name, $label = null, bool $withSeconds = false): Control\DateTimeInput { $dateInput = new Control\DateTimeInput($label, DateTimeControl::TypeDateTime, $withSeconds); diff --git a/src/control/Checkbox.php b/src/control/Checkbox.php index 589db2b..6bb59e6 100644 --- a/src/control/Checkbox.php +++ b/src/control/Checkbox.php @@ -60,6 +60,7 @@ public function setLabelWrapClass(string $class): self return $this; } + public function setCheckboxWrapClass(string $class): self { $this->checkboxClass = $class; diff --git a/src/control/RadioList.php b/src/control/RadioList.php index 744bc62..81291a7 100644 --- a/src/control/RadioList.php +++ b/src/control/RadioList.php @@ -42,7 +42,7 @@ public function setBig(bool $big = true): self public function setItemsColor(string $color): self { $this->color = $color; - + return $this; } diff --git a/src/enum/RadioEnum.php b/src/enum/RadioEnum.php index 65f62f9..92ddbbc 100644 --- a/src/enum/RadioEnum.php +++ b/src/enum/RadioEnum.php @@ -1,5 +1,7 @@ Date: Thu, 22 Aug 2024 09:02:09 +0200 Subject: [PATCH 11/24] radio list id --- src/control/RadioList.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/control/RadioList.php b/src/control/RadioList.php index 81291a7..bbce834 100644 --- a/src/control/RadioList.php +++ b/src/control/RadioList.php @@ -150,12 +150,18 @@ public function render(): Html|string ->addHtml($this->getLabel()); $cardBody = Html::el('div') - ->class('card-body p-4') - ->addHtml($mainLabel) - ->addHtml($wrap) + ->class('card-body p-4'); + + if($this->getLabel()->getText()) + { + $cardBody->addHtml($mainLabel); + } + + $cardBody->addHtml($wrap) ->addHtml($validationFeedBack); return Html::el('div') + ->id($this->options['id'] ?? null) ->class('btn-group-active card shadow-none border' . $cardClass . $this->inputClass) ->addHtml($cardBody); } From 0cc421c385470eb21b87d52814fc2588298aafdd Mon Sep 17 00:00:00 2001 From: krumld Date: Mon, 2 Sep 2024 13:49:45 +0200 Subject: [PATCH 12/24] #84 required css --- src/css/form.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/css/form.css b/src/css/form.css index 27456c6..47b8712 100644 --- a/src/css/form.css +++ b/src/css/form.css @@ -392,4 +392,10 @@ input[type="checkbox"]:checked.checkbox-navy-dark, input[type="radio"]:checked.c .form-floating > .chosen-container + label { padding-top: 0.5rem; +} + +label.required::after +{ + color: #cc1d24; + content: " ★"; } \ No newline at end of file From 2648669339d153c08a6d82c48ad2f618ccbdb828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Vodi=C4=8Dka?= Date: Tue, 3 Sep 2024 09:58:32 +0200 Subject: [PATCH 13/24] deprecated --- src/Container.php | 10 +++++----- src/Form.php | 31 +++++-------------------------- src/FormComponent.php | 2 +- src/control/Duplicator.php | 24 +++++++----------------- src/control/MultiWhisperer.php | 2 +- 5 files changed, 19 insertions(+), 50 deletions(-) diff --git a/src/Container.php b/src/Container.php index bcb7d5b..8bbc265 100644 --- a/src/Container.php +++ b/src/Container.php @@ -119,7 +119,7 @@ public function addEmail(string $name, $label = null): Control\TextInput { return $this[$name] = (new Control\TextInput($label)) ->setRequired(false) - ->addRule(Form::EMAIL); + ->addRule(Form::Email); } @@ -128,7 +128,7 @@ public function addInteger(string $name, $label = null): Control\TextInput return $this[$name] = (new Control\TextInput($label)) ->setNullable() ->setRequired(false) - ->addRule(Form::INTEGER); + ->addRule(Form::Integer); } @@ -253,7 +253,7 @@ public function addDuplicator($name, $factory, $copyNumber = 1, $forceDefault = public function addWhisperer(string $name, $label = null, array $items = []): Control\Whisperer { return $this[$name] = (new Control\Whisperer($label, isset($items['']) ? $items : ['' => ''] + $items)) - ->setAttribute('data-placeholder', 'Vyberte') + ->setHtmlAttribute('data-placeholder', 'Vyberte') ->checkDefaultValue(false); } @@ -292,8 +292,8 @@ public function render(): string|Html } $rowDiv = Html::el('div') - ->class('row') - ->addHtml($inputs); + ->class('row') + ->addHtml($inputs); $cardBodyDiv = Html::el('div') ->class('card-body') diff --git a/src/Form.php b/src/Form.php index 7f9a6bb..7372122 100644 --- a/src/Form.php +++ b/src/Form.php @@ -11,30 +11,9 @@ class Form extends UIForm { - /** @deprecated use Form::GreaterEqual */ - public const GREATER_EQUAL = UIForm::MIN; + public const GreaterEqual = UIForm::Min; - /** @deprecated use Form::LessEqual */ - public const LESS_EQUAL = UIForm::MAX; - - /** @deprecated use Form::Greater */ - public const GREATER = '\ModulIS\Form\FormValidator::greater'; - - /** @deprecated use Form::Less */ - public const LESS = 'ModulIS\Form\FormValidator::less'; - - /** @deprecated use Form::SameLength */ - public const SAME_LENGTH = 'ModulIS\Form\FormValidator::sameLength'; - - /** @deprecated use Form::validateRC */ - public const VALIDATE_RC = 'ModulIS\Form\FormValidator::validateRC'; - - /** @deprecated use Form::validateIC */ - public const VALIDATE_IC = 'ModulIS\Form\FormValidator::validateIC'; - - public const GreaterEqual = UIForm::MIN; - - public const LessEqual = UIForm::MAX; + public const LessEqual = UIForm::Max; public const Greater = '\ModulIS\Form\FormValidator::greater'; @@ -439,7 +418,7 @@ public function addDependentMultiSelect(string $name, $label = null, array $pare public function addWhisperer(string $name, $label = null, array $items = []): Control\Whisperer { return $this[$name] = (new Control\Whisperer($label, isset($items['']) ? $items : ['' => ''] + $items)) - ->setAttribute('data-placeholder', 'Vyberte') + ->setHtmlAttribute('data-placeholder', 'Vyberte') ->checkDefaultValue(false); } @@ -457,8 +436,8 @@ public function addDuplicator($name, $factory, $copyNumber = 1, $forceDefault = public function addMultiWhisperer(string $name, $label = null, array $items = null): Control\MultiWhisperer { return $this[$name] = (new Control\MultiWhisperer($label, isset($items['']) ? $items : ['' => ''] + $items)) - ->setAttribute('class', 'form-control-chosen') - ->setAttribute('data-placeholder', 'Vyberte'); + ->setHtmlAttribute('class', 'form-control-chosen') + ->setHtmlAttribute('data-placeholder', 'Vyberte'); } diff --git a/src/FormComponent.php b/src/FormComponent.php index 7e8e8ed..bcca1a6 100644 --- a/src/FormComponent.php +++ b/src/FormComponent.php @@ -63,7 +63,7 @@ protected function getLatteName(string $path): string */ public function __call($name, $arguments) { - if(\Nette\Utils\Strings::startsWith($name, 'render')) + if(str_starts_with($name, 'render')) { $array = explode(DIRECTORY_SEPARATOR, $this->getReflection()->getFileName()); diff --git a/src/control/Duplicator.php b/src/control/Duplicator.php index 3930589..aab715e 100644 --- a/src/control/Duplicator.php +++ b/src/control/Duplicator.php @@ -43,7 +43,11 @@ class Duplicator extends \ModulIS\Form\Container implements Renderable public function __construct($factory, int $createDefault = 0, bool $forceDefault = false) { - $this->monitor(Presenter::class); + $this->monitor(Presenter::class, function() + { + $this->loadHttpData(); + $this->createDefault(); + }); $this->monitor(\Nette\Forms\Form::class); if(!self::$containerClass) @@ -69,7 +73,7 @@ public function __construct($factory, int $createDefault = 0, bool $forceDefault public function setOption(string $key, $value): self { - if ($value === null) + if($value === null) { unset($this->options[$key]); } @@ -196,20 +200,6 @@ public function setFactory($factory): void } - protected function attached($obj): void - { - parent::attached($obj); - - if(!$obj instanceof Presenter && $this->form instanceof Nette\Application\UI\Form) - { - return; - } - - $this->loadHttpData(); - $this->createDefault(); - } - - public function getContainers(?bool $recursive = false) { return $this->getComponents($recursive, \ModulIS\Form\Container::class); @@ -350,7 +340,7 @@ private function getHttpData() { if($this->httpPost === null) { - $path = explode(self::NAME_SEPARATOR, $this->lookupPath(\Nette\Forms\Form::class)); + $path = explode(self::NameSeparator, $this->lookupPath(\Nette\Forms\Form::class)); $this->httpPost = Nette\Utils\Arrays::get($this->getForm()->getHttpData(), $path, null); } diff --git a/src/control/MultiWhisperer.php b/src/control/MultiWhisperer.php index dd06151..ab910aa 100644 --- a/src/control/MultiWhisperer.php +++ b/src/control/MultiWhisperer.php @@ -30,7 +30,7 @@ public function validate(): void foreach($this->getRules() as $rule) { - if($rule->validator == \ModulIS\Form\Form::FILLED && !$this->getValue()) + if($rule->validator == \ModulIS\Form\Form::Filled && !$this->getValue()) { $this->addError(\Nette\Forms\Validator::formatMessage($rule, true), false); } From f55ee59231a9f5203ff3d1ca4f0b7acd526fa513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Krav=C4=8D=C3=ADk?= Date: Tue, 3 Sep 2024 12:07:11 +0200 Subject: [PATCH 14/24] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index cbc47b9..cc68b33 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ "nette/utils": "^4.0", "nette/forms": "^3.2.3", "nette/security": "^3.1", - "nette/application": "^3.1", + "nette/application": "^4", "kravcik/latte-font-awesome-icon": "^1" }, "require-dev": From 00bb255caa966a87dfa66952a7e7b196afd64471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Krav=C4=8D=C3=ADk?= Date: Tue, 3 Sep 2024 12:25:31 +0200 Subject: [PATCH 15/24] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index cc68b33..91bd1dd 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ "nette/utils": "^4.0", "nette/forms": "^3.2.3", "nette/security": "^3.1", - "nette/application": "^4", + "nette/application": "^3.0 || ^4.0", "kravcik/latte-font-awesome-icon": "^1" }, "require-dev": From b291e64256e474ab7ef8b9beb0f928712fa0eaa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Vodi=C4=8Dka?= Date: Tue, 3 Sep 2024 15:22:14 +0200 Subject: [PATCH 16/24] #80 + depr --- composer.json | 1 - src/control/Duplicator.php | 3 ++- src/control/Whisperer.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index cbc47b9..4f0c907 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,6 @@ "php": "^8.2", "nette/utils": "^4.0", "nette/forms": "^3.2.3", - "nette/security": "^3.1", "nette/application": "^3.1", "kravcik/latte-font-awesome-icon": "^1" }, diff --git a/src/control/Duplicator.php b/src/control/Duplicator.php index aab715e..fd9d883 100644 --- a/src/control/Duplicator.php +++ b/src/control/Duplicator.php @@ -227,7 +227,8 @@ protected function createComponent($name): ?Nette\ComponentModel\IComponent private function getFirstControlName() { - $controls = iterator_to_array($this->getComponents(false, \Nette\Forms\Control::class)); + $components = $this->getComponents(false, \Nette\Forms\Control::class); + $controls = is_array($components) ? $components : iterator_to_array($components); $firstControl = reset($controls); /* @phpstan-ignore-next-line */ return $firstControl ? $firstControl->name : null; diff --git a/src/control/Whisperer.php b/src/control/Whisperer.php index a00c413..d466657 100644 --- a/src/control/Whisperer.php +++ b/src/control/Whisperer.php @@ -313,7 +313,7 @@ private function addDividerToOption(Html $control): Html foreach($items as $item) { - if(Strings::contains($item, 'value="' . $this->dividerValue . '"')) + if(str_contains($item, 'value="' . $this->dividerValue . '"')) { $optionString .= '