๐Ÿ“ Sign Up | ๐Ÿ” Log In

โ† Root | โ†‘ Up

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ“„ shadcn/directory/udecode/plate/(plugins)/(elements)/toggle.cn โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘

title: ๆŠ˜ๅ ๅผ€ๅ…ณ docs:

  • route: /docs/components/toggle-node title: ๆŠ˜ๅ ๅ…ƒ็ด 
  • route: /docs/components/toggle-toolbar-button title: ๆŠ˜ๅ ๆŒ‰้’ฎ

<ComponentPreview name="toggle-demo" /> <PackageInfo>

ๅŠŸ่ƒฝ็‰นๆ€ง

  • ๅœจๆ–‡ๆกฃไธญๆทปๅŠ ๅฏๆŠ˜ๅ ๅ†…ๅฎน
  • ๆŠ˜ๅ ้กน้ป˜่ฎคๆ”ถ่ตท๏ผŒ็‚นๅ‡ปๅฏๅฑ•ๅผ€ๆ˜พ็คบๅ†…้ƒจๅ†…ๅฎน
</PackageInfo>

ๅฅ—ไปถไฝฟ็”จ

<Steps>

ๅฎ‰่ฃ…

ๆœ€ๅฟซๆท็š„ๆ–นๅผๆ˜ฏไฝฟ็”จ ToggleKit๏ผŒๅฎƒๅŒ…ๅซ้ข„้…็ฝฎ็š„ TogglePlugin๏ผˆๆ”ฏๆŒ็ผฉ่ฟ›๏ผ‰ๅŠๅ…ถ Plate UI ็ป„ไปถใ€‚

<ComponentSource name="toggle-kit" />
  • IndentKit: ไธบๆŠ˜ๅ ๅ…ƒ็ด ๆไพ›็ผฉ่ฟ›ๆ”ฏๆŒ
  • ToggleElement: ๆธฒๆŸ“ๆŠ˜ๅ ๅ…ƒ็ด 

ๆทปๅŠ ๅฅ—ไปถ

ๅฐ†ๅฅ—ไปถๅŠ ๅ…ฅๆ’ไปถๅˆ—่กจ๏ผš

import { createPlateEditor } from 'platejs/react';
import { ToggleKit } from '@/components/editor/plugins/toggle-kit';

const editor = createPlateEditor({
  plugins: [
    // ...ๅ…ถไป–ๆ’ไปถ,
    ...ToggleKit,
  ],
});
</Steps>

ๆ‰‹ๅŠจ้…็ฝฎ

<Steps>

ๅฎ‰่ฃ…ไพ่ต–

npm install @platejs/indent @platejs/toggle

ๆทปๅŠ ๆ’ไปถ

ๅœจๅˆ›ๅปบ็ผ–่พ‘ๅ™จๆ—ถ๏ผŒๅฐ† TogglePlugin ๅ’Œ IndentPlugin ๅŠ ๅ…ฅๆ’ไปถๆ•ฐ็ป„ใ€‚

import { IndentPlugin } from '@platejs/indent/react';
import { TogglePlugin } from '@platejs/toggle/react';
import { createPlateEditor } from 'platejs/react';

const editor = createPlateEditor({
  plugins: [
    // ...ๅ…ถไป–ๆ’ไปถ,
    IndentPlugin,
    TogglePlugin,
  ],
});

้…็ฝฎๆ’ไปถ

ไธบ IndentPlugin ๅ’Œ TogglePlugin ้…็ฝฎ็›ฎๆ ‡ๅ…ƒ็ด ๅ’Œ็ป„ไปถๅˆ†้…ใ€‚

import { IndentPlugin } from '@platejs/indent/react';
import { TogglePlugin } from '@platejs/toggle/react';
import { createPlateEditor } from 'platejs/react';
import { ToggleElement } from '@/components/ui/toggle-node';
import { KEYS } from 'platejs';

const editor = createPlateEditor({
  plugins: [
    // ...ๅ…ถไป–ๆ’ไปถ,
    IndentPlugin.configure({
      inject: {
        targetPlugins: [...KEYS.heading, KEYS.p, KEYS.toggle],
      },
    }),
    TogglePlugin.withComponent(ToggleElement),
  ],
});
  • withComponent: ๆŒ‡ๅฎš ToggleElement ๆธฒๆŸ“ๆŠ˜ๅ ๅ…ƒ็ด 
  • IndentPlugin.inject.targetPlugins: ้…็ฝฎๆ”ฏๆŒ็ผฉ่ฟ›็š„ๅ…ƒ็ด ็ฑปๅž‹๏ผˆๅŒ…ๆ‹ฌๆŠ˜ๅ ้กน๏ผ‰

ๆทปๅŠ ๅทฅๅ…ทๆ ๆŒ‰้’ฎ

ๅฏๅœจๅทฅๅ…ทๆ ไธญๆทปๅŠ  ToggleToolbarButton ๆฅๆ’ๅ…ฅๆŠ˜ๅ ๅ…ƒ็ด ใ€‚

่ฝฌๆขๅทฅๅ…ทๆ ๆŒ‰้’ฎ

ๅฐ†ๆญค้€‰้กนๅŠ ๅ…ฅ่ฝฌๆขๅทฅๅ…ทๆ ๆŒ‰้’ฎๅฏๅฐ†ๅŒบๅ—่ฝฌไธบๆŠ˜ๅ ้กน๏ผš

{
  icon: <ChevronRightIcon />,
  label: 'ๆŠ˜ๅ ๅˆ—่กจ',
  value: KEYS.toggle,
}

ๆ’ๅ…ฅๅทฅๅ…ทๆ ๆŒ‰้’ฎ

ๅฐ†ๆญค้€‰้กนๅŠ ๅ…ฅๆ’ๅ…ฅๅทฅๅ…ทๆ ๆŒ‰้’ฎๅฏๆ’ๅ…ฅๆŠ˜ๅ ๅ…ƒ็ด ๏ผš

{
  icon: <ChevronRightIcon />,
  label: 'ๆŠ˜ๅ ๅˆ—่กจ',
  value: KEYS.toggle,
}
</Steps>

ๆ’ไปถ

TogglePlugin

็ฎก็†ๆŠ˜ๅ ๅŠŸ่ƒฝ็š„ๆ’ไปถใ€‚

<API name="TogglePlugin"> <APIOptions type="object"> <APIItem name="openIds" type="Set<string>" optional> ๅฝ“ๅ‰ๅฑ•ๅผ€็š„ๆŠ˜ๅ ้กนID้›†ๅˆ - **้ป˜่ฎคๅ€ผ:** `new Set()` </APIItem> <APIItem name="isOpen" type="(toggleId: string) => boolean" optional> ๆฃ€ๆŸฅๆŠ˜ๅ ้กนๆ˜ฏๅฆๅฑ•ๅผ€็š„ๅ‡ฝๆ•ฐ - **้ป˜่ฎคๅ€ผ:** `(id) => openIds.has(id)` </APIItem> <APIItem name="someClosed" type="(toggleIds: string[]) => boolean" optional> ๆฃ€ๆŸฅๆ˜ฏๅฆๅญ˜ๅœจๆ”ถ่ตท็Šถๆ€็š„ๆŠ˜ๅ ้กน - **้ป˜่ฎคๅ€ผ:** `(ids) => ids.some(id => !isOpen(id))` </APIItem> </APIOptions> </API>

APIๆŽฅๅฃ

api.toggle.toggleIds

ๅˆ‡ๆขๆŒ‡ๅฎšๆŠ˜ๅ ้กน็š„ๅฑ•ๅผ€็Šถๆ€ใ€‚

<API name="editor.api.toggle.toggleIds"> ๅˆ‡ๆขๆŠ˜ๅ ้กนๅฑ•ๅผ€็Šถๆ€ <APIParameters> <APIItem name="ids" type="string[]"> ้œ€่ฆๅˆ‡ๆข็š„ๅ…ƒ็ด IDๆ•ฐ็ป„ </APIItem> <APIItem name="force" type="boolean | null" optional> ๅผบๅˆถๅˆ‡ๆข็Šถๆ€๏ผš - `true`: ๅฑ•ๅผ€ๆ‰€ๆœ‰ - `false`: ๆ”ถ่ตทๆ‰€ๆœ‰ - `null`: ๅˆ‡ๆขๅฝ“ๅ‰็Šถๆ€ </APIItem> </APIParameters> </API>

openNextToggles

ๅฐ†ๅฝ“ๅ‰้€‰ๅŒบๆ‰€ๅœจๅŒบๅ—ๆ ‡่ฎฐไธบๅฑ•ๅผ€็š„ๆŠ˜ๅ ้กนใ€‚

้’ฉๅญๅ‡ฝๆ•ฐ

useToggleToolbarButtonState

่Žทๅ–ๆŠ˜ๅ ๅทฅๅ…ทๆ ๆŒ‰้’ฎ็Šถๆ€็š„้’ฉๅญใ€‚

<API name="useToggleToolbarButtonState"> <APIReturns type="object"> <APIItem name="pressed" type="boolean"> ๆŒ‰้’ฎๆ˜ฏๅฆๅค„ไบŽๆŒ‰ไธ‹็Šถๆ€ </APIItem> </APIReturns> </API>

useToggleToolbarButton

ๅค„็†ๆŠ˜ๅ ๅทฅๅ…ทๆ ๆŒ‰้’ฎ่กŒไธบ็š„้’ฉๅญใ€‚

<API name="useToggleToolbarButton"> <APIState> <APIItem name="pressed" type="boolean"> ๆŒ‰้’ฎๆ˜ฏๅฆๅค„ไบŽๆŒ‰ไธ‹็Šถๆ€ </APIItem> </APIState> <APIReturns type="object"> <APIItem name="props" type="object"> ๆŠ˜ๅ ๆŒ‰้’ฎๅฑžๆ€ง <APISubList> <APISubListItem parent="props" name="pressed" type="boolean"> ๆ˜ฏๅฆๆŒ‰ไธ‹็Šถๆ€ </APISubListItem> <APISubListItem parent="props" name="onClick" type="function"> ๅˆ‡ๆข่Š‚็‚น็ฑปๅž‹ๅนถ่š็„ฆ็ผ–่พ‘ๅ™จ </APISubListItem> <APISubListItem parent="props" name="onMouseDown" type="function"> ้˜ฒๆญข็‚นๅ‡ปๆ—ถๅคฑๅŽป็„ฆ็‚น </APISubListItem> </APISubList> </APIItem> </APIReturns> </API>

useToggleButtonState

่Žทๅ–ๆŠ˜ๅ ๆŒ‰้’ฎ็Šถๆ€็š„้’ฉๅญใ€‚

<API name="useToggleButtonState"> ่Žทๅ–ๆŠ˜ๅ ๆŒ‰้’ฎ็Šถๆ€ <APIParameters> <APIItem name="toggleId" type="string"> ๆŠ˜ๅ ๅ…ƒ็ด ID </APIItem> </APIParameters> <APIReturns type="object"> <APIItem name="toggleId" type="string"> ๆŠ˜ๅ ๅ…ƒ็ด ID </APIItem> <APIItem name="open" type="boolean"> ๆ˜ฏๅฆๅค„ไบŽๅฑ•ๅผ€็Šถๆ€ </APIItem> </APIReturns> </API>

useToggleButton

ๅค„็†ๆŠ˜ๅ ๆŒ‰้’ฎ่กŒไธบ็š„้’ฉๅญใ€‚

<API name="useToggleButton"> ๅค„็†ๆŠ˜ๅ ๆŒ‰้’ฎ่กŒไธบ <APIParameters> <APIItem name="toggleId" type="string"> ๆŠ˜ๅ ๅ…ƒ็ด ID </APIItem> <APIItem name="open" type="boolean"> ๆ˜ฏๅฆๅฑ•ๅผ€็Šถๆ€ </APIItem> </APIParameters> <APIReturns type="object"> <APIItem name="toggleId" type="string"> ๆŠ˜ๅ ๅ…ƒ็ด ID </APIItem> <APIItem name="open" type="boolean"> ๆ˜ฏๅฆๅฑ•ๅผ€็Šถๆ€ </APIItem> <APIItem name="buttonProps" type="object"> ๆŠ˜ๅ ๆŒ‰้’ฎๅฑžๆ€ง <APISubList> <APISubListItem parent="buttonProps" name="onClick" type="function"> ๅˆ‡ๆขๅฑ•ๅผ€็Šถๆ€ </APISubListItem> <APISubListItem parent="buttonProps" name="onMouseDown" type="function"> ้˜ฒๆญข็‚นๅ‡ปๆ—ถๅคฑๅŽป็„ฆ็‚น </APISubListItem> </APISubList> </APIItem> </APIReturns> </API>
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

โ† Root | โ†‘ Up