@iziui/react 0.0.61-rc → 0.0.63-rc
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/.types/actions/Button/Button.d.ts.map +1 -1
- package/dist/.types/core/createComponent.d.ts.map +1 -1
- package/dist/.types/lab/Form/Form.d.ts.map +1 -1
- package/dist/.types/lab/Form/Form.stories.d.ts.map +1 -1
- package/dist/.types/lab/Form/FormGroup.d.ts +2 -2
- package/dist/.types/lab/Form/FormGroup.d.ts.map +1 -1
- package/dist/chunks/{Alert-De27NFno.js → Alert-DGWFTr3e.js} +2 -2
- package/dist/chunks/{Alert-De27NFno.js.map → Alert-DGWFTr3e.js.map} +1 -1
- package/dist/chunks/{Alert-D2Ud7z7a.cjs → Alert-MsPKPqJS.cjs} +2 -2
- package/dist/chunks/{Alert-D2Ud7z7a.cjs.map → Alert-MsPKPqJS.cjs.map} +1 -1
- package/dist/chunks/{Box-tIj8kfQ-.js → Box-DV6szmfA.js} +2 -2
- package/dist/chunks/{Box-tIj8kfQ-.js.map → Box-DV6szmfA.js.map} +1 -1
- package/dist/chunks/{Box-D3UbjY-i.cjs → Box-DX4Re8mw.cjs} +2 -2
- package/dist/chunks/{Box-D3UbjY-i.cjs.map → Box-DX4Re8mw.cjs.map} +1 -1
- package/dist/chunks/{ButtonIcon-BmUZZwS7.js → ButtonIcon-BP2upur5.js} +2 -2
- package/dist/chunks/{ButtonIcon-BmUZZwS7.js.map → ButtonIcon-BP2upur5.js.map} +1 -1
- package/dist/chunks/{ButtonIcon-ClMsumft.cjs → ButtonIcon-Bk1sFlaj.cjs} +2 -2
- package/dist/chunks/{ButtonIcon-ClMsumft.cjs.map → ButtonIcon-Bk1sFlaj.cjs.map} +1 -1
- package/dist/chunks/{Card-B2D3ppN8.js → Card-BjoXz5bX.js} +2 -2
- package/dist/chunks/{Card-B2D3ppN8.js.map → Card-BjoXz5bX.js.map} +1 -1
- package/dist/chunks/{Card-BrwjTDq_.cjs → Card-CVrUgBCJ.cjs} +2 -2
- package/dist/chunks/{Card-BrwjTDq_.cjs.map → Card-CVrUgBCJ.cjs.map} +1 -1
- package/dist/chunks/{CardContent-Ca4nAvUL.cjs → CardContent-5JyK0TcD.cjs} +2 -2
- package/dist/chunks/{CardContent-Ca4nAvUL.cjs.map → CardContent-5JyK0TcD.cjs.map} +1 -1
- package/dist/chunks/{CardContent-BuXq8Ek9.js → CardContent-srKirxQF.js} +2 -2
- package/dist/chunks/{CardContent-BuXq8Ek9.js.map → CardContent-srKirxQF.js.map} +1 -1
- package/dist/chunks/{Drawer-BhDpYY4r.cjs → Drawer-C3RaAzs0.cjs} +2 -2
- package/dist/chunks/{Drawer-BhDpYY4r.cjs.map → Drawer-C3RaAzs0.cjs.map} +1 -1
- package/dist/chunks/{Drawer-B_k_G_fP.js → Drawer-ijxxjWs1.js} +2 -2
- package/dist/chunks/{Drawer-B_k_G_fP.js.map → Drawer-ijxxjWs1.js.map} +1 -1
- package/dist/chunks/{Icon-DMVu40wB.js → Icon-BfSirxGe.js} +2 -2
- package/dist/chunks/{Icon-DMVu40wB.js.map → Icon-BfSirxGe.js.map} +1 -1
- package/dist/chunks/{Icon-ngmWJwq7.cjs → Icon-C_2Qoqhh.cjs} +2 -2
- package/dist/chunks/{Icon-ngmWJwq7.cjs.map → Icon-C_2Qoqhh.cjs.map} +1 -1
- package/dist/chunks/{MenuButton-DMaUwnI-.js → MenuButton-DG-M7g1U.js} +2 -2
- package/dist/chunks/{MenuButton-DMaUwnI-.js.map → MenuButton-DG-M7g1U.js.map} +1 -1
- package/dist/chunks/{MenuButton-BvncFvEh.cjs → MenuButton-ybz5rxD_.cjs} +2 -2
- package/dist/chunks/{MenuButton-BvncFvEh.cjs.map → MenuButton-ybz5rxD_.cjs.map} +1 -1
- package/dist/chunks/{Stack-DAlczuE0.js → Stack-BXkZSPdw.js} +2 -2
- package/dist/chunks/{Stack-DAlczuE0.js.map → Stack-BXkZSPdw.js.map} +1 -1
- package/dist/chunks/{Stack-Gkunatfh.cjs → Stack-Bpv8iA8b.cjs} +2 -2
- package/dist/chunks/{Stack-Gkunatfh.cjs.map → Stack-Bpv8iA8b.cjs.map} +1 -1
- package/dist/chunks/{Typography-BxZqGk3g.js → Typography-BDFesZK7.js} +2 -2
- package/dist/chunks/{Typography-BxZqGk3g.js.map → Typography-BDFesZK7.js.map} +1 -1
- package/dist/chunks/{Typography-BqQ6oG9I.cjs → Typography-CPUKMAJT.cjs} +2 -2
- package/dist/chunks/{Typography-BqQ6oG9I.cjs.map → Typography-CPUKMAJT.cjs.map} +1 -1
- package/dist/chunks/{createComponent-Bhl48GId.js → createComponent-C6TL60ri.js} +2 -2
- package/dist/chunks/{createComponent-Bhl48GId.js.map → createComponent-C6TL60ri.js.map} +1 -1
- package/dist/chunks/{createComponent-DiHTpo26.cjs → createComponent-ixuQW53A.cjs} +2 -2
- package/dist/chunks/{createComponent-DiHTpo26.cjs.map → createComponent-ixuQW53A.cjs.map} +1 -1
- package/dist/chunks/useForm-D3kD3cxE.cjs +2 -0
- package/dist/chunks/useForm-D3kD3cxE.cjs.map +1 -0
- package/dist/chunks/useForm-DBk4Of85.js +2 -0
- package/dist/chunks/useForm-DBk4Of85.js.map +1 -0
- package/dist/chunks/{useMenu-hVrXgfnU.js → useMenu-CA-D2bkv.js} +2 -2
- package/dist/chunks/{useMenu-hVrXgfnU.js.map → useMenu-CA-D2bkv.js.map} +1 -1
- package/dist/chunks/{useMenu-DYli8hgM.cjs → useMenu-eNouSUEO.cjs} +2 -2
- package/dist/chunks/{useMenu-DYli8hgM.cjs.map → useMenu-eNouSUEO.cjs.map} +1 -1
- package/dist/components/Alert/index.cjs +1 -1
- package/dist/components/Alert/index.js +1 -1
- package/dist/components/Avatar/index.cjs +1 -1
- package/dist/components/Avatar/index.js +1 -1
- package/dist/components/Box/index.cjs +1 -1
- package/dist/components/Box/index.js +1 -1
- package/dist/components/Button/index.cjs +1 -1
- package/dist/components/Button/index.cjs.map +1 -1
- package/dist/components/Button/index.js +1 -1
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/ButtonIcon/index.cjs +1 -1
- package/dist/components/ButtonIcon/index.js +1 -1
- package/dist/components/Card/index.cjs +1 -1
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Checkbox/index.cjs +1 -1
- package/dist/components/Checkbox/index.js +1 -1
- package/dist/components/CheckboxGroup/index.cjs +1 -1
- package/dist/components/CheckboxGroup/index.js +1 -1
- package/dist/components/Chip/index.cjs +1 -1
- package/dist/components/Chip/index.js +1 -1
- package/dist/components/ColorPicker/index.cjs +1 -1
- package/dist/components/ColorPicker/index.js +1 -1
- package/dist/components/Container/index.cjs +1 -1
- package/dist/components/Container/index.js +1 -1
- package/dist/components/Divider/index.cjs +1 -1
- package/dist/components/Divider/index.js +1 -1
- package/dist/components/Drawer/index.cjs +1 -1
- package/dist/components/Drawer/index.js +1 -1
- package/dist/components/Icon/index.cjs +1 -1
- package/dist/components/Icon/index.js +1 -1
- package/dist/components/Input/index.cjs +1 -1
- package/dist/components/Input/index.js +1 -1
- package/dist/components/InputFile/index.cjs +1 -1
- package/dist/components/InputFile/index.js +1 -1
- package/dist/components/Loading/index.cjs +1 -1
- package/dist/components/Loading/index.js +1 -1
- package/dist/components/Menu/index.cjs +1 -1
- package/dist/components/Menu/index.js +1 -1
- package/dist/components/Modal/index.cjs +1 -1
- package/dist/components/Modal/index.js +1 -1
- package/dist/components/Select/index.cjs +1 -1
- package/dist/components/Select/index.js +1 -1
- package/dist/components/Skeleton/index.cjs +1 -1
- package/dist/components/Skeleton/index.js +1 -1
- package/dist/components/Stack/index.cjs +1 -1
- package/dist/components/Stack/index.js +1 -1
- package/dist/components/Switchs/index.cjs +1 -1
- package/dist/components/Switchs/index.js +1 -1
- package/dist/components/Table/index.cjs +1 -1
- package/dist/components/Table/index.js +1 -1
- package/dist/components/Toast/index.cjs +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/Tooltip/index.cjs +1 -1
- package/dist/components/Tooltip/index.js +1 -1
- package/dist/components/Typography/index.cjs +1 -1
- package/dist/components/Typography/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/lab/Form/index.cjs +1 -1
- package/dist/lab/Form/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/useForm-BkXoqmrE.cjs +0 -2
- package/dist/chunks/useForm-BkXoqmrE.cjs.map +0 -1
- package/dist/chunks/useForm-CZ5cx13o.js +0 -2
- package/dist/chunks/useForm-CZ5cx13o.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createComponent-
|
|
1
|
+
{"version":3,"file":"createComponent-C6TL60ri.js","sources":["../../../../core/src/options/createOptions/createOptions.ts","../../../../core/src/plugin/color/defineColor/defineColor.ts","../../../../core/src/plugin/color/defineBackground/defineBackground.ts","../../../../core/src/plugin/color/defineBorderColor/defineBorderColor.ts","../../../../core/src/plugin/color/defineBackgroundColor/defineBackgroundColor.ts","../../../../core/src/plugin/shape/defineBorderRadius/defineBorderRadius.ts","../../../../core/src/plugin/spacing/defineMargin/defineMargin.ts","../../../../core/src/plugin/spacing/definePadding/definePadding.ts","../../../../core/src/plugin/behavior/defineBoxShadow/defineBoxShadow.ts","../../src/core/createComponent.tsx"],"sourcesContent":["import type { Properties } from 'csstype';\n\nimport type { Plugin } from '../../plugin';\nimport type { ThemeBuilded } from '../../theme';\nimport type { CustomOptions } from '../CustomOptions';\n\ntype Data = {\n sx: CustomOptions;\n theme: ThemeBuilded;\n}\n\nexport default function createOptions({ sx, theme }: Data, ...plugins: Plugin[]): Properties {\n return plugins.reduce<Properties>((acc, plugin) => {\n acc = { ...acc, ...plugin(theme, sx) };\n\n return acc;\n }, {});\n}","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { color }) => {\n const { palette } = theme;\n\n if (!color) { return {}; }\n\n return {\n color: color(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { background }) => {\n const { palette } = theme;\n\n if (!background) { return {}; }\n\n return {\n background: background(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { borderColor }) => {\n const { palette } = theme;\n\n if (!borderColor) { return {}; }\n\n return {\n borderColor: borderColor(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { backgroundColor }) => {\n const { palette } = theme;\n\n if (!backgroundColor) { return {}; }\n\n return {\n backgroundColor: backgroundColor(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { borderRadius }) => {\n const { shape } = theme;\n\n if (!borderRadius) { return {}; }\n\n return {\n borderRadius: `${shape.radius * borderRadius}px`\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { m, mb, ml, mr, mt, mx, my }) => {\n const { spacing } = theme;\n\n const calculateMargin = (mg?: number) => {\n return !!mg || mg === 0 ? `${String(mg * spacing)}px` : '';\n };\n\n const hasM = calculateMargin(m);\n\n const hasMt = calculateMargin(mt);\n const hasMb = calculateMargin(mb);\n\n const hasMy = calculateMargin(my);\n const hasMx = calculateMargin(mx);\n\n const hasMl = calculateMargin(ml);\n const hasMr = calculateMargin(mr);\n\n return {\n margin: hasM,\n marginTop: hasMt || hasMy || hasM,\n marginBottom: hasMb || hasMy || hasM,\n marginLeft: hasMl || hasMx || hasM,\n marginRight: hasMr || hasMx || hasM,\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { p, pb, pl, pr, pt, px, py }) => {\n const { spacing } = theme;\n\n const calculatePadding = (pd?: number) => {\n return !!pd || pd === 0 ? `${String(pd * spacing)}px` : '';\n };\n\n const hasP = calculatePadding(p);\n\n const hasPt = calculatePadding(pt);\n const hasPb = calculatePadding(pb);\n\n const hasPy = calculatePadding(py);\n const hasPx = calculatePadding(px);\n\n const hasPl = calculatePadding(pl);\n const hasPr = calculatePadding(pr);\n\n return {\n padding: hasP,\n paddingTop: hasPt || hasPy || hasP,\n paddingBottom: hasPb || hasPy || hasP,\n paddingLeft: hasPl || hasPx || hasP,\n paddingRight: hasPr || hasPx || hasP,\n };\n});","import { boxShadowSmall, boxShadowRegular, boxShadowLarge } from '@iziui/tokens/web/js';\n\nimport definePlugin from '../../definePlugin';\nimport type { CustomOptions } from '../../../options/CustomOptions';\n\ntype ExtractSize = NonNullable<CustomOptions['boxShadow']>;\n\nexport default definePlugin((_, { boxShadow }) => {\n\n if (!boxShadow) { return {}; }\n\n const sizes: { [s in ExtractSize]: string } = {\n sm: boxShadowSmall,\n md: boxShadowRegular,\n lg: boxShadowLarge,\n };\n\n return {\n boxShadow: sizes[boxShadow]\n };\n});","import type { ComponentType, FC } from 'react';\n\nimport type { Sx } from '@iziui/core/options';\nimport type { Plugin } from '@iziui/core/plugin';\nimport createOptions from '@iziui/core/options';\nimport * as plugins from '@iziui/core/plugin';\n\nimport { useTheme } from '@/theme';\n\nfunction extract(module: { [key: string]: Plugin }) {\n return Object.values(module).map((fn) => fn);\n}\n\nexport default function createComponent<P>(WrappedComponent: ComponentType<P>) {\n WrappedComponent.displayName = WrappedComponent.name;\n\n const EnhancedComponent: FC<Sx<P>> = ({ sx, fullWidth, ...props }) => {\n const { theme } = useTheme();\n\n const options = sx && createOptions({ theme, sx },\n ...extract(plugins),\n );\n\n return (\n <WrappedComponent\n {...(props as P)}\n style={{\n boxSizing: 'border-box',\n ...props['style'],\n ...options,\n ...(fullWidth ? { width: '100%' } : {}),\n }}\n />\n );\n };\n\n return EnhancedComponent;\n}"],"names":["createOptions","sx","theme","plugins","acc","plugin","defineColor","color","palette","defineBackground","background","defineBorderColor","borderColor","defineBackgroundColor","backgroundColor","defineBorderRadius","borderRadius","shape","defineMargin","m","mb","ml","mr","mt","mx","my","spacing","calculateMargin","mg","hasM","hasMt","hasMb","hasMy","hasMx","hasMl","hasMr","definePadding","p","pb","pl","pr","pt","px","py","calculatePadding","pd","hasP","hasPt","hasPb","hasPy","hasPx","hasPl","hasPr","defineBoxShadow","_","boxShadow","boxShadowSmall","boxShadowRegular","boxShadowLarge","extract","module","fn","createComponent","WrappedComponent","fullWidth","props","useTheme","options","jsx"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const P=require("react/jsx-runtime"),b=require("./index-DYxwT4uW.cjs"),M=require("./useTheme-DwBpyW-5.cjs");function S({sx:t,theme:n},...e){return e.reduce((s,a)=>(s={...s,...a(n,t)},s),{})}const y=(t,{color:n})=>{const{palette:e}=t;return n?{color:n(e)}:{}},B=(t,{background:n})=>{const{palette:e}=t;return n?{background:n(e)}:{}},j=(t,{borderColor:n})=>{const{palette:e}=t;return n?{borderColor:n(e)}:{}},w=(t,{backgroundColor:n})=>{const{palette:e}=t;return n?{backgroundColor:n(e)}:{}},C=(t,{borderRadius:n})=>{const{shape:e}=t;return n?{borderRadius:`${e.radius*n}px`}:{}},R=(t,{m:n,mb:e,ml:s,mr:a,mt:
|
|
2
|
-
//# sourceMappingURL=createComponent-
|
|
1
|
+
"use strict";const P=require("react/jsx-runtime"),b=require("./index-DYxwT4uW.cjs"),M=require("./useTheme-DwBpyW-5.cjs");function S({sx:t,theme:n},...e){return e.reduce((s,a)=>(s={...s,...a(n,t)},s),{})}const y=(t,{color:n})=>{const{palette:e}=t;return n?{color:n(e)}:{}},B=(t,{background:n})=>{const{palette:e}=t;return n?{background:n(e)}:{}},j=(t,{borderColor:n})=>{const{palette:e}=t;return n?{borderColor:n(e)}:{}},w=(t,{backgroundColor:n})=>{const{palette:e}=t;return n?{backgroundColor:n(e)}:{}},C=(t,{borderRadius:n})=>{const{shape:e}=t;return n?{borderRadius:`${e.radius*n}px`}:{}},R=(t,{m:n,mb:e,ml:s,mr:a,mt:c,mx:u,my:l})=>{const{spacing:h}=t,r=i=>i||i===0?`${String(i*h)}px`:"",o=r(n),f=r(c),m=r(e),d=r(l),g=r(u),p=r(s),x=r(a);return{margin:o,marginTop:f||d||o,marginBottom:m||d||o,marginLeft:p||g||o,marginRight:x||g||o}},T=(t,{p:n,pb:e,pl:s,pr:a,pt:c,px:u,py:l})=>{const{spacing:h}=t,r=i=>i||i===0?`${String(i*h)}px`:"",o=r(n),f=r(c),m=r(e),d=r(l),g=r(u),p=r(s),x=r(a);return{padding:o,paddingTop:f||d||o,paddingBottom:m||d||o,paddingLeft:p||g||o,paddingRight:x||g||o}},_=(t,{boxShadow:n})=>n?{boxShadow:{sm:b.boxShadowSmall,md:b.boxShadowRegular,lg:b.boxShadowLarge}[n]}:{},z=Object.freeze(Object.defineProperty({__proto__:null,defineBackground:B,defineBackgroundColor:w,defineBorderColor:j,defineBorderRadius:C,defineBoxShadow:_,defineColor:y,defineMargin:R,definePadding:T},Symbol.toStringTag,{value:"Module"}));function O(t){return Object.values(t).map(n=>n)}function q(t){return t.displayName=t.name,({sx:e,fullWidth:s,...a})=>{const{theme:c}=M.useTheme(),u=e&&S({theme:c,sx:e},...O(z));return P.jsx(t,{...a,style:{boxSizing:"border-box",...a.style,...u,...s?{width:"100%"}:{}}})}}exports.createComponent=q;
|
|
2
|
+
//# sourceMappingURL=createComponent-ixuQW53A.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createComponent-
|
|
1
|
+
{"version":3,"file":"createComponent-ixuQW53A.cjs","sources":["../../../../core/src/options/createOptions/createOptions.ts","../../../../core/src/plugin/color/defineColor/defineColor.ts","../../../../core/src/plugin/color/defineBackground/defineBackground.ts","../../../../core/src/plugin/color/defineBorderColor/defineBorderColor.ts","../../../../core/src/plugin/color/defineBackgroundColor/defineBackgroundColor.ts","../../../../core/src/plugin/shape/defineBorderRadius/defineBorderRadius.ts","../../../../core/src/plugin/spacing/defineMargin/defineMargin.ts","../../../../core/src/plugin/spacing/definePadding/definePadding.ts","../../../../core/src/plugin/behavior/defineBoxShadow/defineBoxShadow.ts","../../src/core/createComponent.tsx"],"sourcesContent":["import type { Properties } from 'csstype';\n\nimport type { Plugin } from '../../plugin';\nimport type { ThemeBuilded } from '../../theme';\nimport type { CustomOptions } from '../CustomOptions';\n\ntype Data = {\n sx: CustomOptions;\n theme: ThemeBuilded;\n}\n\nexport default function createOptions({ sx, theme }: Data, ...plugins: Plugin[]): Properties {\n return plugins.reduce<Properties>((acc, plugin) => {\n acc = { ...acc, ...plugin(theme, sx) };\n\n return acc;\n }, {});\n}","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { color }) => {\n const { palette } = theme;\n\n if (!color) { return {}; }\n\n return {\n color: color(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { background }) => {\n const { palette } = theme;\n\n if (!background) { return {}; }\n\n return {\n background: background(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { borderColor }) => {\n const { palette } = theme;\n\n if (!borderColor) { return {}; }\n\n return {\n borderColor: borderColor(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { backgroundColor }) => {\n const { palette } = theme;\n\n if (!backgroundColor) { return {}; }\n\n return {\n backgroundColor: backgroundColor(palette)\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { borderRadius }) => {\n const { shape } = theme;\n\n if (!borderRadius) { return {}; }\n\n return {\n borderRadius: `${shape.radius * borderRadius}px`\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { m, mb, ml, mr, mt, mx, my }) => {\n const { spacing } = theme;\n\n const calculateMargin = (mg?: number) => {\n return !!mg || mg === 0 ? `${String(mg * spacing)}px` : '';\n };\n\n const hasM = calculateMargin(m);\n\n const hasMt = calculateMargin(mt);\n const hasMb = calculateMargin(mb);\n\n const hasMy = calculateMargin(my);\n const hasMx = calculateMargin(mx);\n\n const hasMl = calculateMargin(ml);\n const hasMr = calculateMargin(mr);\n\n return {\n margin: hasM,\n marginTop: hasMt || hasMy || hasM,\n marginBottom: hasMb || hasMy || hasM,\n marginLeft: hasMl || hasMx || hasM,\n marginRight: hasMr || hasMx || hasM,\n };\n});","import definePlugin from '../../definePlugin';\n\nexport default definePlugin((theme, { p, pb, pl, pr, pt, px, py }) => {\n const { spacing } = theme;\n\n const calculatePadding = (pd?: number) => {\n return !!pd || pd === 0 ? `${String(pd * spacing)}px` : '';\n };\n\n const hasP = calculatePadding(p);\n\n const hasPt = calculatePadding(pt);\n const hasPb = calculatePadding(pb);\n\n const hasPy = calculatePadding(py);\n const hasPx = calculatePadding(px);\n\n const hasPl = calculatePadding(pl);\n const hasPr = calculatePadding(pr);\n\n return {\n padding: hasP,\n paddingTop: hasPt || hasPy || hasP,\n paddingBottom: hasPb || hasPy || hasP,\n paddingLeft: hasPl || hasPx || hasP,\n paddingRight: hasPr || hasPx || hasP,\n };\n});","import { boxShadowSmall, boxShadowRegular, boxShadowLarge } from '@iziui/tokens/web/js';\n\nimport definePlugin from '../../definePlugin';\nimport type { CustomOptions } from '../../../options/CustomOptions';\n\ntype ExtractSize = NonNullable<CustomOptions['boxShadow']>;\n\nexport default definePlugin((_, { boxShadow }) => {\n\n if (!boxShadow) { return {}; }\n\n const sizes: { [s in ExtractSize]: string } = {\n sm: boxShadowSmall,\n md: boxShadowRegular,\n lg: boxShadowLarge,\n };\n\n return {\n boxShadow: sizes[boxShadow]\n };\n});","import type { ComponentType, FC } from 'react';\n\nimport type { Sx } from '@iziui/core/options';\nimport type { Plugin } from '@iziui/core/plugin';\nimport createOptions from '@iziui/core/options';\nimport * as plugins from '@iziui/core/plugin';\n\nimport { useTheme } from '@/theme';\n\nfunction extract(module: { [key: string]: Plugin }) {\n return Object.values(module).map((fn) => fn);\n}\n\nexport default function createComponent<P>(WrappedComponent: ComponentType<P>) {\n WrappedComponent.displayName = WrappedComponent.name;\n\n const EnhancedComponent: FC<Sx<P>> = ({ sx, fullWidth, ...props }) => {\n const { theme } = useTheme();\n\n const options = sx && createOptions({ theme, sx },\n ...extract(plugins),\n );\n\n return (\n <WrappedComponent\n {...(props as P)}\n style={{\n boxSizing: 'border-box',\n ...props['style'],\n ...options,\n ...(fullWidth ? { width: '100%' } : {}),\n }}\n />\n );\n };\n\n return EnhancedComponent;\n}"],"names":["createOptions","sx","theme","plugins","acc","plugin","defineColor","color","palette","defineBackground","background","defineBorderColor","borderColor","defineBackgroundColor","backgroundColor","defineBorderRadius","borderRadius","shape","defineMargin","m","mb","ml","mr","mt","mx","my","spacing","calculateMargin","mg","hasM","hasMt","hasMb","hasMy","hasMx","hasMl","hasMr","definePadding","p","pb","pl","pr","pt","px","py","calculatePadding","pd","hasP","hasPt","hasPb","hasPy","hasPx","hasPl","hasPr","defineBoxShadow","_","boxShadow","boxShadowSmall","boxShadowRegular","boxShadowLarge","extract","module","fn","createComponent","WrappedComponent","fullWidth","props","useTheme","options","jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const l=require("react"),h=require("react/jsx-runtime"),p=l.createContext(null);function y({formGroup:s,debug:t=!1,children:r,...e}){const n=a=>{a.preventDefault(),s.submit()};return h.jsxs(p,{value:s,children:[h.jsx("form",{...e,style:{width:"100%",...e.style},onSubmit:n,noValidate:!0,children:r}),t&&h.jsx("pre",{style:{maxHeight:350,padding:15,borderRadius:4,overflow:"auto",color:"#333",background:"#e5e5e5",boxShadow:"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)"},children:JSON.stringify(s,null,2)})]})}function f(){const s=l.useContext(p);if(!s)throw new Error("useFormGroup must be used inside <FormProvider> (or <Form />).");return s}function v(s){const t=f();return{control:t.controls[s],update:n=>{t.setValues(a=>(a[s]=n,a))}}}function m({controlName:s,field:t,action:r="input"}){const{control:e,update:n}=v(s);return(i=>{const u=o=>["radio","checkbox"].includes(o.type)?o.target.checked:o.target.value;return l.cloneElement(i,{onBlur:o=>{r==="blur"&&n(u(o)),i.props.onBlur&&i.props.onBlur(o)},onInput:o=>{r==="input"&&n(u(o)),i.props.onInput&&i.props.onInput(o)},onChange:o=>{r==="change"&&n(u(o)),i.props.onChange&&i.props.onChange(o)}})})(t(e))}class d{constructor(t,r,e){this.controls=t,this.handle=r,this.validator=e}controls;handle;validator;_valid=!1;_hydrate;get hydrate(){return this._hydrate}set hydrate(t){this._hydrate=t}get isValid(){return this._valid}set isValid(t){this._valid=t}get errors(){return Object.values(this.controls).filter(t=>t.error)}get values(){const t={};return this.eachControl((r,e)=>({[e]:r.value})).forEach(r=>{for(const e in r)t[e]=r[e]}),t}setValues(t){const r=typeof t=="function"?t(this.values):t;for(const e of Object.keys(r))this.controls[e].value=r[e];this.validate(),this.hydrate(this),this.handle.change&&this.handle.change(this)}eachControl(t){return Object.keys(this.controls).map(r=>t(this.controls[r],r))}submit(){this.handle.submit&&(this.eachControl(t=>{t.dirty=!0}),this.validate(),this.hydrate(this),this.handle.submit(this))}reset(){this.eachControl(t=>t.reset()),this.hydrate(this)}validate(){this.validator&&(Object.entries(this.validator).map(([t,r])=>{if(!r)return;const e=this.controls[t].validate(),n=r(this);this.controls[t].error=e||n||""}),this.isValid=!this.errors.length,this.hydrate(this))}}class g{_value;defaultValue;validators=[];type;error="";dirty=!1;constructor({defaultValue:t,type:r="text",validators:e}){this.type=r,this._value=t,this.defaultValue=t,e&&(this.validators=e)}get value(){return this._value}set value(t){this.dirty=!0,this._value=t,this.validate()}get isInvalid(){return!!(this.dirty&&this.error)}reset(){this.value=this.defaultValue,this.dirty=!1}validate(){const t=this.validators.map(r=>r(this)).filter(Boolean);return this.error=t[0]||"",this.error}}function b(s){return Object.entries(s).reduce((t,r)=>{const e=r[0],n=r[1];return t[e]=new g(n),t},{})}function C({form:s,handle:t,validator:r}){const[e,n]=l.useState(new d(b(s),t,r)),a=i=>{n(u=>{const o=i.controls,c=new d(o,t,r);return c.hydrate=u.hydrate,c})};return e.hydrate=a,e}exports.Control=m;exports.Form=y;exports.useControl=v;exports.useForm=C;exports.useFormGroup=f;
|
|
2
|
+
//# sourceMappingURL=useForm-D3kD3cxE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useForm-D3kD3cxE.cjs","sources":["../../src/lab/Form/Form.tsx","../../src/lab/Form/useFormGroup.ts","../../src/lab/Form/useControl.ts","../../src/lab/Form/Control.tsx","../../src/lab/Form/FormGroup.ts","../../src/lab/Form/FormControl.ts","../../src/lab/Form/useForm.ts"],"sourcesContent":["import { createContext, SubmitEvent, HTMLAttributes } from 'react';\n\nimport type FormGroup from './FormGroup';\n\nexport const FormContext = createContext<FormGroup<any> | null>(null);\n\ninterface FormProps<T extends Record<string, unknown>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, unknown>>({\n formGroup,\n debug = false,\n children,\n ...props\n}: FormProps<T>) {\n const submit = (event: SubmitEvent<HTMLFormElement>) => {\n event.preventDefault();\n formGroup.submit();\n };\n\n return (\n <FormContext value={formGroup}>\n <form\n {...props}\n style={{ width: '100%', ...props.style }}\n onSubmit={submit}\n noValidate\n >\n {children}\n </form>\n {\n debug && (\n <pre style={{\n maxHeight: 350,\n padding: 15,\n borderRadius: 4,\n overflow: 'auto',\n color: '#333',\n background: '#e5e5e5',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',\n }}>\n {JSON.stringify(formGroup, null, 2)}\n </pre>\n )\n }\n </FormContext>\n );\n}","import { useContext } from 'react';\n\nimport type FormGroup from './FormGroup';\nimport { FormContext } from './Form';\n\nexport default function useFormGroup<T extends Record<string, unknown>>() {\n const context = useContext(FormContext);\n\n if (!context) throw new Error('useFormGroup must be used inside <FormProvider> (or <Form />).');\n\n return context as FormGroup<T>;\n}","import useFormGroup from './useFormGroup';\n\nexport default function useControl<\n T extends Record<string, unknown>,\n K extends keyof T = keyof T,\n>(controlName: K) {\n const formGroup = useFormGroup<T>();\n const control = formGroup.controls[controlName];\n\n const update = (value: T[K]) => {\n formGroup.setValues((data) => {\n data[controlName] = value;\n\n return data;\n });\n };\n\n return { control, update };\n}","import { ChangeEvent, cloneElement, InputEvent, InputHTMLAttributes, ReactElement } from 'react';\n\nimport useControl from './useControl';\nimport type { AbstractControl } from './AbstractControl';\n\ninterface ControlProps<\n T extends Record<string, any>,\n K extends keyof T,\n> {\n controlName: K;\n action?: 'change' | 'input' | 'blur';\n field: (control: AbstractControl<T>[K]) => React.JSX.Element;\n}\n\nexport default function Control<\n T extends Record<string, any>,\n K extends keyof T\n>({\n controlName,\n field,\n action = 'input'\n}: ControlProps<T, K>) {\n const { control, update } = useControl<T, K>(controlName);\n\n const renderChildren = (child: ReactElement<InputHTMLAttributes<HTMLInputElement>>) => {\n const getValue = (e: ChangeEvent<HTMLInputElement> | InputEvent<HTMLInputElement>) => {\n if (['radio', 'checkbox'].includes(e.type)) { return e.target['checked']; }\n\n return e.target['value'];\n };\n\n return cloneElement(child, {\n onBlur: (e) => {\n if (action === 'blur') { update(getValue(e)); };\n\n if (child.props.onBlur) { child.props.onBlur(e); }\n },\n onInput: (e) => {\n if (action === 'input') { update(getValue(e)); };\n\n if (child.props.onInput) { child.props.onInput(e); }\n },\n onChange: (e) => {\n if (action === 'change') { update(getValue(e)); };\n\n if (child.props.onChange) { child.props.onChange(e); }\n },\n });\n };\n\n return (\n renderChildren(field(control))\n );\n}","import type { AbstractControl } from './AbstractControl';\nimport type FormControl from './FormControl';\n\ntype Hydrate<T extends Record<string, unknown>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, unknown>> = Partial<{\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}>\n\nexport interface Handle<T extends Record<string, unknown>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, unknown>> {\n private _valid = false;\n private _hydrate!: Hydrate<T>;\n\n constructor(\n public controls: AbstractControl<T>,\n public handle: Handle<T>,\n public validator?: Validator<T>,\n ) { }\n\n /**\n * Atualiza o estado interno do componente.\n * @private\n * @description Este método é usado internamente pela biblioteca.\n * Para atualizar valores externamente, use {@link setValues}.\n*/\n get hydrate() { return this._hydrate; }\n set hydrate(fn: (values: FormGroup<T>) => any) { this._hydrate = fn; }\n\n get isValid(): boolean { return this._valid; }\n set isValid(validity: boolean) { this._valid = validity; }\n\n get errors() {\n return Object.values<FormControl<T[keyof T]>>(this.controls)\n .filter(c => c.error);\n }\n\n get values(): T {\n const values: Record<string, any> = {};\n\n this.eachControl((control, key) => ({ [key as string]: control.value }))\n .forEach(control => { for (const prop in control) { values[prop] = control[prop]; } });\n\n return values as T;\n }\n\n public setValues(fn: SetValues<T>): void;\n public setValues(partialForm: Partial<T>): void;\n public setValues(arg: Partial<T> | SetValues<T>) {\n const partial =\n typeof arg === 'function'\n ? arg(this.values)\n : arg;\n\n for (const key of Object.keys(partial)) {\n this.controls[key].value = partial[key] as T[keyof T];\n }\n\n this.validate();\n\n this.hydrate(this);\n\n if (!this.handle.change) { return; }\n\n this.handle.change(this);\n }\n\n private eachControl(fn: <K extends keyof T>(control: FormControl<T[K]>, key?: K) => any) {\n return Object.keys(this.controls).map(k => fn(this.controls[k], k));\n }\n\n public submit() {\n if (!this.handle.submit) { return; }\n\n this.eachControl((control) => { control.dirty = true; });\n\n this.validate();\n\n this.hydrate(this);\n this.handle.submit(this);\n }\n\n public reset() {\n this.eachControl((control) => control.reset());\n this.hydrate(this);\n }\n\n public validate() {\n if (!this.validator) { return; }\n\n Object.entries(this.validator).map(([key, fn]) => {\n if (!fn) { return; }\n\n const controlError = this.controls[key].validate();\n\n const validatorError = fn(this);\n\n this.controls[key].error = controlError || validatorError || '';\n });\n\n this.isValid = !this.errors.length;\n this.hydrate(this);\n }\n}","type Type = 'text' | 'email';\ntype Validator<C> = (control: FormControl<C>) => string | false | void;\n\ntype Data<T> = {\n defaultValue: T;\n type?: Type;\n validators?: Validator<T>[];\n}\n\nexport type Constructor<V> = ConstructorParameters<typeof FormControl<V>>[number];\n\nexport default class FormControl<V> implements Pick<Data<V>, 'type'> {\n private _value!: V;\n private defaultValue: V;\n private validators: Validator<V>[] = [];\n\n public type: Type;\n public error = '';\n public dirty = false;\n\n constructor({\n defaultValue,\n type = 'text',\n validators,\n }: Data<V>) {\n this.type = type;\n this._value = defaultValue;\n this.defaultValue = defaultValue;\n\n if (validators) { this.validators = validators; }\n }\n\n get value(): V { return this._value; }\n set value(value: V) {\n this.dirty = true;\n this._value = value;\n this.validate();\n }\n\n get isInvalid() { return Boolean(this.dirty && this.error); }\n\n public reset() {\n this.value = this.defaultValue;\n this.dirty = false;\n }\n\n public validate() {\n const errors = this.validators\n .map(v => v(this))\n .filter(Boolean);\n\n this.error = errors[0] || '';\n\n return this.error;\n }\n}\n","import { useState } from 'react';\n\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport type { Constructor } from './FormControl';\nimport type { Handle, Validator } from './FormGroup';\nimport type { AbstractControl } from './AbstractControl';\n\ntype UseForm<T extends Record<string, unknown>> = {\n form: { [K in keyof T]: Constructor<T[K]> };\n handle: Handle<T>;\n validator?: Validator<T>;\n}\n\nfunction makingControls<T extends Record<string, unknown>>(form: { [K in keyof T]: Constructor<T[K]> }) {\n return Object.entries(form)\n .reduce((acc, data) => {\n const key = data[0] as keyof T;\n const value = data[1] as Constructor<T[keyof T]>;\n\n acc[key] = new FormControl(value);\n\n return acc;\n }, {} as AbstractControl<T>);\n}\n\nexport default function useForm<T extends Record<string, unknown>>({\n form,\n handle,\n validator\n}: UseForm<T>) {\n const [formGroup, setFormGroup] = useState<FormGroup<T>>(\n new FormGroup(\n makingControls(form),\n handle,\n validator\n )\n );\n\n const hydrate = (form: FormGroup<T>) => {\n setFormGroup(prev => {\n const controls = form.controls;\n\n const newFormGroup = new FormGroup(controls, handle, validator);\n newFormGroup.hydrate = prev.hydrate;\n\n return newFormGroup;\n });\n };\n\n formGroup.hydrate = hydrate;\n\n return formGroup;\n}"],"names":["FormContext","createContext","Form","formGroup","debug","children","props","submit","event","jsxs","jsx","useFormGroup","context","useContext","useControl","controlName","value","data","Control","field","action","control","update","child","getValue","e","cloneElement","FormGroup","controls","handle","validator","fn","validity","c","values","key","prop","arg","partial","k","controlError","validatorError","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","setFormGroup","useState","hydrate","prev","newFormGroup"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createContext as p,useContext as f,cloneElement as v,useState as y}from"react";import{jsxs as m,jsx as h}from"react/jsx-runtime";const d=p(null);function w({formGroup:s,debug:t=!1,children:r,...e}){const n=a=>{a.preventDefault(),s.submit()};return m(d,{value:s,children:[h("form",{...e,style:{width:"100%",...e.style},onSubmit:n,noValidate:!0,children:r}),t&&h("pre",{style:{maxHeight:350,padding:15,borderRadius:4,overflow:"auto",color:"#333",background:"#e5e5e5",boxShadow:"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)"},children:JSON.stringify(s,null,2)})]})}function g(){const s=f(d);if(!s)throw new Error("useFormGroup must be used inside <FormProvider> (or <Form />).");return s}function b(s){const t=g();return{control:t.controls[s],update:n=>{t.setValues(a=>(a[s]=n,a))}}}function V({controlName:s,field:t,action:r="input"}){const{control:e,update:n}=b(s);return(i=>{const u=o=>["radio","checkbox"].includes(o.type)?o.target.checked:o.target.value;return v(i,{onBlur:o=>{r==="blur"&&n(u(o)),i.props.onBlur&&i.props.onBlur(o)},onInput:o=>{r==="input"&&n(u(o)),i.props.onInput&&i.props.onInput(o)},onChange:o=>{r==="change"&&n(u(o)),i.props.onChange&&i.props.onChange(o)}})})(t(e))}class c{constructor(t,r,e){this.controls=t,this.handle=r,this.validator=e}controls;handle;validator;_valid=!1;_hydrate;get hydrate(){return this._hydrate}set hydrate(t){this._hydrate=t}get isValid(){return this._valid}set isValid(t){this._valid=t}get errors(){return Object.values(this.controls).filter(t=>t.error)}get values(){const t={};return this.eachControl((r,e)=>({[e]:r.value})).forEach(r=>{for(const e in r)t[e]=r[e]}),t}setValues(t){const r=typeof t=="function"?t(this.values):t;for(const e of Object.keys(r))this.controls[e].value=r[e];this.validate(),this.hydrate(this),this.handle.change&&this.handle.change(this)}eachControl(t){return Object.keys(this.controls).map(r=>t(this.controls[r],r))}submit(){this.handle.submit&&(this.eachControl(t=>{t.dirty=!0}),this.validate(),this.hydrate(this),this.handle.submit(this))}reset(){this.eachControl(t=>t.reset()),this.hydrate(this)}validate(){this.validator&&(Object.entries(this.validator).map(([t,r])=>{if(!r)return;const e=this.controls[t].validate(),n=r(this);this.controls[t].error=e||n||""}),this.isValid=!this.errors.length,this.hydrate(this))}}class C{_value;defaultValue;validators=[];type;error="";dirty=!1;constructor({defaultValue:t,type:r="text",validators:e}){this.type=r,this._value=t,this.defaultValue=t,e&&(this.validators=e)}get value(){return this._value}set value(t){this.dirty=!0,this._value=t,this.validate()}get isInvalid(){return!!(this.dirty&&this.error)}reset(){this.value=this.defaultValue,this.dirty=!1}validate(){const t=this.validators.map(r=>r(this)).filter(Boolean);return this.error=t[0]||"",this.error}}function x(s){return Object.entries(s).reduce((t,r)=>{const e=r[0],n=r[1];return t[e]=new C(n),t},{})}function j({form:s,handle:t,validator:r}){const[e,n]=y(new c(x(s),t,r)),a=i=>{n(u=>{const o=i.controls,l=new c(o,t,r);return l.hydrate=u.hydrate,l})};return e.hydrate=a,e}export{V as C,w as F,j as a,g as b,b as u};
|
|
2
|
+
//# sourceMappingURL=useForm-DBk4Of85.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useForm-DBk4Of85.js","sources":["../../src/lab/Form/Form.tsx","../../src/lab/Form/useFormGroup.ts","../../src/lab/Form/useControl.ts","../../src/lab/Form/Control.tsx","../../src/lab/Form/FormGroup.ts","../../src/lab/Form/FormControl.ts","../../src/lab/Form/useForm.ts"],"sourcesContent":["import { createContext, SubmitEvent, HTMLAttributes } from 'react';\n\nimport type FormGroup from './FormGroup';\n\nexport const FormContext = createContext<FormGroup<any> | null>(null);\n\ninterface FormProps<T extends Record<string, unknown>> extends HTMLAttributes<HTMLFormElement> {\n formGroup: FormGroup<T>;\n debug?: boolean;\n}\n\nexport default function Form<T extends Record<string, unknown>>({\n formGroup,\n debug = false,\n children,\n ...props\n}: FormProps<T>) {\n const submit = (event: SubmitEvent<HTMLFormElement>) => {\n event.preventDefault();\n formGroup.submit();\n };\n\n return (\n <FormContext value={formGroup}>\n <form\n {...props}\n style={{ width: '100%', ...props.style }}\n onSubmit={submit}\n noValidate\n >\n {children}\n </form>\n {\n debug && (\n <pre style={{\n maxHeight: 350,\n padding: 15,\n borderRadius: 4,\n overflow: 'auto',\n color: '#333',\n background: '#e5e5e5',\n boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',\n }}>\n {JSON.stringify(formGroup, null, 2)}\n </pre>\n )\n }\n </FormContext>\n );\n}","import { useContext } from 'react';\n\nimport type FormGroup from './FormGroup';\nimport { FormContext } from './Form';\n\nexport default function useFormGroup<T extends Record<string, unknown>>() {\n const context = useContext(FormContext);\n\n if (!context) throw new Error('useFormGroup must be used inside <FormProvider> (or <Form />).');\n\n return context as FormGroup<T>;\n}","import useFormGroup from './useFormGroup';\n\nexport default function useControl<\n T extends Record<string, unknown>,\n K extends keyof T = keyof T,\n>(controlName: K) {\n const formGroup = useFormGroup<T>();\n const control = formGroup.controls[controlName];\n\n const update = (value: T[K]) => {\n formGroup.setValues((data) => {\n data[controlName] = value;\n\n return data;\n });\n };\n\n return { control, update };\n}","import { ChangeEvent, cloneElement, InputEvent, InputHTMLAttributes, ReactElement } from 'react';\n\nimport useControl from './useControl';\nimport type { AbstractControl } from './AbstractControl';\n\ninterface ControlProps<\n T extends Record<string, any>,\n K extends keyof T,\n> {\n controlName: K;\n action?: 'change' | 'input' | 'blur';\n field: (control: AbstractControl<T>[K]) => React.JSX.Element;\n}\n\nexport default function Control<\n T extends Record<string, any>,\n K extends keyof T\n>({\n controlName,\n field,\n action = 'input'\n}: ControlProps<T, K>) {\n const { control, update } = useControl<T, K>(controlName);\n\n const renderChildren = (child: ReactElement<InputHTMLAttributes<HTMLInputElement>>) => {\n const getValue = (e: ChangeEvent<HTMLInputElement> | InputEvent<HTMLInputElement>) => {\n if (['radio', 'checkbox'].includes(e.type)) { return e.target['checked']; }\n\n return e.target['value'];\n };\n\n return cloneElement(child, {\n onBlur: (e) => {\n if (action === 'blur') { update(getValue(e)); };\n\n if (child.props.onBlur) { child.props.onBlur(e); }\n },\n onInput: (e) => {\n if (action === 'input') { update(getValue(e)); };\n\n if (child.props.onInput) { child.props.onInput(e); }\n },\n onChange: (e) => {\n if (action === 'change') { update(getValue(e)); };\n\n if (child.props.onChange) { child.props.onChange(e); }\n },\n });\n };\n\n return (\n renderChildren(field(control))\n );\n}","import type { AbstractControl } from './AbstractControl';\nimport type FormControl from './FormControl';\n\ntype Hydrate<T extends Record<string, unknown>> = (data: FormGroup<T>) => void;\ntype SetValues<F> = Partial<F> | ((values: F) => Partial<F>);\n\nexport type Validator<T extends Record<string, unknown>> = Partial<{\n [K in keyof T]: (data: FormGroup<T>) => string | void;\n}>\n\nexport interface Handle<T extends Record<string, unknown>> {\n change?: (form: FormGroup<T>) => void;\n submit?: (form: FormGroup<T>) => void;\n}\n\nexport default class FormGroup<T extends Record<string, unknown>> {\n private _valid = false;\n private _hydrate!: Hydrate<T>;\n\n constructor(\n public controls: AbstractControl<T>,\n public handle: Handle<T>,\n public validator?: Validator<T>,\n ) { }\n\n /**\n * Atualiza o estado interno do componente.\n * @private\n * @description Este método é usado internamente pela biblioteca.\n * Para atualizar valores externamente, use {@link setValues}.\n*/\n get hydrate() { return this._hydrate; }\n set hydrate(fn: (values: FormGroup<T>) => any) { this._hydrate = fn; }\n\n get isValid(): boolean { return this._valid; }\n set isValid(validity: boolean) { this._valid = validity; }\n\n get errors() {\n return Object.values<FormControl<T[keyof T]>>(this.controls)\n .filter(c => c.error);\n }\n\n get values(): T {\n const values: Record<string, any> = {};\n\n this.eachControl((control, key) => ({ [key as string]: control.value }))\n .forEach(control => { for (const prop in control) { values[prop] = control[prop]; } });\n\n return values as T;\n }\n\n public setValues(fn: SetValues<T>): void;\n public setValues(partialForm: Partial<T>): void;\n public setValues(arg: Partial<T> | SetValues<T>) {\n const partial =\n typeof arg === 'function'\n ? arg(this.values)\n : arg;\n\n for (const key of Object.keys(partial)) {\n this.controls[key].value = partial[key] as T[keyof T];\n }\n\n this.validate();\n\n this.hydrate(this);\n\n if (!this.handle.change) { return; }\n\n this.handle.change(this);\n }\n\n private eachControl(fn: <K extends keyof T>(control: FormControl<T[K]>, key?: K) => any) {\n return Object.keys(this.controls).map(k => fn(this.controls[k], k));\n }\n\n public submit() {\n if (!this.handle.submit) { return; }\n\n this.eachControl((control) => { control.dirty = true; });\n\n this.validate();\n\n this.hydrate(this);\n this.handle.submit(this);\n }\n\n public reset() {\n this.eachControl((control) => control.reset());\n this.hydrate(this);\n }\n\n public validate() {\n if (!this.validator) { return; }\n\n Object.entries(this.validator).map(([key, fn]) => {\n if (!fn) { return; }\n\n const controlError = this.controls[key].validate();\n\n const validatorError = fn(this);\n\n this.controls[key].error = controlError || validatorError || '';\n });\n\n this.isValid = !this.errors.length;\n this.hydrate(this);\n }\n}","type Type = 'text' | 'email';\ntype Validator<C> = (control: FormControl<C>) => string | false | void;\n\ntype Data<T> = {\n defaultValue: T;\n type?: Type;\n validators?: Validator<T>[];\n}\n\nexport type Constructor<V> = ConstructorParameters<typeof FormControl<V>>[number];\n\nexport default class FormControl<V> implements Pick<Data<V>, 'type'> {\n private _value!: V;\n private defaultValue: V;\n private validators: Validator<V>[] = [];\n\n public type: Type;\n public error = '';\n public dirty = false;\n\n constructor({\n defaultValue,\n type = 'text',\n validators,\n }: Data<V>) {\n this.type = type;\n this._value = defaultValue;\n this.defaultValue = defaultValue;\n\n if (validators) { this.validators = validators; }\n }\n\n get value(): V { return this._value; }\n set value(value: V) {\n this.dirty = true;\n this._value = value;\n this.validate();\n }\n\n get isInvalid() { return Boolean(this.dirty && this.error); }\n\n public reset() {\n this.value = this.defaultValue;\n this.dirty = false;\n }\n\n public validate() {\n const errors = this.validators\n .map(v => v(this))\n .filter(Boolean);\n\n this.error = errors[0] || '';\n\n return this.error;\n }\n}\n","import { useState } from 'react';\n\nimport FormGroup from './FormGroup';\nimport FormControl from './FormControl';\nimport type { Constructor } from './FormControl';\nimport type { Handle, Validator } from './FormGroup';\nimport type { AbstractControl } from './AbstractControl';\n\ntype UseForm<T extends Record<string, unknown>> = {\n form: { [K in keyof T]: Constructor<T[K]> };\n handle: Handle<T>;\n validator?: Validator<T>;\n}\n\nfunction makingControls<T extends Record<string, unknown>>(form: { [K in keyof T]: Constructor<T[K]> }) {\n return Object.entries(form)\n .reduce((acc, data) => {\n const key = data[0] as keyof T;\n const value = data[1] as Constructor<T[keyof T]>;\n\n acc[key] = new FormControl(value);\n\n return acc;\n }, {} as AbstractControl<T>);\n}\n\nexport default function useForm<T extends Record<string, unknown>>({\n form,\n handle,\n validator\n}: UseForm<T>) {\n const [formGroup, setFormGroup] = useState<FormGroup<T>>(\n new FormGroup(\n makingControls(form),\n handle,\n validator\n )\n );\n\n const hydrate = (form: FormGroup<T>) => {\n setFormGroup(prev => {\n const controls = form.controls;\n\n const newFormGroup = new FormGroup(controls, handle, validator);\n newFormGroup.hydrate = prev.hydrate;\n\n return newFormGroup;\n });\n };\n\n formGroup.hydrate = hydrate;\n\n return formGroup;\n}"],"names":["FormContext","createContext","Form","formGroup","debug","children","props","submit","event","jsxs","jsx","useFormGroup","context","useContext","useControl","controlName","value","data","Control","field","action","control","update","child","getValue","e","cloneElement","FormGroup","controls","handle","validator","fn","validity","c","values","key","prop","arg","partial","k","controlError","validatorError","FormControl","defaultValue","type","validators","errors","v","makingControls","form","acc","useForm","setFormGroup","useState","hydrate","prev","newFormGroup"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as B,Fragment as E,jsx as m}from"react/jsx-runtime";import{forwardRef as L,useState as g,Children as P,useMemo as W,useEffect as x,cloneElement as F}from"react";import{p as r}from"./index-CZ41y9Hn.js";import{j as G}from"./joinClass-anSpaauN.js";import{u as H}from"./uuid-dGvr9vBZ.js";import{u as S}from"./useListenerResized-Bnqxrt7k.js";import{C as U}from"./Card-
|
|
2
|
-
//# sourceMappingURL=useMenu-
|
|
1
|
+
import{jsxs as B,Fragment as E,jsx as m}from"react/jsx-runtime";import{forwardRef as L,useState as g,Children as P,useMemo as W,useEffect as x,cloneElement as F}from"react";import{p as r}from"./index-CZ41y9Hn.js";import{j as G}from"./joinClass-anSpaauN.js";import{u as H}from"./uuid-dGvr9vBZ.js";import{u as S}from"./useListenerResized-Bnqxrt7k.js";import{C as U}from"./Card-BjoXz5bX.js";import{C as q}from"./CardContent-srKirxQF.js";import{c as J}from"./createComponent-C6TL60ri.js";class K{delay(t,n=500){if(!n){t();return}clearTimeout(this.timeout),this.timeout=setTimeout(()=>{t()},n)}}const Q=new K,V=L(function({open:t,width:n,children:f,anchorEl:o,direction:c="left",maxHeight:s,autoClose:N,onClose:M,...u},k){const[y,v]=g(),[d,a]=g({state:"invisible",animation:"close",width:"auto"}),w=16,T=150,A=P.toArray(f),b=W(()=>H(),[]),I=G(`${r}-menu`,`${r}-menu--${d?.animation}`,u.className);S(()=>_(),[o]),x(()=>{_()},[o]),x(()=>{t?j():h()},[t]);const _=()=>{o&&setTimeout(()=>{let e={};const{offsetWidth:i,offsetHeight:p,offsetLeft:$,offsetTop:D}=o;a(z=>({...z,width:i}));const C=D+p+w/2,R=document.getElementById(b);c==="center"&&(e={top:C,right:i}),c==="left"&&(e={top:C,left:$}),c==="right"&&(e={top:C,left:$-(R.offsetWidth-i)}),v(e)},0)},j=()=>{a(e=>({...e,state:"visible"})),setTimeout(()=>{a(e=>({...e,animation:"open"}))},10)},h=()=>{a(e=>({...e,animation:"close"})),setTimeout(()=>{a(e=>({...e,state:"invisible"})),M()},T)},O=()=>A.map((e,i)=>F(e,{tabIndex:i+1,key:`button-${i}`,onClick:p=>{Q.delay(()=>{N&&h(),e.props.onClick&&e.props.onClick(p)},0)}}));return B(E,{children:[m("div",{id:b,ref:k,...u,style:{width:n||d.width,top:y?.top,left:y?.left,display:d?.state==="visible"?"block":"none",transition:`all ${T}ms ease-in`,zIndex:50,...u.style},className:I,children:t&&m(U,{className:`${r}-menu__card`,children:m(q,{className:`${r}-menu__card__content`,sx:{py:1},style:{display:"flex",flexDirection:"column",maxHeight:s},children:O()})})}),t&&m("div",{className:`${r}-menu__overlay`,onClick:h})]})}),ae=J(V);function re(){const[l,t]=g(null),n=!!l,f=s=>{t(s?s.currentTarget:null)},o=()=>{t(null)};return[n,l,s=>{if(n){o();return}f(s)}]}export{ae as M,re as u};
|
|
2
|
+
//# sourceMappingURL=useMenu-CA-D2bkv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenu-
|
|
1
|
+
{"version":3,"file":"useMenu-CA-D2bkv.js","sources":["../../../../toolkit/src/debounce/debounce.ts","../../src/navigation/Menu/Menu.tsx","../../src/navigation/Menu/useMenu.ts"],"sourcesContent":["class Debounce {\n private timeout: NodeJS.Timeout | undefined;\n public delay(func: (a?: any) => void, milliseconds = 500) {\n if (!milliseconds) {\n func();\n return;\n }\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => { func(); }, milliseconds);\n }\n}\n\nexport const debounce = new Debounce();\n","import {\n useMemo,\n useState,\n useEffect,\n Children,\n forwardRef,\n type ReactElement,\n type CSSProperties,\n type HTMLAttributes,\n cloneElement\n} from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\n\nimport { uuid } from '@iziui/toolkit/uuid';\nimport { debounce } from '@iziui/toolkit/debounce';\n\nimport useListenerResized from '@/hooks/useListenerResized';\nimport { Card, CardContent } from '@/display/Card';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Menu.scss';\n\ntype Direction = 'left' | 'right' | 'center';\ntype AnimationClass = 'open' | 'close';\ntype State = 'visible' | 'invisible';\ntype Coordinates = { top?: number; right?: number; bottom?: number; left?: number; };\ntype Config = { animation: AnimationClass, state: State; width: CSSProperties['width'] };\n\nexport interface MenuProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n autoClose?: boolean;\n maxHeight?: CSSProperties['maxHeight'];\n direction?: Direction;\n anchorEl: HTMLElement | null;\n width?: CSSProperties['width'];\n children: React.JSX.Element | React.JSX.Element[];\n onClose: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu({\n open,\n width,\n children,\n anchorEl,\n direction = 'left',\n maxHeight,\n autoClose,\n onClose,\n ...props\n}: MenuProps, ref) {\n const [coordinate, setCoordinate] = useState<Coordinates>();\n const [config, setConfig] = useState<Config>({ state: 'invisible', animation: 'close', width: 'auto' });\n\n const GAP = 16;\n const ANIMATION_DURATION = 150;\n\n const arrayChildren = Children.toArray(children) as ReactElement<any>[];\n\n const id = useMemo(() => uuid(), []);\n\n const classes = joinClass(\n `${prefix}-menu`,\n `${prefix}-menu--${config?.animation}`,\n props.className\n );\n\n useListenerResized(() => changePosition(), [anchorEl]);\n\n useEffect(() => { changePosition(); }, [anchorEl]);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n useEffect(() => { open ? handleOpen() : handleClose(); }, [open]);\n\n const changePosition = () => {\n if (!anchorEl) { return; }\n\n setTimeout(() => {\n let coordinates: Coordinates = {};\n\n const { offsetWidth, offsetHeight, offsetLeft, offsetTop } = anchorEl;\n\n setConfig(prev => ({ ...prev, width: offsetWidth }));\n\n const top = offsetTop + offsetHeight + (GAP / 2);\n\n const el = document.getElementById(id) as HTMLElement;\n\n if (direction === 'center') { coordinates = { top, right: offsetWidth }; }\n\n if (direction === 'left') { coordinates = { top, left: offsetLeft }; }\n\n if (direction === 'right') { coordinates = { top, left: offsetLeft - (el.offsetWidth - offsetWidth) }; }\n\n setCoordinate(coordinates);\n }, 0);\n };\n\n const handleOpen = () => {\n setConfig(prev => ({ ...prev, state: 'visible' }));\n\n setTimeout(() => { setConfig(prev => ({ ...prev, animation: 'open' })); }, 10);\n };\n\n const handleClose = () => {\n setConfig(prev => ({ ...prev, animation: 'close' }));\n\n setTimeout(() => {\n setConfig(prev => ({ ...prev, state: 'invisible' }));\n onClose();\n }, ANIMATION_DURATION);\n };\n\n const renderChildren = () => {\n return arrayChildren.map((child, index) => {\n return cloneElement(child, {\n 'tabIndex': index + 1,\n key: `button-${index}`,\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n debounce.delay(() => {\n\n if (autoClose) { handleClose(); }\n\n if (child.props.onClick) { child.props.onClick(e); }\n }, 0);\n },\n });\n });\n };\n\n return (\n <>\n <div\n id={id}\n ref={ref}\n {...props}\n style={{\n width: width || config.width,\n top: coordinate?.top,\n left: coordinate?.left,\n display: config?.state === 'visible' ? 'block' : 'none',\n transition: `all ${ANIMATION_DURATION}ms ease-in`,\n zIndex: 50,\n ...props.style\n }}\n className={classes}\n >\n {\n open && (\n <Card className={`${prefix}-menu__card`}>\n <CardContent\n className={`${prefix}-menu__card__content`}\n sx={{ py: 1 }}\n style={{ display: 'flex', flexDirection: 'column', maxHeight }}\n >\n {renderChildren()}\n </CardContent>\n </Card>\n )\n }\n </div>\n {open && <div className={`${prefix}-menu__overlay`} onClick={handleClose} />}\n </>\n );\n});\n\nexport default createComponent(Menu);\n","import { useState } from 'react';\n\ntype UseMenu = [\n boolean,\n HTMLElement | null,\n (event?: React.MouseEvent<HTMLButtonElement>) => void,\n];\n\nexport default function useMenu(): UseMenu {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const open = Boolean(anchorEl);\n\n const handleOpen = (event?: React.MouseEvent<HTMLElement, MouseEvent>) => {\n setAnchorEl(event ? event.currentTarget : null);\n };\n\n const handleClose = () => { setAnchorEl(null); };\n\n const handleToggle = (event?: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (open) {\n handleClose();\n return;\n }\n\n handleOpen(event);\n };\n\n return [open, anchorEl, handleToggle];\n}\n"],"names":["Debounce","func","milliseconds","debounce","Menu","forwardRef","open","width","children","anchorEl","direction","maxHeight","autoClose","onClose","props","ref","coordinate","setCoordinate","useState","config","setConfig","GAP","ANIMATION_DURATION","arrayChildren","Children","id","useMemo","uuid","classes","joinClass","prefix","useListenerResized","changePosition","useEffect","handleOpen","handleClose","coordinates","offsetWidth","offsetHeight","offsetLeft","offsetTop","prev","top","el","renderChildren","child","index","cloneElement","e","jsxs","Fragment","jsx","Card","CardContent","Menu$1","createComponent","useMenu","setAnchorEl","event"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const c=require("react/jsx-runtime"),n=require("react"),l=require("./index-DYxwT4uW.cjs"),z=require("./joinClass-Jk3EszKD.cjs"),D=require("./uuid-omnJ9TjZ.cjs"),E=require("./useListenerResized-AwpsZLcP.cjs"),L=require("./Card-
|
|
2
|
-
//# sourceMappingURL=useMenu-
|
|
1
|
+
"use strict";const c=require("react/jsx-runtime"),n=require("react"),l=require("./index-DYxwT4uW.cjs"),z=require("./joinClass-Jk3EszKD.cjs"),D=require("./uuid-omnJ9TjZ.cjs"),E=require("./useListenerResized-AwpsZLcP.cjs"),L=require("./Card-CVrUgBCJ.cjs"),S=require("./CardContent-5JyK0TcD.cjs"),B=require("./createComponent-ixuQW53A.cjs");class P{delay(t,s=500){if(!s){t();return}clearTimeout(this.timeout),this.timeout=setTimeout(()=>{t()},s)}}const W=new P,F=n.forwardRef(function({open:t,width:s,children:f,anchorEl:o,direction:d="left",maxHeight:i,autoClose:_,onClose:$,...m},j){const[g,M]=n.useState(),[h,a]=n.useState({state:"invisible",animation:"close",width:"auto"}),N=16,y=150,k=n.Children.toArray(f),T=n.useMemo(()=>D.uuid(),[]),v=z.joinClass(`${l.prefix}-menu`,`${l.prefix}-menu--${h?.animation}`,m.className);E.useListenerResized(()=>b(),[o]),n.useEffect(()=>{b()},[o]),n.useEffect(()=>{t?w():C()},[t]);const b=()=>{o&&setTimeout(()=>{let e={};const{offsetWidth:r,offsetHeight:p,offsetLeft:q,offsetTop:I}=o;a(O=>({...O,width:r}));const x=I+p+N/2,R=document.getElementById(T);d==="center"&&(e={top:x,right:r}),d==="left"&&(e={top:x,left:q}),d==="right"&&(e={top:x,left:q-(R.offsetWidth-r)}),M(e)},0)},w=()=>{a(e=>({...e,state:"visible"})),setTimeout(()=>{a(e=>({...e,animation:"open"}))},10)},C=()=>{a(e=>({...e,animation:"close"})),setTimeout(()=>{a(e=>({...e,state:"invisible"})),$()},y)},A=()=>k.map((e,r)=>n.cloneElement(e,{tabIndex:r+1,key:`button-${r}`,onClick:p=>{W.delay(()=>{_&&C(),e.props.onClick&&e.props.onClick(p)},0)}}));return c.jsxs(c.Fragment,{children:[c.jsx("div",{id:T,ref:j,...m,style:{width:s||h.width,top:g?.top,left:g?.left,display:h?.state==="visible"?"block":"none",transition:`all ${y}ms ease-in`,zIndex:50,...m.style},className:v,children:t&&c.jsx(L.Card,{className:`${l.prefix}-menu__card`,children:c.jsx(S.CardContent,{className:`${l.prefix}-menu__card__content`,sx:{py:1},style:{display:"flex",flexDirection:"column",maxHeight:i},children:A()})})}),t&&c.jsx("div",{className:`${l.prefix}-menu__overlay`,onClick:C})]})}),G=B.createComponent(F);function H(){const[u,t]=n.useState(null),s=!!u,f=i=>{t(i?i.currentTarget:null)},o=()=>{t(null)};return[s,u,i=>{if(s){o();return}f(i)}]}exports.Menu=G;exports.useMenu=H;
|
|
2
|
+
//# sourceMappingURL=useMenu-eNouSUEO.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenu-
|
|
1
|
+
{"version":3,"file":"useMenu-eNouSUEO.cjs","sources":["../../../../toolkit/src/debounce/debounce.ts","../../src/navigation/Menu/Menu.tsx","../../src/navigation/Menu/useMenu.ts"],"sourcesContent":["class Debounce {\n private timeout: NodeJS.Timeout | undefined;\n public delay(func: (a?: any) => void, milliseconds = 500) {\n if (!milliseconds) {\n func();\n return;\n }\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => { func(); }, milliseconds);\n }\n}\n\nexport const debounce = new Debounce();\n","import {\n useMemo,\n useState,\n useEffect,\n Children,\n forwardRef,\n type ReactElement,\n type CSSProperties,\n type HTMLAttributes,\n cloneElement\n} from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport { joinClass } from '@iziui/core/utils';\n\nimport { uuid } from '@iziui/toolkit/uuid';\nimport { debounce } from '@iziui/toolkit/debounce';\n\nimport useListenerResized from '@/hooks/useListenerResized';\nimport { Card, CardContent } from '@/display/Card';\n\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Menu.scss';\n\ntype Direction = 'left' | 'right' | 'center';\ntype AnimationClass = 'open' | 'close';\ntype State = 'visible' | 'invisible';\ntype Coordinates = { top?: number; right?: number; bottom?: number; left?: number; };\ntype Config = { animation: AnimationClass, state: State; width: CSSProperties['width'] };\n\nexport interface MenuProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n autoClose?: boolean;\n maxHeight?: CSSProperties['maxHeight'];\n direction?: Direction;\n anchorEl: HTMLElement | null;\n width?: CSSProperties['width'];\n children: React.JSX.Element | React.JSX.Element[];\n onClose: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu({\n open,\n width,\n children,\n anchorEl,\n direction = 'left',\n maxHeight,\n autoClose,\n onClose,\n ...props\n}: MenuProps, ref) {\n const [coordinate, setCoordinate] = useState<Coordinates>();\n const [config, setConfig] = useState<Config>({ state: 'invisible', animation: 'close', width: 'auto' });\n\n const GAP = 16;\n const ANIMATION_DURATION = 150;\n\n const arrayChildren = Children.toArray(children) as ReactElement<any>[];\n\n const id = useMemo(() => uuid(), []);\n\n const classes = joinClass(\n `${prefix}-menu`,\n `${prefix}-menu--${config?.animation}`,\n props.className\n );\n\n useListenerResized(() => changePosition(), [anchorEl]);\n\n useEffect(() => { changePosition(); }, [anchorEl]);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n useEffect(() => { open ? handleOpen() : handleClose(); }, [open]);\n\n const changePosition = () => {\n if (!anchorEl) { return; }\n\n setTimeout(() => {\n let coordinates: Coordinates = {};\n\n const { offsetWidth, offsetHeight, offsetLeft, offsetTop } = anchorEl;\n\n setConfig(prev => ({ ...prev, width: offsetWidth }));\n\n const top = offsetTop + offsetHeight + (GAP / 2);\n\n const el = document.getElementById(id) as HTMLElement;\n\n if (direction === 'center') { coordinates = { top, right: offsetWidth }; }\n\n if (direction === 'left') { coordinates = { top, left: offsetLeft }; }\n\n if (direction === 'right') { coordinates = { top, left: offsetLeft - (el.offsetWidth - offsetWidth) }; }\n\n setCoordinate(coordinates);\n }, 0);\n };\n\n const handleOpen = () => {\n setConfig(prev => ({ ...prev, state: 'visible' }));\n\n setTimeout(() => { setConfig(prev => ({ ...prev, animation: 'open' })); }, 10);\n };\n\n const handleClose = () => {\n setConfig(prev => ({ ...prev, animation: 'close' }));\n\n setTimeout(() => {\n setConfig(prev => ({ ...prev, state: 'invisible' }));\n onClose();\n }, ANIMATION_DURATION);\n };\n\n const renderChildren = () => {\n return arrayChildren.map((child, index) => {\n return cloneElement(child, {\n 'tabIndex': index + 1,\n key: `button-${index}`,\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n debounce.delay(() => {\n\n if (autoClose) { handleClose(); }\n\n if (child.props.onClick) { child.props.onClick(e); }\n }, 0);\n },\n });\n });\n };\n\n return (\n <>\n <div\n id={id}\n ref={ref}\n {...props}\n style={{\n width: width || config.width,\n top: coordinate?.top,\n left: coordinate?.left,\n display: config?.state === 'visible' ? 'block' : 'none',\n transition: `all ${ANIMATION_DURATION}ms ease-in`,\n zIndex: 50,\n ...props.style\n }}\n className={classes}\n >\n {\n open && (\n <Card className={`${prefix}-menu__card`}>\n <CardContent\n className={`${prefix}-menu__card__content`}\n sx={{ py: 1 }}\n style={{ display: 'flex', flexDirection: 'column', maxHeight }}\n >\n {renderChildren()}\n </CardContent>\n </Card>\n )\n }\n </div>\n {open && <div className={`${prefix}-menu__overlay`} onClick={handleClose} />}\n </>\n );\n});\n\nexport default createComponent(Menu);\n","import { useState } from 'react';\n\ntype UseMenu = [\n boolean,\n HTMLElement | null,\n (event?: React.MouseEvent<HTMLButtonElement>) => void,\n];\n\nexport default function useMenu(): UseMenu {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const open = Boolean(anchorEl);\n\n const handleOpen = (event?: React.MouseEvent<HTMLElement, MouseEvent>) => {\n setAnchorEl(event ? event.currentTarget : null);\n };\n\n const handleClose = () => { setAnchorEl(null); };\n\n const handleToggle = (event?: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (open) {\n handleClose();\n return;\n }\n\n handleOpen(event);\n };\n\n return [open, anchorEl, handleToggle];\n}\n"],"names":["Debounce","func","milliseconds","debounce","Menu","forwardRef","open","width","children","anchorEl","direction","maxHeight","autoClose","onClose","props","ref","coordinate","setCoordinate","useState","config","setConfig","GAP","ANIMATION_DURATION","arrayChildren","Children","id","useMemo","uuid","classes","joinClass","prefix","useListenerResized","changePosition","useEffect","handleOpen","handleClose","coordinates","offsetWidth","offsetHeight","offsetLeft","offsetTop","prev","top","el","renderChildren","child","index","cloneElement","e","jsxs","Fragment","jsx","Card","CardContent","createComponent","useMenu","setAnchorEl","event"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Alert-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Alert-MsPKPqJS.cjs");require("react/jsx-runtime");require("react");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/Stack-Bpv8iA8b.cjs");require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");require("../../chunks/Typography-CPUKMAJT.cjs");require("../../chunks/convertPathToColor-BlQMLS4V.cjs");require("../../chunks/ButtonIcon-Bk1sFlaj.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("../../chunks/Icon-C_2Qoqhh.cjs");exports.default=e.Alert;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A}from"../../chunks/Alert-
|
|
1
|
+
import{A}from"../../chunks/Alert-DGWFTr3e.js";import"react/jsx-runtime";import"react";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/Stack-BXkZSPdw.js";import"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/useTheme-BkUhhydo.js";import"../../chunks/Typography-BDFesZK7.js";import"../../chunks/convertPathToColor-D2SdAqGh.js";import"../../chunks/ButtonIcon-BP2upur5.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"../../chunks/Icon-BfSirxGe.js";export{A as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),t=require("../../chunks/index-DYxwT4uW.cjs"),f=require("../../chunks/joinClass-Jk3EszKD.cjs"),d=require("../../chunks/Ripple-Dy4i91j1.cjs"),g=require("../../chunks/createComponent-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),t=require("../../chunks/index-DYxwT4uW.cjs"),f=require("../../chunks/joinClass-Jk3EszKD.cjs"),d=require("../../chunks/Ripple-Dy4i91j1.cjs"),g=require("../../chunks/createComponent-ixuQW53A.cjs"),v=require("../../chunks/Icon-C_2Qoqhh.cjs"),x=require("../../chunks/Typography-CPUKMAJT.cjs");require("react");require("../../chunks/useTheme-DwBpyW-5.cjs");require("../../chunks/convertPathToColor-BlQMLS4V.cjs");function s(e){return e.normalize("NFD").trim().toLowerCase().replace(/a-zA-Z0-9_.-+/g,"").replace(/_/g,"").replace(/[^\w\s]/gi,"")}function m(e){const a=e.trim().split(" "),i=a.length===1,r=s(a[0]).charAt(0).toLocaleUpperCase(),c=i?s(a[0]).charAt(1).toLocaleUpperCase():s(a.reverse()[0]).charAt(0).toLocaleUpperCase();return r+c}function y({src:e,alt:a,name:i,size:r=40,variant:c="circular",color:u="primary",icon:l,...n}){const h=f.joinClass(`${t.prefix}-avatar`,`${t.prefix}-avatar--${c}`,`${t.prefix}-avatar--${u}`,e&&`${t.prefix}-avatar--image`,i&&`${t.prefix}-avatar--name`,!e&&!i||l&&`${t.prefix}-avatar--icon`,n.onClick&&`${t.prefix}-avatar--clickable`,n.className),p=()=>e?o.jsx("img",{src:e,alt:a,width:r,height:r,sizes:"100vw",loading:"lazy",style:{width:"100%",height:"auto"}}):i?o.jsx(x.Typography,{style:{fontSize:r/2,color:"currentColor"},children:m(i)}):l||o.jsx(v.Icon,{name:"user",size:r/1.6,style:{color:"currentColor"}});return o.jsxs("div",{...n,style:{width:r,height:r,...n.style},className:h,children:[p(),n.children,n.onClick&&o.jsx(d.Ripple,{})]})}const C=g.createComponent(y);exports.default=C;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as h,jsx as n}from"react/jsx-runtime";import{p as r}from"../../chunks/index-CZ41y9Hn.js";import{j as u}from"../../chunks/joinClass-anSpaauN.js";import{R as g}from"../../chunks/Ripple-Bq9bxg4k.js";import{c as v}from"../../chunks/createComponent-
|
|
1
|
+
import{jsxs as h,jsx as n}from"react/jsx-runtime";import{p as r}from"../../chunks/index-CZ41y9Hn.js";import{j as u}from"../../chunks/joinClass-anSpaauN.js";import{R as g}from"../../chunks/Ripple-Bq9bxg4k.js";import{c as v}from"../../chunks/createComponent-C6TL60ri.js";import{I as d}from"../../chunks/Icon-BfSirxGe.js";import{T as C}from"../../chunks/Typography-BDFesZK7.js";import"react";import"../../chunks/useTheme-BkUhhydo.js";import"../../chunks/convertPathToColor-D2SdAqGh.js";function s(t){return t.normalize("NFD").trim().toLowerCase().replace(/a-zA-Z0-9_.-+/g,"").replace(/_/g,"").replace(/[^\w\s]/gi,"")}function y(t){const e=t.trim().split(" "),o=e.length===1,a=s(e[0]).charAt(0).toLocaleUpperCase(),l=o?s(e[0]).charAt(1).toLocaleUpperCase():s(e.reverse()[0]).charAt(0).toLocaleUpperCase();return a+l}function $({src:t,alt:e,name:o,size:a=40,variant:l="circular",color:m="primary",icon:c,...i}){const p=u(`${r}-avatar`,`${r}-avatar--${l}`,`${r}-avatar--${m}`,t&&`${r}-avatar--image`,o&&`${r}-avatar--name`,!t&&!o||c&&`${r}-avatar--icon`,i.onClick&&`${r}-avatar--clickable`,i.className),f=()=>t?n("img",{src:t,alt:e,width:a,height:a,sizes:"100vw",loading:"lazy",style:{width:"100%",height:"auto"}}):o?n(C,{style:{fontSize:a/2,color:"currentColor"},children:y(o)}):c||n(d,{name:"user",size:a/1.6,style:{color:"currentColor"}});return h("div",{...i,style:{width:a,height:a,...i.style},className:p,children:[f(),i.children,i.onClick&&n(g,{})]})}const z=v($);export{z as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Box-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/Box-DX4Re8mw.cjs");require("react/jsx-runtime");require("react");require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");exports.default=e.Box;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{B as e}from"../../chunks/Box-
|
|
1
|
+
import{B as e}from"../../chunks/Box-DV6szmfA.js";import"react/jsx-runtime";import"react";import"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/useTheme-BkUhhydo.js";export{e as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),m=require("react"),e=require("../../chunks/index-DYxwT4uW.cjs"),i=require("../../chunks/joinClass-Jk3EszKD.cjs"),d=require("../../chunks/Ripple-Dy4i91j1.cjs"),_=require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");function j({size:u="medium",color:r="primary",variant:p="contained",startIcon:c,endIcon:a,loading:s,children:$,...o}){const f=i.joinClass(`${e.prefix}-button`,`${e.prefix}-button--${u}`,`${e.prefix}-button--${r}`,`${e.prefix}-button--${r}--${p}`,o.className),l=(t,b)=>m.cloneElement(t,{color:`${r}.contrast`,className:i.joinClass(t.props.className,`${e.prefix}-button__icon`,`${e.prefix}-button__icon--${b}`)}),x=t=>m.cloneElement(t,{className:i.joinClass(t.props.className,`${e.prefix}-button__loading`,`${e.prefix}-button__loading--${u}`),size:"1.1rem"});return n.jsxs("button",{...o,className:f,onClick:t=>!s&&o.onClick?.(t),children:[s?x(s):n.jsxs(n.Fragment,{children:[c&&l(c,"left"),$,a&&l(a,"right")]}),n.jsx(d.Ripple,{})]})}const C=_.createComponent(j);exports.default=C;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/actions/Button/Button.tsx"],"sourcesContent":["import { type PropsWithChildren, type ButtonHTMLAttributes, cloneElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors, Size } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils';\n\nimport type { LoadingProps } from '@/feedback/Loading';\n\nimport type { IconProps } from '../../display/Icon';\nimport Ripple from '../Ripple';\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Button.scss';\n\nexport interface ButtonProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n size?: Size;\n color?: Colors;\n endIcon?: React.JSX.Element;\n startIcon?: React.JSX.Element;\n loading?: React.JSX.Element | boolean;\n variant?: 'contained' | 'outlined' | 'text';\n};\nfunction Button({\n size = 'medium',\n color = 'primary',\n variant = 'contained',\n startIcon,\n endIcon,\n loading,\n children,\n ...props\n}: ButtonProps) {\n const cls = joinClass(\n `${prefix}-button`,\n `${prefix}-button--${size}`,\n `${prefix}-button--${color}`,\n `${prefix}-button--${color}--${variant}`,\n props.className\n );\n\n const renderIcon = (icon: React.JSX.Element, direction: 'left' | 'right') => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.contrast`,\n className: joinClass(icon.props.className, `${prefix}-button__icon`, `${prefix}-button__icon--${direction}`)\n });\n };\n\n const renderLoading = (loading: React.JSX.Element) => {\n return cloneElement<LoadingProps>(loading, {\n className: joinClass(loading.props.className, `${prefix}-button__loading`, `${prefix}-button__loading--${size}`),\n size: '1.1rem',\n });\n };\n\n
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/actions/Button/Button.tsx"],"sourcesContent":["import { type PropsWithChildren, type ButtonHTMLAttributes, cloneElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors, Size } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils';\n\nimport type { LoadingProps } from '@/feedback/Loading';\n\nimport type { IconProps } from '../../display/Icon';\nimport Ripple from '../Ripple';\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Button.scss';\n\nexport interface ButtonProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n size?: Size;\n color?: Colors;\n endIcon?: React.JSX.Element;\n startIcon?: React.JSX.Element;\n loading?: React.JSX.Element | boolean;\n variant?: 'contained' | 'outlined' | 'text';\n};\nfunction Button({\n size = 'medium',\n color = 'primary',\n variant = 'contained',\n startIcon,\n endIcon,\n loading,\n children,\n ...props\n}: ButtonProps) {\n const cls = joinClass(\n `${prefix}-button`,\n `${prefix}-button--${size}`,\n `${prefix}-button--${color}`,\n `${prefix}-button--${color}--${variant}`,\n props.className\n );\n\n const renderIcon = (icon: React.JSX.Element, direction: 'left' | 'right') => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.contrast`,\n className: joinClass(icon.props.className, `${prefix}-button__icon`, `${prefix}-button__icon--${direction}`)\n });\n };\n\n const renderLoading = (loading: React.JSX.Element) => {\n return cloneElement<LoadingProps>(loading, {\n className: joinClass(loading.props.className, `${prefix}-button__loading`, `${prefix}-button__loading--${size}`),\n size: '1.1rem',\n });\n };\n\n return (\n <button\n {...props}\n className={cls}\n onClick={(e) => !loading && props.onClick?.(e)}\n >\n {\n loading ? renderLoading(loading as React.JSX.Element) : (\n <>\n {startIcon && renderIcon(startIcon, 'left')}\n {children}\n {endIcon && renderIcon(endIcon, 'right')}\n </>\n )\n }\n <Ripple />\n </button>\n );\n}\n\nexport default createComponent(Button);"],"names":["Button","size","color","variant","startIcon","endIcon","loading","children","props","cls","joinClass","prefix","renderIcon","icon","direction","cloneElement","renderLoading","jsxs","e","Fragment","Ripple","Button_default","createComponent"],"mappings":"qZAuBA,SAASA,EAAO,CACd,KAAAC,EAAO,SACP,MAAAC,EAAQ,UACR,QAAAC,EAAU,YACV,UAAAC,EACA,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAgB,CACd,MAAMC,EAAMC,EAAAA,UACV,GAAGC,EAAAA,MAAM,UACT,GAAGA,EAAAA,MAAM,YAAYV,CAAI,GACzB,GAAGU,EAAAA,MAAM,YAAYT,CAAK,GAC1B,GAAGS,EAAAA,MAAM,YAAYT,CAAK,KAAKC,CAAO,GACtCK,EAAM,SAAA,EAGFI,EAAa,CAACC,EAAyBC,IACpCC,EAAAA,aAAwBF,EAAM,CACnC,MAAO,GAAGX,CAAK,YACf,UAAWQ,EAAAA,UAAUG,EAAK,MAAM,UAAW,GAAGF,QAAM,gBAAiB,GAAGA,EAAAA,MAAM,kBAAkBG,CAAS,EAAE,CAAA,CAC5G,EAGGE,EAAiBV,GACdS,EAAAA,aAA2BT,EAAS,CACzC,UAAWI,EAAAA,UAAUJ,EAAQ,MAAM,UAAW,GAAGK,EAAAA,MAAM,mBAAoB,GAAGA,EAAAA,MAAM,qBAAqBV,CAAI,EAAE,EAC/G,KAAM,QAAA,CACP,EAGH,OACEgB,EAAAA,KAAC,SAAA,CACE,GAAGT,EACJ,UAAWC,EACX,QAAUS,GAAM,CAACZ,GAAWE,EAAM,UAAUU,CAAC,EAG3C,SAAA,CAAAZ,EAAUU,EAAcV,CAA4B,EAClDW,EAAAA,KAAAE,EAAAA,SAAA,CACG,SAAA,CAAAf,GAAaQ,EAAWR,EAAW,MAAM,EACzCG,EACAF,GAAWO,EAAWP,EAAS,OAAO,CAAA,EACzC,QAGHe,EAAAA,OAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAGd,CAEA,MAAAC,EAAeC,EAAAA,gBAAgBtB,CAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as u,Fragment as d,jsx as _}from"react/jsx-runtime";import{cloneElement as l}from"react";import{p as t}from"../../chunks/index-CZ41y9Hn.js";import{j as s}from"../../chunks/joinClass-anSpaauN.js";import{R as N}from"../../chunks/Ripple-Bq9bxg4k.js";import{c as j}from"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/useTheme-BkUhhydo.js";function x({size:m="medium",color:n="primary",variant:$="contained",startIcon:a,endIcon:i,loading:r,children:p,...e}){const f=s(`${t}-button`,`${t}-button--${m}`,`${t}-button--${n}`,`${t}-button--${n}--${$}`,e.className),c=(o,b)=>l(o,{color:`${n}.contrast`,className:s(o.props.className,`${t}-button__icon`,`${t}-button__icon--${b}`)});return u("button",{...e,className:f,onClick:o=>!r&&e.onClick?.(o),children:[r?(o=>l(o,{className:s(o.props.className,`${t}-button__loading`,`${t}-button__loading--${m}`),size:"1.1rem"}))(r):u(d,{children:[a&&c(a,"left"),p,i&&c(i,"right")]}),_(N,{})]})}const E=j(x);export{E as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/actions/Button/Button.tsx"],"sourcesContent":["import { type PropsWithChildren, type ButtonHTMLAttributes, cloneElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors, Size } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils';\n\nimport type { LoadingProps } from '@/feedback/Loading';\n\nimport type { IconProps } from '../../display/Icon';\nimport Ripple from '../Ripple';\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Button.scss';\n\nexport interface ButtonProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n size?: Size;\n color?: Colors;\n endIcon?: React.JSX.Element;\n startIcon?: React.JSX.Element;\n loading?: React.JSX.Element | boolean;\n variant?: 'contained' | 'outlined' | 'text';\n};\nfunction Button({\n size = 'medium',\n color = 'primary',\n variant = 'contained',\n startIcon,\n endIcon,\n loading,\n children,\n ...props\n}: ButtonProps) {\n const cls = joinClass(\n `${prefix}-button`,\n `${prefix}-button--${size}`,\n `${prefix}-button--${color}`,\n `${prefix}-button--${color}--${variant}`,\n props.className\n );\n\n const renderIcon = (icon: React.JSX.Element, direction: 'left' | 'right') => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.contrast`,\n className: joinClass(icon.props.className, `${prefix}-button__icon`, `${prefix}-button__icon--${direction}`)\n });\n };\n\n const renderLoading = (loading: React.JSX.Element) => {\n return cloneElement<LoadingProps>(loading, {\n className: joinClass(loading.props.className, `${prefix}-button__loading`, `${prefix}-button__loading--${size}`),\n size: '1.1rem',\n });\n };\n\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/actions/Button/Button.tsx"],"sourcesContent":["import { type PropsWithChildren, type ButtonHTMLAttributes, cloneElement } from 'react';\n\nimport { prefix } from '@iziui/tokens/web/js';\n\nimport type { Colors, Size } from '@iziui/core/theme';\nimport { joinClass } from '@iziui/core/utils';\n\nimport type { LoadingProps } from '@/feedback/Loading';\n\nimport type { IconProps } from '../../display/Icon';\nimport Ripple from '../Ripple';\nimport createComponent from '../../core/createComponent';\n\nimport '@iziui/styles/components/Button.scss';\n\nexport interface ButtonProps extends PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> {\n size?: Size;\n color?: Colors;\n endIcon?: React.JSX.Element;\n startIcon?: React.JSX.Element;\n loading?: React.JSX.Element | boolean;\n variant?: 'contained' | 'outlined' | 'text';\n};\nfunction Button({\n size = 'medium',\n color = 'primary',\n variant = 'contained',\n startIcon,\n endIcon,\n loading,\n children,\n ...props\n}: ButtonProps) {\n const cls = joinClass(\n `${prefix}-button`,\n `${prefix}-button--${size}`,\n `${prefix}-button--${color}`,\n `${prefix}-button--${color}--${variant}`,\n props.className\n );\n\n const renderIcon = (icon: React.JSX.Element, direction: 'left' | 'right') => {\n return cloneElement<IconProps>(icon, {\n color: `${color}.contrast`,\n className: joinClass(icon.props.className, `${prefix}-button__icon`, `${prefix}-button__icon--${direction}`)\n });\n };\n\n const renderLoading = (loading: React.JSX.Element) => {\n return cloneElement<LoadingProps>(loading, {\n className: joinClass(loading.props.className, `${prefix}-button__loading`, `${prefix}-button__loading--${size}`),\n size: '1.1rem',\n });\n };\n\n return (\n <button\n {...props}\n className={cls}\n onClick={(e) => !loading && props.onClick?.(e)}\n >\n {\n loading ? renderLoading(loading as React.JSX.Element) : (\n <>\n {startIcon && renderIcon(startIcon, 'left')}\n {children}\n {endIcon && renderIcon(endIcon, 'right')}\n </>\n )\n }\n <Ripple />\n </button>\n );\n}\n\nexport default createComponent(Button);"],"names":["Button","size","color","variant","startIcon","endIcon","loading","children","props","cls","joinClass","prefix","renderIcon","icon","direction","cloneElement","jsxs","e","Fragment","Ripple","Button_default","createComponent"],"mappings":"0WAuBA,SAASA,EAAO,CACd,KAAAC,EAAO,SACP,MAAAC,EAAQ,UACR,QAAAC,EAAU,YACV,UAAAC,EACA,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAgB,CACd,MAAMC,EAAMC,EACV,GAAGC,CAAM,UACT,GAAGA,CAAM,YAAYV,CAAI,GACzB,GAAGU,CAAM,YAAYT,CAAK,GAC1B,GAAGS,CAAM,YAAYT,CAAK,KAAKC,CAAO,GACtCK,EAAM,SAAA,EAGFI,EAAa,CAACC,EAAyBC,IACpCC,EAAwBF,EAAM,CACnC,MAAO,GAAGX,CAAK,YACf,UAAWQ,EAAUG,EAAK,MAAM,UAAW,GAAGF,CAAM,gBAAiB,GAAGA,CAAM,kBAAkBG,CAAS,EAAE,CAAA,CAC5G,EAUH,OACEE,EAAC,SAAA,CACE,GAAGR,EACJ,UAAWC,EACX,QAAUQ,GAAM,CAACX,GAAWE,EAAM,UAAUS,CAAC,EAG3C,SAAA,CAAAX,GAdiBA,GACdS,EAA2BT,EAAS,CACzC,UAAWI,EAAUJ,EAAQ,MAAM,UAAW,GAAGK,CAAM,mBAAoB,GAAGA,CAAM,qBAAqBV,CAAI,EAAE,EAC/G,KAAM,QAAA,CACP,GAU2BK,CAA4B,EAClDU,EAAAE,EAAA,CACG,SAAA,CAAAd,GAAaQ,EAAWR,EAAW,MAAM,EACzCG,EACAF,GAAWO,EAAWP,EAAS,OAAO,CAAA,EACzC,IAGHc,EAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAGd,CAEA,MAAAC,EAAeC,EAAgBrB,CAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/ButtonIcon-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../chunks/ButtonIcon-Bk1sFlaj.cjs");require("react/jsx-runtime");require("react");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/convertPathToColor-BlQMLS4V.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("../../chunks/createComponent-ixuQW53A.cjs");exports.default=e.ButtonIcon;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{B as l}from"../../chunks/ButtonIcon-
|
|
1
|
+
import{B as l}from"../../chunks/ButtonIcon-BP2upur5.js";import"react/jsx-runtime";import"react";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/convertPathToColor-D2SdAqGh.js";import"../../chunks/useTheme-BkUhhydo.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"../../chunks/createComponent-C6TL60ri.js";export{l as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/Card-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/Card-CVrUgBCJ.cjs"),r=require("../../chunks/CardContent-5JyK0TcD.cjs");require("react/jsx-runtime");require("../../chunks/index-DYxwT4uW.cjs");require("../../chunks/joinClass-Jk3EszKD.cjs");require("../../chunks/Ripple-Dy4i91j1.cjs");require("react");require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");exports.Card=e.Card;exports.CardContent=r.CardContent;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as d}from"../../chunks/Card-
|
|
1
|
+
import{C as d}from"../../chunks/Card-BjoXz5bX.js";import{C as n}from"../../chunks/CardContent-srKirxQF.js";import"react/jsx-runtime";import"../../chunks/index-CZ41y9Hn.js";import"../../chunks/joinClass-anSpaauN.js";import"../../chunks/Ripple-Bq9bxg4k.js";import"react";import"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/useTheme-BkUhhydo.js";export{d as Card,n as CardContent};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),e=require("../../chunks/index-DYxwT4uW.cjs"),x=require("../../chunks/joinClass-Jk3EszKD.cjs"),h=require("../../chunks/Stack-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),e=require("../../chunks/index-DYxwT4uW.cjs"),x=require("../../chunks/joinClass-Jk3EszKD.cjs"),h=require("../../chunks/Stack-Bpv8iA8b.cjs"),b=require("../../chunks/createComponent-ixuQW53A.cjs");require("react");require("../../chunks/useTheme-DwBpyW-5.cjs");function k({label:n,name:c,color:t="primary",checked:s,disabled:i,error:l,helperText:o,...u}){const a=x.joinClass(`${e.prefix}-checkbox`,`${e.prefix}-checkbox--${t}`,s&&`${e.prefix}-checkbox--${t}--checked`,i&&`${e.prefix}-checkbox--disabled`),p=x.joinClass(`${e.prefix}-checkbox__helper-text`,o&&`${e.prefix}-checkbox__helper-text--visible`,l&&`${e.prefix}-checkbox__helper-text--error`);return r.jsxs(h.Stack,{gap:4,children:[r.jsxs("label",{htmlFor:c,className:a,children:[r.jsx("input",{type:"checkbox",...u,id:c,name:c,checked:s,disabled:i}),n]}),r.jsx("span",{className:p,children:o})]})}const f=b.createComponent(k);exports.default=f;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as p,jsx as i}from"react/jsx-runtime";import{p as e}from"../../chunks/index-CZ41y9Hn.js";import{j as h}from"../../chunks/joinClass-anSpaauN.js";import{S as n}from"../../chunks/Stack-
|
|
1
|
+
import{jsxs as p,jsx as i}from"react/jsx-runtime";import{p as e}from"../../chunks/index-CZ41y9Hn.js";import{j as h}from"../../chunks/joinClass-anSpaauN.js";import{S as n}from"../../chunks/Stack-BXkZSPdw.js";import{c as k}from"../../chunks/createComponent-C6TL60ri.js";import"react";import"../../chunks/useTheme-BkUhhydo.js";function f({label:x,name:o,color:c="primary",checked:r,disabled:t,error:a,helperText:s,...l}){const m=h(`${e}-checkbox`,`${e}-checkbox--${c}`,r&&`${e}-checkbox--${c}--checked`,t&&`${e}-checkbox--disabled`),b=h(`${e}-checkbox__helper-text`,s&&`${e}-checkbox__helper-text--visible`,a&&`${e}-checkbox__helper-text--error`);return p(n,{gap:4,children:[p("label",{htmlFor:o,className:m,children:[i("input",{type:"checkbox",...l,id:o,name:o,checked:r,disabled:t}),x]}),i("span",{className:b,children:s})]})}const N=k(f);export{N as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const C=require("react/jsx-runtime"),c=require("react"),x=require("../../chunks/index-DYxwT4uW.cjs"),b=require("../../chunks/joinClass-Jk3EszKD.cjs"),q=require("../../chunks/Stack-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const C=require("react/jsx-runtime"),c=require("react"),x=require("../../chunks/index-DYxwT4uW.cjs"),b=require("../../chunks/joinClass-Jk3EszKD.cjs"),q=require("../../chunks/Stack-Bpv8iA8b.cjs"),E=require("../../chunks/createComponent-ixuQW53A.cjs");require("../../chunks/useTheme-DwBpyW-5.cjs");let g=0;function j({children:d,values:r,onChange:a,className:l}){const i=++g,n=c.Children.toArray(d),k=b.joinClass(`${x.prefix}-checkbox-group`,l),[s,p]=c.useState(n.map(e=>({id:e.props.name,value:e.props.value,checked:r?r.some(o=>o===e.props.name):!1}))),m=c.useCallback(()=>n.map((e,o)=>{const f=e.props.name;return c.cloneElement(e,{key:o,name:`${e.props.name}-${i}`,checked:e.props.checked||s[o].checked,onChange:h=>{const u=s.map(t=>t.id===f?{...t,checked:h.target.checked}:t);a&&a(u),p(u)}})}),[r,s]);return c.useEffect(()=>{p(n.map(e=>({id:e.props.name,value:e.props.value,checked:r?r.some(o=>o===e.props.name):!1})))},[r]),C.jsx(q.Stack,{gap:2,className:k,children:m()})}const y=E.createComponent(j);exports.default=y;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i}from"react/jsx-runtime";import{Children as C,useState as x,useCallback as b,cloneElement as E,useEffect as y}from"react";import{p as g}from"../../chunks/index-CZ41y9Hn.js";import{j}from"../../chunks/joinClass-anSpaauN.js";import{S}from"../../chunks/Stack-
|
|
1
|
+
import{jsx as i}from"react/jsx-runtime";import{Children as C,useState as x,useCallback as b,cloneElement as E,useEffect as y}from"react";import{p as g}from"../../chunks/index-CZ41y9Hn.js";import{j}from"../../chunks/joinClass-anSpaauN.js";import{S}from"../../chunks/Stack-BXkZSPdw.js";import{c as $}from"../../chunks/createComponent-C6TL60ri.js";import"../../chunks/useTheme-BkUhhydo.js";let A=0;function G({children:m,values:r,onChange:a,className:f}){const k=++A,c=C.toArray(m),d=j(`${g}-checkbox-group`,f),[p,n]=x(c.map(e=>({id:e.props.name,value:e.props.value,checked:r?r.some(o=>o===e.props.name):!1}))),u=b(()=>c.map((e,o)=>{const h=e.props.name;return E(e,{key:o,name:`${e.props.name}-${k}`,checked:e.props.checked||p[o].checked,onChange:l=>{const t=p.map(s=>s.id===h?{...s,checked:l.target.checked}:s);a&&a(t),n(t)}})}),[r,p]);return y(()=>{n(c.map(e=>({id:e.props.name,value:e.props.value,checked:r?r.some(o=>o===e.props.name):!1})))},[r]),i(S,{gap:2,className:d,children:u()})}const I=$(G);export{I as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|