Date Element
plate/date-nodeFreeComponent
A date field component with calendar picker.
Live preview
live · rendered by the registry
Rendered by plate on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://platejs.org/r/date-node.jsonSource
1'use client';23import * as React from 'react';45import {6 formatDateValue,7 getDateDisplayLabel,8 parseCanonicalDateValue,9} from '@platejs/date';10import type { TDateElement } from 'platejs';11import type { PlateElementProps } from 'platejs/react';1213import { PlateElement, useReadOnly } from 'platejs/react';1415import { Calendar } from '@/components/ui/calendar';16import {17 Popover,18 PopoverContent,19 PopoverTrigger,20} from '@/components/ui/popover';21import { cn } from '@/lib/utils';22import { inlineSuggestionVariants } from '@/registry/lib/suggestion';2324export function DateElement(props: PlateElementProps<TDateElement>) {25 const { editor, element } = props;26 const readOnly = useReadOnly();2728 const trigger = (29 <span30 className={cn(31 'w-fit cursor-pointer rounded-sm bg-muted px-1 text-muted-foreground',32 inlineSuggestionVariants()33 )}34 contentEditable={false}35 draggable36 >37 {element.date || element.rawDate ? (38 getDateDisplayLabel(element)39 ) : (40 <span>Pick a date</span>41 )}42 </span>43 );4445 return (46 <PlateElement47 {...props}48 className="inline-block"49 attributes={{50 ...props.attributes,51 contentEditable: false,52 }}53 >54 {readOnly ? (55 trigger56 ) : (57 <Popover>58 <PopoverTrigger asChild>{trigger}</PopoverTrigger>59 <PopoverContent className="w-auto p-0">60 <Calendar61 selected={parseCanonicalDateValue(element.date ?? '')}62 onSelect={(date) => {63 if (!date) return;6465 editor.tf.setNodes(66 { date: formatDateValue(date), rawDate: undefined },67 { at: element }68 );69 }}70 mode="single"71 initialFocus72 />73 </PopoverContent>74 </Popover>75 )}76 {props.children}77 </PlateElement>78 );79}
What it pulls in
npm packages
Other registry items
Files it writes
More from plate
All 324 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| ai-kitai-kit | plate | Components | Free | 1 dep | |
| AI Menuai-menu | plate | Components | Free | 5 deps · 2 files | |
| AI Leafai-node | plate | Components | Free | no deps | |
| AI Toolbar Buttonai-toolbar-button | plate | Components | Free | 1 dep | |
| align-base-kitalign-base-kit | plate | Components | Free | 1 dep | |
| align-kitalign-kit | plate | Components | Free | 1 dep | |
| Align Toolbar Buttonalign-toolbar-button | plate | Components | Free | 1 dep | |
| autoformat-classic-kitautoformat-classic-kit | plate | Components | Free | 2 deps |
