Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changed various UI components. #1451

Merged
merged 43 commits into from
Mar 3, 2025
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
aa9c55e
Organised CTA card settings panel
sanne-san Feb 17, 2025
a669fa9
Fixed Colour selection tests
ronaldlangeveld Feb 19, 2025
68cbe9e
Added stopPropagation to Image Upload Form
ronaldlangeveld Feb 20, 2025
3cf4452
Fixed image upload related tests and bugs
ronaldlangeveld Feb 20, 2025
6538fbc
Updated CTA Card tests
ronaldlangeveld Feb 20, 2025
a762a4e
Fixed CTA Node tests
ronaldlangeveld Feb 20, 2025
d691484
Fixed linting
ronaldlangeveld Feb 20, 2025
2eaba1d
Added button color as hex
ronaldlangeveld Feb 24, 2025
cc9490a
Added drag drop to CTA card img button
ronaldlangeveld Feb 24, 2025
32a3ee9
Added img icon to color picker
ronaldlangeveld Feb 25, 2025
efc5d4a
Revert "Added img icon to color picker"
ronaldlangeveld Feb 25, 2025
62adaf2
Fixed swatch test
ronaldlangeveld Feb 25, 2025
29742de
Revert "Revert "Added img icon to color picker""
ronaldlangeveld Feb 25, 2025
51f4a98
Added test for finding img icon
ronaldlangeveld Feb 25, 2025
49b1443
Added image icon on Header
ronaldlangeveld Feb 25, 2025
d5b958d
Updated proptypes
ronaldlangeveld Feb 25, 2025
09bb024
Added image string to headercard
ronaldlangeveld Feb 25, 2025
3cc4b08
Improved button icon test
ronaldlangeveld Feb 25, 2025
91860d2
Fixed console errors when inserting CTA card
kevinansfield Feb 25, 2025
3ea83f2
Cleaned up repetition in `<MediaPlaceholder>`
kevinansfield Feb 25, 2025
c9f3dbe
Renamed call-to-action card test file
kevinansfield Feb 25, 2025
60cb43a
Fixed errors coming from useMoveable
kevinansfield Feb 25, 2025
acc7d53
Fixed background color popover not closing on click outside
kevinansfield Feb 25, 2025
69d31a8
Improved close on click outside for button color picker
kevinansfield Feb 25, 2025
a898422
Fixed display of button accent color in demo
kevinansfield Feb 25, 2025
6f8074d
Fixed `return undefined` from React components in MediaPlaceholder
kevinansfield Feb 25, 2025
9233c48
Merge branch 'main' into ui-updates-reorg
kevinansfield Feb 27, 2025
917f349
Merge branch 'main' into ui-updates-reorg
kevinansfield Feb 27, 2025
bcef9be
Extracted modified UI components to beta copies
kevinansfield Feb 28, 2025
f327cb2
fixed CalloutCard background color setting layout
kevinansfield Mar 3, 2025
a67e9d7
fixed default button text color
kevinansfield Mar 3, 2025
286ff6e
fixed tests
kevinansfield Mar 3, 2025
11cf9a6
Removed tooltip from layout buttons in call to action card
sanne-san Mar 3, 2025
ec790b2
added missing prop types to <MediaUploaderBeta>
kevinansfield Mar 3, 2025
ba2fc95
avoid global Error override in MediaPlaceholderBeta.stories
kevinansfield Mar 3, 2025
5c48803
renamed IconButton export in ButtonGroupBeta to avoid duplicate naming
kevinansfield Mar 3, 2025
44b0feb
added missing prop types to ButtonGroupBeta
kevinansfield Mar 3, 2025
467aee8
added default fn for `onRemoveMedia` prop to avoid errors if omitted
kevinansfield Mar 3, 2025
993d118
Added a divider to call-to-action card settings panel
sanne-san Mar 3, 2025
253f995
added isRequired to required props in ButtonGroupBeta
kevinansfield Mar 3, 2025
c18f8de
fixed incorrect borderStyle conditionals in MediaUploaderBeta
kevinansfield Mar 3, 2025
044dd2b
added missing openImageEditor prop type to MediaUploaderBeta
kevinansfield Mar 3, 2025
44e0a29
added roles and aria-checked to ButtonGroupBeta elements
kevinansfield Mar 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ export class CallToActionNode extends generateDecoratorNode({
properties: [
{name: 'layout', default: 'minimal'},
{name: 'textValue', default: '', wordCount: true},
{name: 'showButton', default: false},
{name: 'buttonText', default: ''},
{name: 'showButton', default: true},
{name: 'buttonText', default: 'Learn more'},
{name: 'buttonUrl', default: ''},
{name: 'buttonColor', default: ''},
{name: 'buttonColor', default: '#000000'}, // Where colour is customisable, we should use hex values
{name: 'buttonTextColor', default: ''},
{name: 'hasSponsorLabel', default: true},
{name: 'sponsorLabel', default: '<p><span style="white-space: pre-wrap;">SPONSORED</span></p>'},
{name: 'backgroundColor', default: 'grey'},
{name: 'backgroundColor', default: 'grey'}, // Since this is one of a few fixed options, we stick to colour names.
{name: 'hasImage', default: false},
{name: 'imageUrl', default: ''},
{name: 'imageWidth', default: null},
Expand Down
16 changes: 8 additions & 8 deletions packages/kg-default-nodes/test/nodes/call-to-action.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ describe('CallToActionNode', function () {
callToActionNode.textValue = 'This is a cool advertisement';
callToActionNode.textValue.should.equal('This is a cool advertisement');

callToActionNode.showButton.should.equal(false);
callToActionNode.showButton = true;
callToActionNode.showButton.should.equal(true);
callToActionNode.showButton = false;
callToActionNode.showButton.should.equal(false);

callToActionNode.buttonText.should.equal('');
callToActionNode.buttonText.should.equal('Learn more');
callToActionNode.buttonText = 'click me';
callToActionNode.buttonText.should.equal('click me');

Expand All @@ -99,9 +99,9 @@ describe('CallToActionNode', function () {
callToActionNode.sponsorLabel = 'This post is brought to you by our sponsors';
callToActionNode.sponsorLabel.should.equal('This post is brought to you by our sponsors');

callToActionNode.buttonColor.should.equal('');
callToActionNode.buttonColor = 'red';
callToActionNode.buttonColor.should.equal('red');
callToActionNode.buttonColor.should.equal('#000000');
callToActionNode.buttonColor = '#ffffff';
callToActionNode.buttonColor.should.equal('#ffffff');

callToActionNode.buttonTextColor.should.equal('');
callToActionNode.buttonTextColor = 'black';
Expand All @@ -112,8 +112,8 @@ describe('CallToActionNode', function () {
callToActionNode.hasSponsorLabel.should.equal(false);

callToActionNode.backgroundColor.should.equal('grey');
callToActionNode.backgroundColor = '#654321';
callToActionNode.backgroundColor.should.equal('#654321');
callToActionNode.backgroundColor = 'red';
callToActionNode.backgroundColor.should.equal('red');

callToActionNode.hasImage.should.equal(false);
callToActionNode.hasImage = true;
Expand Down
4 changes: 2 additions & 2 deletions packages/koenig-lexical/src/components/ui/ButtonGroup.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {usePreviousFocus} from '../../hooks/usePreviousFocus';
export function ButtonGroup({buttons = [], selectedName, onClick}) {
return (
<div className="flex">
<ul className="flex items-center justify-evenly gap-[.6rem] rounded-lg font-sans text-md font-normal text-white">
<ul className="flex items-center justify-evenly rounded-lg bg-grey-100 font-sans text-md font-normal text-white">
{buttons.map(({label, name, Icon, dataTestId}) => (
<IconButton
key={`${name}-${label}`}
Expand All @@ -33,7 +33,7 @@ export function IconButton({dataTestId, onClick, label, name, selectedName, Icon
<li className="mb-0">
<button
aria-label={label}
className={`group relative flex h-7 w-8 cursor-pointer items-center justify-center rounded-lg hover:bg-grey-150 dark:hover:bg-grey-900 ${isActive ? 'bg-grey-150 text-green-600 dark:bg-grey-900 dark:text-white' : 'text-black dark:text-white' } ${Icon ? '' : 'text-[1.3rem] font-bold'}`}
className={`group relative flex h-7 w-8 cursor-pointer items-center justify-center rounded-lg text-black dark:text-white dark:hover:bg-grey-900 ${isActive ? 'border border-grey-300 bg-white shadow-xs dark:bg-grey-900' : '' } ${Icon ? '' : 'text-[1.3rem] font-bold'}`}
data-testid={dataTestId}
type="button"
onClick={handleClick}
Expand Down
75 changes: 53 additions & 22 deletions packages/koenig-lexical/src/components/ui/ColorOptionButtons.jsx
Original file line number Diff line number Diff line change
@@ -1,31 +1,62 @@
import PlusIcon from '../../assets/icons/plus.svg?react';
import React from 'react';
import React, {useState} from 'react';
import {Tooltip} from './Tooltip';
import {usePreviousFocus} from '../../hooks/usePreviousFocus';

export function ColorOptionButtons({buttons = [], selectedName, onClick}) {
const [isOpen, setIsOpen] = useState(false);
const selectedButton = buttons.find(button => button.name === selectedName);

return (
<div className="flex">
<ul className="flex w-full items-center justify-between rounded-md font-sans text-md font-normal text-white">
{buttons.map(({label, name, color}) => (
name !== 'image' ?
<ColorButton
key={`${name}-${label}`}
color={color}
label={label}
name={name}
selectedName={selectedName}
onClick={onClick}
/>
:
<li key='background-image' className={`flex size-[3rem] cursor-pointer items-center justify-center rounded-full border-2 ${selectedName === name ? 'border-green' : 'border-transparent'}`} data-testid="background-image-color-button" type="button" onClick={() => onClick(name)}>
<span className="border-1 flex size-6 items-center justify-center rounded-full border border-black/5">
<PlusIcon className="size-3 stroke-grey-700 stroke-2 dark:stroke-grey-500 dark:group-hover:stroke-grey-100" />
</span>
</li>
<div className="relative">
<button
className={`relative size-6 cursor-pointer rounded-full ${selectedName ? 'p-[2px]' : 'border border-grey-200 dark:border-grey-800'}`}
type="button"
onClick={() => setIsOpen(!isOpen)}
>
{selectedName && (
<div className="absolute inset-0 rounded-full bg-clip-content p-[3px]" style={{
background: 'conic-gradient(hsl(360,100%,50%),hsl(315,100%,50%),hsl(270,100%,50%),hsl(225,100%,50%),hsl(180,100%,50%),hsl(135,100%,50%),hsl(90,100%,50%),hsl(45,100%,50%),hsl(0,100%,50%))',
WebkitMask: 'linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)',
WebkitMaskComposite: 'xor',
mask: 'linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)',
maskComposite: 'exclude'
}} />
)}
<span
className={`${selectedButton?.color || ''} block size-full rounded-full border-2 border-white`}
></span>
</button>

))}
</ul>
{/* Color options popover */}
{isOpen && (
<div className="absolute -right-3 bottom-full z-10 mb-2 rounded-lg bg-white px-3 py-2 shadow">
<div className="flex">
<ul className="flex w-full items-center justify-between rounded-md font-sans text-md font-normal text-white">
{buttons.map(({label, name, color}) => (
name !== 'image' ?
<ColorButton
key={`${name}-${label}`}
color={color}
label={label}
name={name}
selectedName={selectedName}
onClick={(title) => {
onClick(title);
setIsOpen(false);
}}
/>
:
<li key='background-image' className={`mb-0 flex size-[3rem] cursor-pointer items-center justify-center rounded-full border-2 ${selectedName === name ? 'border-green' : 'border-transparent'}`} data-testid="background-image-color-button" type="button" onClick={() => onClick(name)}>
<span className="border-1 flex size-6 items-center justify-center rounded-full border border-black/5">
<PlusIcon className="size-3 stroke-grey-700 stroke-2 dark:stroke-grey-500 dark:group-hover:stroke-grey-100" />
</span>
</li>
))}
</ul>
</div>
</div>
)}
</div>
);
}
Expand All @@ -35,7 +66,7 @@ export function ColorButton({onClick, label, name, color, selectedName}) {

const {handleMousedown, handleClick} = usePreviousFocus(onClick, name);
return (
<li>
<li className="mb-0">
<button
aria-label={label}
className={`group relative flex size-6 cursor-pointer items-center justify-center rounded-full border-2 ${isActive ? 'border-green' : 'border-transparent'}`}
Expand Down
Loading
Loading