diff --git a/src/pages/llmodels/components/access-control-modal/form.tsx b/src/pages/llmodels/components/access-control-modal/form.tsx index d42ecfa8..246b742f 100644 --- a/src/pages/llmodels/components/access-control-modal/form.tsx +++ b/src/pages/llmodels/components/access-control-modal/form.tsx @@ -15,6 +15,7 @@ import { Dropdown, DropdownProps, Empty, + Flex, Form, Radio, RadioChangeEvent, @@ -80,9 +81,8 @@ const Label = styled.div` align-items: center; gap: 4px; font-weight: 500; - margin-block: 8px 12px; + margin-bottom: 16px; font-size: 14px; - color: var(--ant-color-text-tertiary); `; interface AccessControlFormProps { @@ -107,6 +107,14 @@ type AllowedUsersOverride = { routeId?: number; action: PageActionType; }>; + // Optional trigger (e.g. an "Add" button) rendered by the host in its + // own layout slot while `Field` renders the body. Same props as Field + // so the plugin can gate visibility on action/routeId. + Action?: React.ComponentType<{ + form: any; + routeId?: number; + action: PageActionType; + }>; }; // Extra policy entries prepended to the radio list (rendered before @@ -407,41 +415,56 @@ const AccessControlForm = forwardRef((props: AccessControlFormProps, ref) => { - name="access_policy" noStyle> - ({ - label: intl.formatMessage({ id: p.labelId }), - value: p.policyValue - })), - { - label: intl.formatMessage({ id: 'models.accessSettings.authed' }), - value: 'authed' - }, - allowedUsersOverride - ? { - label: intl.formatMessage({ - id: allowedUsersOverride.labelId - }), - value: allowedUsersOverride.policyValue - } - : { - label: intl.formatMessage({ - id: 'models.accessSettings.allowedUsers' - }), - value: ALLOWED_PRINCIPALS_POLICY - }, - { - label: intl.formatMessage({ - id: 'models.accessSettings.public' - }), - value: 'public' - } - ]} - > - + + name="access_policy" noStyle> + ({ + label: intl.formatMessage({ id: p.labelId }), + value: p.policyValue + })), + { + label: intl.formatMessage({ + id: 'models.accessSettings.authed' + }), + value: 'authed' + }, + allowedUsersOverride + ? { + label: intl.formatMessage({ + id: allowedUsersOverride.labelId + }), + value: allowedUsersOverride.policyValue + } + : { + label: intl.formatMessage({ + id: 'models.accessSettings.allowedUsers' + }), + value: ALLOWED_PRINCIPALS_POLICY + }, + { + label: intl.formatMessage({ + id: 'models.accessSettings.public' + }), + value: 'public' + } + ]} + > + + {allowedUsersOverride?.Action && + accessPolicy === overridePolicyValue && ( + + )} + {accessPolicy === 'public' && (
{ message={intl.formatMessage({ id: 'models.accessSettings.public.tips' })} + overlayScrollerProps={{ + styles: { + wrapper: { + paddingLeft: 0 + } + } + }} >
)} diff --git a/src/pages/llmodels/components/access-control-modal/index.tsx b/src/pages/llmodels/components/access-control-modal/index.tsx index 1bcc93c2..d446e1c1 100644 --- a/src/pages/llmodels/components/access-control-modal/index.tsx +++ b/src/pages/llmodels/components/access-control-modal/index.tsx @@ -130,7 +130,9 @@ const AccessControlModal: React.FC<