diff --git a/api/docker/images/registry.go b/api/docker/images/registry.go index f4202b7e59..346df2925c 100644 --- a/api/docker/images/registry.go +++ b/api/docker/images/registry.go @@ -26,7 +26,12 @@ func NewRegistryClient(dataStore dataservices.DataStore) *RegistryClient { func (c *RegistryClient) RegistryAuth(image Image) (string, string, error) { registry, err := cachedRegistry(image.Opts.Name) if err != nil { - registries, err := c.dataStore.Registry().ReadAll() + var registries []portainer.Registry + err = c.dataStore.ViewTx(func(tx dataservices.DataStoreTx) error { + var err error + registries, err = tx.Registry().ReadAll() + return err + }) if err != nil { return "", "", err } @@ -59,7 +64,12 @@ func (c *RegistryClient) CertainRegistryAuth(registry *portainer.Registry) (stri func (c *RegistryClient) EncodedRegistryAuth(image Image) (string, error) { registry, err := cachedRegistry(image.Opts.Name) if err != nil { - registries, err := c.dataStore.Registry().ReadAll() + var registries []portainer.Registry + err = c.dataStore.ViewTx(func(tx dataservices.DataStoreTx) error { + var err error + registries, err = tx.Registry().ReadAll() + return err + }) if err != nil { return "", err } diff --git a/api/portainer.go b/api/portainer.go index e30f1a7b6a..7a1722d4c3 100644 --- a/api/portainer.go +++ b/api/portainer.go @@ -2640,6 +2640,7 @@ const ( SetupDocker PolicyType = "setup-docker" RegistryDocker PolicyType = "registry-docker" ChangeConfirmation PolicyType = "change-confirmation" + CleanupDocker PolicyType = "cleanup-docker" ) type HelmInstallStatus string diff --git a/app/react/components/StatusSummaryBar/StatusSummaryBar.tsx b/app/react/components/StatusSummaryBar/StatusSummaryBar.tsx index c2a0c2006a..961da4b999 100644 --- a/app/react/components/StatusSummaryBar/StatusSummaryBar.tsx +++ b/app/react/components/StatusSummaryBar/StatusSummaryBar.tsx @@ -1,3 +1,5 @@ +import clsx from 'clsx'; + import { FilterBarButton, Color } from './FilterBarButton'; import { FilterBarActiveIndicator } from './FilterBarActiveIndicator'; @@ -38,7 +40,13 @@ export function StatusSummaryBar({ return (
({ size="medium" disabled={disabled || index === 0} onClick={onMoveUp} - className="vertical-center btn-only-icon" + className="vertical-center btn-only-icon h-[34px]" icon={ArrowUpIcon} data-cy={`${dataCy}-move-up_${index}`} /> @@ -58,7 +58,7 @@ export function InputListActionButtons({ type="button" disabled={disabled || index === count - 1} onClick={onMoveDown} - className="vertical-center btn-only-icon" + className="vertical-center btn-only-icon h-[34px]" icon={ArrowDownIcon} data-cy={`${dataCy}-move-down_${index}`} /> @@ -85,7 +85,7 @@ export function InputListActionButtons({ color="dangerlight" size="medium" onClick={onDelete} - className="vertical-center btn-only-icon" + className="vertical-center btn-only-icon h-[34px]" data-cy={`${dataCy}RemoveButton_${index}`} icon={Trash2Icon} disabled={disabled} @@ -136,7 +136,7 @@ function CanUndoDeleteButton({ color="dangerlight" size="medium" onClick={handleDeleteClick} - className="vertical-center btn-only-icon" + className="vertical-center btn-only-icon h-[34px]" icon={Trash2Icon} data-cy={`${dataCy}_delete`} disabled={disabled} @@ -147,7 +147,7 @@ function CanUndoDeleteButton({ color="default" size="medium" onClick={handleDeleteClick} - className="vertical-center btn-only-icon" + className="vertical-center btn-only-icon h-[34px]" icon={RotateCwIcon} data-cy={`${dataCy}_undo_delete`} disabled={disabled} diff --git a/app/react/components/form-components/InputList/InputList.tsx b/app/react/components/form-components/InputList/InputList.tsx index d4dd897e13..a4c6087297 100644 --- a/app/react/components/form-components/InputList/InputList.tsx +++ b/app/react/components/form-components/InputList/InputList.tsx @@ -136,7 +136,7 @@ export function InputList({ typeof errors === 'object' ? errors[index] : undefined; return ( -
+
{Item ? ( - + + Add group +