Explorar el Código

chore: only set slotted flag on sfc descriptor if style is scoped

Evan You hace 5 años
padre
commit
540e26f49c

+ 6 - 4
packages/compiler-sfc/__tests__/parse.spec.ts

@@ -177,12 +177,14 @@ h1 { color: red }
         .slotted
     ).toBe(false)
     expect(
-      parse(`<template>hi</template><style>:slotted(h1){color:red;}</style>`)
-        .descriptor.slotted
+      parse(
+        `<template>hi</template><style scoped>:slotted(h1){color:red;}</style>`
+      ).descriptor.slotted
     ).toBe(true)
     expect(
-      parse(`<template>hi</template><style>::v-slotted(h1){color:red;}</style>`)
-        .descriptor.slotted
+      parse(
+        `<template>hi</template><style scoped>::v-slotted(h1){color:red;}</style>`
+      ).descriptor.slotted
     ).toBe(true)
   })
 

+ 3 - 1
packages/compiler-sfc/src/parse.ts

@@ -237,7 +237,9 @@ export function parse(
 
   // check if the SFC uses :slotted
   const slottedRE = /(?:::v-|:)slotted\(/
-  descriptor.slotted = descriptor.styles.some(s => slottedRE.test(s.content))
+  descriptor.slotted = descriptor.styles.some(
+    s => s.scoped && slottedRE.test(s.content)
+  )
 
   const result = {
     descriptor,