Skip to content

Commit

Permalink
add jsdoc (it's mostly copilot + some tweaks) (#2034)
Browse files Browse the repository at this point in the history
* 📝 add jsdoc (it's mostly copilot + some tweaks)

* 😂 emojis

* 🏷️ add jsdoc for overridableComponents

* 🏷️ Oppdatert docgen for nestede komponenter

* 🎨 Oppdatert chat

* 🏷️ Dokumentert date-hooks

* 🏷️ Expansioncard-props

* 🏷️ Stepper.step jsdoc

* 🏷️ Tabs jsdoc

* 🏷️ Linkpaneltypes

* 🏷️ List jsdoc

* 🏷️ list jsdoc

* 🏷️ InternalHeader-docs

* 🏷️ jsdoc for dropdown

* 🏷️ Timeline jsdoc

---------

Co-authored-by: Ken <[email protected]>
Co-authored-by: Ken <[email protected]>
  • Loading branch information
3 people authored Jun 7, 2023
1 parent 7bae5dc commit 17d92c9
Show file tree
Hide file tree
Showing 81 changed files with 1,429 additions and 592 deletions.
5 changes: 5 additions & 0 deletions .changeset/quick-numbers-remain.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@navikt/ds-react": patch
---

Add JSDoc typings
47 changes: 41 additions & 6 deletions @navikt/core/react/src/accordion/Accordion.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,32 @@
import cl from "clsx";
import React, { forwardRef } from "react";
import AccordionItem, { AccordionItemType } from "./AccordionItem";
import AccordionContent, { AccordionContentType } from "./AccordionContent";
import AccordionHeader, { AccordionHeaderType } from "./AccordionHeader";
import AccordionItem, { AccordionItemProps } from "./AccordionItem";
import AccordionContent, { AccordionContentProps } from "./AccordionContent";
import AccordionHeader, { AccordionHeaderProps } from "./AccordionHeader";
import { AccordionContext } from "./AccordionContext";

interface AccordionComponent
extends React.ForwardRefExoticComponent<
AccordionProps & React.RefAttributes<HTMLDivElement>
> {
Item: AccordionItemType;
Header: AccordionHeaderType;
Content: AccordionContentType;
/**
* @see 🏷️ {@link AccordionItemProps}
*/
Item: React.ForwardRefExoticComponent<
AccordionItemProps & React.RefAttributes<HTMLDivElement>
>;
/**
* @see 🏷️ {@link AccordionHeaderProps}
*/
Header: React.ForwardRefExoticComponent<
AccordionHeaderProps & React.RefAttributes<HTMLButtonElement>
>;
/**
* @see 🏷️ {@link AccordionContentProps}
*/
Content: React.ForwardRefExoticComponent<
AccordionContentProps & React.RefAttributes<HTMLDivElement>
>;
}

export interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
Expand All @@ -38,6 +53,26 @@ export interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
children: React.ReactNode;
}

/**
* A component that displays collapsible content sections.
*
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/accordion)
* @see 🏷️ {@link AccordionProps}
*
* @example
* ```jsx
* <Accordion>
* <Accordion.Item>
* <Accordion.Header>Section 1</Accordion.Header>
* <Accordion.Content>Content 1</Accordion.Content>
* </Accordion.Item>
* <Accordion.Item>
* <Accordion.Header>Section 2</Accordion.Header>
* <Accordion.Content>Content 2</Accordion.Content>
* </Accordion.Item>
* </Accordion>
* ```
*/
export const Accordion = forwardRef<HTMLDivElement, AccordionProps>(
(
{
Expand Down
6 changes: 1 addition & 5 deletions @navikt/core/react/src/accordion/AccordionContent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,7 @@ export interface AccordionContentProps
children: React.ReactNode;
}

export type AccordionContentType = React.ForwardRefExoticComponent<
AccordionContentProps & React.RefAttributes<HTMLDivElement>
>;

const AccordionContent: AccordionContentType = forwardRef(
const AccordionContent = forwardRef<HTMLDivElement, AccordionContentProps>(
({ children, className, ...rest }, ref) => {
const context = useContext(AccordionItemContext);

Expand Down
6 changes: 1 addition & 5 deletions @navikt/core/react/src/accordion/AccordionHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,7 @@ export interface AccordionHeaderProps
children: React.ReactNode;
}

export type AccordionHeaderType = React.ForwardRefExoticComponent<
AccordionHeaderProps & React.RefAttributes<HTMLButtonElement>
>;

const AccordionHeader: AccordionHeaderType = forwardRef(
const AccordionHeader = forwardRef<HTMLButtonElement, AccordionHeaderProps>(
({ children, className, onClick, ...rest }, ref) => {
const itemContext = useContext(AccordionItemContext);
const accordionContext = useContext(AccordionContext);
Expand Down
6 changes: 1 addition & 5 deletions @navikt/core/react/src/accordion/AccordionItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ export interface AccordionItemProps
defaultOpen?: boolean;
}

export type AccordionItemType = React.ForwardRefExoticComponent<
AccordionItemProps & React.RefAttributes<HTMLDivElement>
>;

export interface AccordionItemContextProps {
open: boolean;
toggleOpen: () => void;
Expand All @@ -39,7 +35,7 @@ export interface AccordionItemContextProps {
export const AccordionItemContext =
createContext<AccordionItemContextProps | null>(null);

const AccordionItem: AccordionItemType = forwardRef(
const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(
(
{ children, className, open, defaultOpen = false, onClick, id, ...rest },
ref
Expand Down
9 changes: 9 additions & 0 deletions @navikt/core/react/src/alert/Alert.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,15 @@ export interface AlertContextProps {
size: "medium" | "small";
}

/**
* A component for displaying alerts
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/alert)
* @see 🏷️ {@link AlertProps}
* @example
* ```jsx
* <Alert variant="error">Dette er en feilmelding</Alert>
* ```
*/
export const Alert = forwardRef<HTMLDivElement, AlertProps>(
(
{
Expand Down
10 changes: 10 additions & 0 deletions @navikt/core/react/src/button/Button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,16 @@ export interface ButtonProps
iconPosition?: "left" | "right";
}

/**
* A button component
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/button)
* @see 🏷️ {@link ButtonProps}
* @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
* @example
* ```jsx
* <Button>Klikk meg</Button>
* ```
*/
export const Button: OverridableComponent<ButtonProps, HTMLButtonElement> =
forwardRef(
(
Expand Down
6 changes: 1 addition & 5 deletions @navikt/core/react/src/chat/Bubble.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,7 @@ export interface BubbleProps extends HTMLAttributes<HTMLDivElement> {
toptextPosition?: "left" | "right";
}

export type BubbleType = React.ForwardRefExoticComponent<
BubbleProps & React.RefAttributes<HTMLDivElement>
>;

const Bubble: BubbleType = forwardRef(
const Bubble = forwardRef<HTMLDivElement, BubbleProps>(
(
{
children,
Expand Down
25 changes: 23 additions & 2 deletions @navikt/core/react/src/chat/Chat.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { forwardRef, HTMLAttributes } from "react";
import cl from "clsx";
import Bubble, { BubbleType } from "./Bubble";
import Bubble, { BubbleProps } from "./Bubble";
import { BodyLong, BodyShort } from "../typography";

export interface ChatProps extends HTMLAttributes<HTMLDivElement> {
Expand Down Expand Up @@ -44,9 +44,30 @@ interface ChatComponent
extends React.ForwardRefExoticComponent<
ChatProps & React.RefAttributes<HTMLDivElement>
> {
Bubble: BubbleType;
/**
* @see 🏷️ {@link BubbleProps}
*/
Bubble: React.ForwardRefExoticComponent<
BubbleProps & React.RefAttributes<HTMLDivElement>
>;
}

/**
* A component for displaying chat messages.
*
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/chat)
* @see 🏷️ {@link ChatProps}
*
* @example
* ```jsx
* <Chat>
* <Chat.Bubble avatar="A" name="Alice">Hello!</Chat.Bubble>
* </Chat>
* <Chat>
* <Chat.Bubble avatar="B" name="Bob">Hi there!</Chat.Bubble>
* </Chat>
* ```
*/
export const Chat = forwardRef<HTMLDivElement, ChatProps>(
(
{
Expand Down
46 changes: 42 additions & 4 deletions @navikt/core/react/src/chips/Chips.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import cl from "clsx";
import React, { forwardRef, HTMLAttributes } from "react";
import ToggleChips, { ToggleChipsType } from "./Toggle";
import RemovableChips, { RemovableChipsType } from "./Removable";
import ToggleChips, { ToggleChipsProps } from "./Toggle";
import RemovableChips, { RemovableChipsProps } from "./Removable";
import { OverridableComponent } from "../util/OverridableComponent";

export interface ChipsProps extends HTMLAttributes<HTMLUListElement> {
children: React.ReactNode;
Expand All @@ -16,10 +17,47 @@ interface ChipsComponent
extends React.ForwardRefExoticComponent<
ChipsProps & React.RefAttributes<HTMLUListElement>
> {
Toggle: ToggleChipsType;
Removable: RemovableChipsType;
/**
* Toggle between selected-states.
* @see 🏷️ {@link ToggleChipsProps}
* @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
*/
Toggle: OverridableComponent<ToggleChipsProps, HTMLButtonElement>;
/**
* Remove filter or the likes on click
* @see 🏷️ {@link RemovableChipsProps}
* @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
*/
Removable: OverridableComponent<RemovableChipsProps, HTMLButtonElement>;
}

/**
* A component that displays a list of items as chips.
*
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/chips)
* @see 🏷️ {@link ChipsProps}
*
* @example
* ```jsx
<Chips size="small">
{options.map((c) => (
<Chips.Toggle
selected={selected.includes(c)}
key={c}
onClick={() =>
setSelected(
selected.includes(c)
? selected.filter((x) => x !== c)
: [...selected, c]
)
}
>
{c}
</Chips.Toggle>
))}
</Chips>
* ```
*/
export const Chips: ChipsComponent = forwardRef<HTMLUListElement, ChipsProps>(
({ className, size = "medium", children, ...rest }, ref) => {
return (
Expand Down
5 changes: 1 addition & 4 deletions @navikt/core/react/src/chips/Removable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ export interface RemovableChipsProps
onDelete?: () => void;
}

export interface RemovableChipsType
extends OverridableComponent<RemovableChipsProps, HTMLButtonElement> {}

export const RemovableChips: OverridableComponent<
RemovableChipsProps,
HTMLButtonElement
Expand Down Expand Up @@ -63,6 +60,6 @@ export const RemovableChips: OverridableComponent<
</Component>
);
}
) as RemovableChipsType;
);

export default RemovableChips;
8 changes: 4 additions & 4 deletions @navikt/core/react/src/chips/Toggle.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ export interface ToggleChipsProps
selected?: boolean;
}

export interface ToggleChipsType
extends OverridableComponent<ToggleChipsProps, HTMLButtonElement> {}

export const ToggleChips: ToggleChipsType = forwardRef(
export const ToggleChips: OverridableComponent<
ToggleChipsProps,
HTMLButtonElement
> = forwardRef(
(
{ className, children, selected, as: Component = "button", ...rest },
ref
Expand Down
11 changes: 11 additions & 0 deletions @navikt/core/react/src/copybutton/CopyButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,17 @@ export interface CopyButtonProps
activeTitle?: string;
}

/**
* A button component that copies text to the clipboard when clicked.
*
* @see [📝 Documentation](https://aksel.nav.no/komponenter/core/copybutton)
* @see 🏷️ {@link CopyButtonProps}
*
* @example
* ```jsx
<CopyButton copyText="3.14" />
* ```
*/
export const CopyButton = forwardRef<HTMLButtonElement, CopyButtonProps>(
(
{
Expand Down
Loading

0 comments on commit 17d92c9

Please sign in to comment.