mirror of
https://code.castopod.org/adaures/castopod
synced 2025-04-19 04:51:17 +00:00
fix: typo in EpisodeController remap function to get episode
- fix defaultValue being empty string when cast as array - fix initial styles for select to reduce content layout shift
This commit is contained in:
parent
7e8f0003d1
commit
f288a750f5
@ -35,10 +35,6 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.choices[data-type*="select-one"] .choices__inner {
|
||||
padding-bottom: 7.5px;
|
||||
}
|
||||
|
||||
.choices[data-type*="select-one"] .choices__input {
|
||||
display: block;
|
||||
width: 100%;
|
||||
@ -119,7 +115,7 @@
|
||||
display: inline-block;
|
||||
margin-left: 8px;
|
||||
padding-left: 16px;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Cpath d='M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z'/%3E%3C/svg%3E");
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2300574B'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Cpath d='M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z'/%3E%3C/svg%3E");
|
||||
background-size: 16px;
|
||||
width: 8px;
|
||||
line-height: 1;
|
||||
@ -135,7 +131,7 @@
|
||||
}
|
||||
|
||||
.choices__inner {
|
||||
@apply p-2 rounded-lg border-contrast bg-elevated border-3;
|
||||
@apply px-3 py-2 rounded-lg border-contrast bg-elevated border-3 transition;
|
||||
|
||||
box-shadow: 2px 2px 0 hsl(var(--color-border-contrast));
|
||||
display: inline-block;
|
||||
@ -146,13 +142,9 @@
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.choices[data-type*="select-multiple"] .choices__inner {
|
||||
@apply pb-1;
|
||||
}
|
||||
|
||||
.is-focused .choices__inner,
|
||||
.is-open .choices__inner {
|
||||
@apply ring-accent ring-inset;
|
||||
@apply ring-accent;
|
||||
}
|
||||
|
||||
.is-open .choices__inner {
|
||||
@ -183,11 +175,11 @@
|
||||
}
|
||||
|
||||
.choices__list--multiple {
|
||||
display: inline;
|
||||
@apply inline-flex gap-2 mr-2 items-center;
|
||||
}
|
||||
|
||||
.choices__list--multiple .choices__item {
|
||||
@apply inline-block px-2 py-1 mb-1 mr-1 text-sm align-middle rounded text-accent-contrast bg-accent-base;
|
||||
@apply inline-block font-semibold px-1 py-0.5 text-sm align-middle rounded text-accent-hover bg-base border-accent-base ring-2 ring-accent-base;
|
||||
|
||||
word-break: break-all;
|
||||
box-sizing: border-box;
|
||||
@ -203,7 +195,7 @@
|
||||
}
|
||||
|
||||
.choices__list--multiple .choices__item.is-highlighted {
|
||||
@apply bg-accent-base;
|
||||
@apply bg-subtle;
|
||||
}
|
||||
|
||||
.is-disabled .choices__list--multiple .choices__item {
|
||||
@ -329,7 +321,7 @@
|
||||
}
|
||||
|
||||
.choices__input {
|
||||
@apply mb-1 align-middle bg-elevated;
|
||||
@apply align-middle bg-elevated;
|
||||
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
|
@ -6,6 +6,10 @@
|
||||
.form-helper {
|
||||
@apply text-skin-muted;
|
||||
}
|
||||
|
||||
select {
|
||||
box-shadow: 2px 2px 0 hsl(var(--color-border-contrast));
|
||||
}
|
||||
}
|
||||
|
||||
@layer components {
|
||||
|
@ -32,9 +32,9 @@ abstract class FormComponent extends Component
|
||||
protected string|array|null $value = null;
|
||||
|
||||
/**
|
||||
* @var string|string[]
|
||||
* @var string|string[]|null
|
||||
*/
|
||||
protected string|array $defaultValue = '';
|
||||
protected string|array|null $defaultValue = null;
|
||||
|
||||
protected bool $isRequired = false;
|
||||
|
||||
|
@ -18,7 +18,7 @@ class Input extends FormComponent
|
||||
$this->mergeClass('w-full border-contrast rounded-lg focus:border-contrast border-3 focus-within:ring-accent transition');
|
||||
|
||||
if ($this->type === 'file') {
|
||||
$this->mergeClass('file:px-3 file:py-2 file:h-[40px] file:font-semibold file:text-skin-muted file:text-sm file:rounded-none file:border-none file:bg-highlight file:cursor-pointer');
|
||||
$this->mergeClass('file:px-3 file:py-2 file:h-[40px] file:font-semibold file:text-accent-hover file:text-sm file:rounded-none file:border-none file:bg-base file:cursor-pointer');
|
||||
} else {
|
||||
$this->mergeClass('px-3 py-2');
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ class EpisodeController extends BaseController
|
||||
}
|
||||
|
||||
if (
|
||||
! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1]) instanceof Episode)
|
||||
! ($episode = (new EpisodeModel())->getEpisodeById((int) $params[1])) instanceof Episode
|
||||
) {
|
||||
throw PageNotFoundException::forPageNotFound();
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ $routes->group(
|
||||
);
|
||||
$routes->get(
|
||||
'remove',
|
||||
'ContributorController::remove/$1/$2',
|
||||
'ContributorController::removeView/$1/$2',
|
||||
[
|
||||
'as' => 'contributor-remove',
|
||||
'filter' => 'permission:podcast$1.manage-contributors',
|
||||
|
@ -206,7 +206,7 @@ class ContributorController extends BaseController
|
||||
);
|
||||
}
|
||||
|
||||
public function deleteView(): string
|
||||
public function removeView(): string
|
||||
{
|
||||
helper('form');
|
||||
|
||||
@ -222,10 +222,10 @@ class ContributorController extends BaseController
|
||||
0 => $this->podcast->at_handle,
|
||||
1 => $this->contributor->username,
|
||||
]);
|
||||
return view('contributor/delete', $data);
|
||||
return view('contributor/remove', $data);
|
||||
}
|
||||
|
||||
public function deleteAction(): RedirectResponse
|
||||
public function removeAction(): RedirectResponse
|
||||
{
|
||||
if ($this->podcast->created_by === $this->contributor->id) {
|
||||
return redirect()
|
||||
|
@ -210,18 +210,19 @@ label="<?= esc(lang('Podcast.form.new_feed_url')) ?>"
|
||||
hint="<?= esc(lang('Podcast.form.new_feed_url_hint')) ?>"
|
||||
value="<?= esc($podcast->new_feed_url) ?>"
|
||||
/>
|
||||
<Forms.Toggler name="redirect_to_new_feed" value="yes" checked="<?= service('settings')
|
||||
->get('Podcast.redirect_to_new_feed', 'podcast:' . $podcast->id) ? 'true' : 'false' ?>" hint="<?= esc(lang('Podcast.form.redirect_to_new_feed_hint')) ?>"><?= lang('Podcast.form.redirect_to_new_feed') ?></Forms.Toggler>
|
||||
<x-Forms.Toggler name="redirect_to_new_feed" value="<?= service('settings')->get('Podcast.redirect_to_new_feed', 'podcast:' . $podcast->id) ? 'yes' : '' ?>" hint="<?= esc(lang('Podcast.form.redirect_to_new_feed_hint')) ?>">
|
||||
<?= lang('Podcast.form.redirect_to_new_feed') ?>
|
||||
</x-Forms.Toggler>
|
||||
|
||||
<hr class="border-subtle">
|
||||
|
||||
<x-Forms.Toggler class="mb-2" name="lock" value="<?= $podcast->is_locked ? 'yes' : '' ?>" hint="<?= esc(lang('Podcast.form.lock_hint')) ?>">
|
||||
<x-Forms.Toggler name="lock" value="<?= $podcast->is_locked ? 'yes' : '' ?>" hint="<?= esc(lang('Podcast.form.lock_hint')) ?>">
|
||||
<?= lang('Podcast.form.lock') ?>
|
||||
</x-Forms.Toggler>
|
||||
<x-Forms.Toggler class="mb-2" name="block" value="<?= $podcast->is_blocked ? 'yes' : '' ?>" hint="<?= esc(lang('Podcast.form.block_hint')) ?>">
|
||||
<x-Forms.Toggler class="mt-2" name="block" value="<?= $podcast->is_blocked ? 'yes' : '' ?>" hint="<?= esc(lang('Podcast.form.block_hint')) ?>">
|
||||
<?= lang('Podcast.form.block') ?>
|
||||
</x-Forms.Toggler>
|
||||
<x-Forms.Toggler name="complete" value="<?= $podcast->is_completed ? 'yes' : '' ?>">
|
||||
<x-Forms.Toggler class="mt-2" name="complete" value="<?= $podcast->is_completed ? 'yes' : '' ?>">
|
||||
<?= lang('Podcast.form.complete') ?>
|
||||
</x-Forms.Toggler>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user