diff --git a/packages/css/skeleton.css b/packages/css/skeleton.css index e1cd7f90f7..6b66f85672 100644 --- a/packages/css/skeleton.css +++ b/packages/css/skeleton.css @@ -21,9 +21,16 @@ &[data-variant='text'] { border-radius: var(--ds-border-radius-full); box-decoration-break: clone; + color: transparent; display: inline; font-size: 0.8em; /* Scale down font to have larger gap between lines */ letter-spacing: 0.1em; /* But scale up letter-spacing to have circa same line-length */ + user-select: none; /* Prevent text selection */ + + &:empty::before { + content: attr(data-text); /* Only fill with fallback text if empty */ + word-break: break-word; /* Enable text wrapping */ + } } /* When having children, let them define size */ diff --git a/packages/react/src/components/loaders/Skeleton/Skeleton.mdx b/packages/react/src/components/loaders/Skeleton/Skeleton.mdx index e02f1c5356..64178cb80f 100644 --- a/packages/react/src/components/loaders/Skeleton/Skeleton.mdx +++ b/packages/react/src/components/loaders/Skeleton/Skeleton.mdx @@ -25,10 +25,6 @@ Du kan bygge opp komponenter og seksjoner av siden din ved å bruke disse som by Alle varianter av skeleton har `height` og `width` props, som kan brukes til å manuelt sette størrelser. Du kan oppgi størrelsene i `px`, `%`, eller andre enheter som kan settes direkte på style. For `Skeleton variant="text"` holder det ofte å sette kun `width` til det antallet bokstaver du antar vil oppstå, da høyden automatisk skaleres etter tekstinnholdet. -I de fleste tilfeller er manuell setting av høyde og bredde nok, men du kan også sette andre elementer til å rendres som skeleton, gjennom å bruke propen `asChild`. Dette er hovedsaklig tenkt brukt for typografi komponenter. - - - Skeleton vil også tilpasse seg etter `children` som du sender inn til komponenten, men dette vil resultere i en høyde og bredde som matcher summen av samtlige barn. @@ -38,4 +34,4 @@ Skeleton vil også tilpasse seg etter `children` som du sender inn til komponent `Skeleton variant="text"` skalerer automatisk etter den lokale fontstørrelsen, enten den kommer fra `parent`, `children` , eller fordi typografi-komponenter er satt til Skeletons gjennom `asChild`-propen. For best mulig resultat anbefaler vi at du bruker flere `Skeleton variant="text"` med `width` til det antallet bokstaver du antar vil oppstå. - + diff --git a/packages/react/src/components/loaders/Skeleton/Skeleton.stories.tsx b/packages/react/src/components/loaders/Skeleton/Skeleton.stories.tsx index 9582694281..ab338f010c 100644 --- a/packages/react/src/components/loaders/Skeleton/Skeleton.stories.tsx +++ b/packages/react/src/components/loaders/Skeleton/Skeleton.stories.tsx @@ -21,8 +21,8 @@ export default { export const Preview: Story = { args: { - width: '200px', - height: '100px', + width: 200, + height: 100, }, }; @@ -37,7 +37,9 @@ export const Components: StoryFn = () => { > - + + + ); }; @@ -46,7 +48,7 @@ export const UsageExample: StoryFn = () => { return (
@@ -82,39 +84,17 @@ export const Children: StoryFn = () => { ); }; -export const As: StoryFn = () => { - return ( - <> - - Her er en heading - - - - Her er en paragraf-komponent som blir rendret som en Skeleton - variant="text". - - - - - Se hvordan Skeleton da overskriver stylingen til det enkelte - elementet. - - - - ); -}; - -export const TextExample: StoryFn = () => ( +export const Text: StoryFn = () => (
-
- Heading +
+ En tittel Her er en paragraf som går over flere linjer
-
+
- Heading + En tittel diff --git a/packages/react/src/components/loaders/Skeleton/Skeleton.tsx b/packages/react/src/components/loaders/Skeleton/Skeleton.tsx index e8573164ff..4ce84d2d4f 100644 --- a/packages/react/src/components/loaders/Skeleton/Skeleton.tsx +++ b/packages/react/src/components/loaders/Skeleton/Skeleton.tsx @@ -31,7 +31,6 @@ export const Skeleton = forwardRef( { asChild, className, - children, height, style, variant = 'rectangle', @@ -42,7 +41,6 @@ export const Skeleton = forwardRef( ) { const Component = asChild ? Slot : 'span'; const isText = variant === 'text'; - const childrenText = isText && '-'.repeat(Number(width) || 1); // s followed by a ­ makes the most average character length const animationRef = useSynchronizedAnimation( 'ds-skeleton-opacity-fade', ); @@ -52,13 +50,12 @@ export const Skeleton = forwardRef( + /> ); }, );