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

feat(Decorator): new component Decorator #4170

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
4422a97
feat: new component decorator
paul-balchin-ibm Jan 29, 2024
a6e2684
Merge remote-tracking branch 'upstream/main' into feat-4146_new-compo…
paul-balchin-ibm Jan 29, 2024
a55c35d
fix: code and styling updates
paul-balchin-ibm Feb 1, 2024
d55d44b
fix: merge conflicts
paul-balchin-ibm Feb 1, 2024
7b8a32a
fix: udpate snapshots
paul-balchin-ibm Feb 1, 2024
de22515
fix: update gallery
paul-balchin-ibm Feb 1, 2024
794c8aa
fix: skip some tests (temp)
paul-balchin-ibm Feb 1, 2024
8fa1461
fix: minor changes
paul-balchin-ibm Feb 1, 2024
50cbc39
Merge remote-tracking branch 'upstream/main' into feat-4146_new-compo…
paul-balchin-ibm Feb 1, 2024
b8755f5
fix: updated PropTypes
paul-balchin-ibm Feb 1, 2024
700e334
fix: updated tests
paul-balchin-ibm Feb 1, 2024
d1a8749
fix: update styling
paul-balchin-ibm Feb 7, 2024
30e515d
fix: merge conflicts
paul-balchin-ibm Feb 7, 2024
8c6d0a8
fix: updated snapshots and galleries
paul-balchin-ibm Feb 7, 2024
e84bd2c
fix: storybook update
paul-balchin-ibm Feb 7, 2024
f5c1e92
fix: update code, style, docs
paul-balchin-ibm Feb 8, 2024
b38cb59
Merge remote-tracking branch 'upstream/main' into feat-4146_new-compo…
paul-balchin-ibm Feb 8, 2024
cd2fe8a
fix: design review update
paul-balchin-ibm Feb 8, 2024
961c525
fix: merge conflicts
paul-balchin-ibm Feb 8, 2024
ebaae68
fix: design review update
paul-balchin-ibm Feb 9, 2024
7fbc098
fix: merge conflicts
paul-balchin-ibm Feb 9, 2024
b4f96d8
fix: added a11y icon borders
paul-balchin-ibm Feb 12, 2024
2037862
fix: update icons and colors
paul-balchin-ibm Feb 12, 2024
9f83a86
Merge remote-tracking branch 'upstream/main' into feat-4146_new-compo…
paul-balchin-ibm Feb 12, 2024
1771467
fix: tests
paul-balchin-ibm Feb 12, 2024
66bb886
fix: docs
paul-balchin-ibm Feb 12, 2024
3a79231
fix: styling updates
paul-balchin-ibm Feb 14, 2024
70741c5
Merge remote-tracking branch 'upstream/main' into feat-4146_new-compo…
paul-balchin-ibm Feb 14, 2024
72830e0
Merge branch 'main' into feat-4146_new-component-decorator
paul-balchin-ibm Feb 16, 2024
c1165f0
Merge branch 'main' into feat-4146_new-component-decorator
paul-balchin-ibm Feb 16, 2024
47be3ea
fix: adds aria label to datagrid toolbar (#4348)
davidmenendez Feb 16, 2024
ef93720
fix(Dataspreadsheet): Reduce duplication with isHoldingCommandKey #41…
amal-k-joy Feb 19, 2024
f407692
feat(UserAvatar): implementation of name,size props (#4312)
anamikaanu96 Feb 19, 2024
0a1585e
feat: Tearsheet ai (#4215)
lee-chase Feb 19, 2024
f8224e9
chore(release): publish [skip ci]
github-actions[bot] Feb 20, 2024
aebedb8
chore: add new example gallery action (#4352)
elycheea Feb 20, 2024
a9cc67a
feat: Modal ai updates (#4362)
lee-chase Feb 20, 2024
f237a30
fix(DataGrid): add support for selectrow and nestedrow (#4354)
Ratheeshrajan Feb 20, 2024
fae3c65
feat(Datagrid): add support for multi select filter type (#4361)
matthewgallo Feb 20, 2024
6aaceb7
feat(Datagrid): apply latest ai gradients to Datagrid (#4377)
matthewgallo Feb 21, 2024
f522db0
feat(useravatar): image implementation (#4355)
anamikaanu96 Feb 21, 2024
ccd43bf
feat: sort icon appear in the Actions column on Datagrid #4339 (#4346)
SeonyuK Feb 21, 2024
0142953
chore(release): publish [skip ci]
github-actions[bot] Feb 21, 2024
1540b89
fix: move ai gradient to content (#4381)
lee-chase Feb 21, 2024
4666df3
chore(release): publish [skip ci]
github-actions[bot] Feb 21, 2024
29c4e5e
fix: merge conflicts
paul-balchin-ibm Feb 26, 2024
8667fff
fix: update publish config in community package to public (#4383)
davidmenendez Feb 21, 2024
92d9b45
fix: header border issue introduced with ai slug (#4385)
lee-chase Feb 21, 2024
92ba503
chore(deps): bump ip to 2.0.1 (#4386)
elycheea Feb 21, 2024
6d9c9d7
feat(APIKeyModal): add typescript types (#4336)
matthewgallo Feb 21, 2024
44299da
chore(deps): bump ip to 2.0.1 (#4401)
elycheea Feb 22, 2024
d2ac08f
feat: new component status indicator (#4419)
paul-balchin-ibm Feb 22, 2024
a16ec60
fix: udpate gallery
paul-balchin-ibm Feb 22, 2024
901ea07
fix: code review updates
paul-balchin-ibm Feb 22, 2024
b897f6a
fix: code review updates
paul-balchin-ibm Feb 23, 2024
ed084fd
chore: update chromedriver resolutions (#4422)
elycheea Feb 22, 2024
67c4123
fix: tearsheet overlay (#4421)
lee-chase Feb 23, 2024
90d07ed
fix: side panel slug and close position (#4426)
lee-chase Feb 23, 2024
d9efe0a
feat(Datagrid): add option to specify an initial sortable column (#4423)
matthewgallo Feb 23, 2024
d24ca28
fix: merge commits
paul-balchin-ibm Feb 26, 2024
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
61 changes: 61 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Carbon for IBM Products `Decorator` example

This example was initially generated by `@carbon/ibm-products` using the script `update-gallery-config` found in `package.json`.

## Adding an example

If using the `generate` script then a base example should be created for you. If for some reason this is not the case do the following:

1. Duplicate an existing example e.g. `examples/carbon-for-ibm-products/AboutModal` and rename it to your match your component e.g. `MyComponent`
2. Edit `gallery.config.json` which has the following form.

```json
{
"label": "Name of example in gallery",
"package-config": {
"flags": {
"component": {
"MyComponent": true
},
"feature": {
"MyFeature": true
}
"prefix": "alt-prefix",
},
"templates-variation": "templates-react-16"
}
}
```

NOTE: All fields are optional, although most specify a label.

The `package-config` section is used to specify the config used with the example, including prefix and any flags enabled.

The `template-variation` is used to specify an alternative to the default template. This is currently used for React versions only.

3. Edit the `src/Example` folder to show your component.
4. Run the example and replace `thumbnail.png` with a picture of your example.

NOTE 2: The only files retained after each run of the update script are `thumbnail.png`, `gallery.config.json`, and those in `src/Example`, so ensure all of your example source sits in the `src/Example` folder.

## Updating examples

Skip step 1 for `Adding an example` otherwise the same.

## Adding / Updating a template or variant

The simplest way to update a template is as follows.

1. Copy the a generated example to the `scripts/example-gallery-builder/update-example` folder.
2. Update it as necessary.
3. Test that it works.
4. Remove the folder `scripts/example-gallery-builder/update-example/templates` and rename your folder to this.
5. Review the changes made and restore/rectify the template TAGS typically in capitals. These are replaced as part of the build process. E.g. Decorator, 2024, import './config'
. For a full set of current tags review the code in `scripts/example-gallery-builder/update-example/index.js`.
6. Remove the files `gallery.config.json`, `thumbnail.png` and the folder `src/Example`.

### If a variant

To reduce maintenance variants only need files which differ from the core `templates` folder. Delete any new files you did not intend to add.

Variants are selected by folder name in the `gallery.config.json` file.
12 changes: 12 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/gallery.config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"label": "Decorator",
"package-config": {
"flags": {
"component": {
"Decorator": true
}
}
},
"dependencies": {},
"devDependencies": {}
}
16 changes: 16 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/src/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React</title>
</head>

<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>

</html>
54 changes: 54 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"name": "Decorator-component-example",
"description": "An example showing use of the Decorator component from the @carbon/ibm-products component library.",
"keywords": [
"carbon",
"ibm",
"ibm-products",
"component",
"decorator"
],
"license": "Apache-2.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview"
},
"dependencies": {
"@carbon/ibm-products": "^2.21.0",
"@carbon/react": "^1.51.0",
"lodash": "^4.17.21",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.70.0"
},
"devDependencies": {
"@types/react": "^18.2.48",
"@types/react-dom": "^18.2.18",
"@vitejs/plugin-react": "^4.2.1",
"eslint": "^8.56.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.5",
"vite": "^4.5.2"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"eslintConfig": {
"extends": [
"react-app"
]
}
}
18 changes: 18 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/src/App.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import React from 'react';
import { ThemeProvider } from './ThemeSelector/ThemeContext';
import { ThemeDropdown } from './ThemeSelector/ThemeDropdown';
import './config';
import Example from './Example/Example';

function App() {
return (
<div>
<ThemeProvider>
<Example />
<ThemeDropdown />
</ThemeProvider>
</div>
);
}

export default App;
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// cspell:words grafana

import React from 'react';

// ----------------------------------------------------
// This is an example showing use of the
// AboutModal component
// from the @carbon/ibm-products component library.
// ----------------------------------------------------

import { Decorator } from '@carbon/ibm-products';

import './_example.scss';

export const Example = () => {
return <Decorator />;
};

export default Example;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@use '@carbon/react/scss/spacing' as *;

/* example SCSS */
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import React, { createContext, useReducer } from 'react';

export const themeData = [
{
text: 'White',
value: 'carbon-theme--white',
},
{
text: 'Gray 10',
value: 'carbon-theme--g10',
},
{
text: 'Gray 90',
value: 'carbon-theme--g90',
},
{
text: 'Gray 100',
value: 'carbon-theme--g100',
},
];

export const ThemeContext = createContext();

const initialState = {
currentTheme: themeData[0],
};

const themeReducer = (state, action) => {
switch (action.type.value) {
case 'carbon-theme--white':
return { currentTheme: action.type };
case 'carbon-theme--g10':
return { currentTheme: action.type };
case 'carbon-theme--g90':
return { currentTheme: action.type };
case 'carbon-theme--g100':
return { currentTheme: action.type };
default:
return state;
}
};

export function ThemeProvider(props) {
const [state, dispatch] = useReducer(themeReducer, initialState);

return (
<ThemeContext.Provider value={{ state, dispatch }}>
{
// eslint-disable-next-line react/prop-types
props.children
}
</ThemeContext.Provider>
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import React, { useContext } from 'react';
import { Dropdown } from '@carbon/react';
import { ThemeContext, themeData } from './ThemeContext';

import './_theme-dropdown.scss';

export const ThemeDropdown = () => {
const theme = useContext(ThemeContext);

const setTheme = (selectedItem) => {
const bodyElement = document.body;
bodyElement.className = selectedItem.value;
theme.dispatch({ type: selectedItem });
};

return (
<div className="carbon-theme-dropdown">
<Dropdown
direction="top"
ariaLabel="Theme dropdown"
id="theme-dropdown"
items={themeData}
itemToString={(item) => (item ? item.text : '')}
onChange={(event) => setTheme(event.selectedItem)}
selectedItem={theme.state.currentTheme}
label="Select a Carbon theme"
titleText="Select a Carbon theme"
/>
</div>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
@use '@carbon/styles/scss/theme' as *;
@use '@carbon/styles/scss/themes';
@use '@carbon/styles/scss/type';
@use '@carbon/styles/scss/config';

.carbon-theme--white {
@include theme(themes.$white, true);
}

.carbon-theme--g10 {
@include theme(themes.$g10, true);
}

.carbon-theme--g90 {
@include theme(themes.$g90, true);
}

.carbon-theme--g100 {
@include theme(themes.$g100, true);
}

.carbon-theme-dropdown {
position: fixed;
bottom: 1rem; // stylelint-disable-line carbon/layout-token-use
left: 1rem; // stylelint-disable-line carbon/layout-token-use
min-width: 11.5rem;
}

.carbon-theme-dropdown .#{config.$prefix}--label {
@include type.type-style('label-01');
}
3 changes: 3 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/src/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { pkg } from '@carbon/ibm-products';

pkg.component.Decorator = true;
4 changes: 4 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/src/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/src/index.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@use '@carbon/react' with (
$font-path: '@ibm/plex'
);
@use '@carbon/ibm-products/css/index';
12 changes: 12 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/src/main.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import React from 'react';
import { createRoot } from 'react-dom';
import App from './App.jsx';
import './index.scss';

const root = createRoot(document.getElementById('root'));

root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions examples/carbon-for-ibm-products/Decorator/vite.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

// https://vitejs.dev/config/
export default defineConfig({
plugins: [
react({
jsxRuntime: 'classic',
}),
],
});
Loading
Loading