Skip to content

Commit

Permalink
Merge pull request #293 from brionmario/migrate-default-props
Browse files Browse the repository at this point in the history
feat: add components & new icons
  • Loading branch information
brionmario authored Oct 21, 2024
2 parents dcab32f + 6d70f06 commit e73dc78
Show file tree
Hide file tree
Showing 48 changed files with 1,388 additions and 66 deletions.
23 changes: 23 additions & 0 deletions packages/primitives/src/icons/clone-16.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions packages/primitives/src/icons/globe-16.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 21 additions & 9 deletions packages/react/.storybook/story-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ enum StorybookCategories {
Utils = 'Utils'
}

// NOTE: Please keep the stories in alphabetical order.
export type Stories =
| 'Accordion'
| 'AccordionDetails'
Expand All @@ -46,34 +47,36 @@ export type Stories =
| 'Avatar'
| 'Backdrop'
| 'Badge'
| 'Breadcrumbs'
| 'Box'
| 'Breadcrumbs'
| 'Button'
| 'CircularProgress'
| 'Card'
| 'CardActions'
| 'CardContent'
| 'CardHeader'
| 'Carousel'
| 'Checkbox'
| 'CircularProgressAvatar'
| 'Chip'
| 'CircularProgress'
| 'CircularProgressAvatar'
| 'Code'
| 'Colors'
| 'Collapse'
| 'CollapsibleNavbarItem'
| 'ColorModeToggle'
| 'Colors'
| 'Container'
| 'CountryFlag'
| 'DataGrid'
| 'Dialog'
| 'Divider'
| 'Drawer'
| 'CountryFlag'
| 'Fab'
| 'Footer'
| 'FormControl'
| 'FormControlLabel'
| 'FormGroup'
| 'FormLabel'
| 'FormHelperText'
| 'FormControl'
| 'FormLabel'
| 'Grid'
| 'Header'
| 'IconButton'
Expand All @@ -92,19 +95,19 @@ export type Stories =
| 'ListItemText'
| 'Menu'
| 'MenuItem'
| 'UserDropdownMenu'
| 'Navbar'
| 'NavbarItem'
| 'OutlinedInput'
| 'Paper'
| 'Popover'
| 'PhoneNumberInput'
| 'Popover'
| 'Radio'
| 'RadioGroup'
| 'Select'
| 'SignIn'
| 'Skeleton'
| 'Snackbar'
| 'Stack'
| 'Stepper'
| 'Switch'
| 'Tab'
Expand Down Expand Up @@ -215,6 +218,9 @@ const StoryConfig: StorybookConfig = {
Code: {
hierarchy: `${StorybookCategories.DataDisplay}/Code`,
},
Collapse: {
hierarchy: `${StorybookCategories.Utils}/Collapse`,
},
CollapsibleNavbarItem: {
hierarchy: `${StorybookCategories.Navigation}/Collapsible Navbar Item`,
},
Expand All @@ -230,6 +236,9 @@ const StoryConfig: StorybookConfig = {
DataGrid: {
hierarchy: `${StorybookCategories.DataDisplay}/DataGrid`,
},
Dialog: {
hierarchy: `${StorybookCategories.Feedback}/Dialog`,
},
Divider: {
hierarchy: `${StorybookCategories.DataDisplay}/Divider`,
},
Expand Down Expand Up @@ -358,6 +367,9 @@ const StoryConfig: StorybookConfig = {
Snackbar: {
hierarchy: `${StorybookCategories.Feedback}/Snackbar`,
},
Stack: {
hierarchy: `${StorybookCategories.Layout}/Stack`,
},
Stepper: {
hierarchy: `${StorybookCategories.Surfaces}/Stepper`,
},
Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/components/AlertTitle/AlertTitle.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@
*/

import MuiAlertTitle from '@mui/material/AlertTitle';
import type {AlertTitleProps, AlertTitleProps as MuiAlertTitleProps} from '@mui/material/AlertTitle';
import type {AlertTitleProps as MuiAlertTitleProps} from '@mui/material/AlertTitle';
import type {OverridableComponent} from '@mui/material/OverridableComponent';
import clsx from 'clsx';
import {forwardRef} from 'react';
import type {ReactElement, ElementType, Ref} from 'react';
import type {TypographyTypeMap} from '../Typography';
import './alert-title.scss';

export type AlertProps<C extends ElementType = ElementType> = {
export type AlertTitleProps<C extends ElementType = ElementType> = {
/**
* The component used for the root node. Either a string to use a HTML element or a component.
*/
Expand Down Expand Up @@ -57,7 +57,7 @@ export type AlertProps<C extends ElementType = ElementType> = {
*/
const AlertTitle: OverridableComponent<TypographyTypeMap<AlertTitleProps>> = forwardRef(
<C extends ElementType = ElementType>(
{className, ...rest}: AlertProps<C>,
{className, ...rest}: AlertTitleProps<C>,
ref: Ref<HTMLDivElement>,
): ReactElement => {
const classes: string = clsx('oxygen-alert-title', className);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@ exports[`Alert should match the snapshot 1`] = `
Movie
</label>
<div
class="MuiFormControl-root MuiFormControl-fullWidth MuiTextField-root css-wb57ya-MuiFormControl-root-MuiTextField-root"
class="MuiFormControl-root MuiFormControl-fullWidth MuiTextField-root OxygenTextField-root css-wb57ya-MuiFormControl-root-MuiTextField-root"
>
<div
class="MuiInputBase-root MuiOutlinedInput-root MuiInputBase-colorPrimary MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-adornedEnd MuiAutocomplete-inputRoot css-115mmlx-MuiInputBase-root-MuiOutlinedInput-root"
class="MuiInputBase-root MuiOutlinedInput-root MuiInputBase-colorPrimary MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-adornedEnd MuiAutocomplete-inputRoot css-118ft55-MuiInputBase-root-MuiOutlinedInput-root"
>
<input
aria-autocomplete="list"
aria-expanded="false"
aria-invalid="false"
autocapitalize="none"
autocomplete="off"
class="MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputAdornedEnd MuiAutocomplete-input MuiAutocomplete-inputFocused css-11fn00k-MuiInputBase-input-MuiOutlinedInput-input"
class="MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputAdornedEnd MuiAutocomplete-input MuiAutocomplete-inputFocused css-1d0o5yu-MuiInputBase-input-MuiOutlinedInput-input"
id=":r2:"
role="combobox"
spellcheck="false"
Expand Down
1 change: 0 additions & 1 deletion packages/react/src/components/Backdrop/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,4 @@
export {default} from './Backdrop';
export * from './Backdrop';

export {BackdropRoot} from '@mui/material/Backdrop';
export type {BackdropComponentsPropsOverrides, BackdropTypeMap} from '@mui/material/Backdrop';
79 changes: 79 additions & 0 deletions packages/react/src/components/Collapse/Collapse.stories.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import {ArgsTable, Source, Story, Canvas, Meta} from '@storybook/addon-docs';
import {useArgs} from '@storybook/client-api';
import dedent from 'ts-dedent';
import Collapse from './Collapse.tsx';
import StoryConfig from '../../../.storybook/story-config.ts';
import Box from '../Box/Box.tsx';
import FormControlLabel from '../FormControlLabel/FormControlLabel.tsx';
import FormGroup from '../FormGroup/FormGroup.tsx';
import Paper from '../Paper/Paper.tsx';
import Switch from '../Switch/Switch.tsx';

export const meta = {
component: Collapse,
title: StoryConfig.Collapse.hierarchy,
};

<Meta title={meta.title} component={meta.component} />

export const Template = ({...args}) => {
const [runtimeArgs, updateArgs] = useArgs();
const {in: checked} = runtimeArgs;
return (
<Box sx={{p: 3}}>
<FormGroup sx={{mb: 2}}>
<FormControlLabel
control={<Switch checked={checked} onChange={() => updateArgs({...runtimeArgs, in: !checked})} />}
label="Show"
/>
</FormGroup>
<Collapse in={checked} {...args}>
<Paper sx={{background: 'red', height: '200px', width: '200px'}} />
</Collapse>
</Box>
);
};

# Collapse

- [Overview](#overview)
- [Props](#props)
- [Usage](#usage)

## Overview

Expand from the start edge of the child element. Use the `orientation` prop if you need a horizontal collapse. The
`collapsedSize` prop can be used to set the minimum width/height when not expanded.

<Canvas>
<Story
name="Overview"
args={{in: false}}
parameters={{
docs: {iframeHeight: 476, inlineStories: false},
}}
>
{Template.bind({})}
</Story>
</Canvas>

## Props

<ArgsTable story="Overview" />

## Usage

Import and use the `Collapse` component in your components as follows.

<Source
language="jsx"
dark
format
code={dedent`
import Collapse from '@oxygen-ui/react/Collapse';\n
function Demo() {
return (
<Collapse />
);
}`}
/>
67 changes: 67 additions & 0 deletions packages/react/src/components/Collapse/Collapse.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* Copyright (c) 2024, WSO2 LLC. (https://www.wso2.com).
*
* WSO2 LLC. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import MuiCollapse from '@mui/material/Collapse';
import type {CollapseProps as MuiCollapseProps} from '@mui/material/Collapse';
import type {OverridableComponent, OverridableTypeMap} from '@mui/material/OverridableComponent';
import type {TransitionProps} from '@mui/material/transitions';
import clsx from 'clsx';
import {forwardRef} from 'react';
import type {ReactElement, Ref, ElementType} from 'react';

export type CollapseProps<C extends ElementType = ElementType<TransitionProps>> = {
/**
* The component used for the root node. Either a string to use a HTML element or a component.
*/
component?: C;
} & Omit<MuiCollapseProps, 'component'>;

/**
* A Transition component to expand from the start edge of the child element.
*
* Demos:
*
* - [Card (Oxygen UI)](https://wso2.github.io/oxygen-ui/react/?path=/docs/surfaces-card)
* - [Card (MUI)](https://mui.com/material-ui/react-card/)
* - [Lists (Oxygen UI)](https://wso2.github.io/oxygen-ui/react/?path=/docs/data-display-list)
* - [Lists (MUI)](https://mui.com/material-ui/react-list/)
* - [Collapse (Oxygen UI)](https://wso2.github.io/oxygen-ui/react/?path=/docs/utils-collapse)
* - [Transitions (MUI)](https://mui.com/material-ui/transitions/)
*
* API:
*
* - [Collapse API](https://mui.com/material-ui/api/collapse/)
* - inherits [Transition API](http://reactcommunity.org/react-transition-group/transition/#Transition-props)
*
* @remarks
* - ✔️ Props of the [Transition](https://mui.com/material-ui/transitions/) component are also available.
* - ✅ `component` prop is supported.
* - ✅ The `ref` is forwarded to the root element.
*
* @template C - The type of the component.
* @param props - The props for the Collapse component.
* @param ref - The ref to be forwarded to the MuiCollapse component.
* @returns The rendered Collapse component.
*/
const Collapse: OverridableComponent<OverridableTypeMap> = forwardRef(
({className, ...rest}: CollapseProps<ElementType<TransitionProps>>, ref: Ref<HTMLDivElement>): ReactElement => (
<MuiCollapse ref={ref} className={clsx('OxygenCollapse-root', className)} {...rest} />
),
) as OverridableComponent<OverridableTypeMap>;

export default Collapse;
32 changes: 32 additions & 0 deletions packages/react/src/components/Collapse/__tests__/Collapse.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/**
* Copyright (c) 2024, WSO2 LLC. (https://www.wso2.com).
*
* WSO2 LLC. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import {render} from '@unit-testing';
import Collapse from '../Collapse';

describe('Collapse', () => {
it('should render successfully', () => {
const {baseElement} = render(<Collapse />);
expect(baseElement).toBeTruthy();
});

it('should match the snapshot', () => {
const {baseElement} = render(<Collapse />);
expect(baseElement).toMatchSnapshot();
});
});
Loading

0 comments on commit e73dc78

Please sign in to comment.