@sanity/ui 2.13.5 → 2.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,7 +12,7 @@ function LazyRefractor(props) {
12
12
  let t1;
13
13
  $[2] !== language || $[3] !== registered || $[4] !== value ? (t1 = !(language && registered) && /* @__PURE__ */ jsx("code", { children: value }), $[2] = language, $[3] = registered, $[4] = value, $[5] = t1) : t1 = $[5];
14
14
  let t2;
15
- $[6] !== language || $[7] !== registered || $[8] !== value ? (t2 = language && registered && /* @__PURE__ */ jsx(Refractor, { inline: !0, language, value }), $[6] = language, $[7] = registered, $[8] = value, $[9] = t2) : t2 = $[9];
15
+ $[6] !== language || $[7] !== registered || $[8] !== value ? (t2 = language && registered && /* @__PURE__ */ jsx(Refractor, { inline: !0, language, value: String(value) }), $[6] = language, $[7] = registered, $[8] = value, $[9] = t2) : t2 = $[9];
16
16
  let t3;
17
17
  return $[10] !== t1 || $[11] !== t2 ? (t3 = /* @__PURE__ */ jsxs(Fragment, { children: [
18
18
  t1,
@@ -1 +1 @@
1
- {"version":3,"file":"refractor.esm.js","sources":["../../src/core/primitives/code/refractor.tsx"],"sourcesContent":["import Refractor from 'react-refractor'\n\nexport default function LazyRefractor(\n props: Partial<Pick<React.ComponentProps<typeof Refractor>, 'language'>> &\n Pick<React.ComponentProps<typeof Refractor>, 'value'>,\n) {\n const {language: languageProp, value} = props\n const language = typeof languageProp === 'string' ? languageProp : undefined\n const registered = language ? Refractor.hasLanguage(language as any) : false\n\n return (\n <>\n {!(language && registered) && <code>{value}</code>}\n {language && registered && <Refractor inline language={language} value={value} />}\n </>\n )\n}\n\nLazyRefractor.displayName = 'LazyRefractor'\n"],"names":["LazyRefractor","props","$","_c","language","languageProp","value","undefined","t0","Refractor","hasLanguage","registered","t1","t2","t3","displayName"],"mappings":";;;AAEA,SAAeA,cAAAC,OAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAIb;AAAA,IAAAC,UAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAwCL,OACxCG,WAAiB,OAAOC,gBAAiB,WAAWA,eAAYE;AAAYC,MAAAA;AAAAN,WAAAE,YACzDI,KAAAJ,WAAWK,UAAAC,YAAsBN,QAAe,IAAS,IAAAF,OAAAE,UAAAF,OAAAM,MAAAA,KAAAN,EAAA,CAAA;AAA5E,QAAAS,aAAmBH;AAAyDI,MAAAA;AAAAV,IAAAE,CAAAA,MAAAA,YAAAF,SAAAS,cAAAT,EAAA,CAAA,MAAAI,SAIvEM,KAAA,EAAER,YAAYO,2CAAsBL,EAAAA,UAAAA,MAAAA,CAAM,GAAOJ,OAAAE,UAAAF,OAAAS,YAAAT,OAAAI,OAAAJ,OAAAU,MAAAA,KAAAV,EAAA,CAAA;AAAAW,MAAAA;AAAAX,IAAAE,CAAAA,MAAAA,YAAAF,SAAAS,cAAAT,EAAA,CAAA,MAAAI,SACjDO,KAAAT,YAAYO,cAAe,oBAAA,WAAA,EAAU,QAAA,IAAiBP,UAAiBE,OAAS,GAAAJ,OAAAE,UAAAF,OAAAS,YAAAT,OAAAI,OAAAJ,OAAAW,MAAAA,KAAAX,EAAA,CAAA;AAAAY,MAAAA;AAAAZ,SAAAA,EAAAU,EAAAA,MAAAA,MAAAV,UAAAW,MAFnFC,KACGF,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,IAAAA;AAAAA,IACAC;AAAAA,EAAAA,EAAgF,CAAA,GAChFX,QAAAU,IAAAV,QAAAW,IAAAX,QAAAY,MAAAA,KAAAZ,EAAA,EAAA,GAHHY;AAGG;AAIPd,cAAce,cAAc;"}
1
+ {"version":3,"file":"refractor.esm.js","sources":["../../src/core/primitives/code/refractor.tsx"],"sourcesContent":["import Refractor from 'react-refractor'\n\nexport default function LazyRefractor(\n props: Partial<Pick<React.ComponentProps<typeof Refractor>, 'language'>> & {\n value: React.ReactNode\n },\n) {\n const {language: languageProp, value} = props\n const language = typeof languageProp === 'string' ? languageProp : undefined\n const registered = language ? Refractor.hasLanguage(language as any) : false\n\n return (\n <>\n {!(language && registered) && <code>{value}</code>}\n {language && registered && <Refractor inline language={language} value={String(value)} />}\n </>\n )\n}\n\nLazyRefractor.displayName = 'LazyRefractor'\n"],"names":["LazyRefractor","props","$","_c","language","languageProp","value","undefined","t0","Refractor","hasLanguage","registered","t1","t2","String","t3","displayName"],"mappings":";;;AAEA,SAAeA,cAAAC,OAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAKb;AAAA,IAAAC,UAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAwCL,OACxCG,WAAiB,OAAOC,gBAAiB,WAAWA,eAAYE;AAAYC,MAAAA;AAAAN,WAAAE,YACzDI,KAAAJ,WAAWK,UAAAC,YAAsBN,QAAe,IAAS,IAAAF,OAAAE,UAAAF,OAAAM,MAAAA,KAAAN,EAAA,CAAA;AAA5E,QAAAS,aAAmBH;AAAyDI,MAAAA;AAAAV,IAAAE,CAAAA,MAAAA,YAAAF,SAAAS,cAAAT,EAAA,CAAA,MAAAI,SAIvEM,KAAA,EAAER,YAAYO,2CAAsBL,EAAAA,UAAAA,MAAAA,CAAM,GAAOJ,OAAAE,UAAAF,OAAAS,YAAAT,OAAAI,OAAAJ,OAAAU,MAAAA,KAAAV,EAAA,CAAA;AAAAW,MAAAA;AAAAX,IAAAE,CAAAA,MAAAA,YAAAF,SAAAS,cAAAT,EAAA,CAAA,MAAAI,SACjDO,KAAAT,YAAYO,kCAAe,WAAU,EAAA,QAAK,IAAYP,UAAiB,OAAAU,OAAOR,KAAK,EAAA,CAAK,GAAAJ,OAAAE,UAAAF,OAAAS,YAAAT,OAAAI,OAAAJ,OAAAW,MAAAA,KAAAX,EAAA,CAAA;AAAAa,MAAAA;AAAAb,SAAAA,EAAAU,EAAAA,MAAAA,MAAAV,UAAAW,MAF3FE,KACGH,qBAAAA,UAAAA,EAAAA,UAAAA;AAAAA,IAAAA;AAAAA,IACAC;AAAAA,EAAAA,EAAwF,CAAA,GACxFX,QAAAU,IAAAV,QAAAW,IAAAX,QAAAa,MAAAA,KAAAb,EAAA,EAAA,GAHHa;AAGG;AAIPf,cAAcgB,cAAc;"}
@@ -526,6 +526,13 @@ declare interface PopoverProps
526
526
  * @defaultValue false
527
527
  */
528
528
  matchReferenceWidth?: boolean
529
+ /**
530
+ * When true, blocks all pointer interaction with elements beneath the popover until closed.
531
+ *
532
+ * @beta
533
+ * @defaultValue false
534
+ */
535
+ modal?: boolean
529
536
  open?: boolean
530
537
  overflow?: BoxOverflow
531
538
  padding?: number | number[]
@@ -526,6 +526,13 @@ declare interface PopoverProps
526
526
  * @defaultValue false
527
527
  */
528
528
  matchReferenceWidth?: boolean
529
+ /**
530
+ * When true, blocks all pointer interaction with elements beneath the popover until closed.
531
+ *
532
+ * @beta
533
+ * @defaultValue false
534
+ */
535
+ modal?: boolean
529
536
  open?: boolean
530
537
  overflow?: BoxOverflow
531
538
  padding?: number | number[]
package/dist/index.d.mts CHANGED
@@ -1585,6 +1585,13 @@ export declare interface PopoverProps
1585
1585
  * @defaultValue false
1586
1586
  */
1587
1587
  matchReferenceWidth?: boolean
1588
+ /**
1589
+ * When true, blocks all pointer interaction with elements beneath the popover until closed.
1590
+ *
1591
+ * @beta
1592
+ * @defaultValue false
1593
+ */
1594
+ modal?: boolean
1588
1595
  open?: boolean
1589
1596
  overflow?: BoxOverflow
1590
1597
  padding?: number | number[]
package/dist/index.d.ts CHANGED
@@ -1585,6 +1585,13 @@ export declare interface PopoverProps
1585
1585
  * @defaultValue false
1586
1586
  */
1587
1587
  matchReferenceWidth?: boolean
1588
+ /**
1589
+ * When true, blocks all pointer interaction with elements beneath the popover until closed.
1590
+ *
1591
+ * @beta
1592
+ * @defaultValue false
1593
+ */
1594
+ modal?: boolean
1588
1595
  open?: boolean
1589
1596
  overflow?: BoxOverflow
1590
1597
  padding?: number | number[]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/ui",
3
- "version": "2.13.5",
3
+ "version": "2.14.1",
4
4
  "keywords": [
5
5
  "sanity",
6
6
  "ui",
@@ -31,7 +31,7 @@ export const Code = forwardRef(function Code(
31
31
  return (
32
32
  <StyledCode data-ui="Code" {...restProps} $size={useArrayProp(size)} $weight={weight} ref={ref}>
33
33
  <Suspense fallback={<code>{children}</code>}>
34
- <LazyRefractor language={language} value={String(children)} />
34
+ <LazyRefractor language={language} value={children} />
35
35
  </Suspense>
36
36
  </StyledCode>
37
37
  )
@@ -1,8 +1,9 @@
1
1
  import Refractor from 'react-refractor'
2
2
 
3
3
  export default function LazyRefractor(
4
- props: Partial<Pick<React.ComponentProps<typeof Refractor>, 'language'>> &
5
- Pick<React.ComponentProps<typeof Refractor>, 'value'>,
4
+ props: Partial<Pick<React.ComponentProps<typeof Refractor>, 'language'>> & {
5
+ value: React.ReactNode
6
+ },
6
7
  ) {
7
8
  const {language: languageProp, value} = props
8
9
  const language = typeof languageProp === 'string' ? languageProp : undefined
@@ -11,7 +12,7 @@ export default function LazyRefractor(
11
12
  return (
12
13
  <>
13
14
  {!(language && registered) && <code>{value}</code>}
14
- {language && registered && <Refractor inline language={language} value={value} />}
15
+ {language && registered && <Refractor inline language={language} value={String(value)} />}
15
16
  </>
16
17
  )
17
18
  }
@@ -27,7 +27,7 @@ import {useArrayProp, useElementSize, useMediaIndex, usePrefersReducedMotion} fr
27
27
  import {origin} from '../../middleware/origin'
28
28
  import {useTheme_v2} from '../../theme'
29
29
  import {BoxOverflow, CardTone, Placement, PopoverMargins} from '../../types'
30
- import {LayerProps, LayerProvider, Portal, useBoundaryElement} from '../../utils'
30
+ import {LayerProps, LayerProvider, Portal, useBoundaryElement, useLayer} from '../../utils'
31
31
  import {getElementRef} from '../../utils/getElementRef'
32
32
  import {ResponsiveRadiusProps, ResponsiveShadowProps} from '../types'
33
33
  import {
@@ -86,6 +86,13 @@ export interface PopoverProps
86
86
  * @defaultValue false
87
87
  */
88
88
  matchReferenceWidth?: boolean
89
+ /**
90
+ * When true, blocks all pointer interaction with elements beneath the popover until closed.
91
+ *
92
+ * @beta
93
+ * @defaultValue false
94
+ */
95
+ modal?: boolean
89
96
  open?: boolean
90
97
  overflow?: BoxOverflow
91
98
  padding?: number | number[]
@@ -108,6 +115,12 @@ export interface PopoverProps
108
115
  width?: PopoverWidth | PopoverWidth[]
109
116
  }
110
117
 
118
+ const ViewportOverlay = () => {
119
+ const {zIndex} = useLayer()
120
+
121
+ return <div style={{height: '100vh', inset: 0, position: 'fixed', width: '100vw', zIndex}} />
122
+ }
123
+
111
124
  /**
112
125
  * The `Popover` component is used to display some content on top of another.
113
126
  *
@@ -135,6 +148,7 @@ export const Popover = memo(
135
148
  DEFAULT_FALLBACK_PLACEMENTS[props.placement ?? 'bottom'],
136
149
  matchReferenceWidth,
137
150
  floatingBoundary = props.boundaryElement ?? boundaryElementContext.element,
151
+ modal,
138
152
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
139
153
  onActivate,
140
154
  open,
@@ -395,6 +409,9 @@ export const Popover = memo(
395
409
 
396
410
  const popover = (
397
411
  <LayerProvider zOffset={zOffset}>
412
+ {/* Optional transparent blocking overlay at the top-most z-index layer. Must be positioned before the below popover card. */}
413
+ {modal && <ViewportOverlay />}
414
+
398
415
  <PopoverCard
399
416
  {...restProps}
400
417
  __unstable_margins={margins}