@uva-glass/component-library 1.1.0 → 1.3.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/README.md +1 -1
- package/dist/SelectListbox.module-iJtzAajj.js +23 -0
- package/dist/SelectListbox.module-iJtzAajj.js.map +1 -0
- package/dist/assets/Button.css +1 -1
- package/dist/assets/Card.css +1 -1
- package/dist/assets/IconButton.css +1 -1
- package/dist/assets/InfoMessage.css +1 -1
- package/dist/assets/SectionNotification.css +1 -1
- package/dist/assets/SelectListbox.css +1 -1
- package/dist/components/Button/Button.stories.js +1 -1
- package/dist/components/Icon/icons/index.js +52 -52
- package/dist/components/Icon/icons/index.js.map +1 -1
- package/dist/components/IconButton/IconButton.stories.js +2 -1
- package/dist/components/IconButton/IconButton.stories.js.map +1 -1
- package/dist/components/SelectListbox/SelectListBox.stories.js +19 -19
- package/dist/components/SelectListbox/SelectListBox.stories.js.map +1 -1
- package/dist/components/SelectListbox/SelectListbox.d.ts +3 -5
- package/dist/components/SelectListbox/SelectListbox.js +46 -34
- package/dist/components/SelectListbox/SelectListbox.js.map +1 -1
- package/dist/components/SelectListbox/SelectProvider.js +20 -18
- package/dist/components/SelectListbox/SelectProvider.js.map +1 -1
- package/dist/components/SelectListbox/components/SelectButton.d.ts +1 -1
- package/dist/components/SelectListbox/components/SelectButton.js +30 -36
- package/dist/components/SelectListbox/components/SelectButton.js.map +1 -1
- package/dist/components/SelectListbox/components/SelectContainer.js +1 -1
- package/dist/components/SelectListbox/components/SelectOption.js +20 -20
- package/dist/components/SelectListbox/components/SelectOption.js.map +1 -1
- package/dist/components/SelectListbox/components/SelectOptionBox.d.ts +3 -4
- package/dist/components/SelectListbox/components/SelectOptionBox.js +14 -27
- package/dist/components/SelectListbox/components/SelectOptionBox.js.map +1 -1
- package/dist/components/hooks/usePositionedFloaters.d.ts +22 -0
- package/dist/components/hooks/usePositionedFloaters.js +68 -0
- package/dist/components/hooks/usePositionedFloaters.js.map +1 -0
- package/dist/components/storyComponents/ClipboardButton/ClipboardButton.js +6 -6
- package/dist/components/storyComponents/ClipboardButton/ClipboardButton.js.map +1 -1
- package/dist/{index-CZx-Vhwf.js → index-DHAcOIyn.js} +2172 -2177
- package/dist/index-DHAcOIyn.js.map +1 -0
- package/package.json +27 -26
- package/dist/SelectListbox.module-wZfvJXBJ.js +0 -22
- package/dist/SelectListbox.module-wZfvJXBJ.js.map +0 -1
- package/dist/index-CZx-Vhwf.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as l, jsxs as h } from "react/jsx-runtime";
|
|
2
|
-
import { f as c } from "../../index-
|
|
3
|
-
import { SelectListbox as
|
|
2
|
+
import { f as c } from "../../index-DHAcOIyn.js";
|
|
3
|
+
import { SelectListbox as o } from "./SelectListbox.js";
|
|
4
4
|
import * as e from "react";
|
|
5
|
-
const d = (t) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 9 6", ...t }, /* @__PURE__ */ e.createElement("rect", { fill: "#21468B", width: 9, height: 6 }), /* @__PURE__ */ e.createElement("rect", { fill: "#FFF", width: 9, height: 4 }), /* @__PURE__ */ e.createElement("rect", { fill: "#AE1C28", width: 9, height: 2 })), p =
|
|
5
|
+
const d = (t) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 9 6", ...t }, /* @__PURE__ */ e.createElement("rect", { fill: "#21468B", width: 9, height: 6 }), /* @__PURE__ */ e.createElement("rect", { fill: "#FFF", width: 9, height: 4 }), /* @__PURE__ */ e.createElement("rect", { fill: "#AE1C28", width: 9, height: 2 })), p = (t) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 60 30", ...t }, /* @__PURE__ */ e.createElement("clipPath", { id: "t" }, /* @__PURE__ */ e.createElement("path", { d: "M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z" })), /* @__PURE__ */ e.createElement("path", { d: "M0,0 v30 h60 v-30 z", fill: "#00247d" }), /* @__PURE__ */ e.createElement("path", { d: "M0,0 L60,30 M60,0 L0,30", stroke: "#fff", strokeWidth: 6 }), /* @__PURE__ */ e.createElement("path", { d: "M0,0 L60,30 M60,0 L0,30", clipPath: "url(#t)", stroke: "#cf142b", strokeWidth: 4 }), /* @__PURE__ */ e.createElement("path", { d: "M30,0 v30 M0,15 h60", stroke: "#fff", strokeWidth: 10 }), /* @__PURE__ */ e.createElement("path", { d: "M30,0 v30 M0,15 h60", stroke: "#cf142b", strokeWidth: 6 })), m = (t) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 5 3", ...t }, /* @__PURE__ */ e.createElement("desc", null, "Flag of Germany"), /* @__PURE__ */ e.createElement("rect", { id: "black_stripe", width: 5, height: 3, y: 0, x: 0, fill: "#000" }), /* @__PURE__ */ e.createElement("rect", { id: "red_stripe", width: 5, height: 2, y: 1, x: 0, fill: "#D00" }), /* @__PURE__ */ e.createElement("rect", { id: "gold_stripe", width: 5, height: 1, y: 2, x: 0, fill: "#FFCE00" })), g = (t) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 3 2", ...t }, /* @__PURE__ */ e.createElement("rect", { width: 3, height: 2, fill: "#ED2939" }), /* @__PURE__ */ e.createElement("rect", { width: 2, height: 2, fill: "#fff" }), /* @__PURE__ */ e.createElement("rect", { width: 1, height: 2, fill: "#002395" })), r = [
|
|
6
6
|
{
|
|
7
|
-
label: "
|
|
7
|
+
label: "Standaard Nederlands (NL)",
|
|
8
8
|
value: "NL"
|
|
9
9
|
},
|
|
10
10
|
{
|
|
@@ -19,9 +19,9 @@ const d = (t) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.
|
|
|
19
19
|
label: "Français",
|
|
20
20
|
value: "FR"
|
|
21
21
|
}
|
|
22
|
-
],
|
|
22
|
+
], S = {
|
|
23
23
|
title: "Organisms/SelectListbox",
|
|
24
|
-
component:
|
|
24
|
+
component: o,
|
|
25
25
|
argTypes: {
|
|
26
26
|
options: {
|
|
27
27
|
table: {
|
|
@@ -90,28 +90,28 @@ const d = (t) => /* @__PURE__ */ e.createElement("svg", { xmlns: "http://www.w3.
|
|
|
90
90
|
defaultValue: "EN",
|
|
91
91
|
disabled: !1,
|
|
92
92
|
buttonLabelBold: !1,
|
|
93
|
-
maxOptionHeight: "
|
|
93
|
+
maxOptionHeight: "20rem",
|
|
94
94
|
optionPositionRight: !1,
|
|
95
95
|
onChange: c()
|
|
96
|
-
},
|
|
97
|
-
|
|
96
|
+
}, f = (t) => /* @__PURE__ */ l("div", { style: { width: "10rem", margin: "4rem auto 0 auto" }, children: /* @__PURE__ */ l(o, { ...t, children: r.map(({ label: i, value: a }, n) => /* @__PURE__ */ l(o.SelectOption, { option: { label: i, value: a }, index: n, children: i }, `${a}`)) }) }), b = f.bind({});
|
|
97
|
+
b.args = {
|
|
98
98
|
...s
|
|
99
99
|
};
|
|
100
|
-
const
|
|
100
|
+
const w = ({ label: t, value: i }) => /* @__PURE__ */ h("div", { style: { display: "flex" }, children: [
|
|
101
101
|
{
|
|
102
|
-
NL: /* @__PURE__ */ l(
|
|
103
|
-
EN: /* @__PURE__ */ l(
|
|
104
|
-
DU: /* @__PURE__ */ l(
|
|
105
|
-
FR: /* @__PURE__ */ l(
|
|
102
|
+
NL: /* @__PURE__ */ l(d, { style: { width: "24px", height: "24px", marginRight: "10px" } }),
|
|
103
|
+
EN: /* @__PURE__ */ l(p, { style: { width: "24px", height: "24px", marginRight: "10px" } }),
|
|
104
|
+
DU: /* @__PURE__ */ l(m, { style: { width: "24px", height: "24px", marginRight: "10px" } }),
|
|
105
|
+
FR: /* @__PURE__ */ l(g, { style: { width: "24px", height: "24px", marginRight: "10px" } })
|
|
106
106
|
}[i],
|
|
107
107
|
t
|
|
108
|
-
] }),
|
|
109
|
-
|
|
108
|
+
] }), x = (t) => /* @__PURE__ */ l("div", { style: { width: "10rem", marginTop: "3rem" }, children: /* @__PURE__ */ l(o, { ...t, children: t.options.map(({ label: i, value: a }, n) => /* @__PURE__ */ l(o.SelectOption, { option: { label: i, value: a }, index: n, children: /* @__PURE__ */ l(w, { label: i, value: a }) }, `${a}`)) }) }), u = x.bind({});
|
|
109
|
+
u.args = {
|
|
110
110
|
...s
|
|
111
111
|
};
|
|
112
112
|
export {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
b as SelectListboxExample,
|
|
114
|
+
u as WithComponentOption,
|
|
115
|
+
S as default
|
|
116
116
|
};
|
|
117
117
|
//# sourceMappingURL=SelectListBox.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectListBox.stories.js","sources":["../../../src/components/SelectListbox/stories-images/nl.svg?react","../../../src/components/SelectListbox/stories-images/gb.svg?react","../../../src/components/SelectListbox/stories-images/de.svg?react","../../../src/components/SelectListbox/stories-images/fr.svg?react","../../../src/components/SelectListbox/SelectListBox.stories.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgNl = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 9 6\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { fill: \"#21468B\", width: 9, height: 6 }), /* @__PURE__ */ React.createElement(\"rect\", { fill: \"#FFF\", width: 9, height: 4 }), /* @__PURE__ */ React.createElement(\"rect\", { fill: \"#AE1C28\", width: 9, height: 2 }));\nexport default SvgNl;\n","import * as React from \"react\";\nconst SvgGb = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 60 30\", ...props }, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"t\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\" })), /* @__PURE__ */ React.createElement(\"path\", { d: \"M0,0 v30 h60 v-30 z\", fill: \"#00247d\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M0,0 L60,30 M60,0 L0,30\", stroke: \"#fff\", strokeWidth: 6 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M0,0 L60,30 M60,0 L0,30\", clipPath: \"url(#t)\", stroke: \"#cf142b\", strokeWidth: 4 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M30,0 v30 M0,15 h60\", stroke: \"#fff\", strokeWidth: 10 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M30,0 v30 M0,15 h60\", stroke: \"#cf142b\", strokeWidth: 6 }));\nexport default SvgGb;\n","import * as React from \"react\";\nconst SvgDe = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 5 3\", ...props }, /* @__PURE__ */ React.createElement(\"desc\", null, \"Flag of Germany\"), /* @__PURE__ */ React.createElement(\"rect\", { id: \"black_stripe\", width: 5, height: 3, y: 0, x: 0, fill: \"#000\" }), /* @__PURE__ */ React.createElement(\"rect\", { id: \"red_stripe\", width: 5, height: 2, y: 1, x: 0, fill: \"#D00\" }), /* @__PURE__ */ React.createElement(\"rect\", { id: \"gold_stripe\", width: 5, height: 1, y: 2, x: 0, fill: \"#FFCE00\" }));\nexport default SvgDe;\n","import * as React from \"react\";\nconst SvgFr = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 3 2\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { width: 3, height: 2, fill: \"#ED2939\" }), /* @__PURE__ */ React.createElement(\"rect\", { width: 2, height: 2, fill: \"#fff\" }), /* @__PURE__ */ React.createElement(\"rect\", { width: 1, height: 2, fill: \"#002395\" }));\nexport default SvgFr;\n","import { fn } from '@storybook/test';\n\nimport type { Meta, StoryFn } from '@storybook/react';\nimport type { FC, PropsWithChildren } from 'react';\nimport type { SelectListboxProps } from './SelectListbox';\n\nimport { SelectListbox } from './SelectListbox';\nimport FlagNl from './stories-images/nl.svg?react';\nimport FlagEn from './stories-images/gb.svg?react';\nimport FlagDu from './stories-images/de.svg?react';\nimport FlagFr from './stories-images/fr.svg?react';\n\nconst DATA = [\n {\n label: 'Nerderlands',\n value: 'NL',\n },\n {\n label: 'English',\n value: 'EN',\n },\n {\n label: 'Deutsch',\n value: 'DU',\n },\n {\n label: 'Français',\n value: 'FR',\n },\n];\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n title: 'Organisms/SelectListbox',\n component: SelectListbox,\n argTypes: {\n options: {\n table: {\n disable: true,\n },\n },\n defaultValue: {\n table: {\n disable: true,\n },\n },\n onChange: {\n table: {\n disable: true,\n },\n },\n disabled: {\n control: 'boolean',\n default: false,\n },\n buttonLabelBold: {\n control: 'boolean',\n default: false,\n },\n variant: {\n options: ['default', 'noborder', 'pill', 'pillLeft', 'pillRight'],\n control: { type: 'select' },\n },\n optionPositionRight: {\n control: 'boolean',\n default: false,\n },\n buttonLabelProp: {\n table: {\n disable: true,\n },\n },\n children: {\n table: {\n disable: true,\n },\n },\n SelectOption: {\n table: {\n disable: true,\n },\n },\n SelectOptionBox: {\n table: {\n disable: true,\n },\n },\n SelectButton: {\n table: {\n disable: true,\n },\n },\n SelectContainer: {\n table: {\n disable: true,\n },\n },\n },\n} as Meta<typeof SelectListbox>;\n\nconst defaultArgs: Partial<PropsWithChildren<SelectListboxProps>> = {\n options: DATA,\n defaultValue: 'EN',\n disabled: false,\n buttonLabelBold: false,\n maxOptionHeight: '200px',\n optionPositionRight: false,\n onChange: fn(),\n};\n\nconst Template: StoryFn<PropsWithChildren<SelectListboxProps>> = (args) => (\n <div style={{ width: '10rem' }}>\n <SelectListbox {...args}>\n {DATA.map(({ label, value }, index) => (\n <SelectListbox.SelectOption option={{ label, value }} index={index} key={`${value}`}>\n {label}\n </SelectListbox.SelectOption>\n ))}\n </SelectListbox>\n </div>\n);\n\nexport const SelectListboxExample = Template.bind({});\nSelectListboxExample.args = {\n ...defaultArgs,\n};\n\nconst ComponentOption: FC<{ label: string; value: string }> = ({ label, value }) => {\n const flags = {\n NL: <FlagNl style={{ width: '24px', height: '24px', marginRight: '10px' }} />,\n EN: <FlagEn style={{ width: '24px', height: '24px', marginRight: '10px' }} />,\n DU: <FlagDu style={{ width: '24px', height: '24px', marginRight: '10px' }} />,\n FR: <FlagFr style={{ width: '24px', height: '24px', marginRight: '10px' }} />,\n };\n\n return (\n <div style={{ display: 'flex' }}>\n {flags[value as keyof typeof flags]}\n {label}\n </div>\n );\n};\n\nconst TemplateWithComponent: StoryFn<PropsWithChildren<SelectListboxProps>> = (args) => (\n <div style={{ width: '10rem' }}>\n <SelectListbox {...args}>\n {args.options.map(({ label, value }, index) => (\n <SelectListbox.SelectOption option={{ label, value }} index={index} key={`${value}`}>\n <ComponentOption label={label} value={value as string} />\n </SelectListbox.SelectOption>\n ))}\n </SelectListbox>\n </div>\n);\n\nexport const WithComponentOption = TemplateWithComponent.bind({});\nWithComponentOption.args = {\n ...defaultArgs,\n};\n"],"names":["SvgNl","props","React","FlagNl","SvgGb","FlagEn","SvgDe","FlagDu","SvgFr","FlagFr","DATA","SelectListBox_stories","SelectListbox","defaultArgs","fn","Template","args","jsx","label","value","index","SelectListboxExample","ComponentOption","TemplateWithComponent","WithComponentOption"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectListBox.stories.js","sources":["../../../src/components/SelectListbox/stories-images/nl.svg?react","../../../src/components/SelectListbox/stories-images/gb.svg?react","../../../src/components/SelectListbox/stories-images/de.svg?react","../../../src/components/SelectListbox/stories-images/fr.svg?react","../../../src/components/SelectListbox/SelectListBox.stories.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgNl = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 9 6\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { fill: \"#21468B\", width: 9, height: 6 }), /* @__PURE__ */ React.createElement(\"rect\", { fill: \"#FFF\", width: 9, height: 4 }), /* @__PURE__ */ React.createElement(\"rect\", { fill: \"#AE1C28\", width: 9, height: 2 }));\nexport default SvgNl;\n","import * as React from \"react\";\nconst SvgGb = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 60 30\", ...props }, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"t\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\" })), /* @__PURE__ */ React.createElement(\"path\", { d: \"M0,0 v30 h60 v-30 z\", fill: \"#00247d\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M0,0 L60,30 M60,0 L0,30\", stroke: \"#fff\", strokeWidth: 6 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M0,0 L60,30 M60,0 L0,30\", clipPath: \"url(#t)\", stroke: \"#cf142b\", strokeWidth: 4 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M30,0 v30 M0,15 h60\", stroke: \"#fff\", strokeWidth: 10 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M30,0 v30 M0,15 h60\", stroke: \"#cf142b\", strokeWidth: 6 }));\nexport default SvgGb;\n","import * as React from \"react\";\nconst SvgDe = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 5 3\", ...props }, /* @__PURE__ */ React.createElement(\"desc\", null, \"Flag of Germany\"), /* @__PURE__ */ React.createElement(\"rect\", { id: \"black_stripe\", width: 5, height: 3, y: 0, x: 0, fill: \"#000\" }), /* @__PURE__ */ React.createElement(\"rect\", { id: \"red_stripe\", width: 5, height: 2, y: 1, x: 0, fill: \"#D00\" }), /* @__PURE__ */ React.createElement(\"rect\", { id: \"gold_stripe\", width: 5, height: 1, y: 2, x: 0, fill: \"#FFCE00\" }));\nexport default SvgDe;\n","import * as React from \"react\";\nconst SvgFr = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 3 2\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { width: 3, height: 2, fill: \"#ED2939\" }), /* @__PURE__ */ React.createElement(\"rect\", { width: 2, height: 2, fill: \"#fff\" }), /* @__PURE__ */ React.createElement(\"rect\", { width: 1, height: 2, fill: \"#002395\" }));\nexport default SvgFr;\n","import { fn } from '@storybook/test';\n\nimport type { Meta, StoryFn } from '@storybook/react';\nimport type { FC, PropsWithChildren } from 'react';\nimport type { SelectListboxProps } from './SelectListbox';\n\nimport { SelectListbox } from './SelectListbox';\nimport FlagNl from './stories-images/nl.svg?react';\nimport FlagEn from './stories-images/gb.svg?react';\nimport FlagDu from './stories-images/de.svg?react';\nimport FlagFr from './stories-images/fr.svg?react';\n\nconst DATA = [\n {\n label: 'Standaard Nederlands (NL)',\n value: 'NL',\n },\n {\n label: 'English',\n value: 'EN',\n },\n {\n label: 'Deutsch',\n value: 'DU',\n },\n {\n label: 'Français',\n value: 'FR',\n },\n];\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n title: 'Organisms/SelectListbox',\n component: SelectListbox,\n argTypes: {\n options: {\n table: {\n disable: true,\n },\n },\n defaultValue: {\n table: {\n disable: true,\n },\n },\n onChange: {\n table: {\n disable: true,\n },\n },\n disabled: {\n control: 'boolean',\n default: false,\n },\n buttonLabelBold: {\n control: 'boolean',\n default: false,\n },\n variant: {\n options: ['default', 'noborder', 'pill', 'pillLeft', 'pillRight'],\n control: { type: 'select' },\n },\n optionPositionRight: {\n control: 'boolean',\n default: false,\n },\n buttonLabelProp: {\n table: {\n disable: true,\n },\n },\n children: {\n table: {\n disable: true,\n },\n },\n SelectOption: {\n table: {\n disable: true,\n },\n },\n SelectOptionBox: {\n table: {\n disable: true,\n },\n },\n SelectButton: {\n table: {\n disable: true,\n },\n },\n SelectContainer: {\n table: {\n disable: true,\n },\n },\n },\n} as Meta<typeof SelectListbox>;\n\nconst defaultArgs: Partial<PropsWithChildren<SelectListboxProps>> = {\n options: DATA,\n defaultValue: 'EN',\n disabled: false,\n buttonLabelBold: false,\n maxOptionHeight: '20rem',\n optionPositionRight: false,\n onChange: fn(),\n};\n\nconst Template: StoryFn<PropsWithChildren<SelectListboxProps>> = (args) => (\n <div style={{ width: '10rem', margin: '4rem auto 0 auto' }}>\n <SelectListbox {...args}>\n {DATA.map(({ label, value }, index) => (\n <SelectListbox.SelectOption option={{ label, value }} index={index} key={`${value}`}>\n {label}\n </SelectListbox.SelectOption>\n ))}\n </SelectListbox>\n </div>\n);\n\nexport const SelectListboxExample = Template.bind({});\nSelectListboxExample.args = {\n ...defaultArgs,\n};\n\nconst ComponentOption: FC<{ label: string; value: string }> = ({ label, value }) => {\n const flags = {\n NL: <FlagNl style={{ width: '24px', height: '24px', marginRight: '10px' }} />,\n EN: <FlagEn style={{ width: '24px', height: '24px', marginRight: '10px' }} />,\n DU: <FlagDu style={{ width: '24px', height: '24px', marginRight: '10px' }} />,\n FR: <FlagFr style={{ width: '24px', height: '24px', marginRight: '10px' }} />,\n };\n\n return (\n <div style={{ display: 'flex' }}>\n {flags[value as keyof typeof flags]}\n {label}\n </div>\n );\n};\n\nconst TemplateWithComponent: StoryFn<PropsWithChildren<SelectListboxProps>> = (args) => (\n <div style={{ width: '10rem', marginTop: '3rem' }}>\n <SelectListbox {...args}>\n {args.options.map(({ label, value }, index) => (\n <SelectListbox.SelectOption option={{ label, value }} index={index} key={`${value}`}>\n <ComponentOption label={label} value={value as string} />\n </SelectListbox.SelectOption>\n ))}\n </SelectListbox>\n </div>\n);\n\nexport const WithComponentOption = TemplateWithComponent.bind({});\nWithComponentOption.args = {\n ...defaultArgs,\n};\n"],"names":["SvgNl","props","React","SvgGb","SvgDe","SvgFr","DATA","SelectListBox_stories","SelectListbox","defaultArgs","fn","Template","args","jsx","label","value","index","SelectListboxExample","ComponentOption","FlagNl","FlagEn","FlagDu","FlagFr","TemplateWithComponent","WithComponentOption"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { ReactNode, PropsWithChildren } from 'react';
|
|
|
8
8
|
interface ISelect {
|
|
9
9
|
options: OptionValue[];
|
|
10
10
|
defaultValue?: SelectValue;
|
|
11
|
-
maxOptionHeight?:
|
|
11
|
+
maxOptionHeight?: `${number}${'px' | 'rem'}`;
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
buttonLabelProp?: string;
|
|
14
14
|
buttonLabelBold?: boolean;
|
|
@@ -29,17 +29,15 @@ export interface SelectListboxProps extends ISelect {
|
|
|
29
29
|
* NOTE: If you want to use a custom component, you should add [aria-hidden="true"]
|
|
30
30
|
* on the root element so the screen reader will ignore it
|
|
31
31
|
*
|
|
32
|
-
* TODO: Add dynamic positioning/sizing of the optionbox based on the availible space
|
|
33
|
-
* Fixed positioned so it will not be affected by the parent container and will always be on top
|
|
34
32
|
* TODO: Buttonlabel should take a component aswell zo the bold prop can be removed
|
|
35
33
|
*/
|
|
36
34
|
export declare const SelectListbox: {
|
|
37
35
|
({ options, variant, optionPositionRight, defaultValue, maxOptionHeight, disabled, buttonLabelProp, buttonLabelBold, onChange, children, }: PropsWithChildren<SelectListboxProps>): import("react/jsx-runtime").JSX.Element;
|
|
38
36
|
SelectOption: ({ option, index, children }: import('./components/SelectOption').SelectOptionProps) => import("react/jsx-runtime").JSX.Element;
|
|
39
|
-
SelectButton: (
|
|
37
|
+
SelectButton: import('react').ForwardRefExoticComponent<import('./components/SelectButton').SelectButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
40
38
|
SelectContainer: ({ children }: {
|
|
41
39
|
children?: ReactNode;
|
|
42
40
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
43
|
-
SelectOptionBox: (
|
|
41
|
+
SelectOptionBox: import('react').ForwardRefExoticComponent<import('./components/SelectOptionBox').SelectOptionBoxProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
44
42
|
};
|
|
45
43
|
export {};
|
|
@@ -1,38 +1,50 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
1
|
+
import { jsx as t, jsxs as P } from "react/jsx-runtime";
|
|
2
|
+
import { useState as o } from "react";
|
|
3
|
+
import { SelectButton as i } from "./components/SelectButton.js";
|
|
4
|
+
import { SelectContainer as n } from "./components/SelectContainer.js";
|
|
5
|
+
import { SelectOptionBox as r } from "./components/SelectOptionBox.js";
|
|
6
|
+
import { SelectOption as b } from "./components/SelectOption.js";
|
|
7
|
+
import { SelectProvider as g } from "./SelectProvider.js";
|
|
8
|
+
import { usePositionedFloaters as j } from "../hooks/usePositionedFloaters.js";
|
|
9
|
+
const e = ({
|
|
8
10
|
options: l,
|
|
9
|
-
variant:
|
|
10
|
-
optionPositionRight:
|
|
11
|
-
defaultValue:
|
|
12
|
-
maxOptionHeight:
|
|
13
|
-
disabled:
|
|
14
|
-
buttonLabelProp:
|
|
15
|
-
buttonLabelBold:
|
|
16
|
-
onChange:
|
|
17
|
-
children:
|
|
18
|
-
}) =>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
11
|
+
variant: m,
|
|
12
|
+
optionPositionRight: s,
|
|
13
|
+
defaultValue: c = -1,
|
|
14
|
+
maxOptionHeight: f,
|
|
15
|
+
disabled: p,
|
|
16
|
+
buttonLabelProp: S = "label",
|
|
17
|
+
buttonLabelBold: u,
|
|
18
|
+
onChange: x,
|
|
19
|
+
children: a
|
|
20
|
+
}) => {
|
|
21
|
+
const [d, h] = o(null), [E, B] = o(null), { style: O } = j(d, E, {
|
|
22
|
+
mouseEvent: "click",
|
|
23
|
+
position: "bottomLeft",
|
|
24
|
+
offset: 4,
|
|
25
|
+
maxFixedHeight: f,
|
|
26
|
+
horizontalPosition: s ? "right" : "left"
|
|
27
|
+
});
|
|
28
|
+
return /* @__PURE__ */ t(g, { options: l, defaultValue: c, children: /* @__PURE__ */ P(n, { children: [
|
|
29
|
+
/* @__PURE__ */ t(
|
|
30
|
+
i,
|
|
31
|
+
{
|
|
32
|
+
disabled: p,
|
|
33
|
+
buttonLabelProp: S,
|
|
34
|
+
buttonLabelBold: u,
|
|
35
|
+
variant: m,
|
|
36
|
+
onChange: x,
|
|
37
|
+
ref: B
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
/* @__PURE__ */ t(r, { ref: h, ...O, children: a })
|
|
41
|
+
] }) });
|
|
42
|
+
};
|
|
43
|
+
e.SelectOption = b;
|
|
44
|
+
e.SelectButton = i;
|
|
45
|
+
e.SelectContainer = n;
|
|
46
|
+
e.SelectOptionBox = r;
|
|
35
47
|
export {
|
|
36
|
-
|
|
48
|
+
e as SelectListbox
|
|
37
49
|
};
|
|
38
50
|
//# sourceMappingURL=SelectListbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectListbox.js","sources":["../../../src/components/SelectListbox/SelectListbox.tsx"],"sourcesContent":["import type { ReactNode, PropsWithChildren } from 'react';\nimport type { OptionValue, SelectValue } from './SelectProvider';\n\nimport { SelectButton } from './components/SelectButton';\nimport { SelectContainer } from './components/SelectContainer';\nimport { SelectOptionBox } from './components/SelectOptionBox';\nimport { SelectOption } from './components/SelectOption';\nimport { SelectProvider } from './SelectProvider';\n\ninterface ISelect {\n options: OptionValue[];\n defaultValue?: SelectValue;\n maxOptionHeight?:
|
|
1
|
+
{"version":3,"file":"SelectListbox.js","sources":["../../../src/components/SelectListbox/SelectListbox.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport type { ReactNode, PropsWithChildren } from 'react';\nimport type { OptionValue, SelectValue } from './SelectProvider';\n\nimport { SelectButton } from './components/SelectButton';\nimport { SelectContainer } from './components/SelectContainer';\nimport { SelectOptionBox } from './components/SelectOptionBox';\nimport { SelectOption } from './components/SelectOption';\nimport { SelectProvider } from './SelectProvider';\n\nimport { usePositionedFloaters } from 'components/hooks/usePositionedFloaters';\n\ninterface ISelect {\n options: OptionValue[];\n defaultValue?: SelectValue;\n maxOptionHeight?: `${number}${'px' | 'rem'}`;\n disabled?: boolean;\n buttonLabelProp?: string;\n buttonLabelBold?: boolean;\n variant?: 'noborder' | 'pill' | 'pillLeft' | 'pillRight';\n optionPositionRight?: boolean;\n onChange?: (option: OptionValue) => void;\n children?: ReactNode;\n}\n\nexport interface SelectListboxProps extends ISelect {\n SelectOption?: typeof SelectOption;\n SelectOptionBox?: typeof SelectOptionBox;\n SelectButton: typeof SelectButton;\n SelectContainer: typeof SelectContainer;\n}\n\n/**\n * SelectListbox component\n * Options can be a component or just a label, it should be wrapped in SelectListbox.SelectOption\n * NOTE: If you want to use a custom component, you should add [aria-hidden=\"true\"]\n * on the root element so the screen reader will ignore it\n *\n * TODO: Buttonlabel should take a component aswell zo the bold prop can be removed\n */\n\nexport const SelectListbox = ({\n options,\n variant,\n optionPositionRight,\n defaultValue = -1,\n maxOptionHeight,\n disabled,\n buttonLabelProp = 'label',\n buttonLabelBold,\n onChange,\n children,\n}: PropsWithChildren<SelectListboxProps>) => {\n const [positionElement, setPositionElement] = useState<HTMLElement | null>(null);\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null);\n const { style: positionStyle } = usePositionedFloaters(positionElement, referenceElement, {\n mouseEvent: 'click',\n position: 'bottomLeft',\n offset: 4,\n maxFixedHeight: maxOptionHeight,\n horizontalPosition: optionPositionRight ? 'right' : 'left',\n });\n\n return (\n <SelectProvider options={options} defaultValue={defaultValue}>\n <SelectContainer>\n <SelectButton\n disabled={disabled}\n buttonLabelProp={buttonLabelProp}\n buttonLabelBold={buttonLabelBold}\n variant={variant}\n onChange={onChange}\n ref={setReferenceElement}\n />\n\n <SelectOptionBox ref={setPositionElement} {...positionStyle}>\n {children}\n </SelectOptionBox>\n </SelectContainer>\n </SelectProvider>\n );\n};\n\nSelectListbox.SelectOption = SelectOption;\nSelectListbox.SelectButton = SelectButton;\nSelectListbox.SelectContainer = SelectContainer;\nSelectListbox.SelectOptionBox = SelectOptionBox;\n"],"names":["SelectListbox","options","variant","optionPositionRight","defaultValue","maxOptionHeight","disabled","buttonLabelProp","buttonLabelBold","onChange","children","positionElement","setPositionElement","useState","referenceElement","setReferenceElement","positionStyle","usePositionedFloaters","jsx","SelectProvider","SelectContainer","SelectButton","SelectOptionBox","SelectOption"],"mappings":";;;;;;;;AA0CO,MAAMA,IAAgB,CAAC;AAAA,EAC5B,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,iBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,iBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AACF,MAA6C;AAC3C,QAAM,CAACC,GAAiBC,CAAkB,IAAIC,EAA6B,IAAI,GACzE,CAACC,GAAkBC,CAAmB,IAAIF,EAA6B,IAAI,GAC3E,EAAE,OAAOG,EAAA,IAAkBC,EAAsBN,GAAiBG,GAAkB;AAAA,IACxF,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,gBAAgBT;AAAA,IAChB,oBAAoBF,IAAsB,UAAU;AAAA,EAAA,CACrD;AAED,SACG,gBAAAe,EAAAC,GAAA,EAAe,SAAAlB,GAAkB,cAAAG,GAChC,4BAACgB,GACC,EAAA,UAAA;AAAA,IAAA,gBAAAF;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,UAAAf;AAAA,QACA,iBAAAC;AAAA,QACA,iBAAAC;AAAA,QACA,SAAAN;AAAA,QACA,UAAAO;AAAA,QACA,KAAKM;AAAA,MAAA;AAAA,IACP;AAAA,sBAECO,GAAgB,EAAA,KAAKV,GAAqB,GAAGI,GAC3C,UAAAN,GACH;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ;AAEAV,EAAc,eAAeuB;AAC7BvB,EAAc,eAAeqB;AAC7BrB,EAAc,kBAAkBoB;AAChCpB,EAAc,kBAAkBsB;"}
|
|
@@ -1,36 +1,38 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { createContext as
|
|
3
|
-
const
|
|
4
|
-
const [
|
|
1
|
+
import { jsx as g } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as m, useState as o, useRef as p, useId as C, useEffect as P, useContext as V } from "react";
|
|
3
|
+
const i = m({}), L = ({ options: e, defaultValue: c, children: v }) => {
|
|
4
|
+
const [r, x] = o({ value: "", label: "" }), [f, s] = o(!1), [n, u] = o(-1), I = p(C()), b = () => {
|
|
5
5
|
s((t) => !t);
|
|
6
|
-
},
|
|
6
|
+
}, a = (t) => e.find((l) => l.value === t) || {
|
|
7
7
|
value: -1,
|
|
8
8
|
label: "",
|
|
9
9
|
selectedLabel: "-"
|
|
10
|
-
},
|
|
11
|
-
const
|
|
12
|
-
|
|
10
|
+
}, d = (t) => {
|
|
11
|
+
const l = e.findIndex((S) => S.value === t.value);
|
|
12
|
+
u(l), x(t), s(!1);
|
|
13
13
|
};
|
|
14
|
-
return
|
|
15
|
-
|
|
14
|
+
return c !== -1 && !r.value && d(a(c)), P(() => {
|
|
15
|
+
console.log(n);
|
|
16
|
+
}, [n]), /* @__PURE__ */ g(
|
|
17
|
+
i.Provider,
|
|
16
18
|
{
|
|
17
19
|
value: {
|
|
18
20
|
options: e,
|
|
19
|
-
selectedValue:
|
|
20
|
-
setSelectedValue:
|
|
21
|
-
isOpen:
|
|
21
|
+
selectedValue: r,
|
|
22
|
+
setSelectedValue: d,
|
|
23
|
+
isOpen: f,
|
|
22
24
|
setIsOpen: s,
|
|
23
25
|
toggleListbox: b,
|
|
24
|
-
getValue:
|
|
25
|
-
activeIndex:
|
|
26
|
-
setActiveIndex:
|
|
26
|
+
getValue: a,
|
|
27
|
+
activeIndex: n,
|
|
28
|
+
setActiveIndex: u,
|
|
27
29
|
listboxId: I.current
|
|
28
30
|
},
|
|
29
|
-
children:
|
|
31
|
+
children: v
|
|
30
32
|
}
|
|
31
33
|
);
|
|
32
34
|
}, O = () => {
|
|
33
|
-
const e =
|
|
35
|
+
const e = V(i);
|
|
34
36
|
if (e === void 0)
|
|
35
37
|
throw new Error("useSelect can only be used in an SelectProvider");
|
|
36
38
|
return e;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectProvider.js","sources":["../../../src/components/SelectListbox/SelectProvider.tsx"],"sourcesContent":["import { createContext, useContext, useState, useId, useRef } from 'react';\n\nimport type { PropsWithChildren } from 'react';\n\nexport type SelectValue = string | number | null;\n\nexport type OptionValue = {\n value: SelectValue;\n label: string;\n selectedLabel?: string;\n disabled?: boolean;\n};\nexport interface SelectListboxContext {\n options: OptionValue[];\n selectedValue: OptionValue;\n setSelectedValue: (v: OptionValue) => void;\n isOpen: boolean;\n setIsOpen: (v: boolean) => void;\n toggleListbox: () => void;\n getValue: (value: SelectValue) => OptionValue;\n activeIndex: number;\n setActiveIndex: (v: number) => void;\n listboxId: string;\n}\n\nconst SelectContext = createContext<SelectListboxContext>({} as SelectListboxContext);\n\ninterface Props {\n options: OptionValue[];\n defaultValue: SelectValue;\n}\n\nexport const SelectProvider = ({ options, defaultValue, children }: PropsWithChildren<Props>) => {\n const [value, setValue] = useState<OptionValue>({ value: '', label: '' });\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n const listboxId = useRef<string>(useId());\n\n const toggleListbox = () => {\n setIsOpen((status) => !status);\n };\n\n const getValue = (value: SelectValue) => {\n return (\n options.find((option) => option.value === value) || {\n value: -1,\n label: '',\n selectedLabel: '-',\n }\n );\n };\n\n const setSelectedValue = (value: OptionValue) => {\n const selectedIndex = options.findIndex((option) => option.value === value.value);\n setActiveIndex(selectedIndex);\n setValue(value);\n setIsOpen(false);\n };\n\n if (defaultValue !== -1 && !value.value) {\n setSelectedValue(getValue(defaultValue));\n }\n\n return (\n <SelectContext.Provider\n value={{\n options,\n selectedValue: value,\n setSelectedValue,\n isOpen,\n setIsOpen,\n toggleListbox,\n getValue,\n activeIndex,\n setActiveIndex,\n listboxId: listboxId.current,\n }}\n >\n {children}\n </SelectContext.Provider>\n );\n};\n\nexport const useSelect = () => {\n const context = useContext(SelectContext);\n\n if (context === undefined) throw new Error('useSelect can only be used in an SelectProvider');\n\n return context;\n};\n"],"names":["SelectContext","createContext","SelectProvider","options","defaultValue","children","value","setValue","useState","isOpen","setIsOpen","activeIndex","setActiveIndex","listboxId","useRef","useId","toggleListbox","status","getValue","option","setSelectedValue","selectedIndex","jsx","useSelect","context","useContext"],"mappings":";;AAyBA,MAAMA,IAAgBC,EAAoC,CAAA,CAA0B,GAOvEC,IAAiB,CAAC,EAAE,SAAAC,GAAS,cAAAC,GAAc,UAAAC,QAAyC;AACzF,QAAA,CAACC,GAAOC,CAAQ,IAAIC,EAAsB,EAAE,OAAO,IAAI,OAAO,GAAA,CAAI,GAClE,CAACC,GAAQC,CAAS,IAAIF,EAAS,EAAK,GACpC,CAACG,GAAaC,CAAc,IAAIJ,EAAS,EAAE,GAC3CK,IAAYC,EAAeC,EAAA,CAAO,GAElCC,IAAgB,MAAM;AAChB,IAAAN,EAAA,CAACO,MAAW,CAACA,CAAM;AAAA,EAAA,GAGzBC,IAAW,CAACZ,MAEdH,EAAQ,KAAK,CAACgB,MAAWA,EAAO,UAAUb,CAAK,KAAK;AAAA,IAClD,OAAO;AAAA,IACP,OAAO;AAAA,IACP,eAAe;AAAA,EAAA,GAKfc,IAAmB,CAACd,MAAuB;AACzC,UAAAe,IAAgBlB,EAAQ,UAAU,CAACgB,MAAWA,EAAO,UAAUb,EAAM,KAAK;AAChF,IAAAM,EAAeS,CAAa,GAC5Bd,EAASD,CAAK,GACdI,EAAU,EAAK;AAAA,EAAA;AAGjB,SAAIN,MAAiB,MAAM,CAACE,EAAM,SACfc,EAAAF,EAASd,CAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"SelectProvider.js","sources":["../../../src/components/SelectListbox/SelectProvider.tsx"],"sourcesContent":["import { createContext, useContext, useState, useId, useRef, useEffect } from 'react';\n\nimport type { PropsWithChildren } from 'react';\n\nexport type SelectValue = string | number | null;\n\nexport type OptionValue = {\n value: SelectValue;\n label: string;\n selectedLabel?: string;\n disabled?: boolean;\n};\nexport interface SelectListboxContext {\n options: OptionValue[];\n selectedValue: OptionValue;\n setSelectedValue: (v: OptionValue) => void;\n isOpen: boolean;\n setIsOpen: (v: boolean) => void;\n toggleListbox: () => void;\n getValue: (value: SelectValue) => OptionValue;\n activeIndex: number;\n setActiveIndex: (v: number) => void;\n listboxId: string;\n}\n\nconst SelectContext = createContext<SelectListboxContext>({} as SelectListboxContext);\n\ninterface Props {\n options: OptionValue[];\n defaultValue: SelectValue;\n}\n\nexport const SelectProvider = ({ options, defaultValue, children }: PropsWithChildren<Props>) => {\n const [value, setValue] = useState<OptionValue>({ value: '', label: '' });\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n const listboxId = useRef<string>(useId());\n\n const toggleListbox = () => {\n setIsOpen((status) => !status);\n };\n\n const getValue = (value: SelectValue) => {\n return (\n options.find((option) => option.value === value) || {\n value: -1,\n label: '',\n selectedLabel: '-',\n }\n );\n };\n\n const setSelectedValue = (value: OptionValue) => {\n const selectedIndex = options.findIndex((option) => option.value === value.value);\n setActiveIndex(selectedIndex);\n setValue(value);\n setIsOpen(false);\n };\n\n if (defaultValue !== -1 && !value.value) {\n setSelectedValue(getValue(defaultValue));\n }\n\n useEffect(() => {\n console.log(activeIndex);\n }, [activeIndex]);\n\n return (\n <SelectContext.Provider\n value={{\n options,\n selectedValue: value,\n setSelectedValue,\n isOpen,\n setIsOpen,\n toggleListbox,\n getValue,\n activeIndex,\n setActiveIndex,\n listboxId: listboxId.current,\n }}\n >\n {children}\n </SelectContext.Provider>\n );\n};\n\nexport const useSelect = () => {\n const context = useContext(SelectContext);\n\n if (context === undefined) throw new Error('useSelect can only be used in an SelectProvider');\n\n return context;\n};\n"],"names":["SelectContext","createContext","SelectProvider","options","defaultValue","children","value","setValue","useState","isOpen","setIsOpen","activeIndex","setActiveIndex","listboxId","useRef","useId","toggleListbox","status","getValue","option","setSelectedValue","selectedIndex","useEffect","jsx","useSelect","context","useContext"],"mappings":";;AAyBA,MAAMA,IAAgBC,EAAoC,CAAA,CAA0B,GAOvEC,IAAiB,CAAC,EAAE,SAAAC,GAAS,cAAAC,GAAc,UAAAC,QAAyC;AACzF,QAAA,CAACC,GAAOC,CAAQ,IAAIC,EAAsB,EAAE,OAAO,IAAI,OAAO,GAAA,CAAI,GAClE,CAACC,GAAQC,CAAS,IAAIF,EAAS,EAAK,GACpC,CAACG,GAAaC,CAAc,IAAIJ,EAAS,EAAE,GAC3CK,IAAYC,EAAeC,EAAA,CAAO,GAElCC,IAAgB,MAAM;AAChB,IAAAN,EAAA,CAACO,MAAW,CAACA,CAAM;AAAA,EAAA,GAGzBC,IAAW,CAACZ,MAEdH,EAAQ,KAAK,CAACgB,MAAWA,EAAO,UAAUb,CAAK,KAAK;AAAA,IAClD,OAAO;AAAA,IACP,OAAO;AAAA,IACP,eAAe;AAAA,EAAA,GAKfc,IAAmB,CAACd,MAAuB;AACzC,UAAAe,IAAgBlB,EAAQ,UAAU,CAACgB,MAAWA,EAAO,UAAUb,EAAM,KAAK;AAChF,IAAAM,EAAeS,CAAa,GAC5Bd,EAASD,CAAK,GACdI,EAAU,EAAK;AAAA,EAAA;AAGjB,SAAIN,MAAiB,MAAM,CAACE,EAAM,SACfc,EAAAF,EAASd,CAAY,CAAC,GAGzCkB,EAAU,MAAM;AACd,YAAQ,IAAIX,CAAW;AAAA,EAAA,GACtB,CAACA,CAAW,CAAC,GAGd,gBAAAY;AAAA,IAACvB,EAAc;AAAA,IAAd;AAAA,MACC,OAAO;AAAA,QACL,SAAAG;AAAA,QACA,eAAeG;AAAA,QACf,kBAAAc;AAAA,QACA,QAAAX;AAAA,QACA,WAAAC;AAAA,QACA,eAAAM;AAAA,QACA,UAAAE;AAAA,QACA,aAAAP;AAAA,QACA,gBAAAC;AAAA,QACA,WAAWC,EAAU;AAAA,MACvB;AAAA,MAEC,UAAAR;AAAA,IAAA;AAAA,EAAA;AAGP,GAEamB,IAAY,MAAM;AACvB,QAAAC,IAAUC,EAAW1B,CAAa;AAExC,MAAIyB,MAAY;AAAiB,UAAA,IAAI,MAAM,iDAAiD;AAErF,SAAAA;AACT;"}
|
|
@@ -7,4 +7,4 @@ export interface SelectButtonProps {
|
|
|
7
7
|
buttonLabelBold?: boolean;
|
|
8
8
|
disabled?: boolean;
|
|
9
9
|
}
|
|
10
|
-
export declare const SelectButton: (
|
|
10
|
+
export declare const SelectButton: import('react').ForwardRefExoticComponent<SelectButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
@@ -1,59 +1,53 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as a, jsxs as D } from "react/jsx-runtime";
|
|
2
2
|
import { c as f } from "../../../clsx-DB4S2d7J.js";
|
|
3
|
-
import { useRef as
|
|
4
|
-
import { s } from "../../../SelectListbox.module-
|
|
3
|
+
import { forwardRef as C, useRef as g, useEffect as c } from "react";
|
|
4
|
+
import { s as o } from "../../../SelectListbox.module-iJtzAajj.js";
|
|
5
5
|
import { Icon as E } from "../../Icon/Icon.js";
|
|
6
|
-
import { useSelect as
|
|
7
|
-
const
|
|
8
|
-
variant:
|
|
9
|
-
onChange: i,
|
|
10
|
-
buttonLabelProp: b = "label",
|
|
11
|
-
buttonLabelBold: m,
|
|
12
|
-
disabled: x = !1
|
|
13
|
-
}) => {
|
|
14
|
-
const l = p(null), n = p(!0), { listboxId: g, isOpen: t, selectedValue: e, toggleListbox: d, setIsOpen: u, setActiveIndex: y, options: I } = R() || {}, k = (r) => {
|
|
6
|
+
import { useSelect as L } from "../SelectProvider.js";
|
|
7
|
+
const P = C((d, u) => {
|
|
8
|
+
const { variant: b, onChange: n, buttonLabelProp: m = "label", buttonLabelBold: x, disabled: h = !1 } = d, l = g(null), i = g(!0), { listboxId: w, isOpen: t, selectedValue: e, toggleListbox: y, setIsOpen: p, setActiveIndex: I, options: k } = L() || {}, v = (r) => {
|
|
15
9
|
switch (r.key) {
|
|
16
10
|
case "Enter":
|
|
17
11
|
if (r.preventDefault(), !t) {
|
|
18
|
-
|
|
12
|
+
p(!0);
|
|
19
13
|
return;
|
|
20
14
|
}
|
|
21
15
|
break;
|
|
22
16
|
case "Escape":
|
|
23
|
-
t && (r.stopPropagation(),
|
|
17
|
+
t && (r.stopPropagation(), I(k.findIndex((s) => s.value === (e == null ? void 0 : e.value))), p(!1));
|
|
24
18
|
break;
|
|
25
19
|
}
|
|
26
20
|
};
|
|
27
21
|
return c(() => {
|
|
28
|
-
var r,
|
|
29
|
-
t ? (r = l.current) == null
|
|
30
|
-
}, [t]), c(() => {
|
|
31
|
-
i
|
|
32
|
-
}, [
|
|
33
|
-
n
|
|
34
|
-
}
|
|
22
|
+
var r, s;
|
|
23
|
+
t ? ((r = l.current) == null ? void 0 : r.children[0]).blur() : !i.current && ((s = l.current) == null ? void 0 : s.children[0]).focus();
|
|
24
|
+
}, [t]), c(() => (i.current = !1, () => {
|
|
25
|
+
i.current = !0;
|
|
26
|
+
}), []), c(() => {
|
|
27
|
+
n && n(e);
|
|
28
|
+
}, [n, e]), /* @__PURE__ */ a("span", { ref: l, children: /* @__PURE__ */ D(
|
|
35
29
|
"button",
|
|
36
30
|
{
|
|
37
|
-
className: f(
|
|
38
|
-
[
|
|
39
|
-
[
|
|
31
|
+
className: f(o["select-listbox-trigger"], {
|
|
32
|
+
[o[`select-listbox-trigger--${b}`]]: b,
|
|
33
|
+
[o["select-listbox-trigger--bold"]]: x
|
|
40
34
|
}),
|
|
41
35
|
type: "button",
|
|
42
|
-
onClick:
|
|
43
|
-
onKeyDown:
|
|
36
|
+
onClick: y,
|
|
37
|
+
onKeyDown: v,
|
|
44
38
|
"aria-expanded": t,
|
|
45
39
|
"aria-haspopup": "listbox",
|
|
46
40
|
"aria-label": `${e.label}`,
|
|
47
|
-
disabled:
|
|
48
|
-
"aria-controls":
|
|
49
|
-
ref:
|
|
41
|
+
disabled: h,
|
|
42
|
+
"aria-controls": w,
|
|
43
|
+
...u && { ref: u },
|
|
50
44
|
children: [
|
|
51
|
-
e[
|
|
52
|
-
/* @__PURE__ */
|
|
45
|
+
/* @__PURE__ */ a("span", { className: o["select-listbox-trigger-label"], children: e[m] }),
|
|
46
|
+
/* @__PURE__ */ a(
|
|
53
47
|
E,
|
|
54
48
|
{
|
|
55
|
-
className: f(
|
|
56
|
-
[
|
|
49
|
+
className: f(o["select-listbox-trigger-icon"], {
|
|
50
|
+
[o["select-listbox-trigger-icon--open"]]: t
|
|
57
51
|
}),
|
|
58
52
|
name: "CheveronDown",
|
|
59
53
|
size: 16
|
|
@@ -61,9 +55,9 @@ const O = ({
|
|
|
61
55
|
)
|
|
62
56
|
]
|
|
63
57
|
}
|
|
64
|
-
);
|
|
65
|
-
};
|
|
58
|
+
) });
|
|
59
|
+
});
|
|
66
60
|
export {
|
|
67
|
-
|
|
61
|
+
P as SelectButton
|
|
68
62
|
};
|
|
69
63
|
//# sourceMappingURL=SelectButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectButton.js","sources":["../../../../src/components/SelectListbox/components/SelectButton.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useEffect, useRef } from 'react';\n\nimport type {KeyboardEvent} from 'react';\nimport type { OptionValue, SelectValue } from 'components/SelectListbox/SelectProvider';\n\nimport styles from 'components/SelectListbox/SelectListbox.module.css';\nimport { Icon } from 'components/Icon';\nimport { useSelect } from 'components/SelectListbox/SelectProvider';\n\nexport interface SelectButtonProps {\n variant?: 'noborder' | 'pill' | 'pillLeft' | 'pillRight';\n onChange?: (option: OptionValue) => void;\n buttonLabelProp?: string;\n buttonLabelBold?: boolean;\n disabled?: boolean;\n}\n\nexport const SelectButton = ({\n variant
|
|
1
|
+
{"version":3,"file":"SelectButton.js","sources":["../../../../src/components/SelectListbox/components/SelectButton.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useEffect, useRef, forwardRef } from 'react';\n\nimport type { KeyboardEvent } from 'react';\nimport type { OptionValue, SelectValue } from 'components/SelectListbox/SelectProvider';\n\nimport styles from 'components/SelectListbox/SelectListbox.module.css';\nimport { Icon } from 'components/Icon';\nimport { useSelect } from 'components/SelectListbox/SelectProvider';\n\nexport interface SelectButtonProps {\n variant?: 'noborder' | 'pill' | 'pillLeft' | 'pillRight';\n onChange?: (option: OptionValue) => void;\n buttonLabelProp?: string;\n buttonLabelBold?: boolean;\n disabled?: boolean;\n}\n\nexport const SelectButton = forwardRef<HTMLButtonElement, SelectButtonProps>((props, ref) => {\n const { variant, onChange, buttonLabelProp = 'label', buttonLabelBold, disabled = false } = props;\n const buttonWrapper = useRef<HTMLSpanElement>(null);\n const isFirstRender = useRef(true);\n const { listboxId, isOpen, selectedValue, toggleListbox, setIsOpen, setActiveIndex, options } = useSelect() || {};\n\n const onTriggerKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n return;\n }\n break;\n case 'Escape':\n if (isOpen) {\n event.stopPropagation();\n setActiveIndex(options.findIndex((option) => option.value === selectedValue?.value));\n setIsOpen(false);\n }\n break;\n }\n };\n\n useEffect(() => {\n isOpen\n ? (buttonWrapper.current?.children[0] as HTMLButtonElement).blur()\n : !isFirstRender.current && (buttonWrapper.current?.children[0] as HTMLButtonElement).focus();\n }, [isOpen]);\n\n useEffect(() => {\n isFirstRender.current = false;\n\n return () => {\n isFirstRender.current = true;\n };\n }, []);\n\n useEffect(() => {\n if (onChange) onChange(selectedValue);\n }, [onChange, selectedValue]);\n\n return (\n <span ref={buttonWrapper}>\n <button\n className={clsx(styles['select-listbox-trigger'], {\n [styles[`select-listbox-trigger--${variant}`]]: variant,\n [styles['select-listbox-trigger--bold']]: buttonLabelBold,\n })}\n type=\"button\"\n onClick={toggleListbox}\n onKeyDown={onTriggerKeyDown}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-label={`${selectedValue.label}`}\n disabled={disabled}\n aria-controls={listboxId}\n {...(ref && { ref: ref })}\n >\n <span className={styles['select-listbox-trigger-label']}>\n {selectedValue[buttonLabelProp as keyof SelectValue]}\n </span>\n\n <Icon\n className={clsx(styles['select-listbox-trigger-icon'], {\n [styles['select-listbox-trigger-icon--open']]: isOpen,\n })}\n name=\"CheveronDown\"\n size={16}\n />\n </button>\n </span>\n );\n});\n"],"names":["SelectButton","forwardRef","props","ref","variant","onChange","buttonLabelProp","buttonLabelBold","disabled","buttonWrapper","useRef","isFirstRender","listboxId","isOpen","selectedValue","toggleListbox","setIsOpen","setActiveIndex","options","useSelect","onTriggerKeyDown","event","option","useEffect","_a","_b","jsx","jsxs","clsx","styles","Icon"],"mappings":";;;;;;AAkBO,MAAMA,IAAeC,EAAiD,CAACC,GAAOC,MAAQ;AACrF,QAAA,EAAE,SAAAC,GAAS,UAAAC,GAAU,iBAAAC,IAAkB,SAAS,iBAAAC,GAAiB,UAAAC,IAAW,GAAU,IAAAN,GACtFO,IAAgBC,EAAwB,IAAI,GAC5CC,IAAgBD,EAAO,EAAI,GAC3B,EAAE,WAAAE,GAAW,QAAAC,GAAQ,eAAAC,GAAe,eAAAC,GAAe,WAAAC,GAAW,gBAAAC,GAAgB,SAAAC,EAAQ,IAAIC,EAAU,KAAK,CAAA,GAEzGC,IAAmB,CAACC,MAA4C;AACpE,YAAQA,EAAM,KAAK;AAAA,MACjB,KAAK;AAEH,YADAA,EAAM,eAAe,GACjB,CAACR,GAAQ;AACX,UAAAG,EAAU,EAAI;AACd;AAAA,QACF;AACA;AAAA,MACF,KAAK;AACH,QAAIH,MACFQ,EAAM,gBAAgB,GACPJ,EAAAC,EAAQ,UAAU,CAACI,MAAWA,EAAO,WAAUR,KAAA,gBAAAA,EAAe,MAAK,CAAC,GACnFE,EAAU,EAAK;AAEjB;AAAA,IACJ;AAAA,EAAA;AAGF,SAAAO,EAAU,MAAM;;AACd,IAAAV,MACKW,IAAAf,EAAc,YAAd,gBAAAe,EAAuB,SAAS,IAAyB,SAC1D,CAACb,EAAc,aAAYc,IAAAhB,EAAc,YAAd,gBAAAgB,EAAuB,SAAS,IAAyB;EAAM,GAC7F,CAACZ,CAAM,CAAC,GAEXU,EAAU,OACRZ,EAAc,UAAU,IAEjB,MAAM;AACX,IAAAA,EAAc,UAAU;AAAA,EAAA,IAEzB,CAAE,CAAA,GAELY,EAAU,MAAM;AACV,IAAAlB,KAAUA,EAASS,CAAa;AAAA,EAAA,GACnC,CAACT,GAAUS,CAAa,CAAC,GAG1B,gBAAAY,EAAC,QAAK,EAAA,KAAKjB,GACT,UAAA,gBAAAkB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKC,EAAO,wBAAwB,GAAG;AAAA,QAChD,CAACA,EAAO,2BAA2BzB,CAAO,EAAE,CAAC,GAAGA;AAAA,QAChD,CAACyB,EAAO,8BAA8B,CAAC,GAAGtB;AAAA,MAAA,CAC3C;AAAA,MACD,MAAK;AAAA,MACL,SAASQ;AAAA,MACT,WAAWK;AAAA,MACX,iBAAeP;AAAA,MACf,iBAAc;AAAA,MACd,cAAY,GAAGC,EAAc,KAAK;AAAA,MAClC,UAAAN;AAAA,MACA,iBAAeI;AAAA,MACd,GAAIT,KAAO,EAAE,KAAAA,EAAS;AAAA,MAEvB,UAAA;AAAA,QAAA,gBAAAuB,EAAC,UAAK,WAAWG,EAAO,8BAA8B,GACnD,UAAAf,EAAcR,CAAoC,GACrD;AAAA,QAEA,gBAAAoB;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,WAAWF,EAAKC,EAAO,6BAA6B,GAAG;AAAA,cACrD,CAACA,EAAO,mCAAmC,CAAC,GAAGhB;AAAA,YAAA,CAChD;AAAA,YACD,MAAK;AAAA,YACL,MAAM;AAAA,UAAA;AAAA,QACR;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,EAAA,CAAA;AAEJ,CAAC;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as c } from "react/jsx-runtime";
|
|
2
2
|
import { useRef as i, useCallback as u, useEffect as l } from "react";
|
|
3
3
|
import { useSelect as m } from "../SelectProvider.js";
|
|
4
|
-
import { s as f } from "../../../SelectListbox.module-
|
|
4
|
+
import { s as f } from "../../../SelectListbox.module-iJtzAajj.js";
|
|
5
5
|
const E = ({ children: o }) => {
|
|
6
6
|
const { isOpen: r, setIsOpen: n } = m(), t = i(null), e = u(
|
|
7
7
|
({ target: s }) => {
|
|
@@ -2,51 +2,51 @@ import { jsx as d } from "react/jsx-runtime";
|
|
|
2
2
|
import { c as v } from "../../../clsx-DB4S2d7J.js";
|
|
3
3
|
import { useRef as D, useEffect as p } from "react";
|
|
4
4
|
import { useSelect as y } from "../SelectProvider.js";
|
|
5
|
-
import { s as b } from "../../../SelectListbox.module-
|
|
6
|
-
const S = ({ option:
|
|
7
|
-
const
|
|
8
|
-
|
|
5
|
+
import { s as b } from "../../../SelectListbox.module-iJtzAajj.js";
|
|
6
|
+
const S = ({ option: t, index: l, children: m }) => {
|
|
7
|
+
const o = D(null), { isOpen: r, activeIndex: s, setActiveIndex: c, selectedValue: f, setSelectedValue: u, setIsOpen: i, options: a } = y(), w = (e) => {
|
|
8
|
+
u(a[e]), i(!1);
|
|
9
9
|
}, k = (e) => {
|
|
10
10
|
switch (e.key) {
|
|
11
11
|
case "Tab":
|
|
12
|
-
e.preventDefault(),
|
|
12
|
+
e.preventDefault(), r && i(!1);
|
|
13
13
|
break;
|
|
14
14
|
case "ArrowDown":
|
|
15
15
|
case "ArrowUp":
|
|
16
|
-
if (e.preventDefault(), !
|
|
16
|
+
if (e.preventDefault(), !r)
|
|
17
17
|
return;
|
|
18
|
-
e.key === "ArrowDown" &&
|
|
18
|
+
e.key === "ArrowDown" && s < a.length - 1 && c(s + 1), e.key === "ArrowUp" && s > 0 && c(s - 1);
|
|
19
19
|
break;
|
|
20
20
|
case "Enter":
|
|
21
|
-
e.preventDefault(),
|
|
21
|
+
e.preventDefault(), a != null && a.length && s > -1 && !a[s].disabled && w(s);
|
|
22
22
|
break;
|
|
23
23
|
case "Escape":
|
|
24
|
-
|
|
24
|
+
r && (e.stopPropagation(), i(!1));
|
|
25
25
|
break;
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
28
|
return p(() => {
|
|
29
|
-
var e,
|
|
30
|
-
l ===
|
|
31
|
-
}, [
|
|
32
|
-
|
|
33
|
-
}, [l,
|
|
29
|
+
var e, n;
|
|
30
|
+
l === s && (r ? (e = o.current) == null || e.focus() : (n = o.current) == null || n.blur());
|
|
31
|
+
}, [s, l, r]), p(() => {
|
|
32
|
+
f.value === t.value && c(l);
|
|
33
|
+
}, [l, t.value, f.value, c]), /* @__PURE__ */ d(
|
|
34
34
|
"li",
|
|
35
35
|
{
|
|
36
36
|
className: v(b["select-listbox-option"], {
|
|
37
|
-
[b["select-listbox-option--active"]]: l ===
|
|
37
|
+
[b["select-listbox-option--active"]]: l === s
|
|
38
38
|
}),
|
|
39
|
-
...!
|
|
40
|
-
onClick: () =>
|
|
39
|
+
...!t.disabled && {
|
|
40
|
+
onClick: () => u(t),
|
|
41
41
|
onKeyDown: k,
|
|
42
42
|
tabIndex: 0,
|
|
43
43
|
role: "option",
|
|
44
|
-
"aria-selected":
|
|
44
|
+
"aria-selected": f.value === t.value
|
|
45
45
|
},
|
|
46
|
-
ref:
|
|
46
|
+
ref: o,
|
|
47
47
|
children: m
|
|
48
48
|
},
|
|
49
|
-
`${
|
|
49
|
+
`${t.value}`
|
|
50
50
|
);
|
|
51
51
|
};
|
|
52
52
|
export {
|