@1024pix/pix-ui 38.0.0 → 38.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +31 -39
- package/.nvmrc +1 -1
- package/.storybook/main.js +7 -5
- package/.storybook/preview.js +35 -32
- package/CHANGELOG.md +20 -0
- package/app/stories/form.stories.js +4 -0
- package/app/stories/{pix-background-header.stories.mdx → pix-background-header.mdx} +6 -6
- package/app/stories/pix-background-header.stories.js +4 -0
- package/app/stories/{pix-banner.stories.mdx → pix-banner.mdx} +19 -30
- package/app/stories/pix-banner.stories.js +49 -46
- package/app/stories/{pix-block.stories.mdx → pix-block.mdx} +5 -7
- package/app/stories/pix-block.stories.js +14 -11
- package/app/stories/{pix-button-link.stories.mdx → pix-button-link.mdx} +6 -14
- package/app/stories/pix-button-link.stories.js +87 -87
- package/app/stories/{pix-button-upload.stories.mdx → pix-button-upload.mdx} +5 -8
- package/app/stories/pix-button-upload.stories.js +62 -59
- package/app/stories/{pix-button.stories.mdx → pix-button.mdx} +15 -28
- package/app/stories/pix-button.stories.js +152 -149
- package/app/stories/pix-checkbox.mdx +71 -0
- package/app/stories/pix-checkbox.stories.js +69 -66
- package/app/stories/pix-collapsible.mdx +31 -0
- package/app/stories/pix-collapsible.stories.js +16 -13
- package/app/stories/{pix-dropdown.stories.mdx → pix-dropdown.mdx} +9 -17
- package/app/stories/pix-dropdown.stories.js +114 -110
- package/app/stories/{pix-filter-banner.stories.mdx → pix-filter-banner.mdx} +5 -7
- package/app/stories/pix-filter-banner.stories.js +36 -33
- package/app/stories/{pix-filterable-and-searchable-select.stories.mdx → pix-filterable-and-searchable-select.mdx} +7 -17
- package/app/stories/pix-filterable-and-searchable-select.stories.js +136 -133
- package/app/stories/{pix-icon-button.stories.mdx → pix-icon-button.mdx} +8 -16
- package/app/stories/pix-icon-button.stories.js +60 -57
- package/app/stories/{pix-indicator-card.stories.mdx → pix-indicator-card.mdx} +6 -10
- package/app/stories/pix-indicator-card.stories.js +37 -34
- package/app/stories/{pix-input-code.stories.mdx → pix-input-code.mdx} +5 -7
- package/app/stories/pix-input-code.stories.js +55 -52
- package/app/stories/{pix-input-password.stories.mdx → pix-input-password.mdx} +22 -23
- package/app/stories/pix-input-password.stories.js +60 -57
- package/app/stories/{pix-input.stories.mdx → pix-input.mdx} +14 -20
- package/app/stories/pix-input.stories.js +55 -52
- package/app/stories/pix-message.mdx +54 -0
- package/app/stories/pix-message.stories.js +40 -36
- package/app/stories/{pix-modal.stories.mdx → pix-modal.mdx} +5 -7
- package/app/stories/pix-modal.stories.js +31 -30
- package/app/stories/{pix-multi-select.stories.mdx → pix-multi-select.mdx} +9 -21
- package/app/stories/pix-multi-select.stories.js +106 -99
- package/app/stories/{pix-pagination.stories.mdx → pix-pagination.mdx} +8 -16
- package/app/stories/pix-pagination.stories.js +114 -111
- package/app/stories/{pix-progress-gauge.stories.mdx → pix-progress-gauge.mdx} +6 -10
- package/app/stories/pix-progress-gauge.stories.js +43 -40
- package/app/stories/{pix-radio-button.stories.mdx → pix-radio-button.mdx} +13 -15
- package/app/stories/pix-radio-button.stories.js +35 -32
- package/app/stories/pix-return-to.mdx +34 -0
- package/app/stories/pix-return-to.stories.js +32 -32
- package/app/stories/{pix-search-input.stories.mdx → pix-search-input.mdx} +5 -7
- package/app/stories/pix-search-input.stories.js +56 -52
- package/app/stories/{pix-select.stories.mdx → pix-select.mdx} +12 -28
- package/app/stories/pix-select.stories.js +171 -168
- package/app/stories/pix-selectable-tag.mdx +37 -0
- package/app/stories/pix-selectable-tag.stories.js +37 -34
- package/app/stories/{pix-sidebar.stories.mdx → pix-sidebar.mdx} +5 -7
- package/app/stories/pix-sidebar.stories.js +28 -25
- package/app/stories/{pix-stars.stories.mdx → pix-stars.mdx} +5 -7
- package/app/stories/pix-stars.stories.js +29 -26
- package/app/stories/{pix-tag.stories.mdx → pix-tag.mdx} +9 -10
- package/app/stories/pix-tag.stories.js +39 -39
- package/app/stories/{pix-textarea.stories.mdx → pix-textarea.mdx} +6 -7
- package/app/stories/pix-textarea.stories.js +37 -39
- package/app/stories/pix-toggle.mdx +28 -0
- package/app/stories/pix-toggle.stories.js +52 -49
- package/app/stories/{pix-tooltip.stories.mdx → pix-tooltip.mdx} +14 -28
- package/app/stories/pix-tooltip.stories.js +57 -54
- package/docs/{architecture.stories.mdx → architecture.mdx} +1 -1
- package/docs/{breaking-changes.stories.mdx → breaking-changes.mdx} +1 -1
- package/docs/changelog.mdx +6 -0
- package/docs/{colors-palette.stories.mdx → colors-palette.mdx} +1 -3
- package/docs/{create-component.stories.mdx → create-component.mdx} +24 -30
- package/docs/{design-system.stories.mdx → design-system.mdx} +1 -1
- package/docs/{design-tokens.stories.mdx → design-tokens.mdx} +1 -1
- package/docs/{good-practices-a11y.stories.mdx → good-practices-a11y.mdx} +1 -1
- package/docs/{good-practices-design.stories.mdx → good-practices-design.mdx} +1 -1
- package/docs/{good-practices-responsive.stories.mdx → good-practices-responsive.mdx} +1 -1
- package/docs/{good-practices-style-css.stories.mdx → good-practices-style-css.mdx} +1 -1
- package/docs/{good-practices-tests.stories.mdx → good-practices-tests.mdx} +1 -1
- package/docs/{make-a-release.stories.mdx → make-a-release.mdx} +1 -1
- package/docs/{pix-design-tokens-dev.stories.mdx → pix-design-tokens-dev.mdx} +1 -1
- package/docs/{shadow.stories.mdx → shadow.mdx} +1 -1
- package/docs/{spacing.stories.mdx → spacing.mdx} +1 -1
- package/docs/{storybook.stories.mdx → storybook.mdx} +1 -1
- package/docs/{test-component-without-release.stories.mdx → test-component-without-release.mdx} +1 -1
- package/docs/{typography.stories.mdx → typography.mdx} +1 -3
- package/docs/{use-component.stories.mdx → use-component.mdx} +1 -1
- package/docs/{use-install.stories.mdx → use-install.mdx} +1 -1
- package/package.json +19 -21
- package/app/stories/pix-checkbox.stories.mdx +0 -73
- package/app/stories/pix-collapsible.stories.mdx +0 -36
- package/app/stories/pix-message.stories.mdx +0 -64
- package/app/stories/pix-return-to.stories.mdx +0 -33
- package/app/stories/pix-selectable-tag.stories.mdx +0 -43
- package/app/stories/pix-toggle.stories.mdx +0 -36
- package/docs/changelog.stories.mdx +0 -6
|
@@ -1,7 +1,120 @@
|
|
|
1
1
|
import { hbs } from 'ember-cli-htmlbars';
|
|
2
2
|
import { action } from '@storybook/addon-actions';
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export default {
|
|
5
|
+
title: 'Form/Dropdown',
|
|
6
|
+
argTypes: {
|
|
7
|
+
options: {
|
|
8
|
+
name: 'options',
|
|
9
|
+
description:
|
|
10
|
+
'Les options sont représentées par un tableau d‘objet contenant les propriétés ``value`` et ``label``.',
|
|
11
|
+
type: { name: 'array', required: true },
|
|
12
|
+
},
|
|
13
|
+
selectedOption: {
|
|
14
|
+
name: 'selectedOption',
|
|
15
|
+
description: 'Option sélectionnée',
|
|
16
|
+
options: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
|
|
17
|
+
control: { type: 'select' },
|
|
18
|
+
type: { name: 'string', required: false },
|
|
19
|
+
table: {
|
|
20
|
+
type: { summary: 'string' },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
onSelect: {
|
|
24
|
+
name: 'onSelect',
|
|
25
|
+
description: 'Fonction à appeler quand une option est sélectionnée.',
|
|
26
|
+
type: { required: true },
|
|
27
|
+
control: { disable: true },
|
|
28
|
+
},
|
|
29
|
+
isSearchable: {
|
|
30
|
+
name: 'isSearchable',
|
|
31
|
+
description:
|
|
32
|
+
"Rend le champ cherchable, le paramètre @searchPlaceholder devient requis pour l'accessibilité.",
|
|
33
|
+
control: { type: 'boolean' },
|
|
34
|
+
type: { name: 'boolean', required: false },
|
|
35
|
+
table: {
|
|
36
|
+
type: { summary: 'boolean' },
|
|
37
|
+
defaultValue: { summary: false },
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
searchPlaceholder: {
|
|
41
|
+
name: 'searchPlaceholder',
|
|
42
|
+
description: 'Placeholder du champ de recherche. Requis si le menu est cherchable.',
|
|
43
|
+
type: { name: 'string', required: false },
|
|
44
|
+
table: {
|
|
45
|
+
type: { summary: 'string' },
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
placeholder: {
|
|
49
|
+
name: 'placeholder',
|
|
50
|
+
description: "Un texte donnant une indication a l'utilisateur sur le choix des options.",
|
|
51
|
+
type: { name: 'string', required: false },
|
|
52
|
+
table: {
|
|
53
|
+
type: { summary: 'string' },
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
label: {
|
|
57
|
+
name: 'label',
|
|
58
|
+
description:
|
|
59
|
+
'Label du menu déroulant, le paramètre @id devient obligatoire avec ce paramètre.',
|
|
60
|
+
type: { name: 'string', required: false },
|
|
61
|
+
table: {
|
|
62
|
+
type: { summary: 'string' },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
requiredLabel: {
|
|
66
|
+
name: 'requiredLabel',
|
|
67
|
+
description:
|
|
68
|
+
'Label indiquant que le champ est requis, le paramètre @label devient obligatoire avec ce paramètre.',
|
|
69
|
+
type: { name: 'string', required: false },
|
|
70
|
+
table: {
|
|
71
|
+
type: { summary: 'string' },
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
id: {
|
|
75
|
+
name: 'id',
|
|
76
|
+
description: "L'id du label",
|
|
77
|
+
type: { name: 'string', required: false },
|
|
78
|
+
table: {
|
|
79
|
+
type: { summary: 'string' },
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
pageSize: {
|
|
83
|
+
name: 'pageSize',
|
|
84
|
+
description: "Le nombre d'élément à afficher dans la liste.",
|
|
85
|
+
type: { name: 'number', required: false },
|
|
86
|
+
table: {
|
|
87
|
+
type: { summary: 'number' },
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
clearLabel: {
|
|
91
|
+
name: 'clearLabel',
|
|
92
|
+
description: "Label de l'icône pour éliminer la sélection. Requis pour l'accessibilité.",
|
|
93
|
+
type: { name: 'string', required: false },
|
|
94
|
+
table: {
|
|
95
|
+
type: { summary: 'string' },
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
expandLabel: {
|
|
99
|
+
name: 'expandLabel',
|
|
100
|
+
description: "Label de l'icône pour ouvrir le menu déroulant. Requis pour l'accessibilité.",
|
|
101
|
+
type: { name: 'string', required: false },
|
|
102
|
+
table: {
|
|
103
|
+
type: { summary: 'string' },
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
collapseLabel: {
|
|
107
|
+
name: 'collapseLabel',
|
|
108
|
+
description: "Label de l'icône pour réduire le menu déroulant. Requis pour l'accessibilité.",
|
|
109
|
+
type: { name: 'string', required: false },
|
|
110
|
+
table: {
|
|
111
|
+
type: { summary: 'string' },
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const Template = (args) => {
|
|
5
118
|
return {
|
|
6
119
|
template: hbs`<div style='width: 300px;'>
|
|
7
120
|
<PixDropdown
|
|
@@ -78,112 +191,3 @@ paginatedDropdown.args = {
|
|
|
78
191
|
label: `${index}abc`,
|
|
79
192
|
})),
|
|
80
193
|
};
|
|
81
|
-
|
|
82
|
-
export const argTypes = {
|
|
83
|
-
options: {
|
|
84
|
-
name: 'options',
|
|
85
|
-
description:
|
|
86
|
-
'Les options sont représentées par un tableau d‘objet contenant les propriétés ``value`` et ``label``.',
|
|
87
|
-
type: { name: 'array', required: true },
|
|
88
|
-
},
|
|
89
|
-
selectedOption: {
|
|
90
|
-
name: 'selectedOption',
|
|
91
|
-
description: 'Option sélectionnée',
|
|
92
|
-
options: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
|
|
93
|
-
control: { type: 'select' },
|
|
94
|
-
type: { name: 'string', required: false },
|
|
95
|
-
table: {
|
|
96
|
-
type: { summary: 'string' },
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
onSelect: {
|
|
100
|
-
name: 'onSelect',
|
|
101
|
-
description: 'Fonction à appeler quand une option est sélectionnée.',
|
|
102
|
-
type: { required: true },
|
|
103
|
-
control: { disable: true },
|
|
104
|
-
},
|
|
105
|
-
isSearchable: {
|
|
106
|
-
name: 'isSearchable',
|
|
107
|
-
description:
|
|
108
|
-
"Rend le champ cherchable, le paramètre @searchPlaceholder devient requis pour l'accessibilité.",
|
|
109
|
-
control: { type: 'boolean' },
|
|
110
|
-
type: { name: 'boolean', required: false },
|
|
111
|
-
table: {
|
|
112
|
-
type: { summary: 'boolean' },
|
|
113
|
-
defaultValue: { summary: false },
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
searchPlaceholder: {
|
|
117
|
-
name: 'searchPlaceholder',
|
|
118
|
-
description: 'Placeholder du champ de recherche. Requis si le menu est cherchable.',
|
|
119
|
-
type: { name: 'string', required: false },
|
|
120
|
-
table: {
|
|
121
|
-
type: { summary: 'string' },
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
placeholder: {
|
|
125
|
-
name: 'placeholder',
|
|
126
|
-
description: "Un texte donnant une indication a l'utilisateur sur le choix des options.",
|
|
127
|
-
type: { name: 'string', required: false },
|
|
128
|
-
table: {
|
|
129
|
-
type: { summary: 'string' },
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
label: {
|
|
133
|
-
name: 'label',
|
|
134
|
-
description: 'Label du menu déroulant, le paramètre @id devient obligatoire avec ce paramètre.',
|
|
135
|
-
type: { name: 'string', required: false },
|
|
136
|
-
table: {
|
|
137
|
-
type: { summary: 'string' },
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
requiredLabel: {
|
|
141
|
-
name: 'requiredLabel',
|
|
142
|
-
description:
|
|
143
|
-
'Label indiquant que le champ est requis, le paramètre @label devient obligatoire avec ce paramètre.',
|
|
144
|
-
type: { name: 'string', required: false },
|
|
145
|
-
table: {
|
|
146
|
-
type: { summary: 'string' },
|
|
147
|
-
},
|
|
148
|
-
},
|
|
149
|
-
id: {
|
|
150
|
-
name: 'id',
|
|
151
|
-
description: "L'id du label",
|
|
152
|
-
type: { name: 'string', required: false },
|
|
153
|
-
table: {
|
|
154
|
-
type: { summary: 'string' },
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
pageSize: {
|
|
158
|
-
name: 'pageSize',
|
|
159
|
-
description: "Le nombre d'élément à afficher dans la liste.",
|
|
160
|
-
type: { name: 'number', required: false },
|
|
161
|
-
table: {
|
|
162
|
-
type: { summary: 'number' },
|
|
163
|
-
},
|
|
164
|
-
},
|
|
165
|
-
clearLabel: {
|
|
166
|
-
name: 'clearLabel',
|
|
167
|
-
description: "Label de l'icône pour éliminer la sélection. Requis pour l'accessibilité.",
|
|
168
|
-
type: { name: 'string', required: false },
|
|
169
|
-
table: {
|
|
170
|
-
type: { summary: 'string' },
|
|
171
|
-
},
|
|
172
|
-
},
|
|
173
|
-
expandLabel: {
|
|
174
|
-
name: 'expandLabel',
|
|
175
|
-
description: "Label de l'icône pour ouvrir le menu déroulant. Requis pour l'accessibilité.",
|
|
176
|
-
type: { name: 'string', required: false },
|
|
177
|
-
table: {
|
|
178
|
-
type: { summary: 'string' },
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
collapseLabel: {
|
|
182
|
-
name: 'collapseLabel',
|
|
183
|
-
description: "Label de l'icône pour réduire le menu déroulant. Requis pour l'accessibilité.",
|
|
184
|
-
type: { name: 'string', required: false },
|
|
185
|
-
table: {
|
|
186
|
-
type: { summary: 'string' },
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Meta, Story,
|
|
2
|
-
import * as
|
|
1
|
+
import { Meta, Story, ArgTypes } from '@storybook/blocks';
|
|
2
|
+
import * as ComponentStories from './pix-filter-banner.stories.js';
|
|
3
3
|
|
|
4
|
-
<Meta
|
|
4
|
+
<Meta of={ComponentStories} />
|
|
5
5
|
|
|
6
6
|
# Pix Filter Banner
|
|
7
7
|
|
|
@@ -9,9 +9,7 @@ Une `FilterBanner` permet de wrapper les éléments de filtres (`Select`, `Multi
|
|
|
9
9
|
|
|
10
10
|
> Il est possible de surcharger le style d'une `<PixFilterBanner>` via l'attribut `class` ainsi que de passer n'importe quel attribut sur sa `div` wrapper (par exemple, un `aria-label`)
|
|
11
11
|
|
|
12
|
-
<
|
|
13
|
-
<Story name="Filter banner" story={stories.filterBanner} height={80} />
|
|
14
|
-
</Canvas>
|
|
12
|
+
<Story of={ComponentStories.filterBanner} height={80} />
|
|
15
13
|
|
|
16
14
|
## Usage
|
|
17
15
|
|
|
@@ -25,4 +23,4 @@ Une `FilterBanner` permet de wrapper les éléments de filtres (`Select`, `Multi
|
|
|
25
23
|
|
|
26
24
|
## Arguments
|
|
27
25
|
|
|
28
|
-
<
|
|
26
|
+
<ArgTypes of={ComponentStories} />
|
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
import { hbs } from 'ember-cli-htmlbars';
|
|
2
2
|
import { action } from '@storybook/addon-actions';
|
|
3
3
|
|
|
4
|
+
export default {
|
|
5
|
+
title: 'Form/Filter banner',
|
|
6
|
+
argTypes: {
|
|
7
|
+
title: {
|
|
8
|
+
name: 'title',
|
|
9
|
+
description: 'Titre du filtre',
|
|
10
|
+
type: { name: 'string', required: false },
|
|
11
|
+
},
|
|
12
|
+
details: {
|
|
13
|
+
name: 'details',
|
|
14
|
+
description: 'Détails du filtre',
|
|
15
|
+
type: { name: 'string', required: false },
|
|
16
|
+
},
|
|
17
|
+
clearFiltersLabel: {
|
|
18
|
+
name: 'clearFiltersLabel',
|
|
19
|
+
description: 'libellé du bouton',
|
|
20
|
+
type: { name: 'string', required: false },
|
|
21
|
+
},
|
|
22
|
+
onClearFilters: {
|
|
23
|
+
name: 'onClearFilters',
|
|
24
|
+
description: 'fonction à appeler pour déclencher l’action de suppression des filtres',
|
|
25
|
+
type: { required: false },
|
|
26
|
+
},
|
|
27
|
+
isClearFilterButtonDisabled: {
|
|
28
|
+
name: 'isClearFilterButtonDisabled',
|
|
29
|
+
description: 'Désactiver le button de la suppresion des filtres',
|
|
30
|
+
type: { name: 'boolean', required: true },
|
|
31
|
+
control: { type: 'boolean' },
|
|
32
|
+
table: {
|
|
33
|
+
type: { summary: 'boolean' },
|
|
34
|
+
defaultValue: { summary: false },
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
4
40
|
export const filterBanner = (args) => {
|
|
5
41
|
return {
|
|
6
42
|
template: hbs`<PixFilterBanner
|
|
@@ -28,36 +64,3 @@ filterBanner.args = {
|
|
|
28
64
|
onChange: action('select-onchange'),
|
|
29
65
|
onClearFilters: action('onClearFilters'),
|
|
30
66
|
};
|
|
31
|
-
|
|
32
|
-
export const argTypes = {
|
|
33
|
-
title: {
|
|
34
|
-
name: 'title',
|
|
35
|
-
description: 'Titre du filtre',
|
|
36
|
-
type: { name: 'string', required: false },
|
|
37
|
-
},
|
|
38
|
-
details: {
|
|
39
|
-
name: 'details',
|
|
40
|
-
description: 'Détails du filtre',
|
|
41
|
-
type: { name: 'string', required: false },
|
|
42
|
-
},
|
|
43
|
-
clearFiltersLabel: {
|
|
44
|
-
name: 'clearFiltersLabel',
|
|
45
|
-
description: 'libellé du bouton',
|
|
46
|
-
type: { name: 'string', required: false },
|
|
47
|
-
},
|
|
48
|
-
onClearFilters: {
|
|
49
|
-
name: 'onClearFilters',
|
|
50
|
-
description: 'fonction à appeler pour déclencher l’action de suppression des filtres',
|
|
51
|
-
type: { required: false },
|
|
52
|
-
},
|
|
53
|
-
isClearFilterButtonDisabled: {
|
|
54
|
-
name: 'isClearFilterButtonDisabled',
|
|
55
|
-
description: 'Désactiver le button de la suppresion des filtres',
|
|
56
|
-
type: { name: 'boolean', required: true },
|
|
57
|
-
control: { type: 'boolean' },
|
|
58
|
-
table: {
|
|
59
|
-
type: { summary: 'boolean' },
|
|
60
|
-
defaultValue: { summary: false },
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
};
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { Meta, Story,
|
|
2
|
-
import * as
|
|
1
|
+
import { Meta, Story, ArgTypes } from '@storybook/blocks';
|
|
2
|
+
import * as ComponentStories from './pix-filterable-and-searchable-select.stories.js';
|
|
3
3
|
|
|
4
|
-
<Meta
|
|
5
|
-
title="Form/Filterable and searchable select"
|
|
6
|
-
component="PixFilterableAndSearchableSelect"
|
|
7
|
-
argTypes={stories.argTypes}
|
|
8
|
-
/>
|
|
4
|
+
<Meta of={ComponentStories} />
|
|
9
5
|
|
|
10
6
|
# Pix Filterable and searchable select
|
|
11
7
|
|
|
@@ -23,21 +19,15 @@ Les options sont représentées par un tableau d'objet contenant les propriété
|
|
|
23
19
|
|
|
24
20
|
## Default
|
|
25
21
|
|
|
26
|
-
<
|
|
27
|
-
<Story name="Default" story={stories.Default} />
|
|
28
|
-
</Canvas>
|
|
22
|
+
<Story of={ComponentStories.Default} height={400}/>
|
|
29
23
|
|
|
30
24
|
## Searchable
|
|
31
25
|
|
|
32
|
-
<
|
|
33
|
-
<Story name="Searchable" story={stories.Searchable} />
|
|
34
|
-
</Canvas>
|
|
26
|
+
<Story of={ComponentStories.Searchable} height={400}/>
|
|
35
27
|
|
|
36
28
|
## With labels only for screenReaders
|
|
37
29
|
|
|
38
|
-
<
|
|
39
|
-
<Story name="WithLabelsOnlyForScreenReaders" story={stories.WithLabelsOnlyForScreenReaders} />
|
|
40
|
-
</Canvas>
|
|
30
|
+
<Story of={ComponentStories.WithLabelsOnlyForScreenReaders} height={400}/>
|
|
41
31
|
|
|
42
32
|
## Usage
|
|
43
33
|
|
|
@@ -68,4 +58,4 @@ Les options sont représentées par un tableau d'objet contenant les propriété
|
|
|
68
58
|
|
|
69
59
|
## Arguments
|
|
70
60
|
|
|
71
|
-
<
|
|
61
|
+
<ArgTypes of={ComponentStories} />
|
|
@@ -1,6 +1,142 @@
|
|
|
1
1
|
import { hbs } from 'ember-cli-htmlbars';
|
|
2
2
|
import { action } from '@storybook/addon-actions';
|
|
3
3
|
|
|
4
|
+
export default {
|
|
5
|
+
title: 'Form/Filterable and searchable select',
|
|
6
|
+
argTypes: {
|
|
7
|
+
label: {
|
|
8
|
+
name: 'label',
|
|
9
|
+
description: 'Label du composant global.',
|
|
10
|
+
type: { name: 'string', required: true },
|
|
11
|
+
table: {
|
|
12
|
+
type: { summary: 'string' },
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
subLabel: {
|
|
16
|
+
name: 'subLabel',
|
|
17
|
+
description: 'Sous Label du composant global qui donne une description.',
|
|
18
|
+
type: { name: 'string', required: false },
|
|
19
|
+
table: {
|
|
20
|
+
type: { summary: 'string' },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
options: {
|
|
24
|
+
name: 'options',
|
|
25
|
+
description:
|
|
26
|
+
'Les options sont représentées par un tableau d‘objet contenant les propriétés ``value``, ``label`` et ``category``. Ce dernier étant optionnel.',
|
|
27
|
+
type: { name: 'array', required: true },
|
|
28
|
+
},
|
|
29
|
+
value: {
|
|
30
|
+
name: 'value',
|
|
31
|
+
description: 'Option sélectionnée',
|
|
32
|
+
options: ['1', '2', '3', '4', '5', '6'],
|
|
33
|
+
control: { type: 'select' },
|
|
34
|
+
type: { name: 'string', required: false },
|
|
35
|
+
table: {
|
|
36
|
+
type: { summary: 'string' },
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
onChange: {
|
|
40
|
+
name: 'onChange',
|
|
41
|
+
description: 'Fonction à appeler quand une option est sélectionnée.',
|
|
42
|
+
type: { required: true },
|
|
43
|
+
control: { disable: true },
|
|
44
|
+
},
|
|
45
|
+
isSearchable: {
|
|
46
|
+
name: 'isSearchable',
|
|
47
|
+
description: 'Rend le champ du select cherchable',
|
|
48
|
+
control: { type: 'boolean' },
|
|
49
|
+
type: { name: 'boolean', required: false },
|
|
50
|
+
table: {
|
|
51
|
+
type: { summary: 'boolean' },
|
|
52
|
+
defaultValue: { summary: false },
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
screenReaderOnly: {
|
|
56
|
+
name: 'screenReaderOnly',
|
|
57
|
+
description: "Permet de rendre le label lisible uniquement par les lecteurs d'écran",
|
|
58
|
+
control: { type: 'boolean' },
|
|
59
|
+
type: { name: 'boolean', required: false },
|
|
60
|
+
table: {
|
|
61
|
+
type: { summary: 'boolean' },
|
|
62
|
+
defaultValue: { summary: false },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
placeholder: {
|
|
66
|
+
name: 'placeholder',
|
|
67
|
+
description: "Placeholder du select. Il sert aussi de label pour l'option par défaut",
|
|
68
|
+
type: { name: 'string', required: true },
|
|
69
|
+
table: {
|
|
70
|
+
type: { summary: 'string' },
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
hideDefaultOption: {
|
|
74
|
+
name: 'hideDefaultOption',
|
|
75
|
+
description: "Cache l'option par défaut du select",
|
|
76
|
+
type: { name: 'boolean', required: false },
|
|
77
|
+
table: {
|
|
78
|
+
type: { summary: 'boolean' },
|
|
79
|
+
defaultValue: { summary: false },
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
searchLabel: {
|
|
83
|
+
name: 'searchLabel',
|
|
84
|
+
description:
|
|
85
|
+
'Label de la recherche dans le menu déroulant du select. **⚠️ Obligatoire uniquement si le `isSearchable` est à true. ⚠️**',
|
|
86
|
+
type: { name: 'string', required: false },
|
|
87
|
+
table: {
|
|
88
|
+
type: { summary: 'string' },
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
searchPlaceholder: {
|
|
92
|
+
name: 'searchPlaceholder',
|
|
93
|
+
description:
|
|
94
|
+
'Placeholder de la recherche dans le menu déroulant du select. **⚠️ Obligatoire uniquement si le `isSearchable` est à true. ⚠️**',
|
|
95
|
+
type: { name: 'string', required: false },
|
|
96
|
+
table: {
|
|
97
|
+
type: { summary: 'string' },
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
emptySearchMessage: {
|
|
101
|
+
name: 'emptySearchMessage',
|
|
102
|
+
description:
|
|
103
|
+
"Message affiché si la recherche dans le select ne retourne pas d'options. **⚠️ Obligatoire uniquement si le `isSearchable` est à true. ⚠️**",
|
|
104
|
+
type: { name: 'string', required: false },
|
|
105
|
+
table: {
|
|
106
|
+
type: { summary: 'string' },
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
requiredText: {
|
|
110
|
+
name: 'requiredText',
|
|
111
|
+
description: "Affiche l'astérisque au label et ajoute sa signification",
|
|
112
|
+
type: { name: 'string', required: false },
|
|
113
|
+
table: {
|
|
114
|
+
type: { summary: 'string' },
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
errorMessage: {
|
|
118
|
+
name: 'errorMessage',
|
|
119
|
+
description: 'Message affiché si une erreur survient',
|
|
120
|
+
type: { name: 'string', required: false },
|
|
121
|
+
table: {
|
|
122
|
+
type: { summary: 'string' },
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
categoriesPlaceholder: {
|
|
126
|
+
name: 'categoriesPlaceholder',
|
|
127
|
+
description:
|
|
128
|
+
'Pour le filtre de categories, cela rempli le contenu interne du composant, `categoriesPlaceholder` pour `isSearchable` `true`, sinon rawContent du `button`',
|
|
129
|
+
type: { name: 'string', required: true },
|
|
130
|
+
},
|
|
131
|
+
categoriesLabel: {
|
|
132
|
+
name: 'categoriesLabel',
|
|
133
|
+
description:
|
|
134
|
+
"Pour le composant de filtre sur les catégories, cela donne un label au champ qui sera celui vocalisé par le lecteur d'écran",
|
|
135
|
+
type: { name: 'string', required: true },
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
|
|
4
140
|
const Template = (args) => {
|
|
5
141
|
return {
|
|
6
142
|
template: hbs`
|
|
@@ -53,136 +189,3 @@ WithLabelsOnlyForScreenReaders.args = {
|
|
|
53
189
|
screenReaderOnly: true,
|
|
54
190
|
isSearchable: true,
|
|
55
191
|
};
|
|
56
|
-
|
|
57
|
-
export const argTypes = {
|
|
58
|
-
label: {
|
|
59
|
-
name: 'label',
|
|
60
|
-
description: 'Label du composant global.',
|
|
61
|
-
type: { name: 'string', required: true },
|
|
62
|
-
table: {
|
|
63
|
-
type: { summary: 'string' },
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
subLabel: {
|
|
67
|
-
name: 'subLabel',
|
|
68
|
-
description: 'Sous Label du composant global qui donne une description.',
|
|
69
|
-
type: { name: 'string', required: false },
|
|
70
|
-
table: {
|
|
71
|
-
type: { summary: 'string' },
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
options: {
|
|
75
|
-
name: 'options',
|
|
76
|
-
description:
|
|
77
|
-
'Les options sont représentées par un tableau d‘objet contenant les propriétés ``value``, ``label`` et ``category``. Ce dernier étant optionnel.',
|
|
78
|
-
type: { name: 'array', required: true },
|
|
79
|
-
},
|
|
80
|
-
value: {
|
|
81
|
-
name: 'value',
|
|
82
|
-
description: 'Option sélectionnée',
|
|
83
|
-
options: ['1', '2', '3', '4', '5', '6'],
|
|
84
|
-
control: { type: 'select' },
|
|
85
|
-
type: { name: 'string', required: false },
|
|
86
|
-
table: {
|
|
87
|
-
type: { summary: 'string' },
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
onChange: {
|
|
91
|
-
name: 'onChange',
|
|
92
|
-
description: 'Fonction à appeler quand une option est sélectionnée.',
|
|
93
|
-
type: { required: true },
|
|
94
|
-
control: { disable: true },
|
|
95
|
-
},
|
|
96
|
-
isSearchable: {
|
|
97
|
-
name: 'isSearchable',
|
|
98
|
-
description: 'Rend le champ du select cherchable',
|
|
99
|
-
control: { type: 'boolean' },
|
|
100
|
-
type: { name: 'boolean', required: false },
|
|
101
|
-
table: {
|
|
102
|
-
type: { summary: 'boolean' },
|
|
103
|
-
defaultValue: { summary: false },
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
screenReaderOnly: {
|
|
107
|
-
name: 'screenReaderOnly',
|
|
108
|
-
description: "Permet de rendre le label lisible uniquement par les lecteurs d'écran",
|
|
109
|
-
control: { type: 'boolean' },
|
|
110
|
-
type: { name: 'boolean', required: false },
|
|
111
|
-
table: {
|
|
112
|
-
type: { summary: 'boolean' },
|
|
113
|
-
defaultValue: { summary: false },
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
placeholder: {
|
|
117
|
-
name: 'placeholder',
|
|
118
|
-
description: "Placeholder du select. Il sert aussi de label pour l'option par défaut",
|
|
119
|
-
type: { name: 'string', required: true },
|
|
120
|
-
table: {
|
|
121
|
-
type: { summary: 'string' },
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
hideDefaultOption: {
|
|
125
|
-
name: 'hideDefaultOption',
|
|
126
|
-
description: "Cache l'option par défaut du select",
|
|
127
|
-
type: { name: 'boolean', required: false },
|
|
128
|
-
table: {
|
|
129
|
-
type: { summary: 'boolean' },
|
|
130
|
-
defaultValue: { summary: false },
|
|
131
|
-
},
|
|
132
|
-
},
|
|
133
|
-
searchLabel: {
|
|
134
|
-
name: 'searchLabel',
|
|
135
|
-
description:
|
|
136
|
-
'Label de la recherche dans le menu déroulant du select. **⚠️ Obligatoire uniquement si le `isSearchable` est à true. ⚠️**',
|
|
137
|
-
type: { name: 'string', required: false },
|
|
138
|
-
table: {
|
|
139
|
-
type: { summary: 'string' },
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
searchPlaceholder: {
|
|
143
|
-
name: 'searchPlaceholder',
|
|
144
|
-
description:
|
|
145
|
-
'Placeholder de la recherche dans le menu déroulant du select. **⚠️ Obligatoire uniquement si le `isSearchable` est à true. ⚠️**',
|
|
146
|
-
type: { name: 'string', required: false },
|
|
147
|
-
table: {
|
|
148
|
-
type: { summary: 'string' },
|
|
149
|
-
},
|
|
150
|
-
},
|
|
151
|
-
emptySearchMessage: {
|
|
152
|
-
name: 'emptySearchMessage',
|
|
153
|
-
description:
|
|
154
|
-
"Message affiché si la recherche dans le select ne retourne pas d'options. **⚠️ Obligatoire uniquement si le `isSearchable` est à true. ⚠️**",
|
|
155
|
-
type: { name: 'string', required: false },
|
|
156
|
-
table: {
|
|
157
|
-
type: { summary: 'string' },
|
|
158
|
-
},
|
|
159
|
-
},
|
|
160
|
-
requiredText: {
|
|
161
|
-
name: 'requiredText',
|
|
162
|
-
description: "Affiche l'astérisque au label et ajoute sa signification",
|
|
163
|
-
type: { name: 'string', required: false },
|
|
164
|
-
table: {
|
|
165
|
-
type: { summary: 'string' },
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
errorMessage: {
|
|
169
|
-
name: 'errorMessage',
|
|
170
|
-
description: 'Message affiché si une erreur survient',
|
|
171
|
-
type: { name: 'string', required: false },
|
|
172
|
-
table: {
|
|
173
|
-
type: { summary: 'string' },
|
|
174
|
-
},
|
|
175
|
-
},
|
|
176
|
-
categoriesPlaceholder: {
|
|
177
|
-
name: 'categoriesPlaceholder',
|
|
178
|
-
description:
|
|
179
|
-
'Pour le filtre de categories, cela rempli le contenu interne du composant, `categoriesPlaceholder` pour `isSearchable` `true`, sinon rawContent du `button`',
|
|
180
|
-
type: { name: 'string', required: true },
|
|
181
|
-
},
|
|
182
|
-
categoriesLabel: {
|
|
183
|
-
name: 'categoriesLabel',
|
|
184
|
-
description:
|
|
185
|
-
"Pour le composant de filtre sur les catégories, cela donne un label au champ qui sera celui vocalisé par le lecteur d'écran",
|
|
186
|
-
type: { name: 'string', required: true },
|
|
187
|
-
},
|
|
188
|
-
};
|