@solibo/solibo-ui 1.0.5 → 1.0.7
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/dist/assets/index.css +1 -1
- package/dist/assets/index10.css +1 -1
- package/dist/assets/index11.css +1 -1
- package/dist/assets/index12.css +1 -1
- package/dist/assets/index13.css +1 -1
- package/dist/assets/index14.css +1 -1
- package/dist/assets/index15.css +1 -1
- package/dist/assets/index19.css +1 -1
- package/dist/assets/index20.css +1 -1
- package/dist/assets/index26.css +1 -1
- package/dist/assets/index3.css +1 -1
- package/dist/assets/index31.css +1 -1
- package/dist/assets/index32.css +1 -1
- package/dist/assets/index36.css +1 -1
- package/dist/assets/index38.css +1 -1
- package/dist/assets/index39.css +1 -1
- package/dist/assets/index4.css +1 -1
- package/dist/assets/index42.css +1 -1
- package/dist/assets/index5.css +1 -1
- package/dist/assets/index6.css +1 -1
- package/dist/assets/index7.css +1 -1
- package/dist/assets/index8.css +1 -1
- package/dist/assets/index9.css +1 -1
- package/dist/components/aside/index.cjs +1 -1
- package/dist/components/aside/index.js +15 -15
- package/dist/components/button/index.cjs +1 -1
- package/dist/components/button/index.cjs.map +1 -1
- package/dist/components/button/index.js +25 -22
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/card/index.cjs +1 -1
- package/dist/components/card/index.js +38 -38
- package/dist/components/checkbox/index.cjs +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/controls/index.cjs +1 -1
- package/dist/components/controls/index.cjs.map +1 -1
- package/dist/components/controls/index.js +15 -14
- package/dist/components/controls/index.js.map +1 -1
- package/dist/components/dialog/index.cjs +1 -1
- package/dist/components/dialog/index.cjs.map +1 -1
- package/dist/components/dialog/index.js +56 -24
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/dropdown/index.cjs +1 -1
- package/dist/components/dropdown/index.js +101 -101
- package/dist/components/editor/index.cjs +1 -1
- package/dist/components/editor/index.js +1 -1
- package/dist/components/header/index.cjs +1 -1
- package/dist/components/header/index.js +10 -10
- package/dist/components/icon/index.cjs +1 -1
- package/dist/components/icon/index.js +1 -1
- package/dist/components/iframe/index.cjs +1 -1
- package/dist/components/iframe/index.cjs.map +1 -1
- package/dist/components/iframe/index.js +56 -58
- package/dist/components/iframe/index.js.map +1 -1
- package/dist/components/input/index.cjs +1 -1
- package/dist/components/input/index.js +2 -2
- package/dist/components/message/index.cjs +1 -1
- package/dist/components/message/index.cjs.map +1 -1
- package/dist/components/message/index.js +31 -30
- package/dist/components/message/index.js.map +1 -1
- package/dist/components/messages/index.cjs +1 -1
- package/dist/components/messages/index.cjs.map +1 -1
- package/dist/components/messages/index.js +34 -31
- package/dist/components/messages/index.js.map +1 -1
- package/dist/components/nav/index.cjs +1 -1
- package/dist/components/nav/index.js +22 -22
- package/dist/components/object/index.cjs +1 -1
- package/dist/components/object/index.js +1 -1
- package/dist/components/portal/index.cjs +1 -1
- package/dist/components/portal/index.js +17 -17
- package/dist/components/search/index.cjs +1 -1
- package/dist/components/search/index.cjs.map +1 -1
- package/dist/components/search/index.js +44 -50
- package/dist/components/search/index.js.map +1 -1
- package/dist/components/select/index.cjs +1 -1
- package/dist/components/select/index.js +2 -2
- package/dist/components/sortable/index.cjs +1 -1
- package/dist/components/sortable/index.js +1 -1
- package/dist/components/table/index.cjs +1 -1
- package/dist/components/table/index.js +1 -1
- package/dist/components/textarea/index.cjs +1 -1
- package/dist/components/textarea/index.js +1 -1
- package/dist/components/toast/index.cjs +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/toasts/index.cjs +1 -1
- package/dist/components/toasts/index.js +1 -1
- package/dist/components/toggle/index.cjs +1 -1
- package/dist/components/toggle/index.js +1 -1
- package/dist/components/tooltip/index.cjs +1 -1
- package/dist/components/tooltip/index.js +6 -6
- package/dist/{icons-CH48JQqt.js → icons-BFgf_lJN.js} +13 -1
- package/dist/icons-BFgf_lJN.js.map +1 -0
- package/dist/icons-Dx0NQYLH.cjs +2 -0
- package/dist/icons-Dx0NQYLH.cjs.map +1 -0
- package/dist/{index-BrGCs_7h.js → index-BHgGZxsR.js} +2 -2
- package/dist/{index-BrGCs_7h.js.map → index-BHgGZxsR.js.map} +1 -1
- package/dist/{index-CIugi8vq.cjs → index-CEzqxRIu.cjs} +2 -2
- package/dist/{index-CIugi8vq.cjs.map → index-CEzqxRIu.cjs.map} +1 -1
- package/dist/{index-CRAuAHow.js → index-CMfR_USP.js} +2 -2
- package/dist/{index-CRAuAHow.js.map → index-CMfR_USP.js.map} +1 -1
- package/dist/{index-CSYOtiWJ.cjs → index-oL8GYbhj.cjs} +2 -2
- package/dist/{index-CSYOtiWJ.cjs.map → index-oL8GYbhj.cjs.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +20 -3
- package/dist/index.js +2 -2
- package/dist/tokens.css +7 -2
- package/dist/tokens.json +105 -33
- package/package.json +1 -1
- package/dist/icons-BROXUtPz.cjs +0 -2
- package/dist/icons-BROXUtPz.cjs.map +0 -1
- package/dist/icons-CH48JQqt.js.map +0 -1
|
@@ -1,52 +1,52 @@
|
|
|
1
1
|
import { jsxs as d, jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import { t as s } from "../../classix-DG18itHa.js";
|
|
3
|
-
import { Badge as
|
|
4
|
-
import { Checkbox as
|
|
5
|
-
import { Figure as
|
|
6
|
-
import { Icon as
|
|
7
|
-
import '../../assets/index32.css';const y = "
|
|
8
|
-
card:
|
|
9
|
-
head:
|
|
10
|
-
center:
|
|
11
|
-
content:
|
|
12
|
-
preview:
|
|
13
|
-
"preview-leading": "_preview-
|
|
14
|
-
"preview-trailing": "_preview-
|
|
15
|
-
"preview-content": "_preview-
|
|
16
|
-
margin:
|
|
17
|
-
clickable:
|
|
18
|
-
muted:
|
|
19
|
-
selected:
|
|
20
|
-
"image-top": "_image-
|
|
21
|
-
"image-left": "_image-
|
|
3
|
+
import { Badge as z } from "../badge/index.js";
|
|
4
|
+
import { Checkbox as w } from "../checkbox/index.js";
|
|
5
|
+
import { Figure as u } from "../figure/index.js";
|
|
6
|
+
import { Icon as v } from "../icon/index.js";
|
|
7
|
+
import '../../assets/index32.css';const N = "_card_zhirg_1", y = "_head_zhirg_27", j = "_center_zhirg_39", D = "_content_zhirg_51", E = "_preview_zhirg_57", I = "_margin_zhirg_97", T = "_clickable_zhirg_142", $ = "_muted_zhirg_157", k = "_selected_zhirg_162", e = {
|
|
8
|
+
card: N,
|
|
9
|
+
head: y,
|
|
10
|
+
center: j,
|
|
11
|
+
content: D,
|
|
12
|
+
preview: E,
|
|
13
|
+
"preview-leading": "_preview-leading_zhirg_68",
|
|
14
|
+
"preview-trailing": "_preview-trailing_zhirg_69",
|
|
15
|
+
"preview-content": "_preview-content_zhirg_89",
|
|
16
|
+
margin: I,
|
|
17
|
+
clickable: T,
|
|
18
|
+
muted: $,
|
|
19
|
+
selected: k,
|
|
20
|
+
"image-top": "_image-top_zhirg_167",
|
|
21
|
+
"image-left": "_image-left_zhirg_178"
|
|
22
22
|
}, G = ({
|
|
23
|
-
actions:
|
|
24
|
-
badge:
|
|
25
|
-
checkbox:
|
|
26
|
-
children:
|
|
27
|
-
emphasis:
|
|
23
|
+
actions: f,
|
|
24
|
+
badge: g,
|
|
25
|
+
checkbox: n,
|
|
26
|
+
children: o,
|
|
27
|
+
emphasis: p = "default",
|
|
28
28
|
header: _,
|
|
29
|
-
icon:
|
|
30
|
-
image:
|
|
29
|
+
icon: h,
|
|
30
|
+
image: a,
|
|
31
31
|
imagePosition: c = "top",
|
|
32
32
|
onClick: l,
|
|
33
33
|
preview: m,
|
|
34
|
-
variant:
|
|
35
|
-
}) => /* @__PURE__ */ d("article", { className: s(e.card,
|
|
36
|
-
l &&
|
|
34
|
+
variant: t = "default"
|
|
35
|
+
}) => /* @__PURE__ */ d("article", { className: s(e.card, p === "muted" && e.muted, l && e.clickable, (n == null ? void 0 : n.checked) && e.selected), "data-emphasis": p, "data-minimal": t === "minimal", onClick: l, onKeyDown: (i) => {
|
|
36
|
+
l && i.currentTarget === document.activeElement && (i.key === "Enter" || i.key === " ") && (i.preventDefault(), i.currentTarget.click());
|
|
37
37
|
}, tabIndex: l ? 0 : -1, "data-component": "card", children: [
|
|
38
|
-
|
|
38
|
+
a && t !== "minimal" && c === "top" && /* @__PURE__ */ r(u, { className: e[`image-${c}`], children: a }),
|
|
39
39
|
/* @__PURE__ */ d("section", { children: [
|
|
40
|
-
/* @__PURE__ */ d("div", { className: s(e.head,
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
/* @__PURE__ */ d("div", { className: s(e.head, t === "minimal" && e.center), children: [
|
|
41
|
+
n && /* @__PURE__ */ r("span", { onClick: (i) => i.stopPropagation(), children: /* @__PURE__ */ r(w, { ...n }) }),
|
|
42
|
+
a && t !== "minimal" && c === "left" && /* @__PURE__ */ r(u, { className: e[`image-${c}`], children: a }),
|
|
43
43
|
_,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
g && /* @__PURE__ */ r(z, { ...g }),
|
|
45
|
+
h && /* @__PURE__ */ r(v, { name: h, size: "medium" }),
|
|
46
|
+
f
|
|
47
47
|
] }),
|
|
48
|
-
|
|
49
|
-
m &&
|
|
48
|
+
o && t !== "minimal" && /* @__PURE__ */ r("div", { className: s(e.content, !!_ && e.margin), children: o }),
|
|
49
|
+
m && t !== "minimal" && /* @__PURE__ */ d("div", { className: s(e.preview, !!_ && e.margin), children: [
|
|
50
50
|
/* @__PURE__ */ r("span", { className: e["preview-leading"], children: m.leading }),
|
|
51
51
|
/* @__PURE__ */ r("span", { className: e["preview-content"], children: m.children }),
|
|
52
52
|
/* @__PURE__ */ r("span", { className: e["preview-trailing"], children: m.trailing })
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index33.css');const e=require("react/jsx-runtime"),x=require("../../icons-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index33.css');const e=require("react/jsx-runtime"),x=require("../../icons-Dx0NQYLH.cjs"),b=require("../loading/index.cjs"),h="_checkbox_1glqu_3",u={checkbox:h},k=({checked:s,disabled:t,isLoading:c,label:o,onChange:n,...i})=>{const r={"--icon-svg":x.iconSVG("check")};return e.jsxs("label",{className:u.checkbox,"data-component":"checkbox",children:[e.jsx("input",{checked:s,disabled:t||c,onChange:n,type:"checkbox",style:r,...i}),c&&e.jsx(b.Loading,{size:16,sticky:!0}),o&&o]})};exports.Checkbox=k;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs as h, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { i as x } from "../../icons-
|
|
2
|
+
import { i as x } from "../../icons-BFgf_lJN.js";
|
|
3
3
|
import { Loading as k } from "../loading/index.js";
|
|
4
4
|
import '../../assets/index33.css';const b = "_checkbox_1glqu_3", m = {
|
|
5
5
|
checkbox: b
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index36.css');const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index36.css');const l=require("react/jsx-runtime"),f=require("../../classix-5H4IWnMA.cjs"),r=require("react"),_=require("../button/index.cjs"),x="_controls_1p251_13",y="_inline_1p251_35",m="_fixed_1p251_40",e={controls:x,default:"_default_1p251_20",inline:y,fixed:m},k={primary:3,danger:2,secondary:1,tertiary:0,simple:0},g={default:e.default,fixed:e.fixed,inline:e.inline},h=o=>k[o.props.variant??"secondary"],j=({children:o,className:c,variant:d="default",...u})=>{const i=r.Children.toArray(o),a=[],s=[];i.forEach(n=>{r.isValidElement(n)&&n.type===_.Button?a.push(n):s.push(n)});const p=a.map((n,t)=>({button:n,index:t,rank:h(n)})).sort((n,t)=>n.rank-t.rank||n.index-t.index).map(({button:n,index:t})=>r.cloneElement(n,{key:n.key??t}));return i.length===0?null:l.jsxs("div",{className:f.t(e.controls,g[d],c),...u,"data-component":"controls",children:[s&&l.jsx("span",{children:s}),p]})};exports.Controls=j;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/controls/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport { Button, type ButtonProps } from '../button';\nimport styles from './styles.module.css';\n\nconst buttonVariantOrder = {\n primary: 3,\n danger: 2,\n secondary: 1,\n tertiary: 0,\n} satisfies Record<NonNullable<ButtonProps['variant']>, number>;\n\nconst variants = {\n default: styles.default,\n fixed: styles.fixed,\n inline: styles.inline,\n};\n\nexport type ControlsProps = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.ReactNode;\n variant?: keyof typeof variants;\n};\n\nconst getButtonRank = (button: React.ReactElement<ButtonProps>) =>\n buttonVariantOrder[button.props.variant ?? 'secondary'];\n\nexport const Controls = ({ children, className, variant = 'default', ...props }: ControlsProps) => {\n const childArray = Children.toArray(children);\n const buttons: React.ReactElement<ButtonProps>[] = [];\n const nonButtons: React.ReactNode[] = [];\n\n childArray.forEach((child) => {\n if (isValidElement<ButtonProps>(child) && child.type === Button) {\n buttons.push(child);\n } else {\n nonButtons.push(child);\n }\n });\n\n const sortedButtons = buttons\n .map((button, index) => ({ button, index, rank: getButtonRank(button) }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ button, index }) =>\n cloneElement(button, {\n key: button.key ?? index,\n })\n );\n\n if (childArray.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(styles.controls, variants[variant], className)}\n {...props}\n >\n {nonButtons && <span>{nonButtons}</span>}\n {sortedButtons}\n </div>\n );\n};\n"],"names":["buttonVariantOrder","primary","danger","secondary","tertiary","variants","default","styles","fixed","inline","getButtonRank","button","props","variant","Controls","children","className","childArray","Children","toArray","buttons","nonButtons","forEach","child","isValidElement","type","Button","push","sortedButtons","map","index","rank","sort","a","b","cloneElement","key","length","jsxs","cx","controls","jsx"],"mappings":"6UAMMA,EAAqB,CACzBC,QAAS,EACTC,OAAQ,EACRC,UAAW,EACXC,SAAU,
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/controls/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport { Button, type ButtonProps } from '../button';\nimport styles from './styles.module.css';\n\nconst buttonVariantOrder = {\n primary: 3,\n danger: 2,\n secondary: 1,\n tertiary: 0,\n simple: 0,\n} satisfies Record<NonNullable<ButtonProps['variant']>, number>;\n\nconst variants = {\n default: styles.default,\n fixed: styles.fixed,\n inline: styles.inline,\n};\n\nexport type ControlsProps = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.ReactNode;\n variant?: keyof typeof variants;\n};\n\nconst getButtonRank = (button: React.ReactElement<ButtonProps>) =>\n buttonVariantOrder[button.props.variant ?? 'secondary'];\n\nexport const Controls = ({ children, className, variant = 'default', ...props }: ControlsProps) => {\n const childArray = Children.toArray(children);\n const buttons: React.ReactElement<ButtonProps>[] = [];\n const nonButtons: React.ReactNode[] = [];\n\n childArray.forEach((child) => {\n if (isValidElement<ButtonProps>(child) && child.type === Button) {\n buttons.push(child);\n } else {\n nonButtons.push(child);\n }\n });\n\n const sortedButtons = buttons\n .map((button, index) => ({ button, index, rank: getButtonRank(button) }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ button, index }) =>\n cloneElement(button, {\n key: button.key ?? index,\n })\n );\n\n if (childArray.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(styles.controls, variants[variant], className)}\n {...props}\n >\n {nonButtons && <span>{nonButtons}</span>}\n {sortedButtons}\n </div>\n );\n};\n"],"names":["buttonVariantOrder","primary","danger","secondary","tertiary","simple","variants","default","styles","fixed","inline","getButtonRank","button","props","variant","Controls","children","className","childArray","Children","toArray","buttons","nonButtons","forEach","child","isValidElement","type","Button","push","sortedButtons","map","index","rank","sort","a","b","cloneElement","key","length","jsxs","cx","controls","jsx"],"mappings":"6UAMMA,EAAqB,CACzBC,QAAS,EACTC,OAAQ,EACRC,UAAW,EACXC,SAAU,EACVC,OAAQ,CACV,EAEMC,EAAW,CACfC,QAASC,EAAOD,QAChBE,MAAOD,EAAOC,MACdC,OAAQF,EAAOE,MACjB,EAOMC,EAAiBC,GACrBZ,EAAmBY,EAAOC,MAAMC,SAAW,WAAW,EAE3CC,EAAWA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWH,QAAAA,EAAU,UAAW,GAAGD,CAAqB,IAAM,CACjG,MAAMK,EAAaC,EAAAA,SAASC,QAAQJ,CAAQ,EACtCK,EAA6C,CAAA,EAC7CC,EAAgC,CAAA,EAEtCJ,EAAWK,QAASC,GAAU,CACxBC,EAAAA,eAA4BD,CAAK,GAAKA,EAAME,OAASC,EAAAA,OACvDN,EAAQO,KAAKJ,CAAK,EAElBF,EAAWM,KAAKJ,CAAK,CAEzB,CAAC,EAED,MAAMK,EAAgBR,EACnBS,IAAI,CAAClB,EAAQmB,KAAW,CAAEnB,OAAAA,EAAQmB,MAAAA,EAAOC,KAAMrB,EAAcC,CAAM,CAAA,EAAI,EACvEqB,KAAK,CAACC,EAAGC,IAAMD,EAAEF,KAAOG,EAAEH,MAAQE,EAAEH,MAAQI,EAAEJ,KAAK,EACnDD,IAAI,CAAC,CAAElB,OAAAA,EAAQmB,MAAAA,CAAAA,IACdK,EAAAA,aAAaxB,EAAQ,CACnByB,IAAKzB,EAAOyB,KAAON,CAAAA,CACpB,CACH,EAEF,OAAIb,EAAWoB,SAAW,EACjB,KAIPC,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,EAAGhC,EAAOiC,SAAUnC,EAASQ,CAAO,EAAGG,CAAS,EAC3D,GAAIJ,EAAM,iBAAA,WAETS,SAAAA,CAAAA,GAAcoB,EAAAA,IAAC,QAAMpB,SAAAA,CAAAA,CAAW,EAChCO,CAAAA,EACH,CAEJ"}
|
|
@@ -2,46 +2,47 @@ import { jsxs as p, jsx as f } from "react/jsx-runtime";
|
|
|
2
2
|
import { t as m } from "../../classix-DG18itHa.js";
|
|
3
3
|
import { Children as u, isValidElement as _, cloneElement as x } from "react";
|
|
4
4
|
import { Button as y } from "../button/index.js";
|
|
5
|
-
import '../../assets/index36.css';const k = "
|
|
5
|
+
import '../../assets/index36.css';const k = "_controls_1p251_13", h = "_inline_1p251_35", B = "_fixed_1p251_40", o = {
|
|
6
6
|
controls: k,
|
|
7
|
-
default: "
|
|
7
|
+
default: "_default_1p251_20",
|
|
8
8
|
inline: h,
|
|
9
|
-
fixed:
|
|
10
|
-
},
|
|
9
|
+
fixed: B
|
|
10
|
+
}, g = {
|
|
11
11
|
primary: 3,
|
|
12
12
|
danger: 2,
|
|
13
13
|
secondary: 1,
|
|
14
|
-
tertiary: 0
|
|
15
|
-
|
|
14
|
+
tertiary: 0,
|
|
15
|
+
simple: 0
|
|
16
|
+
}, v = {
|
|
16
17
|
default: o.default,
|
|
17
18
|
fixed: o.fixed,
|
|
18
19
|
inline: o.inline
|
|
19
|
-
},
|
|
20
|
-
children:
|
|
20
|
+
}, E = (e) => g[e.props.variant ?? "secondary"], N = ({
|
|
21
|
+
children: e,
|
|
21
22
|
className: a,
|
|
22
23
|
variant: l = "default",
|
|
23
24
|
...c
|
|
24
25
|
}) => {
|
|
25
|
-
const s = u.toArray(
|
|
26
|
+
const s = u.toArray(e), i = [], r = [];
|
|
26
27
|
s.forEach((n) => {
|
|
27
|
-
_(n) && n.type === y ? i.push(n) :
|
|
28
|
+
_(n) && n.type === y ? i.push(n) : r.push(n);
|
|
28
29
|
});
|
|
29
30
|
const d = i.map((n, t) => ({
|
|
30
31
|
button: n,
|
|
31
32
|
index: t,
|
|
32
|
-
rank:
|
|
33
|
+
rank: E(n)
|
|
33
34
|
})).sort((n, t) => n.rank - t.rank || n.index - t.index).map(({
|
|
34
35
|
button: n,
|
|
35
36
|
index: t
|
|
36
37
|
}) => x(n, {
|
|
37
38
|
key: n.key ?? t
|
|
38
39
|
}));
|
|
39
|
-
return s.length === 0 ? null : /* @__PURE__ */ p("div", { className: m(o.controls,
|
|
40
|
-
|
|
40
|
+
return s.length === 0 ? null : /* @__PURE__ */ p("div", { className: m(o.controls, v[l], a), ...c, "data-component": "controls", children: [
|
|
41
|
+
r && /* @__PURE__ */ f("span", { children: r }),
|
|
41
42
|
d
|
|
42
43
|
] });
|
|
43
44
|
};
|
|
44
45
|
export {
|
|
45
|
-
|
|
46
|
+
N as Controls
|
|
46
47
|
};
|
|
47
48
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/controls/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport { Button, type ButtonProps } from '../button';\nimport styles from './styles.module.css';\n\nconst buttonVariantOrder = {\n primary: 3,\n danger: 2,\n secondary: 1,\n tertiary: 0,\n} satisfies Record<NonNullable<ButtonProps['variant']>, number>;\n\nconst variants = {\n default: styles.default,\n fixed: styles.fixed,\n inline: styles.inline,\n};\n\nexport type ControlsProps = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.ReactNode;\n variant?: keyof typeof variants;\n};\n\nconst getButtonRank = (button: React.ReactElement<ButtonProps>) =>\n buttonVariantOrder[button.props.variant ?? 'secondary'];\n\nexport const Controls = ({ children, className, variant = 'default', ...props }: ControlsProps) => {\n const childArray = Children.toArray(children);\n const buttons: React.ReactElement<ButtonProps>[] = [];\n const nonButtons: React.ReactNode[] = [];\n\n childArray.forEach((child) => {\n if (isValidElement<ButtonProps>(child) && child.type === Button) {\n buttons.push(child);\n } else {\n nonButtons.push(child);\n }\n });\n\n const sortedButtons = buttons\n .map((button, index) => ({ button, index, rank: getButtonRank(button) }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ button, index }) =>\n cloneElement(button, {\n key: button.key ?? index,\n })\n );\n\n if (childArray.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(styles.controls, variants[variant], className)}\n {...props}\n >\n {nonButtons && <span>{nonButtons}</span>}\n {sortedButtons}\n </div>\n );\n};\n"],"names":["buttonVariantOrder","primary","danger","secondary","tertiary","variants","default","styles","fixed","inline","getButtonRank","button","props","variant","Controls","children","className","childArray","Children","toArray","buttons","nonButtons","forEach","child","isValidElement","type","Button","push","sortedButtons","map","index","rank","sort","a","b","cloneElement","key","length","jsxs","cx","controls","jsx"],"mappings":";;;;;;;;;GAMMA,IAAqB;AAAA,EACzBC,SAAS;AAAA,EACTC,QAAQ;AAAA,EACRC,WAAW;AAAA,EACXC,UAAU;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/controls/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport { Button, type ButtonProps } from '../button';\nimport styles from './styles.module.css';\n\nconst buttonVariantOrder = {\n primary: 3,\n danger: 2,\n secondary: 1,\n tertiary: 0,\n simple: 0,\n} satisfies Record<NonNullable<ButtonProps['variant']>, number>;\n\nconst variants = {\n default: styles.default,\n fixed: styles.fixed,\n inline: styles.inline,\n};\n\nexport type ControlsProps = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.ReactNode;\n variant?: keyof typeof variants;\n};\n\nconst getButtonRank = (button: React.ReactElement<ButtonProps>) =>\n buttonVariantOrder[button.props.variant ?? 'secondary'];\n\nexport const Controls = ({ children, className, variant = 'default', ...props }: ControlsProps) => {\n const childArray = Children.toArray(children);\n const buttons: React.ReactElement<ButtonProps>[] = [];\n const nonButtons: React.ReactNode[] = [];\n\n childArray.forEach((child) => {\n if (isValidElement<ButtonProps>(child) && child.type === Button) {\n buttons.push(child);\n } else {\n nonButtons.push(child);\n }\n });\n\n const sortedButtons = buttons\n .map((button, index) => ({ button, index, rank: getButtonRank(button) }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ button, index }) =>\n cloneElement(button, {\n key: button.key ?? index,\n })\n );\n\n if (childArray.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(styles.controls, variants[variant], className)}\n {...props}\n >\n {nonButtons && <span>{nonButtons}</span>}\n {sortedButtons}\n </div>\n );\n};\n"],"names":["buttonVariantOrder","primary","danger","secondary","tertiary","simple","variants","default","styles","fixed","inline","getButtonRank","button","props","variant","Controls","children","className","childArray","Children","toArray","buttons","nonButtons","forEach","child","isValidElement","type","Button","push","sortedButtons","map","index","rank","sort","a","b","cloneElement","key","length","jsxs","cx","controls","jsx"],"mappings":";;;;;;;;;GAMMA,IAAqB;AAAA,EACzBC,SAAS;AAAA,EACTC,QAAQ;AAAA,EACRC,WAAW;AAAA,EACXC,UAAU;AAAA,EACVC,QAAQ;AACV,GAEMC,IAAW;AAAA,EACfC,SAASC,EAAOD;AAAAA,EAChBE,OAAOD,EAAOC;AAAAA,EACdC,QAAQF,EAAOE;AACjB,GAOMC,IAAgBA,CAACC,MACrBZ,EAAmBY,EAAOC,MAAMC,WAAW,WAAW,GAE3CC,IAAWA,CAAC;AAAA,EAAEC,UAAAA;AAAAA,EAAUC,WAAAA;AAAAA,EAAWH,SAAAA,IAAU;AAAA,EAAW,GAAGD;AAAqB,MAAM;AACjG,QAAMK,IAAaC,EAASC,QAAQJ,CAAQ,GACtCK,IAA6C,CAAA,GAC7CC,IAAgC,CAAA;AAEtCJ,EAAAA,EAAWK,QAASC,CAAAA,MAAU;AAC5B,IAAIC,EAA4BD,CAAK,KAAKA,EAAME,SAASC,IACvDN,EAAQO,KAAKJ,CAAK,IAElBF,EAAWM,KAAKJ,CAAK;AAAA,EAEzB,CAAC;AAED,QAAMK,IAAgBR,EACnBS,IAAI,CAAClB,GAAQmB,OAAW;AAAA,IAAEnB,QAAAA;AAAAA,IAAQmB,OAAAA;AAAAA,IAAOC,MAAMrB,EAAcC,CAAM;AAAA,EAAA,EAAI,EACvEqB,KAAK,CAACC,GAAGC,MAAMD,EAAEF,OAAOG,EAAEH,QAAQE,EAAEH,QAAQI,EAAEJ,KAAK,EACnDD,IAAI,CAAC;AAAA,IAAElB,QAAAA;AAAAA,IAAQmB,OAAAA;AAAAA,EAAAA,MACdK,EAAaxB,GAAQ;AAAA,IACnByB,KAAKzB,EAAOyB,OAAON;AAAAA,EAAAA,CACpB,CACH;AAEF,SAAIb,EAAWoB,WAAW,IACjB,OAIP,gBAAAC,EAAC,OAAA,EACC,WAAWC,EAAGhC,EAAOiC,UAAUnC,EAASQ,CAAO,GAAGG,CAAS,GAC3D,GAAIJ,GAAM,kBAAA,YAETS,UAAAA;AAAAA,IAAAA,KAAc,gBAAAoB,EAAC,UAAMpB,UAAAA,EAAAA,CAAW;AAAA,IAChCO;AAAAA,EAAAA,GACH;AAEJ;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index38.css');const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index38.css');const e=require("react/jsx-runtime"),k=require("../../classix-5H4IWnMA.cjs"),a=require("react"),x=require("../button/index.cjs"),p=require("../icon/index.cjs"),P="_dialog_7bzcy_1",T="_close_7bzcy_21",E="_structured_7bzcy_29",F="_header_7bzcy_35",M="_content_7bzcy_46",S="_controls_7bzcy_52",s={dialog:P,close:T,structured:E,header:F,content:M,controls:S},b=o=>a.Children.toArray(o).some(c=>a.isValidElement(c)?c.type===x.Button&&c.props.variant==="danger"?!0:b(c.props.children):!1),X=({children:o,className:c,controls:l,header:f,onCancel:i,onClick:u,onClose:d,open:n=!1,setOpen:r,...y})=>{const g=a.useRef(null),_=b(l),m=f!=null||l!=null;a.useEffect(()=>{const t=g.current;t&&(n&&!t.open?t.showModal():!n&&t.open&&t.close())},[n]);const j=t=>{i==null||i(t),!(t.defaultPrevented||!r)&&(t.preventDefault(),r(!1))},z=t=>{if(u==null||u(t),_||t.defaultPrevented||t.target!==t.currentTarget||!r)return;const{bottom:q,left:N,right:R,top:D}=t.currentTarget.getBoundingClientRect();(t.clientX<N||t.clientX>R||t.clientY<D||t.clientY>q)&&r(!1)},B=t=>{d==null||d(t),n&&(r==null||r(!1))},h=r&&!_?e.jsx(x.Button,{"aria-label":"Close dialog",className:s.close,onClick:()=>r(!1),variant:"simple",children:e.jsx(p.Icon,{name:"x"})}):null;return e.jsx("dialog",{className:k.t(s.dialog,m&&s.structured,c),onCancel:j,onClick:z,onClose:B,ref:g,...y,"data-component":"dialog",children:m?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:s.header,children:[f,h]}),e.jsx("div",{className:s.content,children:o}),l!=null&&e.jsx("div",{className:s.controls,children:l})]}):e.jsxs(e.Fragment,{children:[h,o]})})};exports.Dialog=X;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/dialog/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { useEffect } from 'react';\n\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\n\nimport styles from './styles.module.css';\n\nexport type DialogProps = React.DialogHTMLAttributes<HTMLDialogElement> & {\n children: React.ReactNode;\n setOpen?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Dialog = ({
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/dialog/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { useEffect, useRef } from 'react';\n\nimport { Button, type ButtonProps } from '@/components/button';\nimport { Icon } from '@/components/icon';\n\nimport styles from './styles.module.css';\n\ntype ControlElementProps = {\n children?: React.ReactNode;\n variant?: ButtonProps['variant'];\n};\n\nconst hasDangerControl = (node: React.ReactNode): boolean =>\n React.Children.toArray(node).some((child) => {\n if (!React.isValidElement<ControlElementProps>(child)) return false;\n if (child.type === Button && child.props.variant === 'danger') return true;\n\n return hasDangerControl(child.props.children);\n });\n\nexport type DialogProps = React.DialogHTMLAttributes<HTMLDialogElement> & {\n children: React.ReactNode;\n controls?: React.ReactNode;\n header?: React.ReactNode;\n setOpen?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Dialog = ({\n children,\n className,\n controls,\n header,\n onCancel,\n onClick,\n onClose,\n open = false,\n setOpen,\n ...props\n}: DialogProps) => {\n const dialogRef = useRef<HTMLDialogElement>(null);\n const destructive = hasDangerControl(controls);\n const structured = header != null || controls != null;\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (open && !dialog.open) {\n dialog.showModal();\n } else if (!open && dialog.open) {\n dialog.close();\n }\n }, [open]);\n\n const handleCancel = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n onCancel?.(event);\n if (event.defaultPrevented || !setOpen) return;\n\n event.preventDefault();\n setOpen(false);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLDialogElement>) => {\n onClick?.(event);\n if (\n destructive ||\n event.defaultPrevented ||\n event.target !== event.currentTarget ||\n !setOpen\n )\n return;\n\n const { bottom, left, right, top } = event.currentTarget.getBoundingClientRect();\n const clickedBackdrop =\n event.clientX < left ||\n event.clientX > right ||\n event.clientY < top ||\n event.clientY > bottom;\n\n if (clickedBackdrop) {\n setOpen(false);\n }\n };\n\n const handleClose = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n onClose?.(event);\n if (open) setOpen?.(false);\n };\n\n const closeButton = setOpen && !destructive ? (\n <Button\n aria-label='Close dialog'\n className={styles.close}\n onClick={() => setOpen(false)}\n variant='simple'\n >\n <Icon name='x' />\n </Button>\n ) : null;\n\n return (\n <dialog\n className={cx(styles.dialog, structured && styles.structured, className)}\n onCancel={handleCancel}\n onClick={handleClick}\n onClose={handleClose}\n ref={dialogRef}\n {...props}\n >\n {structured ? (\n <>\n <div className={styles.header}>\n {header}\n {closeButton}\n </div>\n <div className={styles.content}>{children}</div>\n {controls != null && <div className={styles.controls}>{controls}</div>}\n </>\n ) : (\n <>\n {closeButton}\n {children}\n </>\n )}\n </dialog>\n );\n};\n"],"names":["hasDangerControl","node","React","Children","toArray","some","child","isValidElement","type","Button","props","variant","children","Dialog","className","controls","header","onCancel","onClick","onClose","open","setOpen","dialogRef","useRef","destructive","structured","useEffect","dialog","current","showModal","close","handleCancel","event","defaultPrevented","preventDefault","handleClick","target","currentTarget","bottom","left","right","top","getBoundingClientRect","clientX","clientY","handleClose","closeButton","styles","Icon","jsx","cx","jsxs","Fragment","content"],"mappings":"mbAaMA,EAAoBC,GACxBC,EAAMC,SAASC,QAAQH,CAAI,EAAEI,KAAMC,GAC5BJ,EAAMK,eAAoCD,CAAK,EAChDA,EAAME,OAASC,UAAUH,EAAMI,MAAMC,UAAY,SAAiB,GAE/DX,EAAiBM,EAAMI,MAAME,QAAQ,EAHkB,EAI/D,EASUC,EAASA,CAAC,CACrBD,SAAAA,EACAE,UAAAA,EACAC,SAAAA,EACAC,OAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,KAAAA,EAAO,GACPC,QAAAA,EACA,GAAGX,CACQ,IAAM,CACjB,MAAMY,EAAYC,EAAAA,OAA0B,IAAI,EAC1CC,EAAcxB,EAAiBe,CAAQ,EACvCU,EAAaT,GAAU,MAAQD,GAAY,KAEjDW,EAAAA,UAAU,IAAM,CACd,MAAMC,EAASL,EAAUM,QACpBD,IAEDP,GAAQ,CAACO,EAAOP,KAClBO,EAAOE,UAAAA,EACE,CAACT,GAAQO,EAAOP,MACzBO,EAAOG,MAAAA,EAEX,EAAG,CAACV,CAAI,CAAC,EAET,MAAMW,EAAgBC,GAAmD,CACvEf,GAAAA,MAAAA,EAAWe,GACPA,EAAAA,EAAMC,kBAAoB,CAACZ,KAE/BW,EAAME,eAAAA,EACNb,EAAQ,EAAK,EACf,EAEMc,EAAeH,GAA+C,CAElE,GADAd,GAAAA,MAAAA,EAAUc,GAERR,GACAQ,EAAMC,kBACND,EAAMI,SAAWJ,EAAMK,eACvB,CAAChB,EAED,OAEF,KAAM,CAAEiB,OAAAA,EAAQC,KAAAA,EAAMC,MAAAA,EAAOC,IAAAA,CAAAA,EAAQT,EAAMK,cAAcK,sBAAAA,GAEvDV,EAAMW,QAAUJ,GAChBP,EAAMW,QAAUH,GAChBR,EAAMY,QAAUH,GAChBT,EAAMY,QAAUN,IAGhBjB,EAAQ,EAAK,CAEjB,EAEMwB,EAAeb,GAAmD,CACtEb,GAAAA,MAAAA,EAAUa,GACNZ,eAAgB,IACtB,EAEM0B,EAAczB,GAAW,CAACG,QAC7Bf,EAAAA,OAAA,CACC,aAAW,eACX,UAAWsC,EAAOjB,MAClB,QAAS,IAAMT,EAAQ,EAAK,EAC5B,QAAQ,SAER,eAAC2B,EAAAA,KAAA,CAAK,KAAK,IAAG,CAAA,CAChB,EACE,KAEJ,OACEC,EAAAA,IAAC,SAAA,CACC,UAAWC,EAAAA,EAAGH,EAAOpB,OAAQF,GAAcsB,EAAOtB,WAAYX,CAAS,EACvE,SAAUiB,EACV,QAASI,EACT,QAASU,EACT,IAAKvB,EACL,GAAIZ,EAAM,iBAAA,SAETe,SAAAA,EACC0B,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAWJ,EAAO/B,OACpBA,SAAAA,CAAAA,EACA8B,CAAAA,EACH,EACAG,EAAAA,IAAC,MAAA,CAAI,UAAWF,EAAOM,QAAUzC,SAAAA,EAAS,EACzCG,GAAY,MAAQkC,EAAAA,IAAC,OAAI,UAAWF,EAAOhC,SAAWA,SAAAA,CAAAA,CAAS,CAAA,CAAA,CAClE,EAEAoC,EAAAA,KAAAC,EAAAA,SAAA,CACGN,SAAAA,CAAAA,EACAlC,CAAAA,CAAAA,CACH,CAAA,CAEJ,CAEJ"}
|
|
@@ -1,27 +1,59 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { t as
|
|
3
|
-
import { useEffect as
|
|
4
|
-
import { Button as
|
|
5
|
-
import { Icon as
|
|
6
|
-
import '../../assets/index38.css';const
|
|
7
|
-
dialog:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
import { jsx as o, jsxs as u, Fragment as y } from "react/jsx-runtime";
|
|
2
|
+
import { t as P } from "../../classix-DG18itHa.js";
|
|
3
|
+
import b, { useRef as T, useEffect as X } from "react";
|
|
4
|
+
import { Button as p } from "../button/index.js";
|
|
5
|
+
import { Icon as Y } from "../icon/index.js";
|
|
6
|
+
import '../../assets/index38.css';const w = "_dialog_7bzcy_1", A = "_close_7bzcy_21", F = "_structured_7bzcy_29", I = "_header_7bzcy_35", M = "_content_7bzcy_46", V = "_controls_7bzcy_52", l = {
|
|
7
|
+
dialog: w,
|
|
8
|
+
close: A,
|
|
9
|
+
structured: F,
|
|
10
|
+
header: I,
|
|
11
|
+
content: M,
|
|
12
|
+
controls: V
|
|
13
|
+
}, z = (e) => b.Children.toArray(e).some((c) => b.isValidElement(c) ? c.type === p && c.props.variant === "danger" ? !0 : z(c.props.children) : !1), Q = ({
|
|
14
|
+
children: e,
|
|
15
|
+
className: c,
|
|
16
|
+
controls: a,
|
|
17
|
+
header: f,
|
|
18
|
+
onCancel: i,
|
|
19
|
+
onClick: n,
|
|
20
|
+
onClose: d,
|
|
21
|
+
open: s = !1,
|
|
22
|
+
setOpen: r,
|
|
23
|
+
...B
|
|
24
|
+
}) => {
|
|
25
|
+
const m = T(null), _ = z(a), g = f != null || a != null;
|
|
26
|
+
X(() => {
|
|
27
|
+
const t = m.current;
|
|
28
|
+
t && (s && !t.open ? t.showModal() : !s && t.open && t.close());
|
|
29
|
+
}, [s]);
|
|
30
|
+
const N = (t) => {
|
|
31
|
+
i == null || i(t), !(t.defaultPrevented || !r) && (t.preventDefault(), r(!1));
|
|
32
|
+
}, x = (t) => {
|
|
33
|
+
if (n == null || n(t), _ || t.defaultPrevented || t.target !== t.currentTarget || !r) return;
|
|
34
|
+
const {
|
|
35
|
+
bottom: k,
|
|
36
|
+
left: D,
|
|
37
|
+
right: j,
|
|
38
|
+
top: E
|
|
39
|
+
} = t.currentTarget.getBoundingClientRect();
|
|
40
|
+
(t.clientX < D || t.clientX > j || t.clientY < E || t.clientY > k) && r(!1);
|
|
41
|
+
}, R = (t) => {
|
|
42
|
+
d == null || d(t), s && (r == null || r(!1));
|
|
43
|
+
}, h = r && !_ ? /* @__PURE__ */ o(p, { "aria-label": "Close dialog", className: l.close, onClick: () => r(!1), variant: "simple", children: /* @__PURE__ */ o(Y, { name: "x" }) }) : null;
|
|
44
|
+
return /* @__PURE__ */ o("dialog", { className: P(l.dialog, g && l.structured, c), onCancel: N, onClick: x, onClose: R, ref: m, ...B, "data-component": "dialog", children: g ? /* @__PURE__ */ u(y, { children: [
|
|
45
|
+
/* @__PURE__ */ u("div", { className: l.header, children: [
|
|
46
|
+
f,
|
|
47
|
+
h
|
|
48
|
+
] }),
|
|
49
|
+
/* @__PURE__ */ o("div", { className: l.content, children: e }),
|
|
50
|
+
a != null && /* @__PURE__ */ o("div", { className: l.controls, children: a })
|
|
51
|
+
] }) : /* @__PURE__ */ u(y, { children: [
|
|
52
|
+
h,
|
|
53
|
+
e
|
|
54
|
+
] }) });
|
|
55
|
+
};
|
|
24
56
|
export {
|
|
25
|
-
|
|
57
|
+
Q as Dialog
|
|
26
58
|
};
|
|
27
59
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/dialog/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { useEffect } from 'react';\n\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\n\nimport styles from './styles.module.css';\n\nexport type DialogProps = React.DialogHTMLAttributes<HTMLDialogElement> & {\n children: React.ReactNode;\n setOpen?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Dialog = ({
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/dialog/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { useEffect, useRef } from 'react';\n\nimport { Button, type ButtonProps } from '@/components/button';\nimport { Icon } from '@/components/icon';\n\nimport styles from './styles.module.css';\n\ntype ControlElementProps = {\n children?: React.ReactNode;\n variant?: ButtonProps['variant'];\n};\n\nconst hasDangerControl = (node: React.ReactNode): boolean =>\n React.Children.toArray(node).some((child) => {\n if (!React.isValidElement<ControlElementProps>(child)) return false;\n if (child.type === Button && child.props.variant === 'danger') return true;\n\n return hasDangerControl(child.props.children);\n });\n\nexport type DialogProps = React.DialogHTMLAttributes<HTMLDialogElement> & {\n children: React.ReactNode;\n controls?: React.ReactNode;\n header?: React.ReactNode;\n setOpen?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Dialog = ({\n children,\n className,\n controls,\n header,\n onCancel,\n onClick,\n onClose,\n open = false,\n setOpen,\n ...props\n}: DialogProps) => {\n const dialogRef = useRef<HTMLDialogElement>(null);\n const destructive = hasDangerControl(controls);\n const structured = header != null || controls != null;\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (open && !dialog.open) {\n dialog.showModal();\n } else if (!open && dialog.open) {\n dialog.close();\n }\n }, [open]);\n\n const handleCancel = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n onCancel?.(event);\n if (event.defaultPrevented || !setOpen) return;\n\n event.preventDefault();\n setOpen(false);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLDialogElement>) => {\n onClick?.(event);\n if (\n destructive ||\n event.defaultPrevented ||\n event.target !== event.currentTarget ||\n !setOpen\n )\n return;\n\n const { bottom, left, right, top } = event.currentTarget.getBoundingClientRect();\n const clickedBackdrop =\n event.clientX < left ||\n event.clientX > right ||\n event.clientY < top ||\n event.clientY > bottom;\n\n if (clickedBackdrop) {\n setOpen(false);\n }\n };\n\n const handleClose = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n onClose?.(event);\n if (open) setOpen?.(false);\n };\n\n const closeButton = setOpen && !destructive ? (\n <Button\n aria-label='Close dialog'\n className={styles.close}\n onClick={() => setOpen(false)}\n variant='simple'\n >\n <Icon name='x' />\n </Button>\n ) : null;\n\n return (\n <dialog\n className={cx(styles.dialog, structured && styles.structured, className)}\n onCancel={handleCancel}\n onClick={handleClick}\n onClose={handleClose}\n ref={dialogRef}\n {...props}\n >\n {structured ? (\n <>\n <div className={styles.header}>\n {header}\n {closeButton}\n </div>\n <div className={styles.content}>{children}</div>\n {controls != null && <div className={styles.controls}>{controls}</div>}\n </>\n ) : (\n <>\n {closeButton}\n {children}\n </>\n )}\n </dialog>\n );\n};\n"],"names":["hasDangerControl","node","React","Children","toArray","some","child","isValidElement","type","Button","props","variant","children","Dialog","className","controls","header","onCancel","onClick","onClose","open","setOpen","dialogRef","useRef","destructive","structured","useEffect","dialog","current","showModal","close","handleCancel","event","defaultPrevented","preventDefault","handleClick","target","currentTarget","bottom","left","right","top","getBoundingClientRect","clientX","clientY","handleClose","closeButton","styles","Icon","jsx","cx","jsxs","Fragment","content"],"mappings":";;;;;;;;;;;;GAaMA,IAAmBA,CAACC,MACxBC,EAAMC,SAASC,QAAQH,CAAI,EAAEI,KAAMC,CAAAA,MAC5BJ,EAAMK,eAAoCD,CAAK,IAChDA,EAAME,SAASC,KAAUH,EAAMI,MAAMC,YAAY,WAAiB,KAE/DX,EAAiBM,EAAMI,MAAME,QAAQ,IAHkB,EAI/D,GASUC,IAASA,CAAC;AAAA,EACrBD,UAAAA;AAAAA,EACAE,WAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,MAAAA,IAAO;AAAA,EACPC,SAAAA;AAAAA,EACA,GAAGX;AACQ,MAAM;AACjB,QAAMY,IAAYC,EAA0B,IAAI,GAC1CC,IAAcxB,EAAiBe,CAAQ,GACvCU,IAAaT,KAAU,QAAQD,KAAY;AAEjDW,EAAAA,EAAU,MAAM;AACd,UAAMC,IAASL,EAAUM;AACzB,IAAKD,MAEDP,KAAQ,CAACO,EAAOP,OAClBO,EAAOE,UAAAA,IACE,CAACT,KAAQO,EAAOP,QACzBO,EAAOG,MAAAA;AAAAA,EAEX,GAAG,CAACV,CAAI,CAAC;AAET,QAAMW,IAAeA,CAACC,MAAmD;AAEvE,IADAf,KAAAA,QAAAA,EAAWe,IACPA,EAAAA,EAAMC,oBAAoB,CAACZ,OAE/BW,EAAME,eAAAA,GACNb,EAAQ,EAAK;AAAA,EACf,GAEMc,IAAcA,CAACH,MAA+C;AAElE,QADAd,KAAAA,QAAAA,EAAUc,IAERR,KACAQ,EAAMC,oBACND,EAAMI,WAAWJ,EAAMK,iBACvB,CAAChB,EAED;AAEF,UAAM;AAAA,MAAEiB,QAAAA;AAAAA,MAAQC,MAAAA;AAAAA,MAAMC,OAAAA;AAAAA,MAAOC,KAAAA;AAAAA,IAAAA,IAAQT,EAAMK,cAAcK,sBAAAA;AAOzD,KALEV,EAAMW,UAAUJ,KAChBP,EAAMW,UAAUH,KAChBR,EAAMY,UAAUH,KAChBT,EAAMY,UAAUN,MAGhBjB,EAAQ,EAAK;AAAA,EAEjB,GAEMwB,IAAcA,CAACb,MAAmD;AACtEb,IAAAA,KAAAA,QAAAA,EAAUa,IACNZ,qBAAgB;AAAA,EACtB,GAEM0B,IAAczB,KAAW,CAACG,sBAC7Bf,GAAA,EACC,cAAW,gBACX,WAAWsC,EAAOjB,OAClB,SAAS,MAAMT,EAAQ,EAAK,GAC5B,SAAQ,UAER,4BAAC2B,GAAA,EAAK,MAAK,KAAG,EAAA,CAChB,IACE;AAEJ,SACE,gBAAAC,EAAC,UAAA,EACC,WAAWC,EAAGH,EAAOpB,QAAQF,KAAcsB,EAAOtB,YAAYX,CAAS,GACvE,UAAUiB,GACV,SAASI,GACT,SAASU,GACT,KAAKvB,GACL,GAAIZ,GAAM,kBAAA,UAETe,UAAAA,IACC,gBAAA0B,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWJ,EAAO/B,QACpBA,UAAAA;AAAAA,MAAAA;AAAAA,MACA8B;AAAAA,IAAAA,GACH;AAAA,IACA,gBAAAG,EAAC,OAAA,EAAI,WAAWF,EAAOM,SAAUzC,UAAAA,GAAS;AAAA,IACzCG,KAAY,QAAQ,gBAAAkC,EAAC,SAAI,WAAWF,EAAOhC,UAAWA,UAAAA,EAAAA,CAAS;AAAA,EAAA,EAAA,CAClE,IAEA,gBAAAoC,EAAAC,GAAA,EACGN,UAAAA;AAAAA,IAAAA;AAAAA,IACAlC;AAAAA,EAAAA,EAAAA,CACH,EAAA,CAEJ;AAEJ;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index39.css');const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index39.css');const s=require("react/jsx-runtime"),N=require("../../classix-5H4IWnMA.cjs"),a=require("react"),F=require("../button/index.cjs"),ce=require("../../icons-Dx0NQYLH.cjs"),X=require("../../index-CEzqxRIu.cjs"),ue=require("../list/index.cjs"),V=require("../../index-oL8GYbhj.cjs");function L(t){return typeof t=="string"||typeof t=="number"?String(t):Array.isArray(t)?t.map(L).join(" "):a.isValidElement(t)?L(t.props.children):""}function de(t){return a.isValidElement(t)&&t.type==="option"}function pe(t){return a.isValidElement(t)&&t.type==="optgroup"}function fe(t){return a.isValidElement(t)&&t.type===a.Fragment}function me(t){return a.isValidElement(t)&&t.type===V.Select}function W(t,i,r=!1){const l=[];return a.Children.forEach(t,n=>{if(fe(n))l.push(...W(n.props.children,i,r));else if(de(n)){const c=L(n.props.children).trim(),f=n.props.value!=null?String(n.props.value):c;l.push({disabled:r||!!n.props.disabled,groupLabel:i,hidden:!!n.props.hidden,isPlaceholder:!!(n.props.hidden&&f===""),label:n.props.children,selected:!!n.props.selected,text:c,value:f})}else pe(n)&&l.push(...W(n.props.children,n.props.label,r||!!n.props.disabled))}),l}function xe(t){const i=t.trim();if(!i)return null;const l=[.../[*?]/.test(i)?i:`*${i}*`].map(n=>n==="*"?".*":n==="?"?".":n.replace(/[|\\{}()[\]^$+.,]/g,"\\$&")).join("");return new RegExp(`^${l}$`,"i")}function ge(t,i){const r=xe(i),l=t.filter(n=>!n.hidden&&!n.isPlaceholder);return r?l.filter(n=>r.test([n.groupLabel,n.text,n.value].filter(Boolean).join(" "))):l}function _e(t,i){return t.find(r=>r.value===i)??t.find(r=>r.isPlaceholder)??t[0]}function he(t,i,r){var l,n;return i!=null?String(i):r!=null?String(r):((l=t.find(c=>c.selected))==null?void 0:l.value)??((n=t[0])==null?void 0:n.value)??""}function be(t){if(me(t)){const{children:i,placeholder:r,...l}=t.props;return{children:s.jsxs(s.Fragment,{children:[r&&s.jsx("option",{hidden:!0,value:"",children:r}),i]}),props:l}}return{children:t.props.children,props:t.props}}const ve="_combobox_1x1gr_3",ye="_dropdown_1x1gr_27",je="_empty_1x1gr_30",we="_group_1x1gr_31",Se="_placeholder_1x1gr_32",Ce="_filter_1x1gr_40",Ee="_native_1x1gr_52",Ne="_option_1x1gr_62",Ve="_options_1x1gr_84",Le="_panel_1x1gr_108",Re="_selected_1x1gr_132",$e="_text_1x1gr_136",Be="_trigger_1x1gr_145",Ie="_minimal_1x1gr_164",qe="_inline_1x1gr_219",De="_label_1x1gr_251",o={combobox:ve,"combobox-input":"_combobox-input_1x1gr_12",dropdown:ye,empty:je,group:we,placeholder:Se,filter:Ce,native:Ee,option:Ne,options:Ve,panel:Le,selected:Re,text:$e,trigger:Be,minimal:Ie,inline:qe,label:De,"inline-field":"_inline-field_1x1gr_257"};function Y(t,i){return{"--icon-svg":ce.iconSVG(t).replace("currentColor",i)}}const Pe=({children:t,className:i,combobox:r=!1,createOption:l,emptyLabel:n="No matches found",label:c,renderOption:f,searchPlaceholder:R="Filter",selectedItems:Z,variant:_="default",...ee})=>{const $=be(t),{defaultValue:te,onChange:B,value:I,...ne}=$.props,v=V.sanitizeSelectProps(ne),M=a.useRef(null),Q=a.useRef(null),y=a.useId(),z=a.useRef(null),m=a.useRef(null),h=W($.children),b=I!=null,q=he(h,I,te),[D,P]=a.useState(()=>q),[u,p]=a.useState(!1),[j,w]=a.useState(""),S=b?String(I):D,O={default:V.resolveColor("--colors-semantic-content-secondary"),white:V.resolveColor("--color-white","white")},T=_==="minimal"?O.white:O.default,C=_e(h,S),re=Y("chevron",T),le=Y("search",T),A=ge(h,j),x=j.trim(),E=!!(r&&l&&x&&l.isValid(x)),se=c&&_==="inline"?X.formatInlineLabel(c):c,G=e=>e?(f==null?void 0:f({groupLabel:e.groupLabel,isSelected:e.value===S,label:e.label,text:e.text,value:e.value}))??e.label:"Select an option";a.useEffect(()=>{!b&&!h.some(e=>e.value===D)&&P(q)},[q,D,b,h]),a.useEffect(()=>{var e;if(!u){w("");return}(e=m.current)==null||e.focus()},[u]),a.useEffect(()=>{if(!u)return;const e=d=>{var g;(g=Q.current)!=null&&g.contains(d.target)||p(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[u]);const oe=e=>{b||P(e.target.value),B==null||B(e)},k=()=>{var e;p(!1),r||(e=M.current)==null||e.focus()},K=()=>{var e;w(""),p(!0),(e=m.current)==null||e.focus()},H=()=>{!l||!E||(l.onCreate(x),K())},ie=e=>{var U;b||P(e);const d=z.current;if(!d){k();return}const g=(U=Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype,"value"))==null?void 0:U.set;g==null||g.call(d,e),d.dispatchEvent(new Event("change",{bubbles:!0})),r?K():k()},ae=e=>{e.key==="Escape"&&k(),e.key==="Enter"&&e.target===m.current&&E&&(e.preventDefault(),H())},J=s.jsxs("div",{className:N.t(o.dropdown,_==="inline"&&o.inline,_==="minimal"&&o.minimal,i),onKeyDown:ae,ref:Q,...ee,children:[s.jsx("select",{...v,"aria-hidden":"true",className:o.native,onChange:oe,ref:z,tabIndex:-1,value:S,children:$.children}),r?s.jsxs("div",{className:o.combobox,onClick:()=>{var e;return(e=m.current)==null?void 0:e.focus()},children:[Z,s.jsx("input",{"aria-autocomplete":"list","aria-expanded":u,"aria-label":v["aria-label"]??c??R,className:o["combobox-input"],disabled:v.disabled,onChange:e=>{w(e.target.value),p(!0)},onClick:()=>p(!0),onFocus:()=>p(!0),placeholder:R||void 0,ref:m,role:"combobox",type:"text",value:j})]}):s.jsx(F.Button,{"aria-expanded":u,"aria-haspopup":"dialog","aria-labelledby":c?`${y} ${y}-value`:void 0,className:N.t(o.trigger,(C==null?void 0:C.isPlaceholder)&&o.placeholder),"data-open":u?"true":void 0,disabled:v.disabled,onClick:()=>p(e=>!e),ref:M,style:re,variant:"tertiary",children:s.jsx("span",{className:o.text,id:`${y}-value`,children:G(C)})}),u&&s.jsxs("div",{className:o.panel,children:[!r&&s.jsx(X.Input,{"aria-label":"Filter",className:o.filter,icon:"search",onChange:e=>w(e.target.value),placeholder:R,ref:m,style:le,type:"search",value:j}),s.jsxs(ue.List,{"aria-label":"Dropdown",className:o.options,children:[A.map(e=>{const d=e.value===S;return s.jsx("li",{"data-component":"dropdown",children:s.jsxs(F.Button,{"aria-label":d?`${e.text}, selected`:e.text,className:N.t(o.option,d&&o.selected),disabled:e.disabled,onClick:()=>ie(e.value),variant:"tertiary",children:[s.jsx("span",{className:o.text,children:G(e)}),e.groupLabel&&s.jsx("small",{className:o.group,children:e.groupLabel})]})},`${e.groupLabel??"root"}-${e.value}`)}),E&&l&&s.jsx("li",{children:s.jsx(F.Button,{"aria-label":L(l.render(x))||x,className:o.option,onClick:H,variant:"tertiary",children:s.jsx("span",{className:o.text,children:l.render(x)})})}),A.length===0&&!E&&s.jsx("li",{className:o.empty,children:n})]})]})]});return c?s.jsxs("div",{className:N.t(o.label,_==="inline"&&o["inline-field"]),"data-component":"dropdown",children:[s.jsx("span",{id:y,children:se}),J]}):J};exports.Dropdown=Pe;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|