fix: update select and multi-select options to value/label arrays

add hint to select options + update dependencies to latest
This commit is contained in:
Yassine Doghri 2024-10-16 10:57:08 +00:00
parent 65d74f14e6
commit 63f93f585b
23 changed files with 5095 additions and 6061 deletions

View File

@ -1,18 +0,0 @@
{
"env": {
"browser": true,
"es2020": true
},
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"parserOptions": {
"ecmaVersion": 11,
"sourceType": "module"
},
"rules": {}
}

View File

@ -146,7 +146,10 @@ class PersonModel extends Model
->orderBy('`full_name`', 'ASC')
->findAll(),
static function (array $result, $person): array {
$result[$person->id] = $person->full_name;
$result[] = [
'value' => $person->id,
'label' => $person->full_name,
];
return $result;
},
[],
@ -174,9 +177,11 @@ class PersonModel extends Model
if (! ($options = cache($cacheName))) {
foreach ($personsTaxonomy as $group_key => $group) {
foreach ($group['roles'] as $role_key => $role) {
$options[
"{$group_key},{$role_key}"
] = "{$group['label']} {$role['label']}";
$options[] = [
'value' => "{$group_key},
{$role_key}",
'label' => "{$group['label']} {$role['label']}",
];
}
}

View File

@ -17,32 +17,35 @@ const Select = (): void => {
noChoicesText: select.dataset.noChoicesText,
noResultsText: select.dataset.noResultsText,
classNames: {
containerOuter: "choices",
activeState: "is-active",
addChoice: ["choices__item--selectable", "add-choice"],
button: "choices__button",
containerInner: "choices__inner",
input: "choices__input",
inputCloned: "choices__input--cloned",
list: "choices__list",
listItems: "choices__list--multiple",
listSingle: "choices__list--single",
listDropdown: "choices__list--dropdown",
item: "choices__item",
itemSelectable: "choices__item--selectable",
itemDisabled: "choices__item--disabled",
itemChoice: "choices__item--choice",
placeholder: "choices__placeholder",
containerOuter: "choices",
description: "choices__description",
disabledState: "is-disabled",
flippedState: "is-flipped",
focusState: "is-focused",
group: "choices__group",
groupHeading: "choices__heading",
button: "choices__button",
activeState: "is-active",
focusState: "is-focused",
openState: "is-open",
disabledState: "is-disabled",
highlightedState: "is-highlighted",
selectedState: "is-selected",
flippedState: "is-flipped",
input: "choices__input",
inputCloned: "choices__input--cloned",
item: "choices__item",
itemChoice: "choices__item--choice",
itemDisabled: "choices__item--disabled",
itemSelectable: "choices__item--selectable",
list: "choices__list",
listDropdown: "choices__list--dropdown",
listItems: "choices__list--multiple",
listSingle: "choices__list--single",
loadingState: "is-loading",
noResults: "has-no-results",
noChoices: "has-no-choices",
noResults: "has-no-results",
notice: "choices__notice",
openState: "is-open",
placeholder: "choices__placeholder",
selectedState: "is-selected",
},
});
}

View File

@ -18,32 +18,35 @@ const SelectMulti = (): void => {
noResultsText: multiSelect.dataset.noResultsText,
removeItemButton: true,
classNames: {
containerOuter: "choices",
activeState: "is-active",
addChoice: ["choices__item--selectable", "add-choice"],
button: "choices__button",
containerInner: "choices__inner",
input: "choices__input",
inputCloned: "choices__input--cloned",
list: "choices__list",
listItems: "choices__list--multiple",
listSingle: "choices__list--single",
listDropdown: "choices__list--dropdown",
item: "choices__item",
itemSelectable: "choices__item--selectable",
itemDisabled: "choices__item--disabled",
itemChoice: "choices__item--choice",
placeholder: "choices__placeholder",
containerOuter: "choices",
description: "choices__description",
disabledState: "is-disabled",
flippedState: "is-flipped",
focusState: "is-focused",
group: "choices__group",
groupHeading: "choices__heading",
button: "choices__button",
activeState: "is-active",
focusState: "is-focused",
openState: "is-open",
disabledState: "is-disabled",
highlightedState: "is-highlighted",
selectedState: "is-selected",
flippedState: "is-flipped",
input: "choices__input",
inputCloned: "choices__input--cloned",
item: "choices__item",
itemChoice: "choices__item--choice",
itemDisabled: "choices__item--disabled",
itemSelectable: "choices__item--selectable",
list: "choices__list",
listDropdown: "choices__list--dropdown",
listItems: "choices__list--multiple",
listSingle: "choices__list--single",
loadingState: "is-loading",
noResults: "has-no-results",
noChoices: "has-no-choices",
noResults: "has-no-results",
notice: "choices__notice",
openState: "is-open",
placeholder: "choices__placeholder",
selectedState: "is-selected",
},
});
}

View File

@ -250,6 +250,8 @@
}
.choices__list--dropdown .choices__item {
@apply break-normal;
position: relative;
padding: 10px;
font-size: 14px;
@ -352,6 +354,10 @@
.choices__placeholder {
opacity: 0.5;
}
.choices__description {
@apply text-xs block text-skin-muted break-normal;
}
}
/* ===== End of Choices ====== */

View File

@ -19,7 +19,7 @@ class DatetimePicker extends FormComponent
'name' => $this->name,
'class' => 'rounded-l-lg border-0 border-rounded-r-none flex-1 focus:ring-0',
'data-input' => '',
], old($this->name, $this->value));
], old($this->name, (string) $this->value));
$clearLabel = lang(
'Episode.publish_form.scheduled_publication_date_clear',

View File

@ -15,7 +15,7 @@ class Select extends FormComponent
];
/**
* @var array<string, string>
* @var array<array<string, string>>
*/
protected array $options = [];
@ -37,7 +37,7 @@ class Select extends FormComponent
$options = '';
$selected = $this->value ?? $this->defaultValue;
foreach ($this->options as $option) {
$options .= '<option value="' . $option['value'] . '"' . ($option['value'] === $selected ? ' selected' : '') . '>' . $option['label'] . '</option>';
$options .= '<option ' . (array_key_exists('hint', $option) ? 'data-label-description="' . $option['hint'] . '" ' : '') . 'value="' . $option['value'] . '"' . ($option['value'] === $selected ? ' selected' : '') . '>' . $option['label'] . '</option>';
}
$this->attributes['name'] = $this->name;

View File

@ -17,7 +17,7 @@ class SelectMulti extends FormComponent
];
/**
* @var array<string, string>
* @var array<array<string, string>>
*/
protected array $options = [];
@ -39,12 +39,13 @@ class SelectMulti extends FormComponent
'data-no-choices-text' => lang('Common.forms.multiSelect.noChoicesText'),
'data-max-item-text' => lang('Common.forms.multiSelect.maxItemText'),
];
$this->attributes = [...$defaultAttributes, ...$this->attributes];
$options = '';
$selected = $this->value ?? $this->defaultValue;
foreach ($this->options as $option) {
$options .= '<option value="' . $option['value'] . '"' . (in_array($option['value'], $selected, true) ? ' selected' : '') . '>' . $option['label'] . '</option>';
$options .= '<option ' . (array_key_exists('hint', $option) ? 'data-label-description="' . $option['hint'] . '" ' : '') . 'value="' . $option['value'] . '"' . (in_array($option['value'], $selected, true) ? ' selected' : '') . '>' . $option['label'] . '</option>';
}
$this->attributes['name'] = $this->name . '[]';

View File

@ -5,6 +5,7 @@
var tabLinks = [];
var contentDivs = [];
// eslint-disable-next-line @typescript-eslint/no-unused-vars
function init() {
// Grab the tab links and content divs from the page
var tabListItems = document.getElementById("tabs").childNodes;
@ -85,6 +86,7 @@ function getHash(url) {
//--------------------------------------------------------------------
// eslint-disable-next-line @typescript-eslint/no-unused-vars
function toggle(elem) {
elem = document.getElementById(elem);

View File

@ -1,3 +1 @@
/* eslint-disable */
module.exports = { extends: ["@commitlint/config-conventional"] };

View File

@ -9,7 +9,7 @@
"php": "^8.3",
"adaures/ipcat-php": "^v1.0.0",
"adaures/podcast-persons-taxonomy": "^v1.0.1",
"aws/aws-sdk-php": "^3.322.3",
"aws/aws-sdk-php": "^3.324.3",
"chrisjean/php-ico": "^1.0.4",
"cocur/slugify": "^v4.6.0",
"codeigniter4/framework": "v4.5.5",
@ -27,19 +27,20 @@
"phpseclib/phpseclib": "~2.0.47",
"vlucas/phpdotenv": "v5.6.1",
"whichbrowser/parser": "^v2.1.8",
"yassinedoghri/codeigniter-icons": "dev-develop",
"yassinedoghri/codeigniter-icons": "^v1.0.0",
"yassinedoghri/php-icons": "^v1.1.0",
"yassinedoghri/podcast-feed": "dev-main"
},
"require-dev": {
"captainhook/captainhook": "^5.23.3",
"captainhook/captainhook": "^5.23.5",
"codeigniter/phpstan-codeigniter": "v1.4.3",
"mikey179/vfsstream": "^v1.6.12",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^1.12.4",
"phpunit/phpunit": "^10.5.35",
"rector/rector": "^1.2.5",
"phpstan/phpstan": "^1.12.6",
"phpunit/phpunit": "^10.5.36",
"rector/rector": "^1.2.7",
"symplify/coding-standard": "^12.2.3",
"symplify/easy-coding-standard": "^12.3.5"
"symplify/easy-coding-standard": "^12.3.6"
},
"autoload": {
"psr-4": {

272
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "8474fc3d694af9160cf7cb82b5a6ea26",
"content-hash": "156f3cbd51fbb10025391c7786b9201c",
"packages": [
{
"name": "adaures/ipcat-php",
@ -188,16 +188,16 @@
},
{
"name": "aws/aws-sdk-php",
"version": "3.322.3",
"version": "3.324.3",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "9a94b9a123e0a14cacd72a34c24624ab728aa398"
"reference": "018a692622175ad65ebefa3f6645e4e6208a11fe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/9a94b9a123e0a14cacd72a34c24624ab728aa398",
"reference": "9a94b9a123e0a14cacd72a34c24624ab728aa398",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/018a692622175ad65ebefa3f6645e4e6208a11fe",
"reference": "018a692622175ad65ebefa3f6645e4e6208a11fe",
"shasum": ""
},
"require": {
@ -274,9 +274,9 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.322.3"
"source": "https://github.com/aws/aws-sdk-php/tree/3.324.3"
},
"time": "2024-09-23T18:11:39+00:00"
"time": "2024-10-15T18:29:08+00:00"
},
{
"name": "brick/math",
@ -638,12 +638,12 @@
"source": {
"type": "git",
"url": "https://github.com/codeigniter4/tasks.git",
"reference": "a018b724ad4d9e1f4813c0d3e3da796ca377b178"
"reference": "be08f7abd534a3fd38d791257b861957eb596693"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/codeigniter4/tasks/zipball/a018b724ad4d9e1f4813c0d3e3da796ca377b178",
"reference": "a018b724ad4d9e1f4813c0d3e3da796ca377b178",
"url": "https://api.github.com/repos/codeigniter4/tasks/zipball/be08f7abd534a3fd38d791257b861957eb596693",
"reference": "be08f7abd534a3fd38d791257b861957eb596693",
"shasum": ""
},
"require": {
@ -656,7 +656,7 @@
"codeigniter4/devkit": "^1.0",
"codeigniter4/framework": "^4.1",
"phpunit/phpunit": "^9.6",
"rector/rector": "1.2.5"
"rector/rector": "1.2.7"
},
"default-branch": true,
"type": "library",
@ -714,20 +714,20 @@
"source": "https://github.com/codeigniter4/tasks/tree/develop",
"issues": "https://github.com/codeigniter4/tasks/issues"
},
"time": "2024-09-09T12:07:42+00:00"
"time": "2024-10-14T11:27:08+00:00"
},
{
"name": "composer/ca-bundle",
"version": "1.5.1",
"version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "063d9aa8696582f5a41dffbbaf3c81024f0a604a"
"reference": "48a792895a2b7a6ee65dd5442c299d7b835b6137"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/063d9aa8696582f5a41dffbbaf3c81024f0a604a",
"reference": "063d9aa8696582f5a41dffbbaf3c81024f0a604a",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/48a792895a2b7a6ee65dd5442c299d7b835b6137",
"reference": "48a792895a2b7a6ee65dd5442c299d7b835b6137",
"shasum": ""
},
"require": {
@ -737,8 +737,8 @@
},
"require-dev": {
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^8 || ^9",
"psr/log": "^1.0 || ^2.0 || ^3.0",
"symfony/phpunit-bridge": "^4.2 || ^5",
"symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0"
},
"type": "library",
@ -766,7 +766,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/ca-bundle/issues",
"source": "https://github.com/composer/ca-bundle/tree/1.5.1"
"source": "https://github.com/composer/ca-bundle/tree/1.5.2"
},
"funding": [
{
@ -782,7 +782,7 @@
"type": "tidelift"
}
],
"time": "2024-07-08T15:28:20+00:00"
"time": "2024-09-25T07:49:53+00:00"
},
{
"name": "dflydev/dot-access-data",
@ -2011,24 +2011,24 @@
},
{
"name": "nette/schema",
"version": "v1.3.0",
"version": "v1.3.2",
"source": {
"type": "git",
"url": "https://github.com/nette/schema.git",
"reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188"
"reference": "da801d52f0354f70a638673c4a0f04e16529431d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
"reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
"url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d",
"reference": "da801d52f0354f70a638673c4a0f04e16529431d",
"shasum": ""
},
"require": {
"nette/utils": "^4.0",
"php": "8.1 - 8.3"
"php": "8.1 - 8.4"
},
"require-dev": {
"nette/tester": "^2.4",
"nette/tester": "^2.5.2",
"phpstan/phpstan-nette": "^1.0",
"tracy/tracy": "^2.8"
},
@ -2058,9 +2058,9 @@
"keywords": ["config", "nette"],
"support": {
"issues": "https://github.com/nette/schema/issues",
"source": "https://github.com/nette/schema/tree/v1.3.0"
"source": "https://github.com/nette/schema/tree/v1.3.2"
},
"time": "2023-12-11T11:54:22+00:00"
"time": "2024-10-06T23:10:23+00:00"
},
{
"name": "nette/utils",
@ -2142,55 +2142,6 @@
},
"time": "2024-08-07T15:39:19+00:00"
},
{
"name": "nikic/php-parser",
"version": "v4.19.2",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "0ed4c8949a32986043e977dbe14776c14d644c45"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ed4c8949a32986043e977dbe14776c14d644c45",
"reference": "0ed4c8949a32986043e977dbe14776c14d644c45",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=7.1"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
},
"bin": ["bin/php-parse"],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.9-dev"
}
},
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": ["BSD-3-Clause"],
"authors": [
{
"name": "Nikita Popov"
}
],
"description": "A PHP parser written in PHP",
"keywords": ["parser", "php"],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.2"
},
"time": "2024-09-17T19:36:00+00:00"
},
{
"name": "opawg/user-agents-v2-php",
"version": "dev-main",
@ -3293,33 +3244,33 @@
},
{
"name": "yassinedoghri/codeigniter-icons",
"version": "dev-develop",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/yassinedoghri/codeigniter-icons.git",
"reference": "76526f22734df74651e784de6633962a05dcbd97"
"reference": "41e703612578fa44dfa8bd937380d71ab2af56ac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/yassinedoghri/codeigniter-icons/zipball/76526f22734df74651e784de6633962a05dcbd97",
"reference": "76526f22734df74651e784de6633962a05dcbd97",
"url": "https://api.github.com/repos/yassinedoghri/codeigniter-icons/zipball/41e703612578fa44dfa8bd937380d71ab2af56ac",
"reference": "41e703612578fa44dfa8bd937380d71ab2af56ac",
"shasum": ""
},
"require": {
"php": ">=8.1",
"yassinedoghri/php-icons": "dev-develop"
"yassinedoghri/php-icons": "^v1.0.0"
},
"require-dev": {
"codeigniter/phpstan-codeigniter": "^v1.4.3",
"codeigniter4/devkit": "^v1.2.2",
"codeigniter/phpstan-codeigniter": "^1.4.3.70400",
"codeigniter4/framework": "^4.3.5",
"phpstan/extension-installer": "^1.3.1",
"phpstan/phpstan": "^1.10.66",
"rector/rector": "^1.0.4",
"symplify/coding-standard": "^12.1.4",
"symplify/easy-coding-standard": "^12.1.14"
"pestphp/pest": "^2.35.1",
"pestphp/pest-plugin-type-coverage": "^2.8.6",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^1.12.5",
"rector/rector": "^1.2.5",
"symplify/coding-standard": "^12.2.3",
"symplify/easy-coding-standard": "^12.3.5"
},
"default-branch": true,
"type": "library",
"autoload": {
"psr-4": {
@ -3337,44 +3288,51 @@
}
],
"description": "A CodeIgniter4 library with convenient helper functions to render svg icons using yassinedoghri/php-icons.",
"keywords": ["codeigniter", "codeigniter4", "iconify", "icons"],
"keywords": [
"codeigniter",
"codeigniter4",
"iconify",
"icons",
"php-icons"
],
"support": {
"issues": "https://github.com/yassinedoghri/codeigniter-icons/issues",
"source": "https://github.com/yassinedoghri/codeigniter-icons/tree/develop"
"source": "https://github.com/yassinedoghri/codeigniter-icons/tree/v1.0.0"
},
"time": "2024-04-09T22:06:07+00:00"
"time": "2024-09-29T17:11:34+00:00"
},
{
"name": "yassinedoghri/php-icons",
"version": "dev-develop",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/yassinedoghri/php-icons.git",
"reference": "2ae1d446f0149ea55780a09c8f3668cd444b5be6"
"reference": "25530661989860a225f13b6c92c1ee1d2784f9d1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/yassinedoghri/php-icons/zipball/2ae1d446f0149ea55780a09c8f3668cd444b5be6",
"reference": "2ae1d446f0149ea55780a09c8f3668cd444b5be6",
"url": "https://api.github.com/repos/yassinedoghri/php-icons/zipball/25530661989860a225f13b6c92c1ee1d2784f9d1",
"reference": "25530661989860a225f13b6c92c1ee1d2784f9d1",
"shasum": ""
},
"require": {
"adhocore/cli": "^v1.7.1",
"adhocore/cli": "^1.7.2",
"composer-runtime-api": "^2.2",
"nikic/php-parser": "^v4.0",
"php": ">=8.1"
},
"require-dev": {
"kint-php/kint": "^5.1.1",
"phpstan/phpstan": "^1.10.67",
"rector/rector": "^1.0.4",
"symplify/coding-standard": "^12.1.4",
"symplify/easy-coding-standard": "^12.1.14"
"pestphp/pest": "^3.3.0",
"pestphp/pest-plugin-type-coverage": "^3.1.0",
"phpstan/phpstan": "^1.12.6",
"rector/rector": "^1.2.6",
"symplify/coding-standard": "^12.2.3",
"symplify/easy-coding-standard": "^12.3.6"
},
"default-branch": true,
"bin": ["bin/php-icons"],
"type": "library",
"autoload": {
"files": ["src/Console/helpers.php"],
"psr-4": {
"PHPIcons\\": "src/"
}
@ -3392,9 +3350,9 @@
"description": "A PHP library based on iconify's API to download and render svg icons from popular open source icon sets.",
"support": {
"issues": "https://github.com/yassinedoghri/php-icons/issues",
"source": "https://github.com/yassinedoghri/php-icons/tree/develop"
"source": "https://github.com/yassinedoghri/php-icons/tree/v1.1.0"
},
"time": "2024-09-22T11:25:33+00:00"
"time": "2024-10-07T12:38:01+00:00"
},
{
"name": "yassinedoghri/podcast-feed",
@ -4213,6 +4171,57 @@
],
"time": "2024-06-12T14:39:25+00:00"
},
{
"name": "nikic/php-parser",
"version": "v5.3.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "8eea230464783aa9671db8eea6f8c6ac5285794b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b",
"reference": "8eea230464783aa9671db8eea6f8c6ac5285794b",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-json": "*",
"ext-tokenizer": "*",
"php": ">=7.4"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
"phpunit/phpunit": "^9.0"
},
"bin": ["bin/php-parse"],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.0-dev"
}
},
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": ["BSD-3-Clause"],
"authors": [
{
"name": "Nikita Popov"
}
],
"description": "A PHP parser written in PHP",
"keywords": ["parser", "php"],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1"
},
"time": "2024-10-08T18:51:32+00:00"
},
{
"name": "phar-io/manifest",
"version": "2.0.4",
@ -4368,16 +4377,16 @@
},
{
"name": "phpstan/phpstan",
"version": "1.12.4",
"version": "1.12.6",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "ffa517cb918591b93acc9b95c0bebdcd0e4538bd"
"reference": "dc4d2f145a88ea7141ae698effd64d9df46527ae"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/ffa517cb918591b93acc9b95c0bebdcd0e4538bd",
"reference": "ffa517cb918591b93acc9b95c0bebdcd0e4538bd",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/dc4d2f145a88ea7141ae698effd64d9df46527ae",
"reference": "dc4d2f145a88ea7141ae698effd64d9df46527ae",
"shasum": ""
},
"require": {
@ -4412,7 +4421,7 @@
"type": "github"
}
],
"time": "2024-09-19T07:58:01+00:00"
"time": "2024-10-06T15:03:59+00:00"
},
{
"name": "phpunit/php-code-coverage",
@ -4704,16 +4713,16 @@
},
{
"name": "phpunit/phpunit",
"version": "10.5.35",
"version": "10.5.36",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "7ac8b4e63f456046dcb4c9787da9382831a1874b"
"reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7ac8b4e63f456046dcb4c9787da9382831a1874b",
"reference": "7ac8b4e63f456046dcb4c9787da9382831a1874b",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870",
"reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870",
"shasum": ""
},
"require": {
@ -4773,7 +4782,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.35"
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.36"
},
"funding": [
{
@ -4789,7 +4798,7 @@
"type": "tidelift"
}
],
"time": "2024-09-19T10:52:21+00:00"
"time": "2024-10-08T15:36:51+00:00"
},
{
"name": "psr/container",
@ -5332,21 +5341,21 @@
},
{
"name": "rector/rector",
"version": "1.2.5",
"version": "1.2.7",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
"reference": "e98aa793ca3fcd17e893cfaf9103ac049775d339"
"reference": "5b33bdd871895276e2c18e5410a4a57df9233ee0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/e98aa793ca3fcd17e893cfaf9103ac049775d339",
"reference": "e98aa793ca3fcd17e893cfaf9103ac049775d339",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/5b33bdd871895276e2c18e5410a4a57df9233ee0",
"reference": "5b33bdd871895276e2c18e5410a4a57df9233ee0",
"shasum": ""
},
"require": {
"php": "^7.2|^8.0",
"phpstan/phpstan": "^1.12.2"
"phpstan/phpstan": "^1.12.5"
},
"conflict": {
"rector/rector-doctrine": "*",
@ -5368,7 +5377,7 @@
"keywords": ["automation", "dev", "migration", "refactoring"],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/1.2.5"
"source": "https://github.com/rectorphp/rector/tree/1.2.7"
},
"funding": [
{
@ -5376,7 +5385,7 @@
"type": "github"
}
],
"time": "2024-09-08T17:43:24+00:00"
"time": "2024-10-12T11:12:46+00:00"
},
{
"name": "sebastian/cli-parser",
@ -7335,16 +7344,16 @@
},
{
"name": "symplify/easy-coding-standard",
"version": "12.3.5",
"version": "12.3.6",
"source": {
"type": "git",
"url": "https://github.com/easy-coding-standard/easy-coding-standard.git",
"reference": "0d7c2cfee3debdf11c12135e90d69d1d9f4eef03"
"reference": "c0f378782d06dfd21c66c3024e9d28f4e737645e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/0d7c2cfee3debdf11c12135e90d69d1d9f4eef03",
"reference": "0d7c2cfee3debdf11c12135e90d69d1d9f4eef03",
"url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/c0f378782d06dfd21c66c3024e9d28f4e737645e",
"reference": "c0f378782d06dfd21c66c3024e9d28f4e737645e",
"shasum": ""
},
"require": {
@ -7369,7 +7378,7 @@
"keywords": ["Code style", "automation", "fixer", "static analysis"],
"support": {
"issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues",
"source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.3.5"
"source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.3.6"
},
"funding": [
{
@ -7381,7 +7390,7 @@
"type": "github"
}
],
"time": "2024-08-08T08:43:50+00:00"
"time": "2024-10-06T08:27:28+00:00"
},
{
"name": "symplify/rule-doc-generator-contracts",
@ -7492,14 +7501,13 @@
"stability-flags": {
"codeigniter4/tasks": 20,
"opawg/user-agents-v2-php": 20,
"yassinedoghri/codeigniter-icons": 20,
"yassinedoghri/podcast-feed": 20
},
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": "^8.1"
"php": "^8.3"
},
"platform-dev": [],
"platform-dev": {},
"plugin-api-version": "2.6.0"
}

View File

@ -11,18 +11,18 @@
"prepare": "astro telemetry disable"
},
"dependencies": {
"@astrojs/check": "^0.7.0",
"@astrojs/starlight": "^0.24.0",
"@astrojs/check": "^0.9.3",
"@astrojs/starlight": "^0.28.2",
"@astrojs/starlight-tailwind": "^2.0.3",
"@astrojs/tailwind": "^5.1.0",
"@fontsource/inter": "^5.0.18",
"@fontsource/rubik": "^5.0.20",
"astro": "^4.10.1",
"autoprefixer": "^10.4.19",
"cssnano": "^7.0.2",
"postcss-preset-env": "^9.5.14",
"sharp": "^0.33.4",
"tailwindcss": "^3.4.3",
"typescript": "^5.4.5"
"@astrojs/tailwind": "^5.1.1",
"@fontsource/inter": "^5.1.0",
"@fontsource/rubik": "^5.1.0",
"astro": "^4.15.9",
"autoprefixer": "^10.4.20",
"cssnano": "^7.0.6",
"postcss-preset-env": "^10.0.5",
"sharp": "^0.33.5",
"tailwindcss": "^3.4.13",
"typescript": "^5.6.2"
}
}

4783
docs/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

23
eslint.config.js Normal file
View File

@ -0,0 +1,23 @@
import globals from "globals";
import eslint from "@eslint/js";
import tseslint from "typescript-eslint";
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
export default [
...tseslint.config(
eslint.configs.recommended,
...tseslint.configs.strict,
eslintPluginPrettierRecommended
),
{
ignores: ["public/*", "docs/*", "vendor/*", "castopod/*"],
},
{
languageOptions: {
globals: {
...globals.browser,
...globals.node,
},
},
},
];

View File

@ -84,7 +84,10 @@ class ContributorController extends BaseController
$contributorOptions = array_reduce(
$users,
static function (array $result, $user): array {
$result[$user->id] = $user->username;
$result[] = [
'value' => $user->id,
'label' => $user->username,
];
return $result;
},
[],
@ -95,7 +98,10 @@ class ContributorController extends BaseController
array_walk(
$roles,
static function (string $role, $key) use (&$roleOptions): array {
$roleOptions[$role] = lang('Auth.podcast_groups.' . $role . '.title');
$roleOptions[] = [
'value' => $role,
'label' => lang('Auth.podcast_groups.' . $role . '.title'),
];
return $roleOptions;
},
[],
@ -139,7 +145,10 @@ class ContributorController extends BaseController
array_walk(
$roles,
static function (string $role) use (&$roleOptions): array {
$roleOptions[$role] = lang('Auth.podcast_groups.' . $role . '.title');
$roleOptions[] = [
'value' => $role,
'label' => lang('Auth.podcast_groups.' . $role . '.title'),
];
return $roleOptions;
},
[],

View File

@ -13,7 +13,7 @@ class Option extends ManifestObject
{
protected const VALIDATION_RULES = [
'label' => 'required|string',
'value' => 'required|alpha_dash',
'value' => 'required|alpha_numeric_punct',
'hint' => 'permit_empty|string',
];

View File

@ -16,8 +16,8 @@
"build:static": "pnpm run build:icons && pnpm run build:svg",
"build:icons": "svgo -f app/Resources/icons -o app/Resources/icons -r --config=./.svgo.icons.cjs",
"build:svg": "svgo -f app/Resources/images -o public/assets/images -r --config=./.svgo.cjs",
"lint": "eslint --ext js,ts app/Resources",
"lint:fix": "eslint --ext js,ts app/Resources --fix",
"lint": "eslint",
"lint:fix": "eslint --fix",
"lint:css": "stylelint -f verbose \"app/Resources/**/*.css\"",
"lint:css:fix": "stylelint -f verbose --fix \"app/Resources/**/*.css\"",
"prettier": "prettier --check .",
@ -30,67 +30,70 @@
"dependencies": {
"@amcharts/amcharts4": "^4.10.39",
"@amcharts/amcharts4-geodata": "^4.1.30",
"@codemirror/commands": "^6.6.2",
"@codemirror/commands": "^6.7.0",
"@codemirror/lang-xml": "^6.1.0",
"@codemirror/language": "^6.10.3",
"@codemirror/state": "^6.4.1",
"@codemirror/view": "^6.33.0",
"@codemirror/view": "^6.34.1",
"@floating-ui/dom": "^1.6.11",
"@github/clipboard-copy-element": "^1.3.0",
"@github/hotkey": "^3.1.1",
"@github/markdown-toolbar-element": "^2.2.3",
"@github/relative-time-element": "^4.4.3",
"@patternfly/elements": "^4.0.1",
"@patternfly/elements": "^4.0.2",
"@tailwindcss/nesting": "0.0.0-insiders.565cd3e",
"@vime/core": "^5.4.1",
"choices.js": "^10.2.0",
"choices.js": "^11.0.2",
"codemirror": "^6.0.1",
"flatpickr": "^4.6.13",
"leaflet": "^1.9.4",
"leaflet.markercluster": "^1.5.3",
"lit": "^3.2.0",
"marked": "^13.0.3",
"lit": "^3.2.1",
"marked": "^14.1.3",
"wavesurfer.js": "^7.8.6",
"xml-formatter": "^3.6.3"
},
"devDependencies": {
"@commitlint/cli": "^19.5.0",
"@commitlint/config-conventional": "^19.5.0",
"@csstools/css-tokenizer": "^3.0.1",
"@csstools/css-tokenizer": "^3.0.2",
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "^9.12.0",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"@semantic-release/gitlab": "^13.2.1",
"@tailwindcss/forms": "^0.5.9",
"@tailwindcss/typography": "^0.5.15",
"@types/eslint__js": "^8.42.3",
"@types/leaflet": "^1.9.12",
"@typescript-eslint/eslint-plugin": "^8.7.0",
"@typescript-eslint/parser": "^8.7.0",
"all-contributors-cli": "^6.26.1",
"commitizen": "^4.3.0",
"commitizen": "^4.3.1",
"cross-env": "^7.0.3",
"cssnano": "^7.0.6",
"cz-conventional-changelog": "^3.3.0",
"eslint": "^8.57.1",
"eslint": "^9.12.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.2.1",
"globals": "^15.11.0",
"husky": "^9.1.6",
"is-ci": "^3.0.1",
"lint-staged": "^15.2.10",
"postcss": "^8.4.47",
"postcss-import": "^16.1.0",
"postcss-nesting": "^13.0.0",
"postcss-preset-env": "^10.0.5",
"postcss-preset-env": "^10.0.7",
"postcss-reporter": "^7.1.0",
"prettier": "3.3.3",
"prettier-plugin-organize-imports": "^4.1.0",
"semantic-release": "^24.1.1",
"stylelint": "^16.9.0",
"semantic-release": "^24.1.2",
"stylelint": "^16.10.0",
"stylelint-config-standard": "^36.0.1",
"svgo": "^3.3.2",
"tailwindcss": "^3.4.13",
"tailwindcss": "^3.4.14",
"typescript": "~5.5.4",
"vite": "^5.4.7",
"typescript-eslint": "^8.9.0",
"vite": "^5.4.9",
"vite-plugin-pwa": "^0.20.5",
"workbox-build": "^7.1.1",
"workbox-core": "^7.1.0",
@ -99,7 +102,7 @@
},
"lint-staged": {
"*.{js,ts,css,md,json}": "prettier --write",
"*.{ts,js}": "eslint --ext js,ts,tsx app/Resources --fix",
"*.{ts,js}": "eslint --fix",
"*.css": "stylelint --fix"
},
"config": {

5831
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,7 @@
<x-Forms.Field
as="SelectMulti"
id="persons"
name="persons[]"
name="persons"
label="<?= esc(lang('Person.episode_form.persons')) ?>"
hint="<?= esc(lang('Person.episode_form.persons_hint')) ?>"
options="<?= esc(json_encode($personOptions)) ?>"
@ -37,7 +37,7 @@
<x-Forms.Field
as="SelectMulti"
id="roles"
name="roles[]"
name="roles"
label="<?= esc(lang('Person.episode_form.roles')) ?>"
hint="<?= esc(lang('Person.episode_form.roles_hint')) ?>"
options="<?= esc(json_encode($taxonomyOptions)) ?>"

View File

@ -104,7 +104,7 @@
<x-Forms.Field
as="SelectMulti"
name="other_categories[]"
name="other_categories"
label="<?= esc(lang('Podcast.form.other_categories')) ?>"
data-max-item-count="2"
options="<?= esc(json_encode($categoryOptions)) ?>" />

View File

@ -130,7 +130,7 @@
<x-Forms.Field
as="SelectMulti"
name="other_categories[]"
name="other_categories"
label="<?= esc(lang('Podcast.form.other_categories')) ?>"
data-max-item-count="2"
value="<?= esc(json_encode($podcast->other_categories_ids)) ?>"

View File

@ -26,7 +26,7 @@
<x-Forms.Field
as="SelectMulti"
id="persons"
name="persons[]"
name="persons"
label="<?= esc(lang('Person.podcast_form.persons')) ?>"
hint="<?= esc(lang('Person.podcast_form.persons_hint')) ?>"
options="<?= esc(json_encode($personOptions)) ?>"
@ -36,7 +36,7 @@
<x-Forms.Field
as="SelectMulti"
id="roles"
name="roles[]"
name="roles"
label="<?= esc(lang('Person.podcast_form.roles')) ?>"
hint="<?= esc(lang('Person.podcast_form.roles_hint')) ?>"
options="<?= esc(json_encode($taxonomyOptions)) ?>"