@jigowatts/jigowatts-ui 1.1.9 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/index13.css +1 -1
- package/dist/components/Card/index.cjs.js +1 -1
- package/dist/components/Card/index.cjs.js.map +1 -1
- package/dist/components/Card/index.es.js +10 -10
- package/dist/components/Card/index.es.js.map +1 -1
- package/dist/components/DataTable/index.cjs.js +1 -1
- package/dist/components/DataTable/index.es.js +43 -43
- package/dist/components/DatePickerController/index.cjs.js +1 -1
- package/dist/components/DatePickerController/index.cjs.js.map +1 -1
- package/dist/components/DatePickerController/index.d.ts +1 -1
- package/dist/components/DatePickerController/index.es.js +29 -27
- package/dist/components/DatePickerController/index.es.js.map +1 -1
- package/dist/components/DatePickerController/index.test.cjs.js +1 -1
- package/dist/components/DatePickerController/index.test.cjs.js.map +1 -1
- package/dist/components/DatePickerController/index.test.es.js +27 -14
- package/dist/components/DatePickerController/index.test.es.js.map +1 -1
- package/dist/components/InputController/index.cjs.js +1 -1
- package/dist/components/InputController/index.cjs.js.map +1 -1
- package/dist/components/InputController/index.es.js +4 -4
- package/dist/components/InputController/index.es.js.map +1 -1
- package/dist/components/Map/index.cjs.js +2 -2
- package/dist/components/Map/index.cjs.js.map +1 -1
- package/dist/components/Map/index.d.ts +1 -1
- package/dist/components/Map/index.es.js +1 -0
- package/dist/components/Map/index.es.js.map +1 -1
- package/dist/components/NumericFieldController/index.cjs.js +1 -1
- package/dist/components/NumericFieldController/index.cjs.js.map +1 -1
- package/dist/components/NumericFieldController/index.es.js +14 -14
- package/dist/components/NumericFieldController/index.es.js.map +1 -1
- package/dist/components/OfflineLabel/index.cjs.js +1 -1
- package/dist/components/OfflineLabel/index.cjs.js.map +1 -1
- package/dist/components/OfflineLabel/index.es.js +4 -4
- package/dist/components/OfflineLabel/index.es.js.map +1 -1
- package/dist/components/PasswordInputController/index.cjs.js +1 -1
- package/dist/components/PasswordInputController/index.cjs.js.map +1 -1
- package/dist/components/PasswordInputController/index.es.js +7 -8
- package/dist/components/PasswordInputController/index.es.js.map +1 -1
- package/dist/components/RangeDatePickerController/index.cjs.js +1 -1
- package/dist/components/RangeDatePickerController/index.cjs.js.map +1 -1
- package/dist/components/RangeDatePickerController/index.d.ts +3 -3
- package/dist/components/RangeDatePickerController/index.es.js +67 -65
- package/dist/components/RangeDatePickerController/index.es.js.map +1 -1
- package/dist/components/RangeDatePickerController/index.test.cjs.js +1 -1
- package/dist/components/RangeDatePickerController/index.test.cjs.js.map +1 -1
- package/dist/components/RangeDatePickerController/index.test.es.js +36 -13
- package/dist/components/RangeDatePickerController/index.test.es.js.map +1 -1
- package/dist/components/ReportChartMulti/index.cjs.js +1 -1
- package/dist/components/ReportChartMulti/index.cjs.js.map +1 -1
- package/dist/components/ReportChartMulti/index.d.ts +1 -1
- package/dist/components/ReportChartMulti/index.es.js +2 -1
- package/dist/components/ReportChartMulti/index.es.js.map +1 -1
- package/dist/components/SearchForm/index.cjs.js +1 -1
- package/dist/components/SearchForm/index.cjs.js.map +1 -1
- package/dist/components/SearchForm/index.es.js +17 -18
- package/dist/components/SearchForm/index.es.js.map +1 -1
- package/dist/components/SelectBoxController/index.cjs.js +1 -1
- package/dist/components/SelectBoxController/index.cjs.js.map +1 -1
- package/dist/components/SelectBoxController/index.es.js +14 -14
- package/dist/components/SelectBoxController/index.es.js.map +1 -1
- package/dist/components/SideMenu/index.cjs.js +1 -1
- package/dist/components/SideMenu/index.cjs.js.map +1 -1
- package/dist/components/SideMenu/index.d.ts +2 -2
- package/dist/components/SideMenu/index.es.js +2 -1
- package/dist/components/SideMenu/index.es.js.map +1 -1
- package/dist/components/SubMenu/index.cjs.js +1 -1
- package/dist/components/SubMenu/index.cjs.js.map +1 -1
- package/dist/components/SubMenu/index.d.ts +1 -1
- package/dist/components/SubMenu/index.es.js +42 -39
- package/dist/components/SubMenu/index.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +94 -98
- package/dist/index.es.js.map +1 -1
- package/package.json +98 -98
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as l, jsxs as h } from "react/jsx-runtime";
|
|
2
|
-
import A from "@mui/icons-material
|
|
3
|
-
import { Box as S, FormControl as B, Select as
|
|
2
|
+
import { Clear as A } from "@mui/icons-material";
|
|
3
|
+
import { Box as S, FormControl as B, Select as V, MenuItem as j, IconButton as I, FormHelperText as _ } from "@mui/material";
|
|
4
4
|
import { Controller as k } from "react-hook-form";
|
|
5
5
|
import '../../assets/index5.css';const z = "_placeholder_egyvt_6", F = {
|
|
6
6
|
placeholder: z
|
|
@@ -11,11 +11,11 @@ import '../../assets/index5.css';const z = "_placeholder_egyvt_6", F = {
|
|
|
11
11
|
options: t,
|
|
12
12
|
defaultValue: x,
|
|
13
13
|
isMulti: n,
|
|
14
|
-
placeholder:
|
|
14
|
+
placeholder: b,
|
|
15
15
|
emptyValue: a = n ? [] : "",
|
|
16
16
|
onChange: i,
|
|
17
17
|
onClear: s,
|
|
18
|
-
inputProps:
|
|
18
|
+
inputProps: f
|
|
19
19
|
} = g, p = (r) => Array.isArray(r) && r.length || !n && r;
|
|
20
20
|
return /* @__PURE__ */ l(S, { display: "grid", children: /* @__PURE__ */ l(
|
|
21
21
|
k,
|
|
@@ -23,11 +23,11 @@ import '../../assets/index5.css';const z = "_placeholder_egyvt_6", F = {
|
|
|
23
23
|
control: y,
|
|
24
24
|
name: v,
|
|
25
25
|
defaultValue: x,
|
|
26
|
-
render: ({ field: r, fieldState:
|
|
27
|
-
var
|
|
28
|
-
return /* @__PURE__ */ h(B, { error:
|
|
26
|
+
render: ({ field: r, fieldState: u }) => {
|
|
27
|
+
var c;
|
|
28
|
+
return /* @__PURE__ */ h(B, { error: u.invalid, children: [
|
|
29
29
|
/* @__PURE__ */ l(
|
|
30
|
-
|
|
30
|
+
V,
|
|
31
31
|
{
|
|
32
32
|
...r,
|
|
33
33
|
onChange: (e, o) => {
|
|
@@ -35,9 +35,9 @@ import '../../assets/index5.css';const z = "_placeholder_egyvt_6", F = {
|
|
|
35
35
|
},
|
|
36
36
|
multiple: n,
|
|
37
37
|
size: "small",
|
|
38
|
-
value: a,
|
|
38
|
+
value: r.value ?? a,
|
|
39
39
|
displayEmpty: !0,
|
|
40
|
-
inputProps: { ...
|
|
40
|
+
inputProps: { ...f },
|
|
41
41
|
renderValue: () => {
|
|
42
42
|
var o;
|
|
43
43
|
const e = r.value;
|
|
@@ -51,10 +51,10 @@ import '../../assets/index5.css';const z = "_placeholder_egyvt_6", F = {
|
|
|
51
51
|
).join(", ");
|
|
52
52
|
} else if (e && (typeof e == "string" || typeof e == "number"))
|
|
53
53
|
return (o = t.find((d) => d.value === e)) == null ? void 0 : o.label;
|
|
54
|
-
return /* @__PURE__ */ l("span", { className: F.placeholder, children:
|
|
54
|
+
return /* @__PURE__ */ l("span", { className: F.placeholder, children: b });
|
|
55
55
|
},
|
|
56
56
|
endAdornment: /* @__PURE__ */ l(
|
|
57
|
-
|
|
57
|
+
I,
|
|
58
58
|
{
|
|
59
59
|
sx: {
|
|
60
60
|
visibility: p(r.value) ? "visible" : "hidden"
|
|
@@ -85,14 +85,14 @@ import '../../assets/index5.css';const z = "_placeholder_egyvt_6", F = {
|
|
|
85
85
|
},
|
|
86
86
|
paddingRight: "4px !important"
|
|
87
87
|
},
|
|
88
|
-
children: t.map((e) => /* @__PURE__ */ h(
|
|
88
|
+
children: t.map((e) => /* @__PURE__ */ h(j, { value: e.value, children: [
|
|
89
89
|
" ",
|
|
90
90
|
e.label,
|
|
91
91
|
" "
|
|
92
92
|
] }, e.value))
|
|
93
93
|
}
|
|
94
94
|
),
|
|
95
|
-
/* @__PURE__ */ l(_, { children: (
|
|
95
|
+
/* @__PURE__ */ l(_, { children: (c = u.error) == null ? void 0 : c.message })
|
|
96
96
|
] });
|
|
97
97
|
}
|
|
98
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../src/components/SelectBoxController/index.tsx"],"sourcesContent":["import React from \"react\";\nimport
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../src/components/SelectBoxController/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Clear } from \"@mui/icons-material\";\nimport {\n Box,\n FormControl,\n FormHelperText,\n IconButton,\n InputBaseComponentProps,\n MenuItem,\n Select,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport {\n Controller,\n FieldPath,\n FieldValues,\n PathValue,\n type Control,\n} from \"react-hook-form\";\n\nimport styles from \"./index.module.scss\";\n\nexport type SelectBoxOption = {\n readonly label: string;\n readonly value: string | number;\n};\n\ntype Props<T extends FieldValues> = {\n control: Control<T>;\n name: FieldPath<T>;\n options: SelectBoxOption[];\n defaultValue?: PathValue<T, FieldPath<T>>;\n emptyValue?: [] | string | null | undefined;\n isMulti: boolean;\n placeholder?: string;\n onChange?: (\n event: SelectChangeEvent<unknown>,\n child: React.ReactNode,\n ) => void;\n onClear?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n inputProps?: InputBaseComponentProps;\n};\n\nexport const SelectBoxController = <T extends FieldValues>(props: Props<T>) => {\n const {\n control,\n name,\n options,\n defaultValue,\n isMulti,\n placeholder,\n emptyValue = isMulti ? [] : \"\",\n onChange,\n onClear,\n inputProps,\n } = props;\n\n const existValue = (\n value: SelectBoxOption[\"value\"] | SelectBoxOption[] | null,\n ) => {\n return (Array.isArray(value) && value.length) || (!isMulti && value);\n };\n\n return (\n <Box display={\"grid\"}>\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormControl error={fieldState.invalid}>\n <Select\n {...field}\n onChange={(event, child) => {\n if (!isMulti && event.target.value === \"\") {\n field.onChange(undefined);\n } else {\n field.onChange(event);\n }\n onChange?.(event, child);\n }}\n multiple={isMulti}\n size=\"small\"\n value={field.value ?? emptyValue}\n displayEmpty\n inputProps={{ ...inputProps }}\n renderValue={() => {\n const value = field.value;\n if (isMulti && Array.isArray(value)) {\n if (value.length) {\n const labels = value.map(\n (val: SelectBoxOption[\"value\"]) =>\n options.find((option) => option.value === val)?.label,\n );\n return labels.join(\", \");\n }\n } else if (\n value &&\n (typeof value === \"string\" || typeof value === \"number\")\n ) {\n return options.find((option) => option.value === value)\n ?.label;\n }\n return (\n <span className={styles.placeholder}>{placeholder}</span>\n );\n }}\n endAdornment={\n <IconButton\n sx={{\n visibility: existValue(field.value) ? \"visible\" : \"hidden\",\n }}\n onClick={(event) => {\n field.onChange(\n isMulti ? [] : emptyValue === \"\" ? undefined : emptyValue,\n );\n onClear?.(event);\n }}\n >\n <Clear />\n </IconButton>\n }\n sx={{\n \"& .MuiSelect-iconOutlined\": {\n display: existValue(field.value) ? \"none\" : \"\",\n },\n \"&.Mui-focused .MuiIconButton-root\": {\n color: \"primary.main\",\n },\n \"& .MuiSelect-select \": {\n whiteSpace: \"break-spaces !important\",\n paddingRight: \"4px !important\",\n fontSize: {\n xs: \"1rem\",\n sm: \"0.875rem\",\n },\n paddingLeft: \"9.5px\",\n },\n paddingRight: \"4px !important\",\n }}\n >\n {options.map((m) => (\n <MenuItem value={m.value} key={m.value}>\n {\" \"}\n {m.label}{\" \"}\n </MenuItem>\n ))}\n </Select>\n <FormHelperText>{fieldState.error?.message}</FormHelperText>\n </FormControl>\n )}\n />\n </Box>\n );\n};\n\nexport default SelectBoxController;\n"],"names":["SelectBoxController","props","control","name","options","defaultValue","isMulti","placeholder","emptyValue","onChange","onClear","inputProps","existValue","value","jsx","Box","Controller","field","fieldState","jsxs","FormControl","Select","event","child","val","_a","option","styles","IconButton","Clear","m","MenuItem","FormHelperText"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('../../assets/index4.css');const s=require("react/jsx-runtime"),m=require("react"),v=require("next/image"),f=require("next/link"),y=require("@mui/material"),I=require("classnames"),k="_sideMenu_1qefs_1",M="_logo_1qefs_7",S="_logoImage_1qefs_12",D="_menus_1qefs_16",N="_menuTitle_1qefs_23",T="_menuItem_1qefs_31",w="_selected_1qefs_45",t={sideMenu:k,logo:M,logoImage:S,menus:D,menuTitle:N,menuItem:T,selected:w},_=235,h=g=>{const{isOpen:c,isMobile:l,onClose:a,menus:x,logoSrc:p,topPageUrl:b="/",isStorybook:q=!1,currentPath:n}=g,d=(n==null?void 0:n.split("/")[1])??null,i=d===""?"/":"/"+d,[u,j]=m.useState(i);m.useEffect(()=>{j(i)},[i,n]);const r=e=>{l&&a(),q&&e.preventDefault()};return s.jsx(y.Drawer,{variant:l?"temporary":"permanent",open:l?c:void 0,onClose:a,sx:{width:_,flexShrink:0,"& .MuiDrawer-paper":{width:_,boxSizing:"border-box"},display:c?"block":"none"},children:s.jsxs("div",{className:t.sideMenu,children:[s.jsx("div",{className:t.logo,children:s.jsx(f,{href:b,style:{textDecoration:"none"},onClick:e=>r(e),children:s.jsx(v,{src:p,alt:"logo",width:202,height:56,className:t.logoImage,priority:!0})})}),s.jsx("div",{className:t.menus,children:x.map(e=>e.isTitle?s.jsx("div",{className:t.menuTitle,children:e.label},e.label):s.jsx(f,{href:e.href??"",style:{textDecoration:"none"},role:"menuitem","aria-current":u===e.href?"page":void 0,children:s.jsxs("div",{onClick:o=>r(o),className:I(t.menuItem,{[t.selected]:u===e.href}),tabIndex:0,onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&r(o)},children:[e.icon,s.jsx("div",{children:e.label})]})},e.label))})]})})};exports.SideMenu=h;exports.default=h;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../../src/components/SideMenu/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport { Drawer } from \"@mui/material\";\nimport classnames from \"classnames\";\n\nimport styles from \"./index.module.scss\";\n\nexport type Menu = {\n label: string;\n icon?: React.ReactNode;\n href?: string;\n isTitle?: boolean;\n};\n\ntype Props = {\n isOpen: boolean;\n isMobile: boolean;\n onClose: () => void;\n menus: Menu[];\n logoSrc: string;\n topPageUrl?: string;\n isStorybook?: boolean;\n currentPath?: string | null;\n};\n\nconst DRAWER_WIDTH = 235;\n\
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../src/components/SideMenu/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport { Drawer } from \"@mui/material\";\nimport classnames from \"classnames\";\n\nimport styles from \"./index.module.scss\";\n\nexport type Menu = {\n label: string;\n icon?: React.ReactNode;\n href?: string;\n isTitle?: boolean;\n};\n\ntype Props = {\n isOpen: boolean;\n isMobile: boolean;\n onClose: () => void;\n menus: Menu[];\n logoSrc: string;\n topPageUrl?: string;\n isStorybook?: boolean;\n currentPath?: string | null;\n};\n\nconst DRAWER_WIDTH = 235;\n\nexport const SideMenu = (props: Props) => {\n const {\n isOpen,\n isMobile,\n onClose,\n menus,\n logoSrc,\n topPageUrl = \"/\",\n isStorybook = false,\n currentPath,\n } = props;\n\n const path = currentPath?.split(\"/\")[1] ?? null;\n const href = path === \"\" ? \"/\" : \"/\" + path;\n const [selectedHref, setSelectedHref] = useState<string | undefined>(href);\n\n useEffect(() => {\n setSelectedHref(href);\n }, [href, currentPath]);\n\n const handleLinkClick = (\n e:\n | React.MouseEvent<HTMLAnchorElement | HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>,\n ) => {\n if (isMobile) {\n onClose();\n }\n if (isStorybook) {\n e.preventDefault();\n }\n };\n\n return (\n <Drawer\n variant={isMobile ? \"temporary\" : \"permanent\"}\n open={isMobile ? isOpen : undefined}\n onClose={onClose}\n sx={{\n width: DRAWER_WIDTH,\n flexShrink: 0,\n \"& .MuiDrawer-paper\": {\n width: DRAWER_WIDTH,\n boxSizing: \"border-box\",\n },\n display: isOpen ? \"block\" : \"none\",\n }}\n >\n <div className={styles.sideMenu}>\n <div className={styles.logo}>\n <Link\n href={topPageUrl}\n style={{ textDecoration: \"none\" }}\n onClick={(e) => handleLinkClick(e)}\n >\n <Image\n src={logoSrc}\n alt=\"logo\"\n width={202}\n height={56}\n className={styles.logoImage}\n priority\n />\n </Link>\n </div>\n <div className={styles.menus}>\n {menus.map((menu) =>\n menu.isTitle ? (\n <div className={styles.menuTitle} key={menu.label}>\n {menu.label}\n </div>\n ) : (\n <Link\n href={menu.href ?? \"\"}\n key={menu.label}\n style={{ textDecoration: \"none\" }}\n role=\"menuitem\"\n aria-current={selectedHref === menu.href ? \"page\" : undefined}\n >\n <div\n onClick={(e) => handleLinkClick(e)}\n className={classnames(styles.menuItem, {\n [styles.selected]: selectedHref === menu.href,\n })}\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n handleLinkClick(e);\n }\n }}\n >\n {menu.icon}\n <div>{menu.label}</div>\n </div>\n </Link>\n ),\n )}\n </div>\n </div>\n </Drawer>\n );\n};\n\nexport default SideMenu;\n"],"names":["DRAWER_WIDTH","SideMenu","props","isOpen","isMobile","onClose","menus","logoSrc","topPageUrl","isStorybook","currentPath","path","href","selectedHref","setSelectedHref","useState","useEffect","handleLinkClick","jsx","Drawer","jsxs","styles","Link","Image","menu","e","classnames"],"mappings":"4eA0BMA,EAAe,IAERC,EAAYC,GAAiB,CAClC,KAAA,CACJ,OAAAC,EACA,SAAAC,EACA,QAAAC,EACA,MAAAC,EACA,QAAAC,EACA,WAAAC,EAAa,IACb,YAAAC,EAAc,GACd,YAAAC,CAAA,EACER,EAEES,GAAOD,GAAA,YAAAA,EAAa,MAAM,KAAK,KAAM,KACrCE,EAAOD,IAAS,GAAK,IAAM,IAAMA,EACjC,CAACE,EAAcC,CAAe,EAAIC,EAAAA,SAA6BH,CAAI,EAEzEI,EAAAA,UAAU,IAAM,CACdF,EAAgBF,CAAI,CAAA,EACnB,CAACA,EAAMF,CAAW,CAAC,EAEhB,MAAAO,EACJ,GAGG,CACCb,GACMC,EAAA,EAENI,GACF,EAAE,eAAe,CAErB,EAGE,OAAAS,EAAA,IAACC,EAAA,OAAA,CACC,QAASf,EAAW,YAAc,YAClC,KAAMA,EAAWD,EAAS,OAC1B,QAAAE,EACA,GAAI,CACF,MAAOL,EACP,WAAY,EACZ,qBAAsB,CACpB,MAAOA,EACP,UAAW,YACb,EACA,QAASG,EAAS,QAAU,MAC9B,EAEA,SAACiB,EAAA,KAAA,MAAA,CAAI,UAAWC,EAAO,SACrB,SAAA,CAACH,EAAA,IAAA,MAAA,CAAI,UAAWG,EAAO,KACrB,SAAAH,EAAA,IAACI,EAAA,CACC,KAAMd,EACN,MAAO,CAAE,eAAgB,MAAO,EAChC,QAAU,GAAMS,EAAgB,CAAC,EAEjC,SAAAC,EAAA,IAACK,EAAA,CACC,IAAKhB,EACL,IAAI,OACJ,MAAO,IACP,OAAQ,GACR,UAAWc,EAAO,UAClB,SAAQ,EAAA,CAAA,CACV,CAAA,EAEJ,EACCH,EAAA,IAAA,MAAA,CAAI,UAAWG,EAAO,MACpB,SAAMf,EAAA,IAAKkB,GACVA,EAAK,QACFN,EAAAA,IAAA,MAAA,CAAI,UAAWG,EAAO,UACpB,SAAAG,EAAK,KAD+B,EAAAA,EAAK,KAE5C,EAEAN,EAAA,IAACI,EAAA,CACC,KAAME,EAAK,MAAQ,GAEnB,MAAO,CAAE,eAAgB,MAAO,EAChC,KAAK,WACL,eAAcX,IAAiBW,EAAK,KAAO,OAAS,OAEpD,SAAAJ,EAAA,KAAC,MAAA,CACC,QAAUK,GAAMR,EAAgBQ,CAAC,EACjC,UAAWC,EAAWL,EAAO,SAAU,CACrC,CAACA,EAAO,QAAQ,EAAGR,IAAiBW,EAAK,IAAA,CAC1C,EACD,SAAU,EACV,UAAYC,GAAM,EACZA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MACjCR,EAAgBQ,CAAC,CAErB,EAEC,SAAA,CAAKD,EAAA,KACNN,EAAAA,IAAC,MAAK,CAAA,SAAAM,EAAK,KAAM,CAAA,CAAA,CAAA,CAAA,CACnB,EAnBKA,EAAK,KAAA,CAoBZ,CAGN,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ"}
|
|
@@ -16,5 +16,5 @@ type Props = {
|
|
|
16
16
|
isStorybook?: boolean;
|
|
17
17
|
currentPath?: string | null;
|
|
18
18
|
};
|
|
19
|
-
declare const SideMenu: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
export
|
|
19
|
+
export declare const SideMenu: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export default SideMenu;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../src/components/SideMenu/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport { Drawer } from \"@mui/material\";\nimport classnames from \"classnames\";\n\nimport styles from \"./index.module.scss\";\n\nexport type Menu = {\n label: string;\n icon?: React.ReactNode;\n href?: string;\n isTitle?: boolean;\n};\n\ntype Props = {\n isOpen: boolean;\n isMobile: boolean;\n onClose: () => void;\n menus: Menu[];\n logoSrc: string;\n topPageUrl?: string;\n isStorybook?: boolean;\n currentPath?: string | null;\n};\n\nconst DRAWER_WIDTH = 235;\n\
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../src/components/SideMenu/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport { Drawer } from \"@mui/material\";\nimport classnames from \"classnames\";\n\nimport styles from \"./index.module.scss\";\n\nexport type Menu = {\n label: string;\n icon?: React.ReactNode;\n href?: string;\n isTitle?: boolean;\n};\n\ntype Props = {\n isOpen: boolean;\n isMobile: boolean;\n onClose: () => void;\n menus: Menu[];\n logoSrc: string;\n topPageUrl?: string;\n isStorybook?: boolean;\n currentPath?: string | null;\n};\n\nconst DRAWER_WIDTH = 235;\n\nexport const SideMenu = (props: Props) => {\n const {\n isOpen,\n isMobile,\n onClose,\n menus,\n logoSrc,\n topPageUrl = \"/\",\n isStorybook = false,\n currentPath,\n } = props;\n\n const path = currentPath?.split(\"/\")[1] ?? null;\n const href = path === \"\" ? \"/\" : \"/\" + path;\n const [selectedHref, setSelectedHref] = useState<string | undefined>(href);\n\n useEffect(() => {\n setSelectedHref(href);\n }, [href, currentPath]);\n\n const handleLinkClick = (\n e:\n | React.MouseEvent<HTMLAnchorElement | HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>,\n ) => {\n if (isMobile) {\n onClose();\n }\n if (isStorybook) {\n e.preventDefault();\n }\n };\n\n return (\n <Drawer\n variant={isMobile ? \"temporary\" : \"permanent\"}\n open={isMobile ? isOpen : undefined}\n onClose={onClose}\n sx={{\n width: DRAWER_WIDTH,\n flexShrink: 0,\n \"& .MuiDrawer-paper\": {\n width: DRAWER_WIDTH,\n boxSizing: \"border-box\",\n },\n display: isOpen ? \"block\" : \"none\",\n }}\n >\n <div className={styles.sideMenu}>\n <div className={styles.logo}>\n <Link\n href={topPageUrl}\n style={{ textDecoration: \"none\" }}\n onClick={(e) => handleLinkClick(e)}\n >\n <Image\n src={logoSrc}\n alt=\"logo\"\n width={202}\n height={56}\n className={styles.logoImage}\n priority\n />\n </Link>\n </div>\n <div className={styles.menus}>\n {menus.map((menu) =>\n menu.isTitle ? (\n <div className={styles.menuTitle} key={menu.label}>\n {menu.label}\n </div>\n ) : (\n <Link\n href={menu.href ?? \"\"}\n key={menu.label}\n style={{ textDecoration: \"none\" }}\n role=\"menuitem\"\n aria-current={selectedHref === menu.href ? \"page\" : undefined}\n >\n <div\n onClick={(e) => handleLinkClick(e)}\n className={classnames(styles.menuItem, {\n [styles.selected]: selectedHref === menu.href,\n })}\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n handleLinkClick(e);\n }\n }}\n >\n {menu.icon}\n <div>{menu.label}</div>\n </div>\n </Link>\n ),\n )}\n </div>\n </div>\n </Drawer>\n );\n};\n\nexport default SideMenu;\n"],"names":["DRAWER_WIDTH","SideMenu","props","isOpen","isMobile","onClose","menus","logoSrc","topPageUrl","isStorybook","currentPath","path","href","selectedHref","setSelectedHref","useState","useEffect","handleLinkClick","jsx","Drawer","jsxs","styles","Link","Image","menu","e","classnames"],"mappings":"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"}
|
|
@@ -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 t=require("react/jsx-runtime"),f=require("react"),n=require("@mui/material"),u=c=>{const{menuItems:d,buttonElement:h}=c,[i,s]=f.useState(null),r=!!i,p=e=>{e.stopPropagation(),s(e.currentTarget)},a=e=>{e.stopPropagation(),s(null)},b=(e,o)=>{e.stopPropagation(),o.onClick&&o.onClick(e),o.closeWhenClick!==!1&&a(e)};return[t.jsxs(n.Button,{id:"fade-button","aria-controls":r?"fade-menu":void 0,"aria-haspopup":"true","aria-expanded":r?"true":void 0,onClick:p,color:"inherit",children:[h," "]},"submenu-button"),t.jsx(n.Menu,{id:"fade-menu",MenuListProps:{"aria-labelledby":"fade-button"},anchorEl:i,open:r,onClose:a,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:d.flatMap((e,o)=>{const l=[t.jsxs(n.MenuItem,{onClick:m=>b(m,e),sx:{minWidth:200},children:[t.jsx(n.ListItemIcon,{children:e.icon}),t.jsx(n.ListItemText,{children:e.title}),e.shortcut&&t.jsx(n.Typography,{variant:"body2",color:"text.secondary",children:e.shortcut})]},`item-${o}`)];return e.separatorLine&&l.push(t.jsx(n.Divider,{},`divider-${o}`)),l})},"submenu-menu")]};exports.SubMenu=u;exports.default=u;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../../src/components/SubMenu/index.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../src/components/SubMenu/index.tsx"],"sourcesContent":["import { ReactNode, useState } from \"react\";\nimport {\n Button,\n Divider,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n Typography,\n} from \"@mui/material\";\n\ntype MenuItemType = {\n /** 操作メニューのアイコン */\n icon: React.ReactNode;\n /** 操作メニュー名 */\n title: string;\n /** ショートカットキー */\n shortcut?: string;\n /** メニュー下の区切り線有無 */\n separatorLine?: boolean;\n /** クリックした時の動作 */\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\n /** クリックした時に閉じるか否か。指定がない場合はクリック時メニューが自動的に閉じます*/\n closeWhenClick?: boolean;\n};\n\ntype Props = {\n menuItems: MenuItemType[];\n buttonElement: ReactNode;\n};\n\nexport const SubMenu = (props: Props) => {\n const { menuItems, buttonElement } = props;\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(null);\n };\n\n const handleItemClick = (\n event: React.MouseEvent<HTMLLIElement, MouseEvent>,\n item: MenuItemType,\n ) => {\n event.stopPropagation();\n if (item.onClick) {\n item.onClick(event);\n }\n if (item.closeWhenClick !== false) {\n handleClose(event);\n }\n };\n\n return [\n (\n <Button\n key=\"submenu-button\"\n id=\"fade-button\"\n aria-controls={open ? \"fade-menu\" : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? \"true\" : undefined}\n onClick={handleClick}\n color={\"inherit\"}\n >\n {buttonElement} {/* ここでButton要素を表示します */}\n </Button>\n ),\n (\n <Menu\n key=\"submenu-menu\"\n id=\"fade-menu\"\n MenuListProps={{\n \"aria-labelledby\": \"fade-button\",\n }}\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"right\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n >\n {menuItems.flatMap((item, index) => {\n const elements = [\n (\n <MenuItem\n key={`item-${index}`}\n onClick={(e) => handleItemClick(e, item)}\n sx={{ minWidth: 200 }}\n >\n <ListItemIcon>{item.icon}</ListItemIcon>\n <ListItemText>{item.title}</ListItemText>\n {item.shortcut && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {item.shortcut}\n </Typography>\n )}\n </MenuItem>\n ),\n ];\n if (item.separatorLine) {\n elements.push(<Divider key={`divider-${index}`} />);\n }\n return elements;\n })}\n </Menu>\n ),\n ];\n};\n\nexport default SubMenu;\n"],"names":["SubMenu","props","menuItems","buttonElement","anchorEl","setAnchorEl","useState","open","handleClick","event","handleClose","handleItemClick","item","jsxs","Button","jsx","Menu","index","elements","MenuItem","e","ListItemIcon","ListItemText","Typography","Divider"],"mappings":"+LA+BaA,EAAWC,GAAiB,CACjC,KAAA,CAAE,UAAAC,EAAW,cAAAC,CAAA,EAAkBF,EAE/B,CAACG,EAAUC,CAAW,EAAIC,EAAAA,SAA6B,IAAI,EAC3DC,EAAO,EAAQH,EACfI,EAAeC,GAAyC,CAC5DA,EAAM,gBAAgB,EACtBJ,EAAYI,EAAM,aAAa,CACjC,EACMC,EAAeD,GAAyC,CAC5DA,EAAM,gBAAgB,EACtBJ,EAAY,IAAI,CAClB,EAEMM,EAAkB,CACtBF,EACAG,IACG,CACHH,EAAM,gBAAgB,EAClBG,EAAK,SACPA,EAAK,QAAQH,CAAK,EAEhBG,EAAK,iBAAmB,IAC1BF,EAAYD,CAAK,CAErB,EAEO,MAAA,CAEHI,EAAA,KAACC,EAAA,OAAA,CAEC,GAAG,cACH,gBAAeP,EAAO,YAAc,OACpC,gBAAc,OACd,gBAAeA,EAAO,OAAS,OAC/B,QAASC,EACT,MAAO,UAEN,SAAA,CAAAL,EAAc,GAAA,CAAA,EARX,gBASN,EAGAY,EAAA,IAACC,EAAA,KAAA,CAEC,GAAG,YACH,cAAe,CACb,kBAAmB,aACrB,EACA,SAAAZ,EACA,KAAAG,EACA,QAASG,EACT,aAAc,CACZ,SAAU,SACV,WAAY,OACd,EACA,gBAAiB,CACf,SAAU,MACV,WAAY,OACd,EAEC,SAAUR,EAAA,QAAQ,CAACU,EAAMK,IAAU,CAClC,MAAMC,EAAW,CAEbL,EAAA,KAACM,EAAA,SAAA,CAEC,QAAUC,GAAMT,EAAgBS,EAAGR,CAAI,EACvC,GAAI,CAAE,SAAU,GAAI,EAEpB,SAAA,CAACG,EAAAA,IAAAM,EAAAA,aAAA,CAAc,WAAK,IAAK,CAAA,EACzBN,EAAAA,IAACO,EAAAA,aAAc,CAAA,SAAAV,EAAK,KAAM,CAAA,EACzBA,EAAK,UACHG,MAAAQ,EAAAA,WAAA,CAAW,QAAQ,QAAQ,MAAM,iBAC/B,SAAAX,EAAK,QACR,CAAA,CAAA,CAAA,EATG,QAAQK,CAAK,EAAA,CAaxB,EACA,OAAIL,EAAK,eACPM,EAAS,KAAMH,EAAAA,IAAAS,EAAA,QAAA,CAAA,EAAa,WAAWP,CAAK,EAAI,CAAE,EAE7CC,CACR,CAAA,CAAA,EAvCG,cAAA,CA0CV,CACF"}
|
|
@@ -18,5 +18,5 @@ type Props = {
|
|
|
18
18
|
menuItems: MenuItemType[];
|
|
19
19
|
buttonElement: ReactNode;
|
|
20
20
|
};
|
|
21
|
-
export declare const SubMenu: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare const SubMenu: (props: Props) => import("react/jsx-runtime").JSX.Element[];
|
|
22
22
|
export default SubMenu;
|
|
@@ -1,40 +1,41 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as f
|
|
3
|
-
import { Button as
|
|
4
|
-
const
|
|
5
|
-
const { menuItems:
|
|
1
|
+
import { jsxs as s, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useState as f } from "react";
|
|
3
|
+
import { Button as b, Menu as g, MenuItem as C, ListItemIcon as k, ListItemText as x, Typography as I, Divider as y } from "@mui/material";
|
|
4
|
+
const P = (c) => {
|
|
5
|
+
const { menuItems: u, buttonElement: d } = c, [e, i] = f(null), r = !!e, h = (o) => {
|
|
6
6
|
o.stopPropagation(), i(o.currentTarget);
|
|
7
|
-
},
|
|
7
|
+
}, a = (o) => {
|
|
8
8
|
o.stopPropagation(), i(null);
|
|
9
|
-
},
|
|
10
|
-
o.stopPropagation(),
|
|
9
|
+
}, p = (o, t) => {
|
|
10
|
+
o.stopPropagation(), t.onClick && t.onClick(o), t.closeWhenClick !== !1 && a(o);
|
|
11
11
|
};
|
|
12
|
-
return
|
|
13
|
-
/* @__PURE__ */
|
|
14
|
-
|
|
12
|
+
return [
|
|
13
|
+
/* @__PURE__ */ s(
|
|
14
|
+
b,
|
|
15
15
|
{
|
|
16
16
|
id: "fade-button",
|
|
17
|
-
"aria-controls":
|
|
17
|
+
"aria-controls": r ? "fade-menu" : void 0,
|
|
18
18
|
"aria-haspopup": "true",
|
|
19
|
-
"aria-expanded":
|
|
19
|
+
"aria-expanded": r ? "true" : void 0,
|
|
20
20
|
onClick: h,
|
|
21
21
|
color: "inherit",
|
|
22
22
|
children: [
|
|
23
23
|
d,
|
|
24
24
|
" "
|
|
25
25
|
]
|
|
26
|
-
}
|
|
26
|
+
},
|
|
27
|
+
"submenu-button"
|
|
27
28
|
),
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
-
|
|
29
|
+
/* @__PURE__ */ n(
|
|
30
|
+
g,
|
|
30
31
|
{
|
|
31
32
|
id: "fade-menu",
|
|
32
33
|
MenuListProps: {
|
|
33
34
|
"aria-labelledby": "fade-button"
|
|
34
35
|
},
|
|
35
|
-
anchorEl:
|
|
36
|
-
open:
|
|
37
|
-
onClose:
|
|
36
|
+
anchorEl: e,
|
|
37
|
+
open: r,
|
|
38
|
+
onClose: a,
|
|
38
39
|
anchorOrigin: {
|
|
39
40
|
vertical: "bottom",
|
|
40
41
|
horizontal: "right"
|
|
@@ -43,29 +44,31 @@ const E = (c) => {
|
|
|
43
44
|
vertical: "top",
|
|
44
45
|
horizontal: "right"
|
|
45
46
|
},
|
|
46
|
-
children:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
children: u.flatMap((o, t) => {
|
|
48
|
+
const l = [
|
|
49
|
+
/* @__PURE__ */ s(
|
|
50
|
+
C,
|
|
51
|
+
{
|
|
52
|
+
onClick: (m) => p(m, o),
|
|
53
|
+
sx: { minWidth: 200 },
|
|
54
|
+
children: [
|
|
55
|
+
/* @__PURE__ */ n(k, { children: o.icon }),
|
|
56
|
+
/* @__PURE__ */ n(x, { children: o.title }),
|
|
57
|
+
o.shortcut && /* @__PURE__ */ n(I, { variant: "body2", color: "text.secondary", children: o.shortcut })
|
|
58
|
+
]
|
|
52
59
|
},
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
),
|
|
61
|
-
o.separatorLine && /* @__PURE__ */ t(L, {})
|
|
62
|
-
] }, n))
|
|
63
|
-
}
|
|
60
|
+
`item-${t}`
|
|
61
|
+
)
|
|
62
|
+
];
|
|
63
|
+
return o.separatorLine && l.push(/* @__PURE__ */ n(y, {}, `divider-${t}`)), l;
|
|
64
|
+
})
|
|
65
|
+
},
|
|
66
|
+
"submenu-menu"
|
|
64
67
|
)
|
|
65
|
-
]
|
|
68
|
+
];
|
|
66
69
|
};
|
|
67
70
|
export {
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
P as SubMenu,
|
|
72
|
+
P as default
|
|
70
73
|
};
|
|
71
74
|
//# sourceMappingURL=index.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../src/components/SubMenu/index.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../src/components/SubMenu/index.tsx"],"sourcesContent":["import { ReactNode, useState } from \"react\";\nimport {\n Button,\n Divider,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n Typography,\n} from \"@mui/material\";\n\ntype MenuItemType = {\n /** 操作メニューのアイコン */\n icon: React.ReactNode;\n /** 操作メニュー名 */\n title: string;\n /** ショートカットキー */\n shortcut?: string;\n /** メニュー下の区切り線有無 */\n separatorLine?: boolean;\n /** クリックした時の動作 */\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\n /** クリックした時に閉じるか否か。指定がない場合はクリック時メニューが自動的に閉じます*/\n closeWhenClick?: boolean;\n};\n\ntype Props = {\n menuItems: MenuItemType[];\n buttonElement: ReactNode;\n};\n\nexport const SubMenu = (props: Props) => {\n const { menuItems, buttonElement } = props;\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setAnchorEl(null);\n };\n\n const handleItemClick = (\n event: React.MouseEvent<HTMLLIElement, MouseEvent>,\n item: MenuItemType,\n ) => {\n event.stopPropagation();\n if (item.onClick) {\n item.onClick(event);\n }\n if (item.closeWhenClick !== false) {\n handleClose(event);\n }\n };\n\n return [\n (\n <Button\n key=\"submenu-button\"\n id=\"fade-button\"\n aria-controls={open ? \"fade-menu\" : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? \"true\" : undefined}\n onClick={handleClick}\n color={\"inherit\"}\n >\n {buttonElement} {/* ここでButton要素を表示します */}\n </Button>\n ),\n (\n <Menu\n key=\"submenu-menu\"\n id=\"fade-menu\"\n MenuListProps={{\n \"aria-labelledby\": \"fade-button\",\n }}\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"right\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n >\n {menuItems.flatMap((item, index) => {\n const elements = [\n (\n <MenuItem\n key={`item-${index}`}\n onClick={(e) => handleItemClick(e, item)}\n sx={{ minWidth: 200 }}\n >\n <ListItemIcon>{item.icon}</ListItemIcon>\n <ListItemText>{item.title}</ListItemText>\n {item.shortcut && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {item.shortcut}\n </Typography>\n )}\n </MenuItem>\n ),\n ];\n if (item.separatorLine) {\n elements.push(<Divider key={`divider-${index}`} />);\n }\n return elements;\n })}\n </Menu>\n ),\n ];\n};\n\nexport default SubMenu;\n"],"names":["SubMenu","props","menuItems","buttonElement","anchorEl","setAnchorEl","useState","open","handleClick","event","handleClose","handleItemClick","item","jsxs","Button","jsx","Menu","index","elements","MenuItem","e","ListItemIcon","ListItemText","Typography","Divider"],"mappings":";;;AA+Ba,MAAAA,IAAU,CAACC,MAAiB;AACjC,QAAA,EAAE,WAAAC,GAAW,eAAAC,EAAA,IAAkBF,GAE/B,CAACG,GAAUC,CAAW,IAAIC,EAA6B,IAAI,GAC3DC,IAAO,EAAQH,GACfI,IAAc,CAACC,MAAyC;AAC5D,IAAAA,EAAM,gBAAgB,GACtBJ,EAAYI,EAAM,aAAa;AAAA,EACjC,GACMC,IAAc,CAACD,MAAyC;AAC5D,IAAAA,EAAM,gBAAgB,GACtBJ,EAAY,IAAI;AAAA,EAClB,GAEMM,IAAkB,CACtBF,GACAG,MACG;AACH,IAAAH,EAAM,gBAAgB,GAClBG,EAAK,WACPA,EAAK,QAAQH,CAAK,GAEhBG,EAAK,mBAAmB,MAC1BF,EAAYD,CAAK;AAAA,EAErB;AAEO,SAAA;AAAA,IAEH,gBAAAI;AAAA,MAACC;AAAA,MAAA;AAAA,QAEC,IAAG;AAAA,QACH,iBAAeP,IAAO,cAAc;AAAA,QACpC,iBAAc;AAAA,QACd,iBAAeA,IAAO,SAAS;AAAA,QAC/B,SAASC;AAAA,QACT,OAAO;AAAA,QAEN,UAAA;AAAA,UAAAL;AAAA,UAAc;AAAA,QAAA;AAAA,MAAA;AAAA,MARX;AAAA,IASN;AAAA,IAGA,gBAAAY;AAAA,MAACC;AAAA,MAAA;AAAA,QAEC,IAAG;AAAA,QACH,eAAe;AAAA,UACb,mBAAmB;AAAA,QACrB;AAAA,QACA,UAAAZ;AAAA,QACA,MAAAG;AAAA,QACA,SAASG;AAAA,QACT,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,YAAY;AAAA,QACd;AAAA,QACA,iBAAiB;AAAA,UACf,UAAU;AAAA,UACV,YAAY;AAAA,QACd;AAAA,QAEC,UAAUR,EAAA,QAAQ,CAACU,GAAMK,MAAU;AAClC,gBAAMC,IAAW;AAAA,YAEb,gBAAAL;AAAA,cAACM;AAAA,cAAA;AAAA,gBAEC,SAAS,CAACC,MAAMT,EAAgBS,GAAGR,CAAI;AAAA,gBACvC,IAAI,EAAE,UAAU,IAAI;AAAA,gBAEpB,UAAA;AAAA,kBAAC,gBAAAG,EAAAM,GAAA,EAAc,YAAK,KAAK,CAAA;AAAA,kBACzB,gBAAAN,EAACO,GAAc,EAAA,UAAAV,EAAK,MAAM,CAAA;AAAA,kBACzBA,EAAK,YACH,gBAAAG,EAAAQ,GAAA,EAAW,SAAQ,SAAQ,OAAM,kBAC/B,UAAAX,EAAK,SACR,CAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cATG,QAAQK,CAAK;AAAA,YAAA;AAAA,UAaxB;AACA,iBAAIL,EAAK,iBACPM,EAAS,KAAM,gBAAAH,EAAAS,GAAA,CAAA,GAAa,WAAWP,CAAK,EAAI,CAAE,GAE7CC;AAAA,QACR,CAAA;AAAA,MAAA;AAAA,MAvCG;AAAA,IAAA;AAAA,EA0CV;AACF;"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./components/DatePickerController/index.cjs.js"),t=require("./components/RangeDatePicker/index.cjs.js"),r=require("./components/RangeDatePickerController/index.cjs.js"),i=require("./components/Button/index.cjs.js"),e=require("./components/Card/index.cjs.js"),c=require("./components/CustomLink/index.cjs.js"),s=require("./components/DataTable/index.cjs.js"),l=require("./components/ErrorMessage/index.cjs.js"),a=require("./components/EvseStateLabel/index.cjs.js"),u=require("./components/FlexButtons/index.cjs.js"),_=require("./components/Form/index.cjs.js"),d=require("./components/FormItem/index.cjs.js"),p=require("./components/FormTitle/index.cjs.js"),m=require("./components/Input/index.cjs.js"),x=require("./components/InputController/index.cjs.js"),C=require("./components/InputGroup/index.cjs.js"),q=require("./components/Label/index.cjs.js"),S=require("./components/LabeledContent/index.cjs.js"),g=require("./components/LoadingOverlay/index.cjs.js"),b=require("./components/Map/index.cjs.js"),R=require("./components/MaxWidthContainer/index.cjs.js"),T=require("./components/NumericFieldController/index.cjs.js"),B=require("./components/OfflineLabel/index.cjs.js"),L=require("./components/PageSizeSelector/index.cjs.js"),M=require("./components/Pagination/index.cjs.js"),P=require("./components/PasswordInputController/index.cjs.js"),k=require("./index-B663CLQ0.cjs"),F=require("./components/RadioGroupController/index.cjs.js"),h=require("./components/ReportCard/index.cjs.js"),D=require("./components/ReportChart/index.cjs.js"),I=require("./components/ScrollableDialog/index.cjs.js"),O=require("./components/SearchForm/index.cjs.js"),y=require("./index-CCbJ_2yU.cjs"),f=require("./components/SelectBoxController/index.cjs.js"),v=require("./components/SubMenu/index.cjs.js"),E=require("./components/Tabs/index.cjs.js"),G=require("./components/Textarea/index.cjs.js"),H=require("./components/ToggleButton/index.cjs.js"),W=require("./components/SideMenu/index.cjs.js"),w=require("./components/SpinnerButton/index.cjs.js"),z=require("./components/HStack/index.cjs.js"),N=require("./components/VStack/index.cjs.js"),V=require("./components/Title/index.cjs.js"),A=require("./components/CardWithTitle/index.cjs.js"),j=require("./index-BoNIpBs7.cjs"),n=require("./components/ReportChartMulti/index.cjs.js");exports.DatePickerController=o.DatePickerController;exports.RangeDatePicker=t.RangeDatePicker;exports.RangeDatePickerController=r.RangeDatePickerController;exports.Button=i.Button;exports.Card=e.Card;exports.gridOnlyOneStyle=e.gridOnlyOneStyle;exports.CustomLink=c.CustomLink;exports.DataTable=s.DataTable;exports.ErrorMessage=l.ErrorMessage;exports.EvseStateLabel=a.EvseStateLabel;exports.FlexButtons=u.FlexButtons;exports.Form=_.Form;exports.FormItem=d.FormItem;exports.FormTitle=p.FormTitle;exports.Input=m.Input;exports.InputController=x.InputController;exports.InputGroup=C.InputGroup;exports.Label=q.Label;exports.LabeledContent=S.LabeledContent;exports.LoadingOverLay=g.LoadingOverLay;exports.Map=b.Map;exports.MaxWidthContainer=R.MaxWidthContainer;exports.NumericFieldController=T.NumericFieldController;exports.OfflineLabel=B.OfflineLabel;exports.PageSizeSelector=L.PageSizeSelector;exports.Pagination=M.Pagination;exports.PasswordInputController=P.PasswordInputController;exports.RadioButton=k.RadioButton;exports.RadioGroupController=F.RadioGroupController;exports.ReportCard=h.ReportCard;exports.ReportChart=D.ReportChart;exports.ScrollableDialog=I.ScrollableDialog;exports.SearchForm=O.SearchForm;exports.SelectBox=y.SelectBox;exports.SelectBoxController=f.SelectBoxController;exports.SubMenu=v.SubMenu;exports.Tabs=E.Tabs;exports.TextArea=G.TextArea;exports.ToggleButtonController=H.ToggleButtonController;exports.SideMenu=W.SideMenu;exports.SpinnerButton=w.SpinnerButton;exports.HStack=z.HStack;exports.VStack=N.VStack;exports.Title=V.Title;exports.CardWithTitle=A.CardWithTitle;exports.HtmlRenderer=j.HtmlRenderer;exports.ReportChartMulti=n.ReportChartMulti;exports.chartColors=n.chartColors;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|