diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index b3f74638e0..d157ae1322 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -3,6 +3,36 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.133.0](https://github.com/mondaycom/vibe/compare/monday-ui-react-core@2.132.0...monday-ui-react-core@2.133.0) (2024-09-11) + + +### Features + +* add aria-pressed prop to IconButton ([#2428](https://github.com/mondaycom/vibe/issues/2428)) ([4587c6e](https://github.com/mondaycom/vibe/commit/4587c6e2270d9bd688e52256dda0611cf1731fd8)) + + + + + +# [2.132.0](https://github.com/mondaycom/vibe/compare/monday-ui-react-core@2.131.2...monday-ui-react-core@2.132.0) (2024-09-09) + + +### Bug Fixes + +* **Dropdown:** left icon shrinking with long text ([#2416](https://github.com/mondaycom/vibe/issues/2416)) ([dab052d](https://github.com/mondaycom/vibe/commit/dab052de53e849d284fd13b0d523ae04b2faed93)) +* **Toast:** make type style stronger ([#2408](https://github.com/mondaycom/vibe/issues/2408)) ([7faf565](https://github.com/mondaycom/vibe/commit/7faf5654c1da2e6f2b7051c76df85f72811ca785)) + + +### Features + +* **Dropdown:** Add A11y props to dropdown ([#2407](https://github.com/mondaycom/vibe/issues/2407)) ([d53d2e2](https://github.com/mondaycom/vibe/commit/d53d2e2f04b067080999f4924bedf358faf03d05)) +* **Dropdown:** add option for divider in dropdown ([#2422](https://github.com/mondaycom/vibe/issues/2422)) ([f5d1e5a](https://github.com/mondaycom/vibe/commit/f5d1e5a802104db4b4e5baae38d06f43ba125eac)) +* **Icon:** add reply all icon ([#2418](https://github.com/mondaycom/vibe/issues/2418)) ([031f65d](https://github.com/mondaycom/vibe/commit/031f65d500098c0f34ede3316503aa3fceea0123)) + + + + + ## [2.131.2](https://github.com/mondaycom/vibe/compare/monday-ui-react-core@2.131.1...monday-ui-react-core@2.131.2) (2024-08-28) diff --git a/packages/core/package.json b/packages/core/package.json index d79b76838d..14086d134e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "monday-ui-react-core", - "version": "2.131.2", + "version": "2.133.0", "description": "Official monday.com UI resources for application development in React.js", "main": "./dist/main.js", "types": "./dist/types.d.ts", @@ -108,7 +108,7 @@ "classnames": "^2.3.2", "framer-motion": "^6.5.1", "lodash-es": "^4.17.21", - "monday-ui-style": "0.11.1", + "monday-ui-style": "0.12.0", "prop-types": "^15.8.1", "react-dates": "21.8.0", "react-inlinesvg": "^3.0.1", @@ -120,7 +120,7 @@ "react-window": "^1.8.7", "react-windowed-select": "^2.0.4", "style-inject": "^0.3.0", - "vibe-storybook-components": "0.19.2" + "vibe-storybook-components": "0.19.3" }, "devDependencies": { "@babel/core": "^7.23.2", diff --git a/packages/core/src/components/AlertBanner/__stories__/AlertBanner.stories.js b/packages/core/src/components/AlertBanner/__stories__/AlertBanner.stories.tsx similarity index 85% rename from packages/core/src/components/AlertBanner/__stories__/AlertBanner.stories.js rename to packages/core/src/components/AlertBanner/__stories__/AlertBanner.stories.tsx index caa7fe534d..cee4d038e4 100644 --- a/packages/core/src/components/AlertBanner/__stories__/AlertBanner.stories.js +++ b/packages/core/src/components/AlertBanner/__stories__/AlertBanner.stories.tsx @@ -1,21 +1,22 @@ import React from "react"; -import AlertBanner from "../AlertBanner"; +import AlertBanner, { AlertBannerProps } from "../AlertBanner"; import AlertBannerText from "../AlertBannerText/AlertBannerText"; import AlertBannerLink from "../AlertBannerLink/AlertBannerLink"; import AlertBannerButton from "../AlertBannerButton/AlertBannerButton"; import { createStoryMetaSettingsDecorator } from "../../../storybook/functions/createStoryMetaSettingsDecorator"; import "./AlertBanner.stories.scss"; +import { Meta, StoryObj } from "@storybook/react"; const metaSettings = createStoryMetaSettingsDecorator({ component: AlertBanner, enumPropNamesArray: ["backgroundColor"] }); -const alertBannerTemplate = args => { +const alertBannerTemplate = (args: AlertBannerProps) => { return ( - - + + ); }; @@ -25,7 +26,7 @@ export default { component: AlertBanner, argTypes: metaSettings.argTypes, decorators: metaSettings.decorators -}; +} satisfies Meta; export const Overview = { render: alertBannerTemplate.bind({}), @@ -38,7 +39,9 @@ export const Overview = { } }; -export const Types = { +type Story = StoryObj; + +export const Types: Story = { render: () => (
@@ -67,7 +70,7 @@ export const Types = { name: "Types" }; -export const AlertBannerWithButton = { +export const AlertBannerWithButton: Story = { render: () => ( @@ -78,7 +81,7 @@ export const AlertBannerWithButton = { name: "Alert Banner with button" }; -export const AlertBannerWithLink = { +export const AlertBannerWithLink: Story = { render: () => ( @@ -89,7 +92,7 @@ export const AlertBannerWithLink = { name: "Alert Banner with link" }; -export const AlertBannerAsAnAnnouncement = { +export const AlertBannerAsAnAnnouncement: Story = { render: () => ( ( @@ -114,7 +117,7 @@ export const AlertBannerAsAnOpportunityToUpgrade = { name: "Alert banner as an opportunity to upgrade" }; -export const OverflowText = { +export const OverflowText: Story = { render: () => ( diff --git a/packages/core/src/components/Button/Button.tsx b/packages/core/src/components/Button/Button.tsx index 11f109c25e..15e9f141e8 100644 --- a/packages/core/src/components/Button/Button.tsx +++ b/packages/core/src/components/Button/Button.tsx @@ -77,6 +77,10 @@ export interface ButtonProps extends VibeComponentProps { * aria to be used for screen reader to know if the button is hidden */ "aria-hidden"?: AriaAttributes["aria-hidden"]; + /** + * Indicates the current "pressed" state of toggle buttons + */ + "aria-pressed"?: AriaAttributes["aria-pressed"]; /** On Button Focus callback */ onFocus?: (event: React.FocusEvent) => void; /** On Button Blur callback */ @@ -144,6 +148,7 @@ const Button: VibeComponent & { ariaControls, "aria-describedby": ariaDescribedBy, "aria-hidden": ariaHidden, + "aria-pressed": ariaPressed, blurOnMouseUp, dataTestId: backwardCompatabilityDataTestId, "data-testid": dataTestId, @@ -269,7 +274,8 @@ const Button: VibeComponent & { "aria-expanded": ariaExpanded, "aria-controls": ariaControls, "aria-describedby": ariaDescribedBy, - "aria-hidden": ariaHidden + "aria-hidden": ariaHidden, + "aria-pressed": ariaPressed }; return props; }, [ @@ -294,7 +300,8 @@ const Button: VibeComponent & { ariaExpanded, ariaControls, ariaDescribedBy, - ariaHidden + ariaHidden, + ariaPressed ]); const leftIconSize = useMemo(() => { diff --git a/packages/core/src/components/Dropdown/Dropdown.styles.js b/packages/core/src/components/Dropdown/Dropdown.styles.js index c48f33f411..f7a573de97 100644 --- a/packages/core/src/components/Dropdown/Dropdown.styles.js +++ b/packages/core/src/components/Dropdown/Dropdown.styles.js @@ -358,15 +358,31 @@ const indicatorSeparator = () => () => ({ display: "none" }); -const group = () => () => ({ - paddingBottom: 0, - marginTop: "4px" -}); +const group = + ({ withGroupDivider }) => + () => ({ + paddingBottom: 0, + marginTop: "4px", + ...(withGroupDivider && { + ":not(:last-child)": { + position: "relative", + paddingBottom: "8px", + "::after": { + content: '""', + position: "absolute", + bottom: "0", + left: "var(--spacing-small)", + width: "calc(100% - (var(--spacing-small) * 2))", + height: "1px", + backgroundColor: "var(--layout-border-color)" + } + } + }) + }); const groupHeading = () => () => ({ - height: "32px", fontSize: "14px", - lineHeight: "22px", + lineHeight: "32px", display: "flex", alignItems: "center", marginLeft: getCSSVar("spacing-medium"), diff --git a/packages/core/src/components/Dropdown/Dropdown.tsx b/packages/core/src/components/Dropdown/Dropdown.tsx index b48de0fe32..9bcac1b8b1 100644 --- a/packages/core/src/components/Dropdown/Dropdown.tsx +++ b/packages/core/src/components/Dropdown/Dropdown.tsx @@ -5,6 +5,7 @@ import { SIZES, SIZES_VALUES } from "../../constants"; import React, { forwardRef, useCallback, useMemo, useRef, useState } from "react"; import Select, { InputProps, components, createFilter, ActionMeta } from "react-select"; import AsyncSelect from "react-select/async"; +import BaseSelect from "react-select/base"; import { noop as NOOP } from "lodash-es"; import { WindowedMenuList } from "react-windowed-select"; import MenuComponent from "./components/menu/menu"; @@ -110,7 +111,8 @@ const Dropdown: VibeComponent & { popupsContainerSelector, filterOption, menuPosition = Dropdown.menuPositions.ABSOLUTE, - "data-testid": dataTestId + "data-testid": dataTestId, + withGroupDivider = false }: DropdownComponentProps, ref: React.ForwardedRef ) => { @@ -127,7 +129,12 @@ const Dropdown: VibeComponent & { return defaultValue; }, [defaultValue]); + BaseSelect.prototype.renderLiveRegion = () => { + return null; + }; + const [selected, setSelected] = useState(overrideDefaultValue || []); + const [focusedOptionId, setFocusedOptionId] = useState(""); const finalOptionRenderer = optionRenderer || OptionRenderer; const finalValueRenderer = valueRenderer || ValueRenderer; const isControlled = !!customValue; @@ -156,7 +163,8 @@ const Dropdown: VibeComponent & { rtl, insideOverflowContainer, controlRef, - insideOverflowWithTransformContainer + insideOverflowWithTransformContainer, + withGroupDivider }); type BaseStyles = typeof baseStyles; @@ -220,14 +228,32 @@ const Dropdown: VibeComponent & { const Option = useCallback( (props: CustomOptionProps) => ( - + ), - [finalOptionRenderer, optionWrapperClassName] + [finalOptionRenderer, optionWrapperClassName, setFocusedOptionId] ); const Input = useCallback( - (props: InputProps) => , - [menuId] + (props: InputProps | any) => { + const { focusedOptionId, menuIsOpen } = props.selectProps; + const ariaActiveDescendant = focusedOptionId && menuIsOpen ? focusedOptionId : ""; + return ( + + ); + }, + [menuId, readOnly] ); const SingleValue = useCallback( @@ -380,10 +406,7 @@ const Dropdown: VibeComponent & { aria-readonly={readOnly} aria-label={overrideAriaLabel} aria-details={tooltipContent} - aria-expanded={!readOnly && menuIsOpen} aria-haspopup="listbox" - aria-activedescendant - role="combobox" defaultValue={defaultValue} value={value} onMenuOpen={onMenuOpen} @@ -395,6 +418,7 @@ const Dropdown: VibeComponent & { onInputChange={onInputChange} openMenuOnFocus={openMenuOnFocus} openMenuOnClick={openMenuOnClick} + focusedOptionId={focusedOptionId} isRtl={rtl} styles={inlineStyles} theme={customTheme} diff --git a/packages/core/src/components/Dropdown/Dropdown.types.ts b/packages/core/src/components/Dropdown/Dropdown.types.ts index 690856c405..983adf8234 100644 --- a/packages/core/src/components/Dropdown/Dropdown.types.ts +++ b/packages/core/src/components/Dropdown/Dropdown.types.ts @@ -271,6 +271,7 @@ export interface DropdownComponentProps extends CustomMenuBaseProps, CustomOptio onClear?: () => void; popupsContainerSelector?: string; selectProps?: Record; + withGroupDivider?: boolean; } export type DropdownProps = DropdownComponentProps; diff --git a/packages/core/src/components/Dropdown/__stories__/Dropdown.mdx b/packages/core/src/components/Dropdown/__stories__/Dropdown.mdx index cfc9adbf06..08d54e086b 100644 --- a/packages/core/src/components/Dropdown/__stories__/Dropdown.mdx +++ b/packages/core/src/components/Dropdown/__stories__/Dropdown.mdx @@ -163,6 +163,8 @@ A classic dropdown presents options a user needs to choose from. ### Dropdown with groups +Dropdown menu can be organized into groups. It can be either by group title or divider. + ### Dropdown inside popover diff --git a/packages/core/src/components/Dropdown/__stories__/Dropdown.stories.js b/packages/core/src/components/Dropdown/__stories__/Dropdown.stories.js index fe102a6b0e..1308abb1ad 100644 --- a/packages/core/src/components/Dropdown/__stories__/Dropdown.stories.js +++ b/packages/core/src/components/Dropdown/__stories__/Dropdown.stories.js @@ -714,7 +714,6 @@ export const DropdownWithGroups = { () => [ { label: "Group 1", - options: [ { value: "1", @@ -744,8 +743,54 @@ export const DropdownWithGroups = { [] ); + const optionsWithoutGroupLabel = useMemo( + () => [ + { + options: [ + { + value: "1", + label: "Option 1" + }, + { + value: "2", + label: "Option 2" + } + ] + }, + { + options: [ + { + value: "3", + label: "Option 3" + }, + { + value: "4", + label: "Option 4" + } + ] + } + ], + [] + ); + return ( - + +
+ +
+
+ +
+
); }, name: "Dropdown with groups" diff --git a/packages/core/src/components/Dropdown/__tests__/Dropdown.interactions.js b/packages/core/src/components/Dropdown/__tests__/Dropdown.interactions.js index abc079ae2e..395b71e4b1 100644 --- a/packages/core/src/components/Dropdown/__tests__/Dropdown.interactions.js +++ b/packages/core/src/components/Dropdown/__tests__/Dropdown.interactions.js @@ -10,7 +10,7 @@ import { import { expect } from "@storybook/jest"; const selectAndClearTest = async canvas => { - const dropdownElement = await getByRole(canvas, "textbox"); + const dropdownElement = await getByRole(canvas, "combobox"); // Open the dropdown await clickElement(dropdownElement); // Filter it @@ -26,7 +26,7 @@ const selectAndClearTest = async canvas => { }; const hideDropdownWhenPressingEscape = async canvas => { - const dropdownElement = await getByRole(canvas, "textbox"); + const dropdownElement = await getByRole(canvas, "combobox"); // Open the dropdown await clickElement(dropdownElement); // Validate open dropdown @@ -40,7 +40,7 @@ const hideDropdownWhenPressingEscape = async canvas => { export const overviewPlaySuite = interactionSuite({ beforeEach: async canvas => { - const dropdownElement = await getByRole(canvas, "textbox"); + const dropdownElement = await getByRole(canvas, "combobox"); await userEvent.clear(dropdownElement); expect(dropdownElement.value).toEqual(""); await typeText(dropdownElement, "{escape}"); diff --git a/packages/core/src/components/Dropdown/__tests__/__snapshots__/Dropdown.snapshot.test.js.snap b/packages/core/src/components/Dropdown/__tests__/__snapshots__/Dropdown.snapshot.test.js.snap index d0196813f5..c89c69d1b8 100644 --- a/packages/core/src/components/Dropdown/__tests__/__snapshots__/Dropdown.snapshot.test.js.snap +++ b/packages/core/src/components/Dropdown/__tests__/__snapshots__/Dropdown.snapshot.test.js.snap @@ -6,21 +6,6 @@ exports[`Dropdown renders correctly snapshot driver should open menu on click if class="dropdown dropdown-story css-bbwnb8-container" id="dropdown-menu-id" > - - -   - - -   option Ocean focused, 1 of 6. 6 results available. Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu, press Tab to select the option and exit the menu. - -
- - -   - - -   0 results available. Selected: is focused ,type to refine list, press Down to open the menu, - -
- - -   - - -   0 results available. Selected: is focused ,type to refine list, press Down to open the menu, - -
- - -   - - -   option 1 focused, 1 of 10000. 10000 results available. Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu, press Tab to select the option and exit the menu. - -
{ customSize={20} /> )} - {data?.leftIcon && } + {data?.leftIcon && } )} diff --git a/packages/core/src/components/Dropdown/components/ChildrenContent/ChildrenContent.module.scss b/packages/core/src/components/Dropdown/components/ChildrenContent/ChildrenContent.module.scss index 3436ac5645..5cd0499439 100644 --- a/packages/core/src/components/Dropdown/components/ChildrenContent/ChildrenContent.module.scss +++ b/packages/core/src/components/Dropdown/components/ChildrenContent/ChildrenContent.module.scss @@ -4,7 +4,8 @@ align-items: center; width: 100%; - .avatar { + .avatar, + .icon { flex-shrink: 0; } } diff --git a/packages/core/src/components/Dropdown/components/option/option.jsx b/packages/core/src/components/Dropdown/components/option/option.jsx index a2df696094..cbd07c1355 100644 --- a/packages/core/src/components/Dropdown/components/option/option.jsx +++ b/packages/core/src/components/Dropdown/components/option/option.jsx @@ -1,11 +1,11 @@ import cx from "classnames"; -import React from "react"; +import React, { useEffect } from "react"; import { components } from "react-select"; import Tooltip from "../../../Tooltip/Tooltip"; import { ChildrenContent } from "../ChildrenContent/ChildrenContent"; import styles from "./option.module.scss"; -const Option = ({ Renderer, data, children, optionWrapperClassName, ...props }) => { +const Option = ({ Renderer, data, children, setFocusedOptionId, optionWrapperClassName, ...props }) => { const tooltipProps = data?.tooltipProps || {}; const rendererProps = { children, @@ -18,6 +18,12 @@ const Option = ({ Renderer, data, children, optionWrapperClassName, ...props }) } }; + useEffect(() => { + if (props.isFocused) { + setFocusedOptionId(props.innerProps.id); + } + }, [props.isFocused, props.innerProps.id, setFocusedOptionId]); + return ( {Renderer ? ( diff --git a/packages/core/src/components/Icon/Icons/components/CloseMedium.tsx b/packages/core/src/components/Icon/Icons/components/CloseMedium.tsx new file mode 100644 index 0000000000..19694f7aad --- /dev/null +++ b/packages/core/src/components/Icon/Icons/components/CloseMedium.tsx @@ -0,0 +1,20 @@ +/* eslint-disable */ +/* tslint:disable */ +import * as React from "react"; +export interface CloseMediumProps extends React.SVGAttributes { + size?: string | number; +} +const CloseMedium: React.FC = ({ size, ...props }) => ( + + + +); +CloseMedium.displayName = "CloseMedium"; +export default CloseMedium; +/* tslint:enable */ +/* eslint-enable */ diff --git a/packages/core/src/components/Icon/Icons/components/ReplyAll.tsx b/packages/core/src/components/Icon/Icons/components/ReplyAll.tsx new file mode 100644 index 0000000000..c9fa0ba486 --- /dev/null +++ b/packages/core/src/components/Icon/Icons/components/ReplyAll.tsx @@ -0,0 +1,18 @@ +/* eslint-disable */ +/* tslint:disable */ +import * as React from 'react'; +export interface ReplyAllProps extends React.SVGAttributes { +size?: string | number; +} +const ReplyAll: React.FC = ({size, ...props}) => ( + + + + +); +ReplyAll.displayName = 'ReplyAll'; +export default ReplyAll; +/* tslint:enable */ +/* eslint-enable */ diff --git a/packages/core/src/components/Icon/Icons/index.ts b/packages/core/src/components/Icon/Icons/index.ts index d0a29f54c5..8811ace3c3 100644 --- a/packages/core/src/components/Icon/Icons/index.ts +++ b/packages/core/src/components/Icon/Icons/index.ts @@ -37,6 +37,7 @@ export {default as Checkbox} from './components/Checkbox'; export {default as CheckList} from './components/CheckList'; export {default as Clear} from './components/Clear'; export {default as Close} from './components/Close'; +export {default as CloseMedium} from './components/CloseMedium'; export {default as CloseRound} from './components/CloseRound'; export {default as CloseSmall} from './components/CloseSmall'; export {default as Code} from './components/Code'; @@ -188,6 +189,7 @@ export {default as RecycleBin} from './components/RecycleBin'; export {default as Redo} from './components/Redo'; export {default as Remove} from './components/Remove'; export {default as Replay} from './components/Replay'; +export {default as ReplyAll} from './components/ReplyAll'; export {default as Retry} from './components/Retry'; export {default as Robot} from './components/Robot'; export {default as Rotate} from './components/Rotate'; diff --git a/packages/core/src/components/IconButton/IconButton.tsx b/packages/core/src/components/IconButton/IconButton.tsx index a9c07771fa..c0a9087d1e 100644 --- a/packages/core/src/components/IconButton/IconButton.tsx +++ b/packages/core/src/components/IconButton/IconButton.tsx @@ -61,6 +61,10 @@ export interface IconButtonProps extends VibeComponentProps { * a11y property to be added, used for screen reader to know if the button is hidden */ "aria-hidden"?: AriaAttributes["aria-hidden"]; + /** + * Indicates the current "pressed" state of toggle buttons + */ + "aria-pressed"?: AriaAttributes["aria-pressed"]; /** * Size of the icon */ @@ -126,6 +130,7 @@ const IconButton: VibeComponent & { ariaControls, "aria-describedby": ariaDescribedBy, "aria-hidden": ariaHidden, + "aria-pressed": ariaPressed, hideTooltip = false, kind = IconButton.kinds.TERTIARY, active, @@ -214,6 +219,7 @@ const IconButton: VibeComponent & { ariaControls={ariaControls} aria-describedby={ariaDescribedBy} aria-hidden={ariaHidden} + aria-pressed={ariaPressed} ref={mergedRef} id={id} data-testid={overrideDataTestId || getTestId(ComponentDefaultTestId.ICON_BUTTON, id)} diff --git a/packages/core/src/components/Table/Table/__stories__/Table.mdx b/packages/core/src/components/Table/Table/__stories__/Table.mdx index bc5fc71b63..6558ac0c1c 100644 --- a/packages/core/src/components/Table/Table/__stories__/Table.mdx +++ b/packages/core/src/components/Table/Table/__stories__/Table.mdx @@ -1,4 +1,4 @@ -import { Canvas, Meta } from "@storybook/blocks"; +import { Meta } from "@storybook/blocks"; import Table from "../Table"; import TableHeader from "../../TableHeader/TableHeader"; import TableHeaderCell from "../../TableHeaderCell/TableHeaderCell"; @@ -50,7 +50,7 @@ Tables are used to organize data, making it easier to understand. ### Sizes -The table is available in 2 different row heights: medium (40px) and large (48 px). Medium size is the default size. +The table is available in 3 different row heights: small (32px) medium (40px) and large (48 px). Medium size is the default size. diff --git a/packages/core/src/components/Table/Table/__stories__/Table.stories.tsx b/packages/core/src/components/Table/Table/__stories__/Table.stories.tsx index 04f70daa53..1fc932e2cd 100644 --- a/packages/core/src/components/Table/Table/__stories__/Table.stories.tsx +++ b/packages/core/src/components/Table/Table/__stories__/Table.stories.tsx @@ -43,7 +43,14 @@ export default { TableVirtualizedBody }, argTypes: metaSettings.argTypes, - decorators: metaSettings.decorators + decorators: metaSettings.decorators, + parameters: { + docs: { + liveEdit: { + scope: { TableAvatar, TableErrorState, TableEmptyState } + } + } + } }; const tableTemplate = (args: ITableProps) =>
; @@ -177,6 +184,13 @@ export const Overview = { ] }, + parameters: { + docs: { + liveEdit: { + isEnabled: false + } + } + }, name: "Overview" }; @@ -186,13 +200,12 @@ export const Sizes = { { id: "sentOn", title: "Sent on", - width: 180, loadingStateType: "medium-text" }, { id: "subject", title: "Subject", - width: 200, + loadingStateType: "long-text" } ]; @@ -210,6 +223,32 @@ export const Sizes = { ]; return ( <> + } + emptyState={} + columns={columns} + > + + {columns.map((headerCell, index) => ( + + ))} + + + {data.map(rowItem => ( + + {rowItem.sentOn} + {rowItem.subject} + + ))} + +
( - + ) @@ -446,7 +485,13 @@ export const TableHeaderFunctionality = {
); }, - + parameters: { + docs: { + liveEdit: { + scope: { emailTableData, emailColumns } + } + } + }, name: "Table Header Functionality" }; @@ -482,7 +527,13 @@ export const Loading = { ), - + parameters: { + docs: { + liveEdit: { + scope: { emailTableData, emailColumns } + } + } + }, name: "Loading" }; @@ -525,7 +576,13 @@ export const Scroll = {
), - + parameters: { + docs: { + liveEdit: { + scope: { scrollTableColumns, scrollTableData, priorityColumnToLabelColor, statusColumnToLabelColor } + } + } + }, name: "Scroll" }; @@ -558,7 +615,13 @@ export const VirtualizedScroll = { ); }, - + parameters: { + docs: { + liveEdit: { + scope: { virtualizedScrollTableColumns, virtualizedScrollTableData } + } + } + }, name: "Virtualized Scroll" }; @@ -592,7 +655,13 @@ export const StickyColumn = { ); }, - + parameters: { + docs: { + liveEdit: { + scope: { stickyColumns, stickyTableData, statusColumnToLabelColor } + } + } + }, name: "Sticky column" }; @@ -627,6 +696,12 @@ export const HighlightedRow = { ); }, - + parameters: { + docs: { + liveEdit: { + scope: { emailColumns, emailTableData } + } + } + }, name: "Highlighted row" }; diff --git a/packages/storybook-blocks/CHANGELOG.md b/packages/storybook-blocks/CHANGELOG.md index 4447a2f39d..dad78a21dc 100644 --- a/packages/storybook-blocks/CHANGELOG.md +++ b/packages/storybook-blocks/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.19.3](https://github.com/mondaycom/vibe/compare/vibe-storybook-components@0.19.2...vibe-storybook-components@0.19.3) (2024-09-09) + +**Note:** Version bump only for package vibe-storybook-components + + + + + ## [0.19.2](https://github.com/mondaycom/vibe/compare/vibe-storybook-components@0.19.1...vibe-storybook-components@0.19.2) (2024-06-26) diff --git a/packages/storybook-blocks/package.json b/packages/storybook-blocks/package.json index 3c19748183..48b6399688 100644 --- a/packages/storybook-blocks/package.json +++ b/packages/storybook-blocks/package.json @@ -1,6 +1,6 @@ { "name": "vibe-storybook-components", - "version": "0.19.2", + "version": "0.19.3", "description": "Collection of Vibe's Storybook components", "license": "MIT", "repository": { diff --git a/packages/style/CHANGELOG.md b/packages/style/CHANGELOG.md index ba2cffc5b6..ca49d5c8b8 100644 --- a/packages/style/CHANGELOG.md +++ b/packages/style/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.12.0](https://github.com/mondaycom/vibe/compare/monday-ui-style@0.11.1...monday-ui-style@0.12.0) (2024-09-09) + + +### Features + +* **Icon:** add reply all icon ([#2418](https://github.com/mondaycom/vibe/issues/2418)) ([031f65d](https://github.com/mondaycom/vibe/commit/031f65d500098c0f34ede3316503aa3fceea0123)) + + + + + ## [0.11.1](https://github.com/mondaycom/vibe/compare/monday-ui-style@0.11.0...monday-ui-style@0.11.1) (2024-08-22) **Note:** Version bump only for package monday-ui-style diff --git a/packages/style/package.json b/packages/style/package.json index e0243ac900..49213d1e2a 100644 --- a/packages/style/package.json +++ b/packages/style/package.json @@ -1,6 +1,6 @@ { "name": "monday-ui-style", - "version": "0.11.1", + "version": "0.12.0", "description": "Monday UI CSS Foundations", "main": "dist/index.css", "scripts": { diff --git a/packages/style/src/Icons/CloseMedium.svg b/packages/style/src/Icons/CloseMedium.svg new file mode 100644 index 0000000000..5c4ba361e5 --- /dev/null +++ b/packages/style/src/Icons/CloseMedium.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/style/src/Icons/ReplyAll.svg b/packages/style/src/Icons/ReplyAll.svg new file mode 100644 index 0000000000..d698b2c93f --- /dev/null +++ b/packages/style/src/Icons/ReplyAll.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/style/src/Icons/iconsMetaData.js b/packages/style/src/Icons/iconsMetaData.js index 765179e38f..2af877e273 100644 --- a/packages/style/src/Icons/iconsMetaData.js +++ b/packages/style/src/Icons/iconsMetaData.js @@ -4,6 +4,20 @@ const VIEW = "View"; export const iconsMetaData = [ // DO NOT REMOVE THIS FOLLOWING LINE! // plop_marker:icon_metadata + { + name: "CloseMedium", + file: "CloseMedium.svg", + description: "Close Medium", + tags: "Close, X, Cancel" + }, + + { + name: "ReplyAll", + file: "ReplyAll.svg", + description: "Use in a reply all button if needed", + tags: "Reply, All, Mail, Send" + }, + { name: "Baseline", file: "Baseline.svg",