@uva-glass/component-library 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +1 -1
  2. package/dist/SelectListbox.module-iJtzAajj.js +23 -0
  3. package/dist/SelectListbox.module-iJtzAajj.js.map +1 -0
  4. package/dist/assets/Button.css +1 -1
  5. package/dist/assets/Card.css +1 -1
  6. package/dist/assets/IconButton.css +1 -1
  7. package/dist/assets/InfoMessage.css +1 -1
  8. package/dist/assets/SectionNotification.css +1 -1
  9. package/dist/assets/SelectListbox.css +1 -1
  10. package/dist/components/Button/Button.stories.js +1 -1
  11. package/dist/components/Icon/icons/index.js +52 -52
  12. package/dist/components/Icon/icons/index.js.map +1 -1
  13. package/dist/components/IconButton/IconButton.stories.js +1 -1
  14. package/dist/components/SelectListbox/SelectListBox.stories.js +19 -19
  15. package/dist/components/SelectListbox/SelectListBox.stories.js.map +1 -1
  16. package/dist/components/SelectListbox/SelectListbox.d.ts +3 -5
  17. package/dist/components/SelectListbox/SelectListbox.js +46 -34
  18. package/dist/components/SelectListbox/SelectListbox.js.map +1 -1
  19. package/dist/components/SelectListbox/SelectProvider.js +20 -18
  20. package/dist/components/SelectListbox/SelectProvider.js.map +1 -1
  21. package/dist/components/SelectListbox/components/SelectButton.d.ts +1 -1
  22. package/dist/components/SelectListbox/components/SelectButton.js +30 -36
  23. package/dist/components/SelectListbox/components/SelectButton.js.map +1 -1
  24. package/dist/components/SelectListbox/components/SelectContainer.js +1 -1
  25. package/dist/components/SelectListbox/components/SelectOption.js +20 -20
  26. package/dist/components/SelectListbox/components/SelectOption.js.map +1 -1
  27. package/dist/components/SelectListbox/components/SelectOptionBox.d.ts +3 -4
  28. package/dist/components/SelectListbox/components/SelectOptionBox.js +14 -27
  29. package/dist/components/SelectListbox/components/SelectOptionBox.js.map +1 -1
  30. package/dist/components/hooks/usePositionedFloaters.d.ts +22 -0
  31. package/dist/components/hooks/usePositionedFloaters.js +68 -0
  32. package/dist/components/hooks/usePositionedFloaters.js.map +1 -0
  33. package/dist/{index-CZx-Vhwf.js → index-DHAcOIyn.js} +2172 -2177
  34. package/dist/index-DHAcOIyn.js.map +1 -0
  35. package/package.json +26 -26
  36. package/dist/SelectListbox.module-wZfvJXBJ.js +0 -22
  37. package/dist/SelectListbox.module-wZfvJXBJ.js.map +0 -1
  38. 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-CZx-Vhwf.js";
3
- import { SelectListbox as a } from "./SelectListbox.js";
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 = d, g = (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 = g, f = (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" })), b = f, w = (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" })), x = w, r = [
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: "Nerderlands",
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
- ], M = {
22
+ ], S = {
23
23
  title: "Organisms/SelectListbox",
24
- component: a,
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: "200px",
93
+ maxOptionHeight: "20rem",
94
94
  optionPositionRight: !1,
95
95
  onChange: c()
96
- }, E = (t) => /* @__PURE__ */ l("div", { style: { width: "10rem" }, children: /* @__PURE__ */ l(a, { ...t, children: r.map(({ label: i, value: o }, n) => /* @__PURE__ */ l(a.SelectOption, { option: { label: i, value: o }, index: n, children: i }, `${o}`)) }) }), u = E.bind({});
97
- u.args = {
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 v = ({ label: t, value: i }) => /* @__PURE__ */ h("div", { style: { display: "flex" }, children: [
100
+ const w = ({ label: t, value: i }) => /* @__PURE__ */ h("div", { style: { display: "flex" }, children: [
101
101
  {
102
- NL: /* @__PURE__ */ l(p, { style: { width: "24px", height: "24px", marginRight: "10px" } }),
103
- EN: /* @__PURE__ */ l(m, { style: { width: "24px", height: "24px", marginRight: "10px" } }),
104
- DU: /* @__PURE__ */ l(b, { style: { width: "24px", height: "24px", marginRight: "10px" } }),
105
- FR: /* @__PURE__ */ l(x, { style: { width: "24px", height: "24px", marginRight: "10px" } })
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
- ] }), F = (t) => /* @__PURE__ */ l("div", { style: { width: "10rem" }, children: /* @__PURE__ */ l(a, { ...t, children: t.options.map(({ label: i, value: o }, n) => /* @__PURE__ */ l(a.SelectOption, { option: { label: i, value: o }, index: n, children: /* @__PURE__ */ l(v, { label: i, value: o }) }, `${o}`)) }) }), y = F.bind({});
109
- y.args = {
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
- u as SelectListboxExample,
114
- y as WithComponentOption,
115
- M as default
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?: string;
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: ({ variant, onChange, buttonLabelProp, buttonLabelBold, disabled, }: import('./components/SelectButton').SelectButtonProps) => import("react/jsx-runtime").JSX.Element;
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: ({ optionPositionRight, maxOptionHeight, children }: import('./components/SelectOptionBox').SelectOptionBoxProps) => import("react/jsx-runtime").JSX.Element | null;
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 e, jsxs as O } from "react/jsx-runtime";
2
- import { SelectButton as o } from "./components/SelectButton.js";
3
- import { SelectContainer as r } from "./components/SelectContainer.js";
4
- import { SelectOptionBox as i } from "./components/SelectOptionBox.js";
5
- import { SelectOption as a } from "./components/SelectOption.js";
6
- import { SelectProvider as d } from "./SelectProvider.js";
7
- const t = ({
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: n,
10
- optionPositionRight: c,
11
- defaultValue: m = -1,
12
- maxOptionHeight: p,
13
- disabled: S,
14
- buttonLabelProp: f = "label",
15
- buttonLabelBold: x,
16
- onChange: s,
17
- children: B
18
- }) => /* @__PURE__ */ e(d, { options: l, defaultValue: m, children: /* @__PURE__ */ O(r, { children: [
19
- /* @__PURE__ */ e(
20
- o,
21
- {
22
- disabled: S,
23
- buttonLabelProp: f,
24
- buttonLabelBold: x,
25
- variant: n,
26
- onChange: s
27
- }
28
- ),
29
- /* @__PURE__ */ e(i, { maxOptionHeight: p, optionPositionRight: c, children: B })
30
- ] }) });
31
- t.SelectOption = a;
32
- t.SelectButton = o;
33
- t.SelectContainer = r;
34
- t.SelectOptionBox = i;
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
- t as SelectListbox
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?: string;\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: Add dynamic positioning/sizing of the optionbox based on the availible space\n * Fixed positioned so it will not be affected by the parent container and will always be on top\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 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 />\n <SelectOptionBox maxOptionHeight={maxOptionHeight} optionPositionRight={optionPositionRight}>\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","jsx","SelectProvider","SelectContainer","SelectButton","SelectOptionBox","SelectOption"],"mappings":";;;;;;AAwCO,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,MAEK,gBAAAC,EAAAC,GAAA,EAAe,SAAAX,GAAkB,cAAAG,GAChC,4BAACS,GACC,EAAA,UAAA;AAAA,EAAA,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,UAAAR;AAAA,MACA,iBAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,SAAAN;AAAA,MACA,UAAAO;AAAA,IAAA;AAAA,EACF;AAAA,EACC,gBAAAE,EAAAI,GAAA,EAAgB,iBAAAV,GAAkC,qBAAAF,GAChD,UAAAO,EACH,CAAA;AAAA,EACF,CAAA,EACF,CAAA;AAIJV,EAAc,eAAegB;AAC7BhB,EAAc,eAAec;AAC7Bd,EAAc,kBAAkBa;AAChCb,EAAc,kBAAkBe;"}
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 m } from "react/jsx-runtime";
2
- import { createContext as g, useState as l, useRef as p, useId as C, useContext as P } from "react";
3
- const d = g({}), L = ({ options: e, defaultValue: o, children: i }) => {
4
- const [c, v] = l({ value: "", label: "" }), [x, s] = l(!1), [f, r] = l(-1), I = p(C()), b = () => {
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
- }, u = (t) => e.find((n) => n.value === t) || {
6
+ }, a = (t) => e.find((l) => l.value === t) || {
7
7
  value: -1,
8
8
  label: "",
9
9
  selectedLabel: "-"
10
- }, a = (t) => {
11
- const n = e.findIndex((S) => S.value === t.value);
12
- r(n), v(t), s(!1);
10
+ }, d = (t) => {
11
+ const l = e.findIndex((S) => S.value === t.value);
12
+ u(l), x(t), s(!1);
13
13
  };
14
- return o !== -1 && !c.value && a(u(o)), /* @__PURE__ */ m(
15
- d.Provider,
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: c,
20
- setSelectedValue: a,
21
- isOpen: x,
21
+ selectedValue: r,
22
+ setSelectedValue: d,
23
+ isOpen: f,
22
24
  setIsOpen: s,
23
25
  toggleListbox: b,
24
- getValue: u,
25
- activeIndex: f,
26
- setActiveIndex: r,
26
+ getValue: a,
27
+ activeIndex: n,
28
+ setActiveIndex: u,
27
29
  listboxId: I.current
28
30
  },
29
- children: i
31
+ children: v
30
32
  }
31
33
  );
32
34
  }, O = () => {
33
- const e = P(d);
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,GAIvC,gBAAAkB;AAAA,IAACtB,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,GAEakB,IAAY,MAAM;AACvB,QAAAC,IAAUC,EAAWzB,CAAa;AAExC,MAAIwB,MAAY;AAAiB,UAAA,IAAI,MAAM,iDAAiD;AAErF,SAAAA;AACT;"}
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: ({ variant, onChange, buttonLabelProp, buttonLabelBold, disabled, }: SelectButtonProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const SelectButton: import('react').ForwardRefExoticComponent<SelectButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -1,59 +1,53 @@
1
- import { jsxs as w, jsx as D } from "react/jsx-runtime";
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 p, useEffect as c } from "react";
4
- import { s } from "../../../SelectListbox.module-wZfvJXBJ.js";
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 R } from "../SelectProvider.js";
7
- const O = ({
8
- variant: a,
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
- u(!0);
12
+ p(!0);
19
13
  return;
20
14
  }
21
15
  break;
22
16
  case "Escape":
23
- t && (r.stopPropagation(), y(I.findIndex((o) => o.value === (e == null ? void 0 : e.value))), u(!1));
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, o;
29
- t ? (r = l.current) == null || r.blur() : !n.current && ((o = l.current) == null || o.focus());
30
- }, [t]), c(() => {
31
- i && i(e);
32
- }, [i, e]), c(() => (n.current = !1, () => {
33
- n.current = !0;
34
- }), []), /* @__PURE__ */ w(
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(s["select-listbox-trigger"], {
38
- [s[`select-listbox-trigger--${a}`]]: a,
39
- [s["select-listbox-trigger--bold"]]: m
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: d,
43
- onKeyDown: k,
36
+ onClick: y,
37
+ onKeyDown: v,
44
38
  "aria-expanded": t,
45
39
  "aria-haspopup": "listbox",
46
40
  "aria-label": `${e.label}`,
47
- disabled: x,
48
- "aria-controls": g,
49
- ref: l,
41
+ disabled: h,
42
+ "aria-controls": w,
43
+ ...u && { ref: u },
50
44
  children: [
51
- e[b],
52
- /* @__PURE__ */ D(
45
+ /* @__PURE__ */ a("span", { className: o["select-listbox-trigger-label"], children: e[m] }),
46
+ /* @__PURE__ */ a(
53
47
  E,
54
48
  {
55
- className: f(s["select-listbox-trigger-icon"], {
56
- [s["select-listbox-trigger-icon--open"]]: t
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
- O as SelectButton
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,\n onChange,\n buttonLabelProp = 'label',\n buttonLabelBold,\n disabled = false,\n}: SelectButtonProps) => {\n const selectButtonRef = useRef<HTMLButtonElement>(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 ? selectButtonRef.current?.blur() : !isFirstRender.current && selectButtonRef.current?.focus();\n }, [isOpen]);\n\n useEffect(() => {\n if (onChange) onChange(selectedValue);\n }, [onChange, selectedValue]);\n\n useEffect(() => {\n isFirstRender.current = false;\n\n return () => {\n isFirstRender.current = true;\n };\n }, []);\n\n return (\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={selectButtonRef}\n >\n {selectedValue[buttonLabelProp as keyof SelectValue]}\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 );\n};\n"],"names":["SelectButton","variant","onChange","buttonLabelProp","buttonLabelBold","disabled","selectButtonRef","useRef","isFirstRender","listboxId","isOpen","selectedValue","toggleListbox","setIsOpen","setActiveIndex","options","useSelect","onTriggerKeyDown","event","option","useEffect","_a","_b","jsxs","clsx","styles","jsx","Icon"],"mappings":";;;;;;AAkBO,MAAMA,IAAe,CAAC;AAAA,EAC3B,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,iBAAAC;AAAA,EACA,UAAAC,IAAW;AACb,MAAyB;AACjB,QAAAC,IAAkBC,EAA0B,IAAI,GAChDC,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;;AACL,IAAAV,KAAAW,IAAAf,EAAgB,YAAhB,QAAAe,EAAyB,SAAS,CAACb,EAAc,aAAWc,IAAAhB,EAAgB,YAAhB,QAAAgB,EAAyB;AAAA,EAAM,GACnG,CAACZ,CAAM,CAAC,GAEXU,EAAU,MAAM;AACV,IAAAlB,KAAUA,EAASS,CAAa;AAAA,EAAA,GACnC,CAACT,GAAUS,CAAa,CAAC,GAE5BS,EAAU,OACRZ,EAAc,UAAU,IAEjB,MAAM;AACX,IAAAA,EAAc,UAAU;AAAA,EAAA,IAEzB,CAAE,CAAA,GAGH,gBAAAe;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKC,EAAO,wBAAwB,GAAG;AAAA,QAChD,CAACA,EAAO,2BAA2BxB,CAAO,EAAE,CAAC,GAAGA;AAAA,QAChD,CAACwB,EAAO,8BAA8B,CAAC,GAAGrB;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,MACf,KAAKH;AAAA,MAEJ,UAAA;AAAA,QAAAK,EAAcR,CAAoC;AAAA,QAEnD,gBAAAuB;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,WAAWH,EAAKC,EAAO,6BAA6B,GAAG;AAAA,cACrD,CAACA,EAAO,mCAAmC,CAAC,GAAGf;AAAA,YAAA,CAChD;AAAA,YACD,MAAK;AAAA,YACL,MAAM;AAAA,UAAA;AAAA,QACR;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
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-wZfvJXBJ.js";
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-wZfvJXBJ.js";
6
- const S = ({ option: s, index: l, children: m }) => {
7
- const f = D(null), { isOpen: c, activeIndex: r, setActiveIndex: o, selectedValue: u, setSelectedValue: n, setIsOpen: i, options: t } = y(), w = (e) => {
8
- n(t[e]), i(!1);
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(), c && i(!1);
12
+ e.preventDefault(), r && i(!1);
13
13
  break;
14
14
  case "ArrowDown":
15
15
  case "ArrowUp":
16
- if (e.preventDefault(), !c)
16
+ if (e.preventDefault(), !r)
17
17
  return;
18
- e.key === "ArrowDown" && r < t.length - 1 && o(Number((a) => a + 1)), e.key === "ArrowUp" && r > 0 && o(Number((a) => a - 1));
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(), t != null && t.length && r > -1 && !t[r].disabled && w(r);
21
+ e.preventDefault(), a != null && a.length && s > -1 && !a[s].disabled && w(s);
22
22
  break;
23
23
  case "Escape":
24
- c && (e.stopPropagation(), i(!1));
24
+ r && (e.stopPropagation(), i(!1));
25
25
  break;
26
26
  }
27
27
  };
28
28
  return p(() => {
29
- var e, a;
30
- l === r && (c ? (e = f.current) == null || e.focus() : (a = f.current) == null || a.blur());
31
- }, [r, l, c]), p(() => {
32
- u.value === s.value && o(l);
33
- }, [l, s.value, u.value, o]), /* @__PURE__ */ d(
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 === r
37
+ [b["select-listbox-option--active"]]: l === s
38
38
  }),
39
- ...!s.disabled && {
40
- onClick: () => n(s),
39
+ ...!t.disabled && {
40
+ onClick: () => u(t),
41
41
  onKeyDown: k,
42
42
  tabIndex: 0,
43
43
  role: "option",
44
- "aria-selected": u.value === s.value
44
+ "aria-selected": f.value === t.value
45
45
  },
46
- ref: f,
46
+ ref: o,
47
47
  children: m
48
48
  },
49
- `${s.value}`
49
+ `${t.value}`
50
50
  );
51
51
  };
52
52
  export {