@clicoh/orion-library 1.2.0-beta.24 → 1.2.0-beta.26
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/assets/css/expresivo.css +136 -11
- package/dist/components/01-atoms/CodeBlock/CodeBlock.d.ts +19 -5
- package/dist/components/01-atoms/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/components/01-atoms/CodeBlock/CodeBlock.jsx +41 -9
- package/dist/components/01-atoms/CodeBlock/CodeBlock.jsx.map +1 -1
- package/dist/components/01-atoms/MultiSelect/MultiSelect.d.ts +25 -4
- package/dist/components/01-atoms/MultiSelect/MultiSelect.d.ts.map +1 -1
- package/dist/components/01-atoms/MultiSelect/MultiSelect.jsx +39 -5
- package/dist/components/01-atoms/MultiSelect/MultiSelect.jsx.map +1 -1
- package/dist/components/01-atoms/MultiSelect/index.d.ts +1 -1
- package/dist/components/01-atoms/MultiSelect/index.d.ts.map +1 -1
- package/dist/components/01-atoms/Select/Select.d.ts +1 -1
- package/dist/components/01-atoms/Select/Select.jsx +1 -1
- package/dist/components/01-atoms/Select/SelectList.d.ts +4 -0
- package/dist/components/01-atoms/Select/SelectList.d.ts.map +1 -1
- package/dist/components/01-atoms/Select/SelectList.jsx +8 -2
- package/dist/components/01-atoms/Select/SelectList.jsx.map +1 -1
- package/dist/components/02-molecules/Accordion/AccordionSection.d.ts +17 -1
- package/dist/components/02-molecules/Accordion/AccordionSection.d.ts.map +1 -1
- package/dist/components/02-molecules/Accordion/AccordionSection.jsx +46 -5
- package/dist/components/02-molecules/Accordion/AccordionSection.jsx.map +1 -1
- package/dist/components/02-molecules/DatePicker/DatePicker.d.ts +14 -1
- package/dist/components/02-molecules/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/components/02-molecules/DatePicker/DatePicker.jsx +18 -5
- package/dist/components/02-molecules/DatePicker/DatePicker.jsx.map +1 -1
- package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts +45 -4
- package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts.map +1 -1
- package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx +106 -52
- package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx.map +1 -1
- package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.d.ts +16 -5
- package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.d.ts.map +1 -1
- package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.jsx +30 -13
- package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.jsx.map +1 -1
- package/dist/components/02-molecules/Table/Table.d.ts +28 -1
- package/dist/components/02-molecules/Table/Table.d.ts.map +1 -1
- package/dist/components/02-molecules/Table/Table.jsx +119 -64
- package/dist/components/02-molecules/Table/Table.jsx.map +1 -1
- package/dist/components/02-molecules/Table/index.d.ts +1 -1
- package/dist/components/02-molecules/Table/index.d.ts.map +1 -1
- package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.d.ts +3 -1
- package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.d.ts.map +1 -1
- package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.jsx +7 -3
- package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.jsx.map +1 -1
- package/dist/components/04-templates/LoginTemplate/LoginForm.d.ts +5 -2
- package/dist/components/04-templates/LoginTemplate/LoginForm.d.ts.map +1 -1
- package/dist/components/04-templates/LoginTemplate/LoginForm.jsx +3 -2
- package/dist/components/04-templates/LoginTemplate/LoginForm.jsx.map +1 -1
- package/expresivo/ExpCollapseToggle/ExpCollapseToggle.d.ts +6 -2
- package/expresivo/ExpCollapseToggle/ExpCollapseToggle.d.ts.map +1 -1
- package/expresivo/ExpCollapseToggle/ExpCollapseToggle.jsx +5 -3
- package/expresivo/ExpCollapseToggle/ExpCollapseToggle.jsx.map +1 -1
- package/expresivo/ExpLadder/ExpLadder.d.ts +2 -1
- package/expresivo/ExpLadder/ExpLadder.d.ts.map +1 -1
- package/expresivo/ExpLadder/ExpLadder.jsx +7 -4
- package/expresivo/ExpLadder/ExpLadder.jsx.map +1 -1
- package/expresivo/ExpMascot/ExpMascot.d.ts +6 -2
- package/expresivo/ExpMascot/ExpMascot.d.ts.map +1 -1
- package/expresivo/ExpMascot/ExpMascot.jsx +6 -3
- package/expresivo/ExpMascot/ExpMascot.jsx.map +1 -1
- package/expresivo/ExpPageHero/ExpPageHero.d.ts +21 -5
- package/expresivo/ExpPageHero/ExpPageHero.d.ts.map +1 -1
- package/expresivo/ExpPageHero/ExpPageHero.jsx +28 -8
- package/expresivo/ExpPageHero/ExpPageHero.jsx.map +1 -1
- package/expresivo/ExpPageHero/index.d.ts +1 -1
- package/expresivo/ExpPageHero/index.d.ts.map +1 -1
- package/expresivo/ExpPillButton/ExpPillButton.d.ts +8 -4
- package/expresivo/ExpPillButton/ExpPillButton.d.ts.map +1 -1
- package/expresivo/ExpPillButton/ExpPillButton.jsx +42 -12
- package/expresivo/ExpPillButton/ExpPillButton.jsx.map +1 -1
- package/expresivo/ExpPillButton/index.d.ts +1 -1
- package/expresivo/ExpPillButton/index.d.ts.map +1 -1
- package/expresivo/ExpTabs/ExpTabs.d.ts +52 -0
- package/expresivo/ExpTabs/ExpTabs.d.ts.map +1 -0
- package/expresivo/ExpTabs/ExpTabs.jsx +105 -0
- package/expresivo/ExpTabs/ExpTabs.jsx.map +1 -0
- package/expresivo/ExpTabs/index.d.ts +3 -0
- package/expresivo/ExpTabs/index.d.ts.map +1 -0
- package/expresivo/ExpTabs/index.js +2 -0
- package/expresivo/ExpTabs/index.js.map +1 -0
- package/expresivo/index.d.ts +1 -0
- package/expresivo/index.d.ts.map +1 -1
- package/expresivo/index.js +1 -0
- package/expresivo/index.js.map +1 -1
- package/package.json +1 -1
package/assets/css/expresivo.css
CHANGED
|
@@ -50,6 +50,10 @@
|
|
|
50
50
|
--exp-row-edge: var(--color-gray-5);
|
|
51
51
|
--exp-row-edge-hover: #c9c3fd;
|
|
52
52
|
|
|
53
|
+
--exp-code-bg: var(--color-lavender-3);
|
|
54
|
+
--exp-code-drop: 0 2px 8px rgba(106, 93, 249, 0.06);
|
|
55
|
+
--exp-code-drop-hover: 0 8px 20px rgba(106, 93, 249, 0.14);
|
|
56
|
+
|
|
53
57
|
--exp-nav-glow: rgba(106, 93, 249, 0.22);
|
|
54
58
|
|
|
55
59
|
--exp-hero-dots: rgba(106, 93, 249, 0.14);
|
|
@@ -99,6 +103,10 @@
|
|
|
99
103
|
--exp-row-edge: var(--color-gray-1);
|
|
100
104
|
--exp-row-edge-hover: #4a3fd0;
|
|
101
105
|
|
|
106
|
+
--exp-code-bg: var(--color-gray-dark-2);
|
|
107
|
+
--exp-code-drop: none;
|
|
108
|
+
--exp-code-drop-hover: none;
|
|
109
|
+
|
|
102
110
|
--exp-nav-glow: rgba(137, 128, 255, 0.35);
|
|
103
111
|
|
|
104
112
|
--exp-hero-dots: rgba(137, 128, 255, 0.16);
|
|
@@ -224,17 +232,24 @@
|
|
|
224
232
|
animation: exp-swing 3.2s ease-in-out infinite;
|
|
225
233
|
}
|
|
226
234
|
|
|
227
|
-
/* Page hero (ExpPageHero): a band
|
|
235
|
+
/* Page hero (ExpPageHero): a band on wide screens, and below them only with
|
|
236
|
+
narrowLayout="band" ---------------------------------------------------- */
|
|
237
|
+
|
|
238
|
+
.exp-hero {
|
|
239
|
+
border: 1px solid var(--exp-hero-edge);
|
|
240
|
+
border-radius: 1rem;
|
|
241
|
+
background:
|
|
242
|
+
radial-gradient(var(--exp-hero-dots) 1px, transparent 1.4px) 0 0 / 14px 14px,
|
|
243
|
+
var(--exp-hero-bg);
|
|
244
|
+
box-shadow: var(--exp-hero-drop);
|
|
245
|
+
}
|
|
228
246
|
|
|
229
|
-
@media (
|
|
230
|
-
.exp-hero {
|
|
231
|
-
border:
|
|
232
|
-
border-radius:
|
|
233
|
-
background:
|
|
234
|
-
|
|
235
|
-
14px,
|
|
236
|
-
var(--exp-hero-bg);
|
|
237
|
-
box-shadow: var(--exp-hero-drop);
|
|
247
|
+
@media (max-width: 63.99rem) {
|
|
248
|
+
.exp-hero[data-narrow='row'] {
|
|
249
|
+
border: 0;
|
|
250
|
+
border-radius: 0;
|
|
251
|
+
background: none;
|
|
252
|
+
box-shadow: none;
|
|
238
253
|
}
|
|
239
254
|
}
|
|
240
255
|
|
|
@@ -1014,6 +1029,108 @@
|
|
|
1014
1029
|
background: var(--exp-row-bg-hover);
|
|
1015
1030
|
}
|
|
1016
1031
|
|
|
1032
|
+
/* Rows that open a detail: one tbody per row, so the gap moves from
|
|
1033
|
+
border-spacing to a spacer row and the open row joins its detail. */
|
|
1034
|
+
|
|
1035
|
+
:root:has(.exp-scope[data-exp-tables='cards'])
|
|
1036
|
+
[data-orion-part='table']:has(> [data-orion-part='table-group']):not(
|
|
1037
|
+
[data-orion-part='data-table'][data-modifier='card'] *
|
|
1038
|
+
) {
|
|
1039
|
+
border-spacing: 0;
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
:root:has(.exp-scope[data-exp-tables='cards'])
|
|
1043
|
+
[data-orion-part='table-group']:not(
|
|
1044
|
+
[data-orion-part='data-table'][data-modifier='card'] *
|
|
1045
|
+
)::before {
|
|
1046
|
+
content: '';
|
|
1047
|
+
display: table-row;
|
|
1048
|
+
height: 8px;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
:root:has(.exp-scope[data-exp-tables='cards'])
|
|
1052
|
+
[data-orion-part='table-row'][data-expanded]:not(
|
|
1053
|
+
[data-orion-part='data-table'][data-modifier='card'] *
|
|
1054
|
+
)
|
|
1055
|
+
> td {
|
|
1056
|
+
border-color: var(--exp-row-edge-hover);
|
|
1057
|
+
border-bottom-color: var(--exp-row-edge);
|
|
1058
|
+
background: var(--exp-row-bg-hover);
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
:root:has(.exp-scope[data-exp-tables='cards'])
|
|
1062
|
+
[data-orion-part='table-row'][data-expanded]:not(
|
|
1063
|
+
[data-orion-part='data-table'][data-modifier='card'] *
|
|
1064
|
+
)
|
|
1065
|
+
> td:first-child {
|
|
1066
|
+
border-radius: 14px 0 0 0;
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
:root:has(.exp-scope[data-exp-tables='cards'])
|
|
1070
|
+
[data-orion-part='table-row'][data-expanded]:not(
|
|
1071
|
+
[data-orion-part='data-table'][data-modifier='card'] *
|
|
1072
|
+
)
|
|
1073
|
+
> td:last-child {
|
|
1074
|
+
border-radius: 0 14px 0 0;
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
:root:has(.exp-scope[data-exp-tables='cards'])
|
|
1078
|
+
[data-orion-part='table-detail']:not(
|
|
1079
|
+
[data-orion-part='data-table'][data-modifier='card'] *
|
|
1080
|
+
) {
|
|
1081
|
+
border: 0;
|
|
1082
|
+
background: transparent;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
:root:has(.exp-scope[data-exp-tables='cards'])
|
|
1086
|
+
[data-orion-part='table-detail']:not(
|
|
1087
|
+
[data-orion-part='data-table'][data-modifier='card'] *
|
|
1088
|
+
)
|
|
1089
|
+
> td {
|
|
1090
|
+
padding: 16px 16px 20px;
|
|
1091
|
+
border: 1px solid var(--exp-row-edge-hover);
|
|
1092
|
+
border-top: 0;
|
|
1093
|
+
border-radius: 0 0 14px 14px;
|
|
1094
|
+
background: var(--exp-code-bg);
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
/* Skin: code blocks with a title (CodeBlock title) ---------------------- */
|
|
1098
|
+
|
|
1099
|
+
/* A titled block stands alone, as a card: the band along the top and the
|
|
1100
|
+
code on a tinted surface. */
|
|
1101
|
+
:root:has(.exp-scope)
|
|
1102
|
+
[data-orion-part='code-block']:has([data-orion-part='code-block-title']) {
|
|
1103
|
+
border-color: var(--exp-card-edge);
|
|
1104
|
+
border-radius: 16px;
|
|
1105
|
+
padding-top: 3px;
|
|
1106
|
+
background:
|
|
1107
|
+
var(--exp-card-band) top / 100% 3px no-repeat,
|
|
1108
|
+
var(--exp-card-bg);
|
|
1109
|
+
box-shadow: var(--exp-code-drop);
|
|
1110
|
+
transition:
|
|
1111
|
+
transform 200ms var(--exp-ease-out),
|
|
1112
|
+
box-shadow 200ms ease;
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
:root:has(.exp-scope)
|
|
1116
|
+
[data-orion-part='code-block']:has(
|
|
1117
|
+
[data-orion-part='code-block-title']
|
|
1118
|
+
):hover {
|
|
1119
|
+
box-shadow: var(--exp-code-drop-hover);
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
:root:has(.exp-scope)
|
|
1123
|
+
[data-orion-part='code-block']:has([data-orion-part='code-block-title'])
|
|
1124
|
+
> [data-orion-part='code-block-header'] {
|
|
1125
|
+
padding: 8px 8px 8px 16px;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
:root:has(.exp-scope)
|
|
1129
|
+
[data-orion-part='code-block']:has([data-orion-part='code-block-title'])
|
|
1130
|
+
> pre {
|
|
1131
|
+
background: var(--exp-code-bg);
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1017
1134
|
/* Hover movement, only without reduced motion --------------------------- */
|
|
1018
1135
|
|
|
1019
1136
|
@media (prefers-reduced-motion: no-preference) {
|
|
@@ -1063,10 +1180,17 @@
|
|
|
1063
1180
|
:root:has(.exp-scope[data-exp-tables='cards'])
|
|
1064
1181
|
[data-orion-part='table-row']:not(
|
|
1065
1182
|
[data-orion-part='data-table'][data-modifier='card'] *
|
|
1066
|
-
):is(:hover, :focus-visible, [data-selected])
|
|
1183
|
+
):not([data-expanded]):is(:hover, :focus-visible, [data-selected])
|
|
1067
1184
|
> td {
|
|
1068
1185
|
transform: translateY(-2px);
|
|
1069
1186
|
}
|
|
1187
|
+
|
|
1188
|
+
:root:has(.exp-scope)
|
|
1189
|
+
[data-orion-part='code-block']:has(
|
|
1190
|
+
[data-orion-part='code-block-title']
|
|
1191
|
+
):hover {
|
|
1192
|
+
transform: translateY(-2px);
|
|
1193
|
+
}
|
|
1070
1194
|
}
|
|
1071
1195
|
|
|
1072
1196
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -1096,6 +1220,7 @@
|
|
|
1096
1220
|
:root:has(.exp-scope) textarea[data-orion-part='field-control'],
|
|
1097
1221
|
:root:has(.exp-scope) [data-orion-part='field-icon'],
|
|
1098
1222
|
:root:has(.exp-scope) [data-orion-part='table-row'] > td,
|
|
1223
|
+
:root:has(.exp-scope) [data-orion-part='code-block'],
|
|
1099
1224
|
:root:has(.exp-scope) [data-orion-part='menu-link']::before {
|
|
1100
1225
|
transition: none;
|
|
1101
1226
|
}
|
|
@@ -10,6 +10,12 @@ export type CodeBlockProps = {
|
|
|
10
10
|
copiedLabel: string;
|
|
11
11
|
/** Shown in the header (`ts`, `sql`, `diff`). No syntax coloring is applied. */
|
|
12
12
|
language?: string;
|
|
13
|
+
/** Header content before the language, such as where the excerpt comes from. */
|
|
14
|
+
title?: ReactNode;
|
|
15
|
+
/** What the copy button writes, when it is not the code itself. */
|
|
16
|
+
copyText?: string;
|
|
17
|
+
/** Text to mark wherever it appears in the code, ignoring case. */
|
|
18
|
+
mark?: string;
|
|
13
19
|
/** Number of the first line. Line numbers are shown only when it is set. */
|
|
14
20
|
startLine?: number;
|
|
15
21
|
/** Lines to emphasize, as inclusive ranges in the same numbering. */
|
|
@@ -18,7 +24,7 @@ export type CodeBlockProps = {
|
|
|
18
24
|
wrap?: boolean;
|
|
19
25
|
/** Called when the browser refuses to write to the clipboard. */
|
|
20
26
|
onCopyError?: (error: unknown) => void;
|
|
21
|
-
} & Omit<HTMLAttributes<HTMLDivElement>, 'children'>;
|
|
27
|
+
} & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'title'>;
|
|
22
28
|
/**
|
|
23
29
|
* Read-only block of source code with a copy button. Shows an excerpt
|
|
24
30
|
* exactly as written: monospace and, by default, no wrapping, with horizontal
|
|
@@ -26,12 +32,17 @@ export type CodeBlockProps = {
|
|
|
26
32
|
*
|
|
27
33
|
* With `wrap`, a line longer than the block continues on the next row, under
|
|
28
34
|
* the code and not under the line numbers. Use it where scrolling sideways is
|
|
29
|
-
* awkward, such as narrow screens or a command to read whole. Copying
|
|
30
|
-
*
|
|
35
|
+
* awkward, such as narrow screens or a command to read whole. Copying takes
|
|
36
|
+
* the original text, or `copyText` when the button should copy something
|
|
37
|
+
* else, such as the file and line the excerpt comes from.
|
|
31
38
|
*
|
|
32
39
|
* Setting `startLine` numbers the lines, so an excerpt from the middle of a
|
|
33
40
|
* file keeps its real line numbers; `highlight` then marks ranges in that
|
|
34
|
-
* same numbering
|
|
41
|
+
* same numbering, and `mark` marks every match of a text inside the lines,
|
|
42
|
+
* such as the query that found the excerpt. There is no syntax coloring.
|
|
43
|
+
*
|
|
44
|
+
* `title` goes in the header, before the language label: where the excerpt
|
|
45
|
+
* comes from, as a file path or a set of badges.
|
|
35
46
|
*
|
|
36
47
|
* Copying uses the Clipboard API, which browsers only expose on secure
|
|
37
48
|
* origins (`https` or `localhost`). When it fails the button stays as it was
|
|
@@ -53,6 +64,9 @@ export type CodeBlockProps = {
|
|
|
53
64
|
* @param {string} props.copyLabel - Accessible name and tooltip of the copy button.
|
|
54
65
|
* @param {string} props.copiedLabel - Shown and announced right after copying.
|
|
55
66
|
* @param {string} [props.language] - Label shown in the header.
|
|
67
|
+
* @param {ReactNode} [props.title] - Header content before the language label.
|
|
68
|
+
* @param {string} [props.copyText] - What the copy button writes; defaults to `code`.
|
|
69
|
+
* @param {string} [props.mark] - Text marked wherever it appears in the code, ignoring case.
|
|
56
70
|
* @param {number} [props.startLine] - Number of the first line; enables line numbers.
|
|
57
71
|
* @param {CodeBlockRange[]} [props.highlight=[]] - Inclusive line ranges to emphasize.
|
|
58
72
|
* @param {boolean} [props.wrap=false] - Long lines continue on the next row instead of scrolling.
|
|
@@ -60,5 +74,5 @@ export type CodeBlockProps = {
|
|
|
60
74
|
*
|
|
61
75
|
* @returns {ReactNode} The rendered CodeBlock component.
|
|
62
76
|
*/
|
|
63
|
-
export declare function CodeBlock({ code, copyLabel, copiedLabel, language, startLine, highlight, wrap, onCopyError, ...restProps }: CodeBlockProps): ReactNode;
|
|
77
|
+
export declare function CodeBlock({ code, copyLabel, copiedLabel, language, title, copyText, mark, startLine, highlight, wrap, onCopyError, ...restProps }: CodeBlockProps): ReactNode;
|
|
64
78
|
//# sourceMappingURL=CodeBlock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAKf,iEAAiE;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG;IAC3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAKf,iEAAiE;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG;IAC3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,yEAAyE;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;AAmC/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,SAAS,EACT,WAAW,EACX,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,SAAc,EACd,IAAY,EACZ,WAAW,EACX,GAAG,SAAS,EACb,EAAE,cAAc,GAAG,SAAS,CAgH5B"}
|
|
@@ -2,12 +2,32 @@
|
|
|
2
2
|
import clsx from 'clsx';
|
|
3
3
|
import { useEffect, useRef, useState, } from 'react';
|
|
4
4
|
import { FiCheck, FiCopy } from 'react-icons/fi';
|
|
5
|
-
import { Each } from '../../00-base';
|
|
5
|
+
import { Each, Show } from '../../00-base';
|
|
6
6
|
import { IconButton } from '../IconButton';
|
|
7
7
|
const COPIED_FEEDBACK_MS = 1600;
|
|
8
8
|
function isHighlighted(line, ranges) {
|
|
9
9
|
return ranges.some(([from, to]) => line >= from && line <= to);
|
|
10
10
|
}
|
|
11
|
+
function markPattern(mark) {
|
|
12
|
+
const text = mark?.trim();
|
|
13
|
+
if (!text)
|
|
14
|
+
return undefined;
|
|
15
|
+
return new RegExp(`(${text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'i');
|
|
16
|
+
}
|
|
17
|
+
function renderLine(line, pattern) {
|
|
18
|
+
if (!line)
|
|
19
|
+
return ' ';
|
|
20
|
+
if (!pattern)
|
|
21
|
+
return line;
|
|
22
|
+
return (<Each of={line.split(pattern)} render={(part, index) => (<Show>
|
|
23
|
+
<Show.When isTrue={index % 2 === 1}>
|
|
24
|
+
<mark className="dark:bg-lavender-dark-1 bg-lavender-1 rounded-sm text-current shadow-[0_0_0_1px_rgba(106,93,249,0.35)]">
|
|
25
|
+
{part}
|
|
26
|
+
</mark>
|
|
27
|
+
</Show.When>
|
|
28
|
+
<Show.Else>{part}</Show.Else>
|
|
29
|
+
</Show>)}/>);
|
|
30
|
+
}
|
|
11
31
|
/**
|
|
12
32
|
* Read-only block of source code with a copy button. Shows an excerpt
|
|
13
33
|
* exactly as written: monospace and, by default, no wrapping, with horizontal
|
|
@@ -15,12 +35,17 @@ function isHighlighted(line, ranges) {
|
|
|
15
35
|
*
|
|
16
36
|
* With `wrap`, a line longer than the block continues on the next row, under
|
|
17
37
|
* the code and not under the line numbers. Use it where scrolling sideways is
|
|
18
|
-
* awkward, such as narrow screens or a command to read whole. Copying
|
|
19
|
-
*
|
|
38
|
+
* awkward, such as narrow screens or a command to read whole. Copying takes
|
|
39
|
+
* the original text, or `copyText` when the button should copy something
|
|
40
|
+
* else, such as the file and line the excerpt comes from.
|
|
20
41
|
*
|
|
21
42
|
* Setting `startLine` numbers the lines, so an excerpt from the middle of a
|
|
22
43
|
* file keeps its real line numbers; `highlight` then marks ranges in that
|
|
23
|
-
* same numbering
|
|
44
|
+
* same numbering, and `mark` marks every match of a text inside the lines,
|
|
45
|
+
* such as the query that found the excerpt. There is no syntax coloring.
|
|
46
|
+
*
|
|
47
|
+
* `title` goes in the header, before the language label: where the excerpt
|
|
48
|
+
* comes from, as a file path or a set of badges.
|
|
24
49
|
*
|
|
25
50
|
* Copying uses the Clipboard API, which browsers only expose on secure
|
|
26
51
|
* origins (`https` or `localhost`). When it fails the button stays as it was
|
|
@@ -42,6 +67,9 @@ function isHighlighted(line, ranges) {
|
|
|
42
67
|
* @param {string} props.copyLabel - Accessible name and tooltip of the copy button.
|
|
43
68
|
* @param {string} props.copiedLabel - Shown and announced right after copying.
|
|
44
69
|
* @param {string} [props.language] - Label shown in the header.
|
|
70
|
+
* @param {ReactNode} [props.title] - Header content before the language label.
|
|
71
|
+
* @param {string} [props.copyText] - What the copy button writes; defaults to `code`.
|
|
72
|
+
* @param {string} [props.mark] - Text marked wherever it appears in the code, ignoring case.
|
|
45
73
|
* @param {number} [props.startLine] - Number of the first line; enables line numbers.
|
|
46
74
|
* @param {CodeBlockRange[]} [props.highlight=[]] - Inclusive line ranges to emphasize.
|
|
47
75
|
* @param {boolean} [props.wrap=false] - Long lines continue on the next row instead of scrolling.
|
|
@@ -49,7 +77,7 @@ function isHighlighted(line, ranges) {
|
|
|
49
77
|
*
|
|
50
78
|
* @returns {ReactNode} The rendered CodeBlock component.
|
|
51
79
|
*/
|
|
52
|
-
export function CodeBlock({ code, copyLabel, copiedLabel, language, startLine, highlight = [], wrap = false, onCopyError, ...restProps }) {
|
|
80
|
+
export function CodeBlock({ code, copyLabel, copiedLabel, language, title, copyText, mark, startLine, highlight = [], wrap = false, onCopyError, ...restProps }) {
|
|
53
81
|
const [isCopied, setIsCopied] = useState(false);
|
|
54
82
|
const resetTimer = useRef(undefined);
|
|
55
83
|
useEffect(() => () => clearTimeout(resetTimer.current), []);
|
|
@@ -57,9 +85,10 @@ export function CodeBlock({ code, copyLabel, copiedLabel, language, startLine, h
|
|
|
57
85
|
const isNumbered = startLine !== undefined;
|
|
58
86
|
const firstLine = startLine ?? 1;
|
|
59
87
|
const gutterWidth = `${String(firstLine + lines.length - 1).length}ch`;
|
|
88
|
+
const pattern = markPattern(mark);
|
|
60
89
|
const copy = async () => {
|
|
61
90
|
try {
|
|
62
|
-
await navigator.clipboard.writeText(code);
|
|
91
|
+
await navigator.clipboard.writeText(copyText ?? code);
|
|
63
92
|
}
|
|
64
93
|
catch (error) {
|
|
65
94
|
onCopyError?.(error);
|
|
@@ -69,8 +98,11 @@ export function CodeBlock({ code, copyLabel, copiedLabel, language, startLine, h
|
|
|
69
98
|
clearTimeout(resetTimer.current);
|
|
70
99
|
resetTimer.current = setTimeout(() => setIsCopied(false), COPIED_FEEDBACK_MS);
|
|
71
100
|
};
|
|
72
|
-
return (<div {...restProps} className={clsx('border-gray-5 bg-gray-7 dark:border-gray-1 dark:bg-black-1 min-w-0 overflow-hidden rounded-lg border', restProps.className)}>
|
|
73
|
-
<div className="border-gray-5 dark:border-gray-1 flex items-center justify-between gap-2 border-b py-1 pr-1 pl-3">
|
|
101
|
+
return (<div {...restProps} data-orion-part="code-block" className={clsx('border-gray-5 bg-gray-7 dark:border-gray-1 dark:bg-black-1 min-w-0 overflow-hidden rounded-lg border', restProps.className)}>
|
|
102
|
+
<div data-orion-part="code-block-header" className="border-gray-5 dark:border-gray-1 flex items-center justify-between gap-2 border-b py-1 pr-1 pl-3">
|
|
103
|
+
{!!title && (<div data-orion-part="code-block-title" className="flex min-w-0 flex-1 flex-wrap items-center gap-x-3 gap-y-1 py-1">
|
|
104
|
+
{title}
|
|
105
|
+
</div>)}
|
|
74
106
|
<span className="text-gray-1 dark:text-gray-2 truncate text-xs leading-4">
|
|
75
107
|
{language}
|
|
76
108
|
</span>
|
|
@@ -93,7 +125,7 @@ export function CodeBlock({ code, copyLabel, copiedLabel, language, startLine, h
|
|
|
93
125
|
<span className={clsx('pr-3', wrap
|
|
94
126
|
? 'min-w-0 flex-1 wrap-anywhere whitespace-pre-wrap'
|
|
95
127
|
: 'whitespace-pre', !isNumbered && 'pl-3')}>
|
|
96
|
-
{line
|
|
128
|
+
{renderLine(line, pattern)}
|
|
97
129
|
</span>
|
|
98
130
|
{'\n'}
|
|
99
131
|
</span>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlock.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAGL,SAAS,EACT,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeBlock.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAGL,SAAS,EACT,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA8B3C,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,SAAS,aAAa,CAAC,IAAY,EAAE,MAAwB;IAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,WAAW,CAAC,IAAwB;IAC3C,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,OAA2B;IAC3D,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC;IACtB,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,OAAO,CACL,CAAC,IAAI,CACH,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CACxB,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACvB,CAAC,IAAI,CACH;UAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CACjC;YAAA,CAAC,IAAI,CAAC,SAAS,CAAC,wGAAwG,CACtH;cAAA,CAAC,IAAI,CACP;YAAA,EAAE,IAAI,CACR;UAAA,EAAE,IAAI,CAAC,IAAI,CACX;UAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAC9B;QAAA,EAAE,IAAI,CAAC,CACR,CAAC,EACF,CACH,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,EACJ,SAAS,EACT,WAAW,EACX,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,SAAS,GAAG,EAAE,EACd,IAAI,GAAG,KAAK,EACZ,WAAW,EACX,GAAG,SAAS,EACG;IACf,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAgC,SAAS,CAAC,CAAC;IAEpE,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,SAAS,KAAK,SAAS,CAAC;IAC3C,MAAM,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;IACvE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAElC,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,UAAU,CAAC,OAAO,GAAG,UAAU,CAC7B,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EACxB,kBAAkB,CACnB,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,GAAG,CACF,IAAI,SAAS,CAAC,CACd,eAAe,CAAC,YAAY,CAC5B,SAAS,CAAC,CAAC,IAAI,CACb,sGAAsG,EACtG,SAAS,CAAC,SAAS,CACpB,CAAC,CAEF;MAAA,CAAC,GAAG,CACF,eAAe,CAAC,mBAAmB,CACnC,SAAS,CAAC,kGAAkG,CAE5G;QAAA,CAAC,CAAC,CAAC,KAAK,IAAI,CACV,CAAC,GAAG,CACF,eAAe,CAAC,kBAAkB,CAClC,SAAS,CAAC,iEAAiE,CAE3E;YAAA,CAAC,KAAK,CACR;UAAA,EAAE,GAAG,CAAC,CACP,CACD;QAAA,CAAC,IAAI,CAAC,SAAS,CAAC,yDAAyD,CACvE;UAAA,CAAC,QAAQ,CACX;QAAA,EAAE,IAAI,CACN;QAAA,CAAC,UAAU,CACT,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,AAAD,EAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,AAAD,EAAG,CAAC,CAC1C,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,EAEhB;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CACrC;UAAA,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAC9B;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,GAAG,CACL;MAAA,CAAC,GAAG,CACF,QAAQ,CAAC,CAAC,CAAC,CAAC,CACZ,SAAS,CAAC,4NAA4N,CAEtO;QAAA,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,CACnD;UAAA,CAAC,IAAI,CACH,EAAE,CAAC,CAAC,KAAK,CAAC,CACV,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;YACjC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAElD,OAAO,CACL,CAAC,IAAI,CACH,SAAS,CAAC,CAAC,IAAI,CACb,MAAM,EACN,QAAQ,IAAI,uCAAuC,CACpD,CAAC,CAEF;kBAAA,CAAC,CAAC,CAAC,UAAU,IAAI,CACf,CAAC,IAAI,CACH,WAAW,CAAC,MAAM,CAClB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAC9B,SAAS,CAAC,CAAC,IAAI,CACb,kDAAkD,EAClD,QAAQ;wBACN,CAAC,CAAC,qDAAqD;wBACvD,CAAC,CAAC,8BAA8B,CACnC,CAAC,CAEF;sBAAA,CAAC,MAAM,CACT;oBAAA,EAAE,IAAI,CAAC,CACR,CACD;kBAAA,CAAC,IAAI,CACH,SAAS,CAAC,CAAC,IAAI,CACb,MAAM,EACN,IAAI;oBACF,CAAC,CAAC,kDAAkD;oBACpD,CAAC,CAAC,gBAAgB,EACpB,CAAC,UAAU,IAAI,MAAM,CACtB,CAAC,CAEF;oBAAA,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAC5B;kBAAA,EAAE,IAAI,CACN;kBAAA,CAAC,IAAI,CACP;gBAAA,EAAE,IAAI,CAAC,CACR,CAAC;QACJ,CAAC,CAAC,EAEN;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -3,6 +3,7 @@ export type OptionType = {
|
|
|
3
3
|
value: number | string;
|
|
4
4
|
label: string;
|
|
5
5
|
};
|
|
6
|
+
export type TMultiSelectSelectionDisplay = 'count' | 'chips';
|
|
6
7
|
type MultiSelectProps = {
|
|
7
8
|
label: string;
|
|
8
9
|
options: OptionType[];
|
|
@@ -13,10 +14,17 @@ type MultiSelectProps = {
|
|
|
13
14
|
error?: string;
|
|
14
15
|
isMutedWhenEmpty?: boolean;
|
|
15
16
|
clearButtonAriaLabel?: string;
|
|
16
|
-
|
|
17
|
+
selectionDisplay?: TMultiSelectSelectionDisplay;
|
|
18
|
+
removeLabel?: string;
|
|
19
|
+
} & Omit<HTMLAttributes<HTMLDivElement>, 'onClick' | 'onChange'>;
|
|
17
20
|
/**
|
|
18
21
|
* MultiSelect component for rendering a multi-select dropdown.
|
|
19
22
|
*
|
|
23
|
+
* By default the field shows how many options are selected. With
|
|
24
|
+
* `selectionDisplay="chips"` the field stays as the prompt and every selected
|
|
25
|
+
* option sits as a chip under it, in the order it was picked; with
|
|
26
|
+
* `removeLabel`, each chip has a button that removes it.
|
|
27
|
+
*
|
|
20
28
|
* @component
|
|
21
29
|
* @example
|
|
22
30
|
* // Example usage of MultiSelect component
|
|
@@ -36,20 +44,33 @@ type MultiSelectProps = {
|
|
|
36
44
|
* error=""
|
|
37
45
|
* />
|
|
38
46
|
*
|
|
47
|
+
* @example
|
|
48
|
+
* // Selected options as removable chips
|
|
49
|
+
* <MultiSelect
|
|
50
|
+
* label="Countries"
|
|
51
|
+
* options={options}
|
|
52
|
+
* value={selected}
|
|
53
|
+
* onChange={setSelected}
|
|
54
|
+
* selectionDisplay="chips"
|
|
55
|
+
* removeLabel="Remove"
|
|
56
|
+
* />
|
|
57
|
+
*
|
|
39
58
|
* @param {MultiSelectProps} props - The properties of the MultiSelect component.
|
|
40
59
|
* @param {string} props.label - The label for the multi-select input.
|
|
41
60
|
* @param {OptionType[]} props.options - Array of options to be displayed in the dropdown.
|
|
42
61
|
* @param {OptionType[]} [props.value] - Array of selected options.
|
|
43
|
-
* @param {
|
|
62
|
+
* @param {(selectedOptions: OptionType[]) => void} [props.onChange] - Called with every selected option after each change. It replaces the container's HTML `onChange`, which is not forwarded.
|
|
44
63
|
* @param {boolean} [props.disabled] - Boolean to disable the multi-select input.
|
|
45
64
|
* @param {string} [props.helperText] - Helper text to be displayed below the input.
|
|
46
65
|
* @param {string} [props.error] - Error message to be displayed below the input.
|
|
47
66
|
* @param {boolean} [props.isMutedWhenEmpty] - Renders the border and label in gray while nothing is selected.
|
|
48
67
|
* @param {string} [props.clearButtonAriaLabel] - Accessible label for the button that clears the selection.
|
|
49
|
-
* @param {
|
|
68
|
+
* @param {TMultiSelectSelectionDisplay} [props.selectionDisplay='count'] - `count` writes the number of selected options in the field; `chips` lists them as chips under the field instead.
|
|
69
|
+
* @param {string} [props.removeLabel] - Accessible name of each chip's remove button, followed by the option label (`Remove Option 1`). Without it the chips have no remove button and the selection changes from the list only. Only used with `chips`.
|
|
70
|
+
* @param {HTMLAttributes<HTMLDivElement>} [props.restProps] - Additional HTML attributes for the container div, except `onClick` and `onChange`.
|
|
50
71
|
*
|
|
51
72
|
* @returns {ReactNode} The rendered MultiSelect component.
|
|
52
73
|
*/
|
|
53
|
-
export declare function MultiSelect({ options, value, onChange, label, disabled, helperText, error, isMutedWhenEmpty, clearButtonAriaLabel, ...restProps }: MultiSelectProps): ReactNode;
|
|
74
|
+
export declare function MultiSelect({ options, value, onChange, label, disabled, helperText, error, isMutedWhenEmpty, clearButtonAriaLabel, selectionDisplay, removeLabel, ...restProps }: MultiSelectProps): ReactNode;
|
|
54
75
|
export {};
|
|
55
76
|
//# sourceMappingURL=MultiSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/MultiSelect.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EAEnB,SAAS,EAIV,MAAM,OAAO,CAAC;AASf,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/MultiSelect.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EAEnB,SAAS,EAIV,MAAM,OAAO,CAAC;AASf,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,OAAO,GAAG,OAAO,CAAC;AAE7D,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;AAIjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAqB,EACrB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,oBAAoB,EACpB,gBAA0B,EAC1B,WAAW,EACX,GAAG,SAAS,EACb,EAAE,gBAAgB,GAAG,SAAS,CAmX9B"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import clsx from 'clsx';
|
|
3
3
|
import { useEffect, useRef, useState, } from 'react';
|
|
4
4
|
import { FaSortDown } from 'react-icons/fa';
|
|
5
|
-
import { FiCheck } from 'react-icons/fi';
|
|
5
|
+
import { FiCheck, FiX } from 'react-icons/fi';
|
|
6
6
|
import { IoIosSearch, IoMdCloseCircleOutline } from 'react-icons/io';
|
|
7
7
|
import { generateUniqueId } from '../../../utils';
|
|
8
8
|
import { Each, Show } from '../../00-base';
|
|
@@ -12,6 +12,11 @@ const EMPTY_OPTIONS = [];
|
|
|
12
12
|
/**
|
|
13
13
|
* MultiSelect component for rendering a multi-select dropdown.
|
|
14
14
|
*
|
|
15
|
+
* By default the field shows how many options are selected. With
|
|
16
|
+
* `selectionDisplay="chips"` the field stays as the prompt and every selected
|
|
17
|
+
* option sits as a chip under it, in the order it was picked; with
|
|
18
|
+
* `removeLabel`, each chip has a button that removes it.
|
|
19
|
+
*
|
|
15
20
|
* @component
|
|
16
21
|
* @example
|
|
17
22
|
* // Example usage of MultiSelect component
|
|
@@ -31,21 +36,34 @@ const EMPTY_OPTIONS = [];
|
|
|
31
36
|
* error=""
|
|
32
37
|
* />
|
|
33
38
|
*
|
|
39
|
+
* @example
|
|
40
|
+
* // Selected options as removable chips
|
|
41
|
+
* <MultiSelect
|
|
42
|
+
* label="Countries"
|
|
43
|
+
* options={options}
|
|
44
|
+
* value={selected}
|
|
45
|
+
* onChange={setSelected}
|
|
46
|
+
* selectionDisplay="chips"
|
|
47
|
+
* removeLabel="Remove"
|
|
48
|
+
* />
|
|
49
|
+
*
|
|
34
50
|
* @param {MultiSelectProps} props - The properties of the MultiSelect component.
|
|
35
51
|
* @param {string} props.label - The label for the multi-select input.
|
|
36
52
|
* @param {OptionType[]} props.options - Array of options to be displayed in the dropdown.
|
|
37
53
|
* @param {OptionType[]} [props.value] - Array of selected options.
|
|
38
|
-
* @param {
|
|
54
|
+
* @param {(selectedOptions: OptionType[]) => void} [props.onChange] - Called with every selected option after each change. It replaces the container's HTML `onChange`, which is not forwarded.
|
|
39
55
|
* @param {boolean} [props.disabled] - Boolean to disable the multi-select input.
|
|
40
56
|
* @param {string} [props.helperText] - Helper text to be displayed below the input.
|
|
41
57
|
* @param {string} [props.error] - Error message to be displayed below the input.
|
|
42
58
|
* @param {boolean} [props.isMutedWhenEmpty] - Renders the border and label in gray while nothing is selected.
|
|
43
59
|
* @param {string} [props.clearButtonAriaLabel] - Accessible label for the button that clears the selection.
|
|
44
|
-
* @param {
|
|
60
|
+
* @param {TMultiSelectSelectionDisplay} [props.selectionDisplay='count'] - `count` writes the number of selected options in the field; `chips` lists them as chips under the field instead.
|
|
61
|
+
* @param {string} [props.removeLabel] - Accessible name of each chip's remove button, followed by the option label (`Remove Option 1`). Without it the chips have no remove button and the selection changes from the list only. Only used with `chips`.
|
|
62
|
+
* @param {HTMLAttributes<HTMLDivElement>} [props.restProps] - Additional HTML attributes for the container div, except `onClick` and `onChange`.
|
|
45
63
|
*
|
|
46
64
|
* @returns {ReactNode} The rendered MultiSelect component.
|
|
47
65
|
*/
|
|
48
|
-
export function MultiSelect({ options, value = EMPTY_OPTIONS, onChange, label, disabled, helperText, error, isMutedWhenEmpty, clearButtonAriaLabel, ...restProps }) {
|
|
66
|
+
export function MultiSelect({ options, value = EMPTY_OPTIONS, onChange, label, disabled, helperText, error, isMutedWhenEmpty, clearButtonAriaLabel, selectionDisplay = 'count', removeLabel, ...restProps }) {
|
|
49
67
|
const [id, setId] = useState('');
|
|
50
68
|
const [filteredOptions, setFilteredOptions] = useState(options);
|
|
51
69
|
const [selectedOptions, setSelectedOptions] = useState(value);
|
|
@@ -68,6 +86,7 @@ export function MultiSelect({ options, value = EMPTY_OPTIONS, onChange, label, d
|
|
|
68
86
|
const feedbackId = `${id}-feedback`;
|
|
69
87
|
const inputClasses = clsx('peer disabled:text-gray-3 dark:disabled:text-gray-2 pointer-events-none h-full w-full rounded-full bg-transparent px-5 text-sm font-normal text-black outline-0 transition-all select-none focus:text-black dark:bg-black dark:text-white dark:focus:text-white');
|
|
70
88
|
const isMuted = Boolean(isMutedWhenEmpty) && !selectedOptions.length;
|
|
89
|
+
const showsChips = selectionDisplay === 'chips';
|
|
71
90
|
const { labelProps, legendClasses, fieldsetClasses } = generateBorder(error, {
|
|
72
91
|
isMuted,
|
|
73
92
|
});
|
|
@@ -85,6 +104,11 @@ export function MultiSelect({ options, value = EMPTY_OPTIONS, onChange, label, d
|
|
|
85
104
|
setSelectedOptions(newSelectedOptions);
|
|
86
105
|
onChange?.(newSelectedOptions);
|
|
87
106
|
};
|
|
107
|
+
const removeOption = (option) => {
|
|
108
|
+
const newSelectedOptions = selectedOptions.filter((selectedOption) => selectedOption.value !== option.value);
|
|
109
|
+
setSelectedOptions(newSelectedOptions);
|
|
110
|
+
onChange?.(newSelectedOptions);
|
|
111
|
+
};
|
|
88
112
|
const handleQueryChange = (e) => {
|
|
89
113
|
const newQuery = e.target.value;
|
|
90
114
|
setQuery(newQuery);
|
|
@@ -172,7 +196,7 @@ export function MultiSelect({ options, value = EMPTY_OPTIONS, onChange, label, d
|
|
|
172
196
|
}, []);
|
|
173
197
|
return (<div {...restProps} className={clsx('relative w-full', restProps.className)} ref={containerRef}>
|
|
174
198
|
<div className={clsx('relative h-9 rounded-full', disabled ? 'pointer-events-none select-none' : 'cursor-pointer')} onClick={handleToggleDropdown}>
|
|
175
|
-
<input ref={triggerRef} id={id} role="combobox" placeholder=" " value={selectedOptions.length
|
|
199
|
+
<input ref={triggerRef} id={id} role="combobox" placeholder=" " value={selectedOptions.length && !showsChips
|
|
176
200
|
? `${selectedOptions.length} seleccionado(s)`
|
|
177
201
|
: ''} readOnly className={inputClasses} disabled={disabled} aria-expanded={isOpen} aria-haspopup="listbox" aria-controls={listboxId} aria-invalid={Boolean(error)} aria-describedby={error || helperText ? feedbackId : undefined} onKeyDown={handleTriggerKeyDown}/>
|
|
178
202
|
<label {...labelProps} htmlFor={id || undefined} className={clsx(labelProps.className, 'dark:peer-disabled:text-gray-2', error
|
|
@@ -191,6 +215,16 @@ export function MultiSelect({ options, value = EMPTY_OPTIONS, onChange, label, d
|
|
|
191
215
|
<legend className={legendClasses}>{label}</legend>
|
|
192
216
|
</fieldset>
|
|
193
217
|
</div>
|
|
218
|
+
{!!showsChips && selectedOptions.length > 0 && (<ul aria-label={label} className="mt-2 flex flex-wrap gap-1.5">
|
|
219
|
+
<Each of={selectedOptions} render={(option) => (<li key={option.value} className={clsx('bg-lavender-2 dark:bg-lavender-dark-1 inline-flex h-7 max-w-full items-center gap-1 rounded-full pl-3 text-xs font-medium', removeLabel ? 'pr-1' : 'pr-3', disabled
|
|
220
|
+
? 'text-gray-3 dark:text-gray-2'
|
|
221
|
+
: 'text-black dark:text-white')}>
|
|
222
|
+
<span className="truncate">{option.label}</span>
|
|
223
|
+
{!!removeLabel && (<button type="button" aria-label={`${removeLabel} ${option.label}`} disabled={disabled} onClick={() => removeOption(option)} className="text-gray-1 dark:text-gray-2 disabled:text-gray-3 flex size-5 shrink-0 items-center justify-center rounded-full transition-colors not-disabled:hover:bg-black not-disabled:hover:text-white disabled:cursor-not-allowed dark:not-disabled:hover:bg-white dark:not-disabled:hover:text-black">
|
|
224
|
+
<FiX size={12} aria-hidden="true"/>
|
|
225
|
+
</button>)}
|
|
226
|
+
</li>)}/>
|
|
227
|
+
</ul>)}
|
|
194
228
|
<div id={feedbackId}>
|
|
195
229
|
<RenderErrorOrHelperText disabled={disabled} helperText={helperText} error={error} className={clsx('pl-6', error && !disabled ? 'dark:text-error-dark' : 'dark:text-gray-2')}/>
|
|
196
230
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/MultiSelect.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MultiSelect.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/MultiSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -37,7 +37,7 @@ type SelectProps = {
|
|
|
37
37
|
* @param {boolean} [props.isMutedWhenEmpty] - Renders the border and label in gray while no option is selected.
|
|
38
38
|
* @param {boolean} [props.hideLabel] - Keeps the label for assistive technology only and drops the floating label and its border notch. Use it when a heading outside the field already names it; pair it with `placeholder`.
|
|
39
39
|
* @param {ReactNode} [props.labelAddon] - Element rendered right after the floating label, inside the border notch — typically an info icon wrapped in a `Tooltip`. It stays interactive and is not part of the label's accessible name. Ignored with `hideLabel`.
|
|
40
|
-
* @param {boolean} [props.customList=false] - Opens Orion's own option list instead of the native popup, which each browser and OS paints its own way. Same `options`, `select.value` and `select.onChange`: picking an option fires the native `change` event.
|
|
40
|
+
* @param {boolean} [props.customList=false] - Opens Orion's own option list instead of the native popup, which each browser and OS paints its own way. Same `options`, `select.value` and `select.onChange`: picking an option fires the native `change` event. The list opens under the field, as wide as it, and Escape closes only the list (a surrounding `Modal` stays open). Prefer it inside a `Modal`: the native popup is placed and sized by the browser, outside the dialog.
|
|
41
41
|
* @param {ReactNode} [props.iconL] - Element at the left of the chosen option, as in `Input`: an icon or a `CountryFlag` that follows the value. Decorative: the option text carries the meaning.
|
|
42
42
|
*
|
|
43
43
|
* @returns {ReactNode} The rendered Select component.
|