UNPKG

@redocly/graphql-docs

Version:

Redocly GraphQL docs

2 lines (1 loc) 1.45 kB
import{jsx as e,jsxs as a,Fragment as M}from"react/jsx-runtime";import{useState as x,useMemo as p,memo as B}from"react";import{Portal as v,SecurityIcon as d,useModalScrollLock as C,useThemeHooks as D}from"@redocly/theme";import{RequiresScopesModal as k}from"./RequiresScopesModal.js";import{getRequiresScopesDirective as I,getRequiresScopesWithParent as T}from"../utils/directive-utils.js";import{RequiresScopesItemButton as j,RequiresScopesItemButtonText as w,RequiresScopesButtonItemWrapper as O,RequiresScopesSecurityHeader as W,RequiresScopesButtonTitle as _,ViewDetailsButton as F}from"./styled.js";import{useTelemetry as H}from"../../hooks/index.js";function P({type:t,field:o,parentType:r,isItem:m=!1}){const[n,i]=x(!1),{useTranslate:S}=D(),{translate:c}=S(),h=H();C(n);const s=p(()=>o&&r?T(o,r):t?I(t):null,[o,r,t]),q=p(()=>s?!(s.scopes.length===0&&(s.parentScopes??[]).length>0):!1,[s]),l=()=>{i(!0),h.sendGraphqlDocsRequiredScopesModalOpenedMessage()},f=()=>{i(!1)},u=c("graphql.requiredScopes","Required scopes"),R=c("graphql.viewSecurityDetails","View details");if(!q)return null;const g=m?e(O,{children:a(W,{children:[e(d,{}),e(_,{children:u}),e(F,{variant:"link",onClick:l,children:R})]})}):e(j,{variant:"outlined",fullWidth:!1,icon:e(d,{}),onClick:l,children:e(w,{children:u})});return a(M,{children:[g,n&&s&&e(v,{children:e(k,{scopes:s.scopes,parentScopes:s.parentScopes,onClose:f})})]})}const E=B(P);export{E as RequiresScopesButton};