Skip to content

Commit

Permalink
Fin docs toolbox + fixes usage direct font icon custom
Browse files Browse the repository at this point in the history
  • Loading branch information
JabX committed Jan 27, 2024
1 parent 9315d7a commit 9cec253
Show file tree
Hide file tree
Showing 62 changed files with 437 additions and 100 deletions.
2 changes: 1 addition & 1 deletion packages/collections/src/list/shared.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export function DefaultAddItemComponent({addItemHandler, i18nPrefix = "focus", m
if (mode === "mosaic") {
return (
<div className={theme.add()} onClick={addItemHandler}>
<FontIcon>{{i18nKey: `${i18nPrefix}.icons.list.add`}}</FontIcon>
<FontIcon icon={{i18nKey: `${i18nPrefix}.icons.list.add`}} />
{i18next.t(`${i18nPrefix}.list.add`)}
</div>
);
Expand Down
6 changes: 3 additions & 3 deletions packages/collections/src/list/table/header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ export function TableHeader<T>({
}
>
{store && sortKey ? (
<FontIcon>
{{
<FontIcon
icon={{
i18nKey: `${i18nPrefix}.icons.table.sort${
store.sortBy !== sortKey || store.sortAsc ? "Asc" : "Desc"
}`
}}
</FontIcon>
/>
) : null}
<span className={theme.headerText()}>{i18next.t(title)}</span>
</div>
Expand Down
4 changes: 1 addition & 3 deletions packages/collections/src/search/search-bar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -194,9 +194,7 @@ export function SearchBar<T, C>({
<div data-focus="search-bar" style={{position: "relative"}}>
<div className={theme.bar({error: !!state.error})}>
<div className={theme.input()}>
<FontIcon className={theme.searchIcon()}>
{{i18nKey: `${i18nPrefix}.icons.searchBar.search`}}
</FontIcon>
<FontIcon className={theme.searchIcon()} icon={{i18nKey: `${i18nPrefix}.icons.searchBar.search`}} />
<input
ref={input}
autoComplete={config.autocompleteOffValue}
Expand Down
8 changes: 5 additions & 3 deletions packages/docs/.storybook/main.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
import type {StorybookConfig} from "@storybook/react-vite";
import {mergeConfig} from "vite";

export default {
stories: ["../**/*.stories.tsx", "../**/*.mdx"],
stories: ["../**/*.@(stories.tsx|mdx)"],
addons: ["@storybook/addon-essentials", "storybook-dark-mode"],
staticDirs: ["./public"],
framework: {
name: "@storybook/react-vite",
options: {}
},
docs: {
autodocs: true
autodocs: "tag"
},
typescript: {
reactDocgen: "react-docgen-typescript"
}
},
viteFinal: config => mergeConfig(config, {esbuild: {minifyIdentifiers: false}})
} satisfies StorybookConfig;
2 changes: 2 additions & 0 deletions packages/docs/.storybook/preview-head.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@
rel="stylesheet"
/>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons+Outlined" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons+Round" rel="stylesheet" />
13 changes: 6 additions & 7 deletions packages/docs/.storybook/preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import "@focus4/styling/lib/focus4.styling.css";
import "@focus4/toolbox/lib/focus4.toolbox.css";
import "./preview.css";

import {translation} from "@focus4/forms";
import {translation as collections} from "@focus4/collections";
import {translation as forms} from "@focus4/forms";
import {colorScheme, initColorScheme} from "@focus4/styling";
import {DocsContainer as BaseContainer} from "@storybook/blocks";
import type {Preview} from "@storybook/react";
Expand All @@ -19,7 +20,9 @@ initColorScheme(true);

i18next.init({
lng: "fr",
resources: {fr: {translation: {focus: {...translation.fr, icons: translation.icons}}}},
resources: {
fr: {translation: {focus: {...collections.fr, ...forms.fr, icons: {...collections.icons, ...forms.icons}}}}
},
nsSeparator: "🤷‍♂️"
});

Expand All @@ -30,12 +33,7 @@ function DocsContainer(props) {

export default {
parameters: {
actions: {argTypesRegex: "^on[A-Z].*"},
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i
},
sort: "requiredFirst"
},
docs: {
Expand All @@ -48,6 +46,7 @@ export default {
"Les bases",
"Modèle métier",
"Composants",
["Composants de base", "@focus4∕toolbox", "@focus4∕forms"],
"Routage",
"Mise en page",
"Listes et recherche",
Expand Down
24 changes: 24 additions & 0 deletions packages/docs/components/components.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import {Meta} from "@storybook/blocks";

<Meta title="Composants/Composants de base" />

# Composants de base

Focus met à disposition une série de composants de base qui implémentent [Material Design 3](https://m3.material.io/components) (avec quelques adaptations).

Ces composants cherchent à couvrir les besoins les plus standards d'une application, tout en offrant un niveau de personnalisation élevé pour couvrir un
maximum de cas.

- Le module `@focus4/toolbox` contient les versions de base de ces composants, qui sont directement repris de la spécification Material Design.
- Le module `@focus4/forms` contient :
- Quelques "surcharges" de ces composants pour pouvoir s'interfacer directement avec un formulaire (`Input` pour `TextField` et `Select` pour
`Dropdown` par exemple)
- Des composants un peu plus avancés qui combinent des composants de base pour réaliser des saisies plus complexes (comme `InputDate` ou
`SelectChips`), ou simplifier des cas d'usage courants (comme `BooleanRadio` ou `SelectCheckbox`). Ces composants n'existent pas en tant que
tels dans la spécification Material Design.
- Les composants d'affichage pour les formulaires (`Display`, `Label` et `Panel`)

**Un composant de saisie d'un domaine pour un champ doit venir du module `@focus4/forms`**, car il doit respecter le contrat d'interface correspondant du
domaine (`BaseInputProps` / `BaseSelectProps` / `BaseAutocompleteProps`). Si vous voulez construire votre propre composant de saisie, vous pouvez
reproduire ce que font les composants de `@focus4/forms`, en particulier la gestion du `type`, du `onChange`, de l'`error` et du `supportingText`. Ce
mécanisme a vocation à être amélioré dans le futur, et est suivi par l'[issue #192](https://github.com/klee-contrib/focus4/issues/192) sur Github.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...AutocompleteChipsMeta,
title: "Composants/@focus4∕forms/AutocompleteChips",
tags: ["autodocs"],
args: {type: "string"}
} as Meta<typeof AutocompleteChips>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...AutocompleteSearchMeta,
title: "Composants/@focus4∕forms/AutocompleteSearch",
tags: ["autodocs"],
args: {type: "string"}
} as Meta<typeof AutocompleteSearch>;

Expand Down
1 change: 1 addition & 0 deletions packages/docs/components/forms/BooleanRadio.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...BooleanRadioMeta,
title: "Composants/@focus4∕forms/BooleanRadio",
tags: ["autodocs"],
args: {type: "boolean"}
} as Meta<typeof BooleanRadio>;

Expand Down
1 change: 1 addition & 0 deletions packages/docs/components/forms/Display.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...DisplayMeta,
title: "Composants/@focus4∕forms/Display",
tags: ["autodocs"],
args: {type: "string", value: "Valeur"}
} as Meta<typeof Display>;

Expand Down
1 change: 1 addition & 0 deletions packages/docs/components/forms/Input.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...InputMeta,
title: "Composants/@focus4∕forms/Input",
tags: ["autodocs"],
args: {type: "string"}
} as Meta<typeof Input>;

Expand Down
1 change: 1 addition & 0 deletions packages/docs/components/forms/InputDate.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...InputDateMeta,
title: "Composants/@focus4∕forms/InputDate",
tags: ["autodocs"],
args: {type: "string"}
} as Meta<typeof InputDate>;

Expand Down
1 change: 1 addition & 0 deletions packages/docs/components/forms/Label.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...LabelMeta,
title: "Composants/@focus4∕forms/Label",
tags: ["autodocs"],
args: {label: "Label"}
} as Meta<typeof Label>;

Expand Down
3 changes: 2 additions & 1 deletion packages/docs/components/forms/Panel.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import type {Meta, StoryObj} from "@storybook/react";

export default {
...PanelMeta,
title: "Composants/@focus4∕forms/Panel"
title: "Composants/@focus4∕forms/Panel",
tags: ["autodocs"]
} as Meta<typeof Panel>;

export const Showcase: StoryObj<typeof Panel> = {};
3 changes: 2 additions & 1 deletion packages/docs/components/forms/PanelButtons.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import type {Meta, StoryObj} from "@storybook/react";

export default {
...PanelButtonsMeta,
title: "Composants/@focus4∕forms/PanelButtons"
title: "Composants/@focus4∕forms/PanelButtons",
tags: ["autodocs"]
} as Meta<typeof PanelButtons>;

export const Showcase: StoryObj<typeof PanelButtons> = {};
1 change: 1 addition & 0 deletions packages/docs/components/forms/Select.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...SelectMeta,
title: "Composants/@focus4∕forms/Select",
tags: ["autodocs"],
args: {
type: "string",
values: makeReferenceList([
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...SelectAutocompleteMeta,
title: "Composants/@focus4∕forms/SelectAutocomplete",
tags: ["autodocs"],
args: {
type: "string-array",
values: makeReferenceList([
Expand Down
1 change: 1 addition & 0 deletions packages/docs/components/forms/SelectCheckbox.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...SelectCheckboxMeta,
title: "Composants/@focus4∕forms/SelectCheckbox",
tags: ["autodocs"],
args: {
type: "string-array",
values: makeReferenceList([
Expand Down
1 change: 1 addition & 0 deletions packages/docs/components/forms/SelectChips.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...SelectChipsMeta,
title: "Composants/@focus4∕forms/SelectChips",
tags: ["autodocs"],
args: {
type: "string-array",
values: makeReferenceList([
Expand Down
1 change: 1 addition & 0 deletions packages/docs/components/forms/SelectRadio.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...SelectRadioMeta,
title: "Composants/@focus4∕forms/SelectRadio",
tags: ["autodocs"],
args: {
type: "string",
values: makeReferenceList([
Expand Down
29 changes: 28 additions & 1 deletion packages/docs/components/toolbox/Autocomplete.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import {useState} from "react";

import {Autocomplete} from "@focus4/toolbox";

import {AutocompleteMeta} from "./metas/autocomplete";
Expand All @@ -7,6 +9,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...AutocompleteMeta,
title: "Composants/@focus4∕toolbox/Autocomplete",
tags: ["autodocs"],
args: {
values: [
{key: "1", label: "Option 1"},
Expand All @@ -15,4 +18,28 @@ export default {
}
} as Meta<typeof Autocomplete>;

export const Showcase: StoryObj<typeof Autocomplete> = {};
export const Showcase: StoryObj<typeof Autocomplete> = {
render(props) {
const [selected, setSelected] = useState<string>();
const [selected2, setSelected2] = useState<string>();
return (
<div className="stack">
<Autocomplete
icon="search"
trailing={{icon: "clear", tooltip: "Vider le champ", onClick: () => setSelected(undefined)}}
value={selected}
{...props}
onChange={setSelected}
/>

<Autocomplete
allowUnmatched
supportingText="Cet autocomplete autorise la sélection de valeurs supplémentaires"
value={selected2}
{...props}
onChange={setSelected2}
/>
</div>
);
}
};
1 change: 1 addition & 0 deletions packages/docs/components/toolbox/Button.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...ButtonMeta,
title: "Composants/@focus4∕toolbox/Button",
tags: ["autodocs"],
args: {
label: "Button"
}
Expand Down
3 changes: 2 additions & 1 deletion packages/docs/components/toolbox/Calendar.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import type {Meta, StoryObj} from "@storybook/react";

export default {
...CalendarMeta,
title: "Composants/@focus4∕toolbox/Calendar"
title: "Composants/@focus4∕toolbox/Calendar",
tags: ["autodocs"]
} as Meta<typeof Calendar>;

export const Showcase: StoryObj<typeof Calendar> = {
Expand Down
3 changes: 2 additions & 1 deletion packages/docs/components/toolbox/Checkbox.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import type {Meta, StoryObj} from "@storybook/react";

export default {
...CheckboxMeta,
title: "Composants/@focus4∕toolbox/Checkbox"
title: "Composants/@focus4∕toolbox/Checkbox",
tags: ["autodocs"]
} as Meta<typeof Checkbox>;

export const Showcase: StoryObj<typeof Checkbox> = {
Expand Down
29 changes: 25 additions & 4 deletions packages/docs/components/toolbox/Chip.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...ChipMeta,
title: "Composants/@focus4∕toolbox/Chip",
tags: ["autodocs"],
args: {
label: "Chip"
}
Expand All @@ -16,10 +17,30 @@ export const Showcase: StoryObj<typeof Chip> = {
render(props) {
return (
<div className="container">
<Chip {...props} onClick={undefined} onDeleteClick={undefined} />
<Chip color="primary" {...props} onClick={undefined} />
<Chip color="accent" elevated {...props} onDeleteClick={undefined} />
<Chip color="light" icon="add" {...props} onDeleteClick={undefined} />
<Chip {...props} />
<Chip
color="primary"
onDeleteClick={() => {
/* */
}}
{...props}
/>
<Chip
color="accent"
elevated
onClick={() => {
/* */
}}
{...props}
/>
<Chip
color="light"
icon="add"
onClick={() => {
/* */
}}
{...props}
/>
</div>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...CircularProgressIndicatorMeta,
title: "Composants/@focus4∕toolbox/CircularProgressIndicator",
tags: ["autodocs"],
args: {
value: 55
}
Expand Down
1 change: 1 addition & 0 deletions packages/docs/components/toolbox/Dropdown.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...DropdownMeta,
title: "Composants/@focus4∕toolbox/Dropdown",
tags: ["autodocs"],
args: {
values: [
{key: "1", label: "Option 1"},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import type {Meta, StoryObj} from "@storybook/react";
export default {
...FloatingActionButtonMeta,
title: "Composants/@focus4∕toolbox/FloatingActionButton",
tags: ["autodocs"],
args: {
icon: "add",
label: "Ajouter"
Expand Down
Loading

0 comments on commit 9cec253

Please sign in to comment.