@jigowatts/jigowatts-ui 2.2.0 → 2.3.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/README.md +31 -0
- package/dist/assets/index11.css +1 -1
- package/dist/assets/index17.css +1 -1
- package/dist/assets/index19.css +1 -1
- package/dist/assets/index2.css +1 -1
- package/dist/assets/index20.css +1 -1
- package/dist/assets/index21.css +1 -1
- package/dist/assets/index25.css +1 -1
- package/dist/assets/index28.css +1 -1
- package/dist/assets/index33.css +1 -1
- package/dist/assets/index4.css +1 -1
- package/dist/assets/index6.css +1 -1
- package/dist/components/Button/index.cjs.js +1 -1
- package/dist/components/Button/index.cjs.js.map +1 -1
- package/dist/components/Button/index.d.ts +2 -23
- package/dist/components/Button/index.es.js +7 -13
- package/dist/components/Button/index.es.js.map +1 -1
- package/dist/components/ErrorMessage/index.cjs.js +1 -1
- package/dist/components/ErrorMessage/index.es.js +2 -2
- package/dist/components/Input/index.cjs.js +1 -1
- package/dist/components/Input/index.es.js +17 -17
- 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 +38 -38
- package/dist/components/InputController/index.es.js.map +1 -1
- package/dist/components/Label/index.cjs.js +1 -1
- package/dist/components/Label/index.es.js +1 -1
- package/dist/components/LabeledContent/index.cjs.js +1 -1
- package/dist/components/LabeledContent/index.es.js +6 -6
- package/dist/components/LoadingOverlay/index.cjs.js +1 -1
- package/dist/components/LoadingOverlay/index.cjs.js.map +1 -1
- package/dist/components/LoadingOverlay/index.es.js +10 -4
- package/dist/components/LoadingOverlay/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.d.ts +5 -0
- package/dist/components/NumericFieldController/index.es.js +54 -50
- package/dist/components/NumericFieldController/index.es.js.map +1 -1
- package/dist/components/NumericFieldController/index.test.cjs.js +1 -1
- package/dist/components/NumericFieldController/index.test.cjs.js.map +1 -1
- package/dist/components/NumericFieldController/index.test.es.js +113 -11
- package/dist/components/NumericFieldController/index.test.es.js.map +1 -1
- package/dist/components/PageSizeSelector/index.cjs.js +1 -1
- package/dist/components/PageSizeSelector/index.es.js +1 -1
- package/dist/components/Pagination/index.cjs.js +2 -2
- package/dist/components/Pagination/index.es.js +15 -15
- 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 +25 -25
- package/dist/components/PasswordInputController/index.es.js.map +1 -1
- package/dist/components/RadioButton/index.cjs.js +1 -1
- package/dist/components/RadioButton/index.es.js +1 -1
- package/dist/components/RadioButton/index.test.cjs.js +1 -1
- package/dist/components/RadioButton/index.test.es.js +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 +37 -43
- package/dist/components/SearchForm/index.es.js.map +1 -1
- package/dist/components/SelectBox/index.cjs.js +1 -1
- package/dist/components/SelectBox/index.es.js +1 -1
- package/dist/components/SelectBox/index.test.cjs.js +1 -1
- package/dist/components/SelectBox/index.test.es.js +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 +24 -24
- package/dist/components/SelectBoxController/index.es.js.map +1 -1
- package/dist/components/SideMenu/index.cjs.js +1 -1
- package/dist/components/SideMenu/index.es.js +28 -28
- package/dist/components/Tabs/index.cjs.js +1 -1
- package/dist/components/Tabs/index.cjs.js.map +1 -1
- package/dist/components/Tabs/index.es.js +16 -16
- package/dist/components/Tabs/index.es.js.map +1 -1
- package/dist/components/Textarea/index.cjs.js +1 -1
- package/dist/components/Textarea/index.es.js +8 -8
- package/dist/components/TwoFaLabel/index.cjs.js +1 -1
- package/dist/components/TwoFaLabel/index.cjs.js.map +1 -1
- package/dist/components/TwoFaLabel/index.es.js +32 -20
- package/dist/components/TwoFaLabel/index.es.js.map +1 -1
- package/dist/{index-CogWL0bN.js → index-CqVxO31c.js} +10 -10
- package/dist/{index-CogWL0bN.js.map → index-CqVxO31c.js.map} +1 -1
- package/dist/index-DNu4-rkL.cjs +2 -0
- package/dist/{index-SHLzSoKB.cjs.map → index-DNu4-rkL.cjs.map} +1 -1
- package/dist/{index-BM3CSrls.cjs → index-c8cvlwzF.cjs} +2 -2
- package/dist/{index-BM3CSrls.cjs.map → index-c8cvlwzF.cjs.map} +1 -1
- package/dist/index-omG0Vz2u.js +51 -0
- package/dist/{index-D7VNQwOv.js.map → index-omG0Vz2u.js.map} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +82 -76
- package/dist/index.es.js.map +1 -1
- package/dist/theme/index.cjs.js +2 -0
- package/dist/theme/index.cjs.js.map +1 -0
- package/dist/theme/index.d.ts +86 -0
- package/dist/theme/index.es.js +123 -0
- package/dist/theme/index.es.js.map +1 -0
- package/dist/theme/index.test.cjs.js +2 -0
- package/dist/theme/index.test.cjs.js.map +1 -0
- package/dist/theme/index.test.d.ts +1 -0
- package/dist/theme/index.test.es.js +41 -0
- package/dist/theme/index.test.es.js.map +1 -0
- package/dist/theme/themeStoryUtils.cjs.js +54 -0
- package/dist/theme/themeStoryUtils.cjs.js.map +1 -0
- package/dist/theme/themeStoryUtils.d.ts +195 -0
- package/dist/theme/themeStoryUtils.es.js +172 -0
- package/dist/theme/themeStoryUtils.es.js.map +1 -0
- package/package.json +6 -1
- package/dist/index-D7VNQwOv.js +0 -51
- package/dist/index-SHLzSoKB.cjs +0 -2
|
@@ -15,7 +15,7 @@ import '../../assets/index33.css';var le = { exports: {} };
|
|
|
15
15
|
function F() {
|
|
16
16
|
}
|
|
17
17
|
F.resetWarningCache = q, u.exports = function() {
|
|
18
|
-
function b(se,
|
|
18
|
+
function b(se, j, Y, K, oe, U) {
|
|
19
19
|
if (U !== a) {
|
|
20
20
|
var G = new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");
|
|
21
21
|
throw G.name = "Invariant Violation", G;
|
|
@@ -83,7 +83,7 @@ import '../../assets/index33.css';var le = { exports: {} };
|
|
|
83
83
|
};
|
|
84
84
|
M.propTypes = { breakLabel: a().oneOfType([a().string, a().node]), breakAriaLabel: a().string, breakClassName: a().string, breakLinkClassName: a().string, breakHandler: a().func.isRequired, getEventListener: a().func.isRequired };
|
|
85
85
|
const se = M;
|
|
86
|
-
function
|
|
86
|
+
function j(r) {
|
|
87
87
|
var i = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
|
|
88
88
|
return r ?? i;
|
|
89
89
|
}
|
|
@@ -171,11 +171,11 @@ import '../../assets/index33.css';var le = { exports: {} };
|
|
|
171
171
|
}), y(x(e), "getEventListener", function(n) {
|
|
172
172
|
return y({}, e.props.eventListener, n);
|
|
173
173
|
}), y(x(e), "handleClick", function(n, s, c) {
|
|
174
|
-
var f = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, h = f.isPrevious, _ = h !== void 0 && h, W = f.isNext, Z = W !== void 0 && W, H = f.isBreak, L = H !== void 0 && H,
|
|
174
|
+
var f = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}, h = f.isPrevious, _ = h !== void 0 && h, W = f.isNext, Z = W !== void 0 && W, H = f.isBreak, L = H !== void 0 && H, R = f.isActive, E = R !== void 0 && R;
|
|
175
175
|
n.preventDefault ? n.preventDefault() : n.returnValue = !1;
|
|
176
|
-
var
|
|
176
|
+
var A = e.state.selected, d = e.props.onClick, N = c;
|
|
177
177
|
if (d) {
|
|
178
|
-
var k = d({ index: s, selected:
|
|
178
|
+
var k = d({ index: s, selected: A, nextSelectedPage: c, event: n, isPrevious: _, isNext: Z, isBreak: L, isActive: E });
|
|
179
179
|
if (k === !1) return;
|
|
180
180
|
Number.isInteger(k) && (N = k);
|
|
181
181
|
}
|
|
@@ -192,10 +192,10 @@ import '../../assets/index33.css';var le = { exports: {} };
|
|
|
192
192
|
return s - 1 === n ? h : s === n ? _ : s + 1 === n ? f : void 0;
|
|
193
193
|
}), y(x(e), "pagination", function() {
|
|
194
194
|
var n = [], s = e.props, c = s.pageRangeDisplayed, f = s.pageCount, h = s.marginPagesDisplayed, _ = s.breakLabel, W = s.breakClassName, Z = s.breakLinkClassName, H = s.breakAriaLabels, L = e.state.selected;
|
|
195
|
-
if (f <= c) for (var
|
|
195
|
+
if (f <= c) for (var R = 0; R < f; R++) n.push(e.getPageElement(R));
|
|
196
196
|
else {
|
|
197
|
-
var
|
|
198
|
-
L > f - c / 2 ?
|
|
197
|
+
var E = c / 2, A = c - E;
|
|
198
|
+
L > f - c / 2 ? E = c - (A = f - L) : L < c / 2 && (A = c - (E = L));
|
|
199
199
|
var d, N, k = function(T) {
|
|
200
200
|
return e.getPageElement(T);
|
|
201
201
|
}, m = [];
|
|
@@ -203,7 +203,7 @@ import '../../assets/index33.css';var le = { exports: {} };
|
|
|
203
203
|
var z = d + 1;
|
|
204
204
|
if (z <= h) m.push({ type: "page", index: d, display: k(d) });
|
|
205
205
|
else if (z > f - h) m.push({ type: "page", index: d, display: k(d) });
|
|
206
|
-
else if (d >= L -
|
|
206
|
+
else if (d >= L - E && d <= L + (L === 0 && c > 1 ? A - 1 : A)) m.push({ type: "page", index: d, display: k(d) });
|
|
207
207
|
else if (_ && m.length > 0 && m[m.length - 1].display !== N && (c > 0 || h > 0)) {
|
|
208
208
|
var re = d < L ? H.backward : H.forward;
|
|
209
209
|
N = g().createElement(se, { key: d, breakAriaLabel: re, breakLabel: _, breakClassName: W, breakLinkClassName: Z, breakHandler: e.handleBreakClick.bind(null, d), getEventListener: e.getEventListener }), m.push({ type: "break", index: d, display: N });
|
|
@@ -244,8 +244,8 @@ See https://reactjs.org/docs/forms.html#controlled-components`), p = t.initialPa
|
|
|
244
244
|
} }, { key: "render", value: function() {
|
|
245
245
|
var t = this.props.renderOnZeroPageCount;
|
|
246
246
|
if (this.props.pageCount === 0 && t !== void 0) return t && t(this.props);
|
|
247
|
-
var e = this.props, p = e.disabledClassName, n = e.disabledLinkClassName, s = e.pageCount, c = e.className, f = e.containerClassName, h = e.previousLabel, _ = e.previousClassName, W = e.previousLinkClassName, Z = e.previousAriaLabel, H = e.prevRel, L = e.nextLabel,
|
|
248
|
-
return g().createElement("ul", { className: c || f, role: "navigation", "aria-label": "Pagination" }, g().createElement("li", { className: z }, g().createElement("a", K({ className: T, href: this.getElementHref(N - 1), tabIndex: k ? "-1" : "0", role: "button", onKeyPress: this.handlePreviousPage, "aria-disabled": Q, "aria-label": Z, rel: H }, this.getEventListener(this.handlePreviousPage)), h)), this.pagination(), g().createElement("li", { className: re }, g().createElement("a", K({ className: B, href: this.getElementHref(N + 1), tabIndex: m ? "-1" : "0", role: "button", onKeyPress: this.handleNextPage, "aria-disabled": pe, "aria-label":
|
|
247
|
+
var e = this.props, p = e.disabledClassName, n = e.disabledLinkClassName, s = e.pageCount, c = e.className, f = e.containerClassName, h = e.previousLabel, _ = e.previousClassName, W = e.previousLinkClassName, Z = e.previousAriaLabel, H = e.prevRel, L = e.nextLabel, R = e.nextClassName, E = e.nextLinkClassName, A = e.nextAriaLabel, d = e.nextRel, N = this.state.selected, k = N === 0, m = N === s - 1, z = "".concat(j(_)).concat(k ? " ".concat(j(p)) : ""), re = "".concat(j(R)).concat(m ? " ".concat(j(p)) : ""), T = "".concat(j(W)).concat(k ? " ".concat(j(n)) : ""), B = "".concat(j(E)).concat(m ? " ".concat(j(n)) : ""), Q = k ? "true" : "false", pe = m ? "true" : "false";
|
|
248
|
+
return g().createElement("ul", { className: c || f, role: "navigation", "aria-label": "Pagination" }, g().createElement("li", { className: z }, g().createElement("a", K({ className: T, href: this.getElementHref(N - 1), tabIndex: k ? "-1" : "0", role: "button", onKeyPress: this.handlePreviousPage, "aria-disabled": Q, "aria-label": Z, rel: H }, this.getEventListener(this.handlePreviousPage)), h)), this.pagination(), g().createElement("li", { className: re }, g().createElement("a", K({ className: B, href: this.getElementHref(N + 1), tabIndex: m ? "-1" : "0", role: "button", onKeyPress: this.handleNextPage, "aria-disabled": pe, "aria-label": A, rel: d }, this.getEventListener(this.handleNextPage)), L)));
|
|
249
249
|
} }]) && oe(i.prototype, o), Object.defineProperty(i, "prototype", { writable: !1 }), O;
|
|
250
250
|
}(u.Component);
|
|
251
251
|
y(te, "propTypes", { pageCount: a().number.isRequired, pageRangeDisplayed: a().number, marginPagesDisplayed: a().number, previousLabel: a().node, previousAriaLabel: a().string, prevPageRel: a().string, prevRel: a().string, nextLabel: a().node, nextAriaLabel: a().string, nextPageRel: a().string, nextRel: a().string, breakLabel: a().oneOfType([a().string, a().node]), breakAriaLabels: a().shape({ forward: a().string, backward: a().string }), hrefBuilder: a().func, hrefAllControls: a().bool, onPageChange: a().func, onPageActive: a().func, onClick: a().func, initialPage: a().number, forcePage: a().number, disableInitialCallback: a().bool, containerClassName: a().string, className: a().string, pageClassName: a().string, pageLinkClassName: a().string, pageLabelBuilder: a().func, activeClassName: a().string, activeLinkClassName: a().string, previousClassName: a().string, nextClassName: a().string, previousLinkClassName: a().string, nextLinkClassName: a().string, disabledClassName: a().string, disabledLinkClassName: a().string, breakClassName: a().string, breakLinkClassName: a().string, extraAriaContext: a().string, ariaLabelBuilder: a().func, eventListener: a().string, renderOnZeroPageCount: a().func, selectedPageRel: a().string }), y(te, "defaultProps", { pageRangeDisplayed: 2, marginPagesDisplayed: 3, activeClassName: "selected", previousLabel: "Previous", previousClassName: "previous", previousAriaLabel: "Previous page", prevPageRel: "prev", prevRel: "prev", nextLabel: "Next", nextClassName: "next", nextAriaLabel: "Next page", nextPageRel: "next", nextRel: "next", breakLabel: "...", breakAriaLabels: { forward: "Jump forward", backward: "Jump backward" }, disabledClassName: "disabled", disableInitialCallback: !1, pageLabelBuilder: function(r) {
|
|
@@ -256,7 +256,7 @@ See https://reactjs.org/docs/forms.html#controlled-components`), p = t.initialPa
|
|
|
256
256
|
})());
|
|
257
257
|
})(le);
|
|
258
258
|
var be = le.exports;
|
|
259
|
-
const ve = /* @__PURE__ */ fe(be), he = "
|
|
259
|
+
const ve = /* @__PURE__ */ fe(be), he = "_paginationWrapper_1xjjw_1", Ce = "_pageLink_1xjjw_13", Pe = "_paginationItem_1xjjw_29", ye = "_white_1xjjw_35", ke = "_arrow_1xjjw_55", xe = "_paginationItemActive_1xjjw_61", Le = "_disable_1xjjw_74", Ne = "_marginLeft_1xjjw_79", we = "_marginRight_1xjjw_83", C = {
|
|
260
260
|
paginationWrapper: he,
|
|
261
261
|
pageLink: Ce,
|
|
262
262
|
paginationItem: Pe,
|
|
@@ -266,7 +266,7 @@ const ve = /* @__PURE__ */ fe(be), he = "_paginationWrapper_vmodx_1", Ce = "_pag
|
|
|
266
266
|
disable: Le,
|
|
267
267
|
marginLeft: Ne,
|
|
268
268
|
marginRight: we
|
|
269
|
-
},
|
|
269
|
+
}, Ae = (ee) => {
|
|
270
270
|
const { pageCount: ie, onChangePage: V, activePage: J, color: S = "default" } = ee;
|
|
271
271
|
return /* @__PURE__ */ ne(
|
|
272
272
|
ve,
|
|
@@ -302,7 +302,7 @@ const ve = /* @__PURE__ */ fe(be), he = "_paginationWrapper_vmodx_1", Ce = "_pag
|
|
|
302
302
|
);
|
|
303
303
|
};
|
|
304
304
|
export {
|
|
305
|
-
|
|
306
|
-
|
|
305
|
+
Ae as Pagination,
|
|
306
|
+
Ae as default
|
|
307
307
|
};
|
|
308
308
|
//# sourceMappingURL=index.es.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),b=require("react"),i=require("@mui/icons-material"),o=require("@mui/material"),h=require("react-hook-form"),l=a=>{const{control:u,name:d,autoComplete:c,placeholder:p,defaultValue:w,inputProps:x}=a,[r,C]=b.useState(!1),j=()=>{C(!r)};return e.jsx(h.Controller,{control:u,name:d,defaultValue:w,render:({field:t,fieldState:s})=>{var n;return e.jsxs(o.FormControl,{error:s.invalid,children:[e.jsx(o.TextField,{...t,type:r?"text":"password",autoComplete:c,placeholder:p,value:t.value??"",InputProps:{...x,endAdornment:t.value?e.jsx(o.InputAdornment,{position:"end",children:e.jsx(o.IconButton,{"aria-label":"toggle password visibility",onClick:j,edge:"end",children:r?e.jsx(i.VisibilityOff,{}):e.jsx(i.Visibility,{})})}):void 0},sx:{"& .MuiInput-underline:before":{borderColor:"var(--jigowatts-color-border, #CCCCCC)"},"& .MuiInputBase-root":{backgroundColor:"var(--jigowatts-color-surface, #FFFFFF)"},"input:-webkit-autofill":{WebkitBoxShadow:"0 0 0 1000px var(--jigowatts-color-surface, white) inset"}}}),e.jsx(o.FormHelperText,{children:(n=s.error)==null?void 0:n.message})]})}})};exports.PasswordInputController=l;exports.default=l;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../../src/components/PasswordInputController/index.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Visibility, VisibilityOff } from \"@mui/icons-material\";\nimport {\n FilledInputProps,\n FormControl,\n FormHelperText,\n IconButton,\n InputAdornment,\n InputProps,\n OutlinedInputProps,\n TextField,\n} from \"@mui/material\";\nimport {\n Controller,\n FieldPath,\n PathValue,\n type Control,\n type FieldValues,\n} from \"react-hook-form\";\n\ntype MultilineOption = {\n rows: number;\n};\n\ntype Props<T extends FieldValues> = {\n control: Control<T>;\n textareaOption?: MultilineOption;\n name: FieldPath<T>;\n defaultValue: PathValue<T, FieldPath<T>>;\n autoComplete?: string;\n placeholder?: string;\n inputProps?:\n | Partial<FilledInputProps>\n | Partial<OutlinedInputProps>\n | Partial<InputProps>;\n};\n\nexport const PasswordInputController = <T extends FieldValues>(\n props: Props<T>,\n) => {\n const { control, name, autoComplete, placeholder, defaultValue, inputProps } =\n props;\n\n const [showPassword, setShowPassword] = useState(false);\n\n const handleClickShowPassword = () => {\n setShowPassword(!showPassword);\n };\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormControl error={fieldState.invalid}>\n <TextField\n {...field}\n type={showPassword ? \"text\" : \"password\"}\n autoComplete={autoComplete}\n placeholder={placeholder}\n value={field.value ?? \"\"}\n InputProps={{\n ...inputProps,\n endAdornment: field.value ? (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword}\n edge=\"end\"\n >\n {showPassword ? <VisibilityOff /> : <Visibility />}\n </IconButton>\n </InputAdornment>\n ) : undefined,\n }}\n sx={{\n \"& .MuiInput-underline:before\": {\n borderColor: \"#CCCCCC\",\n },\n \"& .MuiInputBase-root\": {\n backgroundColor: \"#FFFFFF\",\n },\n \"input:-webkit-autofill\": {\n WebkitBoxShadow
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../src/components/PasswordInputController/index.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Visibility, VisibilityOff } from \"@mui/icons-material\";\nimport {\n FilledInputProps,\n FormControl,\n FormHelperText,\n IconButton,\n InputAdornment,\n InputProps,\n OutlinedInputProps,\n TextField,\n} from \"@mui/material\";\nimport {\n Controller,\n FieldPath,\n PathValue,\n type Control,\n type FieldValues,\n} from \"react-hook-form\";\n\ntype MultilineOption = {\n rows: number;\n};\n\ntype Props<T extends FieldValues> = {\n control: Control<T>;\n textareaOption?: MultilineOption;\n name: FieldPath<T>;\n defaultValue: PathValue<T, FieldPath<T>>;\n autoComplete?: string;\n placeholder?: string;\n inputProps?:\n | Partial<FilledInputProps>\n | Partial<OutlinedInputProps>\n | Partial<InputProps>;\n};\n\nexport const PasswordInputController = <T extends FieldValues>(\n props: Props<T>,\n) => {\n const { control, name, autoComplete, placeholder, defaultValue, inputProps } =\n props;\n\n const [showPassword, setShowPassword] = useState(false);\n\n const handleClickShowPassword = () => {\n setShowPassword(!showPassword);\n };\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormControl error={fieldState.invalid}>\n <TextField\n {...field}\n type={showPassword ? \"text\" : \"password\"}\n autoComplete={autoComplete}\n placeholder={placeholder}\n value={field.value ?? \"\"}\n InputProps={{\n ...inputProps,\n endAdornment: field.value ? (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword}\n edge=\"end\"\n >\n {showPassword ? <VisibilityOff /> : <Visibility />}\n </IconButton>\n </InputAdornment>\n ) : undefined,\n }}\n sx={{\n \"& .MuiInput-underline:before\": {\n borderColor: \"var(--jigowatts-color-border, #CCCCCC)\",\n },\n \"& .MuiInputBase-root\": {\n backgroundColor: \"var(--jigowatts-color-surface, #FFFFFF)\",\n },\n \"input:-webkit-autofill\": {\n WebkitBoxShadow:\n \"0 0 0 1000px var(--jigowatts-color-surface, white) inset\",\n },\n }}\n />\n <FormHelperText>{fieldState.error?.message}</FormHelperText>\n </FormControl>\n )}\n />\n );\n};\n\nexport default PasswordInputController;\n"],"names":["PasswordInputController","props","control","name","autoComplete","placeholder","defaultValue","inputProps","showPassword","setShowPassword","useState","handleClickShowPassword","jsx","Controller","field","fieldState","jsxs","FormControl","TextField","InputAdornment","IconButton","VisibilityOff","Visibility","FormHelperText","_a"],"mappings":"6PAqCaA,EACXC,GACG,CACH,KAAM,CAAE,QAAAC,EAAS,KAAAC,EAAM,aAAAC,EAAc,YAAAC,EAAa,aAAAC,EAAc,WAAAC,GAC9DN,EAEI,CAACO,EAAcC,CAAe,EAAIC,EAAAA,SAAS,EAAK,EAEhDC,EAA0B,IAAM,CACpCF,EAAgB,CAACD,CAAY,CAC/B,EAEA,OACEI,EAAAA,IAACC,EAAAA,WAAA,CACC,QAAAX,EACA,KAAAC,EACA,aAAAG,EACA,OAAQ,CAAC,CAAE,MAAAQ,EAAO,WAAAC,YAChBC,OAAAA,EAAAA,KAACC,EAAAA,YAAA,CAAY,MAAOF,EAAW,QAC7B,SAAA,CAAAH,EAAAA,IAACM,EAAAA,UAAA,CACE,GAAGJ,EACJ,KAAMN,EAAe,OAAS,WAC9B,aAAAJ,EACA,YAAAC,EACA,MAAOS,EAAM,OAAS,GACtB,WAAY,CACV,GAAGP,EACH,aAAcO,EAAM,MAClBF,EAAAA,IAACO,EAAAA,eAAA,CAAe,SAAS,MACvB,SAAAP,EAAAA,IAACQ,EAAAA,WAAA,CACC,aAAW,6BACX,QAAST,EACT,KAAK,MAEJ,SAAAH,EAAeI,MAACS,EAAAA,cAAA,CAAA,CAAc,QAAMC,EAAAA,WAAA,CAAA,CAAW,CAAA,CAAA,EAEpD,EACE,MAAA,EAEN,GAAI,CACF,+BAAgC,CAC9B,YAAa,wCAAA,EAEf,uBAAwB,CACtB,gBAAiB,yCAAA,EAEnB,yBAA0B,CACxB,gBACE,0DAAA,CACJ,CACF,CAAA,EAEFV,EAAAA,IAACW,EAAAA,eAAA,CAAgB,UAAAC,EAAAT,EAAW,QAAX,YAAAS,EAAkB,OAAA,CAAQ,CAAA,CAAA,CAC7C,EAAA,CAAA,CAIR"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { jsx as o, jsxs as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { VisibilityOff as
|
|
4
|
-
import { FormControl as
|
|
5
|
-
import { Controller as
|
|
6
|
-
const
|
|
7
|
-
const { control:
|
|
8
|
-
|
|
1
|
+
import { jsx as o, jsxs as w } from "react/jsx-runtime";
|
|
2
|
+
import { useState as C } from "react";
|
|
3
|
+
import { VisibilityOff as f, Visibility as h } from "@mui/icons-material";
|
|
4
|
+
import { FormControl as b, TextField as v, InputAdornment as x, IconButton as F, FormHelperText as g } from "@mui/material";
|
|
5
|
+
import { Controller as I } from "react-hook-form";
|
|
6
|
+
const S = (s) => {
|
|
7
|
+
const { control: n, name: l, autoComplete: a, placeholder: d, defaultValue: u, inputProps: p } = s, [r, c] = C(!1), m = () => {
|
|
8
|
+
c(!r);
|
|
9
9
|
};
|
|
10
10
|
return /* @__PURE__ */ o(
|
|
11
|
-
|
|
11
|
+
I,
|
|
12
12
|
{
|
|
13
|
-
control:
|
|
13
|
+
control: n,
|
|
14
14
|
name: l,
|
|
15
|
-
defaultValue:
|
|
15
|
+
defaultValue: u,
|
|
16
16
|
render: ({ field: e, fieldState: t }) => {
|
|
17
|
-
var
|
|
18
|
-
return /* @__PURE__ */
|
|
17
|
+
var i;
|
|
18
|
+
return /* @__PURE__ */ w(b, { error: t.invalid, children: [
|
|
19
19
|
/* @__PURE__ */ o(
|
|
20
|
-
|
|
20
|
+
v,
|
|
21
21
|
{
|
|
22
22
|
...e,
|
|
23
23
|
type: r ? "text" : "password",
|
|
@@ -25,38 +25,38 @@ const V = (i) => {
|
|
|
25
25
|
placeholder: d,
|
|
26
26
|
value: e.value ?? "",
|
|
27
27
|
InputProps: {
|
|
28
|
-
...
|
|
29
|
-
endAdornment: e.value ? /* @__PURE__ */ o(
|
|
30
|
-
|
|
28
|
+
...p,
|
|
29
|
+
endAdornment: e.value ? /* @__PURE__ */ o(x, { position: "end", children: /* @__PURE__ */ o(
|
|
30
|
+
F,
|
|
31
31
|
{
|
|
32
32
|
"aria-label": "toggle password visibility",
|
|
33
|
-
onClick:
|
|
33
|
+
onClick: m,
|
|
34
34
|
edge: "end",
|
|
35
|
-
children: r ? /* @__PURE__ */ o(
|
|
35
|
+
children: r ? /* @__PURE__ */ o(f, {}) : /* @__PURE__ */ o(h, {})
|
|
36
36
|
}
|
|
37
37
|
) }) : void 0
|
|
38
38
|
},
|
|
39
39
|
sx: {
|
|
40
40
|
"& .MuiInput-underline:before": {
|
|
41
|
-
borderColor: "#CCCCCC"
|
|
41
|
+
borderColor: "var(--jigowatts-color-border, #CCCCCC)"
|
|
42
42
|
},
|
|
43
43
|
"& .MuiInputBase-root": {
|
|
44
|
-
backgroundColor: "#FFFFFF"
|
|
44
|
+
backgroundColor: "var(--jigowatts-color-surface, #FFFFFF)"
|
|
45
45
|
},
|
|
46
46
|
"input:-webkit-autofill": {
|
|
47
|
-
WebkitBoxShadow: "0 0 0 1000px white inset"
|
|
47
|
+
WebkitBoxShadow: "0 0 0 1000px var(--jigowatts-color-surface, white) inset"
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
),
|
|
52
|
-
/* @__PURE__ */ o(
|
|
52
|
+
/* @__PURE__ */ o(g, { children: (i = t.error) == null ? void 0 : i.message })
|
|
53
53
|
] });
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
);
|
|
57
57
|
};
|
|
58
58
|
export {
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
S as PasswordInputController,
|
|
60
|
+
S as default
|
|
61
61
|
};
|
|
62
62
|
//# sourceMappingURL=index.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../src/components/PasswordInputController/index.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Visibility, VisibilityOff } from \"@mui/icons-material\";\nimport {\n FilledInputProps,\n FormControl,\n FormHelperText,\n IconButton,\n InputAdornment,\n InputProps,\n OutlinedInputProps,\n TextField,\n} from \"@mui/material\";\nimport {\n Controller,\n FieldPath,\n PathValue,\n type Control,\n type FieldValues,\n} from \"react-hook-form\";\n\ntype MultilineOption = {\n rows: number;\n};\n\ntype Props<T extends FieldValues> = {\n control: Control<T>;\n textareaOption?: MultilineOption;\n name: FieldPath<T>;\n defaultValue: PathValue<T, FieldPath<T>>;\n autoComplete?: string;\n placeholder?: string;\n inputProps?:\n | Partial<FilledInputProps>\n | Partial<OutlinedInputProps>\n | Partial<InputProps>;\n};\n\nexport const PasswordInputController = <T extends FieldValues>(\n props: Props<T>,\n) => {\n const { control, name, autoComplete, placeholder, defaultValue, inputProps } =\n props;\n\n const [showPassword, setShowPassword] = useState(false);\n\n const handleClickShowPassword = () => {\n setShowPassword(!showPassword);\n };\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormControl error={fieldState.invalid}>\n <TextField\n {...field}\n type={showPassword ? \"text\" : \"password\"}\n autoComplete={autoComplete}\n placeholder={placeholder}\n value={field.value ?? \"\"}\n InputProps={{\n ...inputProps,\n endAdornment: field.value ? (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword}\n edge=\"end\"\n >\n {showPassword ? <VisibilityOff /> : <Visibility />}\n </IconButton>\n </InputAdornment>\n ) : undefined,\n }}\n sx={{\n \"& .MuiInput-underline:before\": {\n borderColor: \"#CCCCCC\",\n },\n \"& .MuiInputBase-root\": {\n backgroundColor: \"#FFFFFF\",\n },\n \"input:-webkit-autofill\": {\n WebkitBoxShadow
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../src/components/PasswordInputController/index.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Visibility, VisibilityOff } from \"@mui/icons-material\";\nimport {\n FilledInputProps,\n FormControl,\n FormHelperText,\n IconButton,\n InputAdornment,\n InputProps,\n OutlinedInputProps,\n TextField,\n} from \"@mui/material\";\nimport {\n Controller,\n FieldPath,\n PathValue,\n type Control,\n type FieldValues,\n} from \"react-hook-form\";\n\ntype MultilineOption = {\n rows: number;\n};\n\ntype Props<T extends FieldValues> = {\n control: Control<T>;\n textareaOption?: MultilineOption;\n name: FieldPath<T>;\n defaultValue: PathValue<T, FieldPath<T>>;\n autoComplete?: string;\n placeholder?: string;\n inputProps?:\n | Partial<FilledInputProps>\n | Partial<OutlinedInputProps>\n | Partial<InputProps>;\n};\n\nexport const PasswordInputController = <T extends FieldValues>(\n props: Props<T>,\n) => {\n const { control, name, autoComplete, placeholder, defaultValue, inputProps } =\n props;\n\n const [showPassword, setShowPassword] = useState(false);\n\n const handleClickShowPassword = () => {\n setShowPassword(!showPassword);\n };\n\n return (\n <Controller\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => (\n <FormControl error={fieldState.invalid}>\n <TextField\n {...field}\n type={showPassword ? \"text\" : \"password\"}\n autoComplete={autoComplete}\n placeholder={placeholder}\n value={field.value ?? \"\"}\n InputProps={{\n ...inputProps,\n endAdornment: field.value ? (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword}\n edge=\"end\"\n >\n {showPassword ? <VisibilityOff /> : <Visibility />}\n </IconButton>\n </InputAdornment>\n ) : undefined,\n }}\n sx={{\n \"& .MuiInput-underline:before\": {\n borderColor: \"var(--jigowatts-color-border, #CCCCCC)\",\n },\n \"& .MuiInputBase-root\": {\n backgroundColor: \"var(--jigowatts-color-surface, #FFFFFF)\",\n },\n \"input:-webkit-autofill\": {\n WebkitBoxShadow:\n \"0 0 0 1000px var(--jigowatts-color-surface, white) inset\",\n },\n }}\n />\n <FormHelperText>{fieldState.error?.message}</FormHelperText>\n </FormControl>\n )}\n />\n );\n};\n\nexport default PasswordInputController;\n"],"names":["PasswordInputController","props","control","name","autoComplete","placeholder","defaultValue","inputProps","showPassword","setShowPassword","useState","handleClickShowPassword","jsx","Controller","field","fieldState","jsxs","FormControl","TextField","InputAdornment","IconButton","VisibilityOff","Visibility","FormHelperText","_a"],"mappings":";;;;;AAqCO,MAAMA,IAA0B,CACrCC,MACG;AACH,QAAM,EAAE,SAAAC,GAAS,MAAAC,GAAM,cAAAC,GAAc,aAAAC,GAAa,cAAAC,GAAc,YAAAC,MAC9DN,GAEI,CAACO,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAEhDC,IAA0B,MAAM;AACpC,IAAAF,EAAgB,CAACD,CAAY;AAAA,EAC/B;AAEA,SACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAAX;AAAA,MACA,MAAAC;AAAA,MACA,cAAAG;AAAA,MACA,QAAQ,CAAC,EAAE,OAAAQ,GAAO,YAAAC;;AAChB,+BAAAC,EAACC,GAAA,EAAY,OAAOF,EAAW,SAC7B,UAAA;AAAA,UAAA,gBAAAH;AAAA,YAACM;AAAA,YAAA;AAAA,cACE,GAAGJ;AAAA,cACJ,MAAMN,IAAe,SAAS;AAAA,cAC9B,cAAAJ;AAAA,cACA,aAAAC;AAAA,cACA,OAAOS,EAAM,SAAS;AAAA,cACtB,YAAY;AAAA,gBACV,GAAGP;AAAA,gBACH,cAAcO,EAAM,QAClB,gBAAAF,EAACO,GAAA,EAAe,UAAS,OACvB,UAAA,gBAAAP;AAAA,kBAACQ;AAAA,kBAAA;AAAA,oBACC,cAAW;AAAA,oBACX,SAAST;AAAA,oBACT,MAAK;AAAA,oBAEJ,UAAAH,IAAe,gBAAAI,EAACS,GAAA,CAAA,CAAc,sBAAMC,GAAA,CAAA,CAAW;AAAA,kBAAA;AAAA,gBAAA,GAEpD,IACE;AAAA,cAAA;AAAA,cAEN,IAAI;AAAA,gBACF,gCAAgC;AAAA,kBAC9B,aAAa;AAAA,gBAAA;AAAA,gBAEf,wBAAwB;AAAA,kBACtB,iBAAiB;AAAA,gBAAA;AAAA,gBAEnB,0BAA0B;AAAA,kBACxB,iBACE;AAAA,gBAAA;AAAA,cACJ;AAAA,YACF;AAAA,UAAA;AAAA,UAEF,gBAAAV,EAACW,GAAA,EAAgB,WAAAC,IAAAT,EAAW,UAAX,gBAAAS,EAAkB,QAAA,CAAQ;AAAA,QAAA,EAAA,CAC7C;AAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("classnames");const e=require("../../index-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("classnames");const e=require("../../index-c8cvlwzF.cjs");exports.RadioButton=e.RadioButton;exports.default=e.RadioButton;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const n=require("react/jsx-runtime"),t=require("../../react.esm-DGuy6Rn3.cjs"),i=require("../../index-Ds6DK19y.cjs"),s=require("../../index-
|
|
1
|
+
"use strict";const n=require("react/jsx-runtime"),t=require("../../react.esm-DGuy6Rn3.cjs"),i=require("../../index-Ds6DK19y.cjs"),s=require("../../index-c8cvlwzF.cjs");describe("RadioButton component",()=>{const o=[{label:"Option 1",value:"option1"},{label:"Option 2",value:"option2"}];it("renders the radio buttons with correct labels and values",()=>{t.render(n.jsx(s.RadioButton,{values:o})),o.forEach(({label:e,value:r})=>{const a=t.screen.getByLabelText(e);expect(a).toBeInTheDocument(),expect(a).toHaveAttribute("value",r)})}),it("shows error message when provided",()=>{const e="Error message";t.render(n.jsx(s.RadioButton,{values:o,errorMessage:e}));const r=t.screen.getByText(e);expect(r).toBeInTheDocument()}),it("does not show error message when not provided",()=>{t.render(n.jsx(s.RadioButton,{values:o}));const e=t.screen.queryByText(/Error message/i);expect(e).not.toBeInTheDocument()}),it("applies the error class to inputs when errorMessage is provided",()=>{t.render(n.jsx(s.RadioButton,{values:o,errorMessage:"Error message"})),o.forEach(({label:r})=>{const a=t.screen.getByLabelText(r);expect(a).toHaveClass(s.styles.error)})}),it("does not apply the error class to inputs when errorMessage is not provided",()=>{t.render(n.jsx(s.RadioButton,{values:o})),o.forEach(({label:e})=>{const r=t.screen.getByLabelText(e);expect(r).not.toHaveClass(s.styles.error)})}),it("should be accessible",async()=>{const{container:e}=t.render(n.jsx(s.RadioButton,{values:o})),r=await i.jestAxe.axe(e);expect.extend(i.jestAxe.toHaveNoViolations),expect(r).toHaveNoViolations()})});
|
|
2
2
|
//# sourceMappingURL=index.test.cjs.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import { r as s, s as n } from "../../react.esm-BBESb8eI.js";
|
|
3
3
|
import { j as c } from "../../index-DI17hZPH.js";
|
|
4
|
-
import { s as l, R as a } from "../../index-
|
|
4
|
+
import { s as l, R as a } from "../../index-CqVxO31c.js";
|
|
5
5
|
describe("RadioButton component", () => {
|
|
6
6
|
const o = [
|
|
7
7
|
{ label: "Option 1", value: "option1" },
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('../../assets/index6.css');const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('../../assets/index6.css');const t=require("react/jsx-runtime"),s=require("@mui/icons-material"),e=require("@mui/material"),r=require("../Button/index.cjs.js"),j=require("../FlexButtons/index.cjs.js"),x="_container_vj5gz_1",p="_header_vj5gz_6",B="_mainContent_vj5gz_19",v="_searchForm_vj5gz_27",g="_inputItems_vj5gz_33",b="_clearButton_vj5gz_39",F="_submitButton_vj5gz_47",n={container:x,header:p,mainContent:B,searchForm:v,inputItems:g,clearButton:b,submitButton:F},c=({headerTitle:a,children:i,defaultExpanded:u,handleSubmit:l,onSubmitSearch:m,onClickClear:o})=>{const d=()=>{o&&o()},_=l(h=>{m(h)});return t.jsxs(e.Accordion,{defaultExpanded:u,className:n.container,children:[t.jsx(e.AccordionSummary,{className:n.header,"aria-controls":"panel-content",expandIcon:t.jsx(s.ExpandMore,{}),children:a||"絞り込み"}),t.jsx(e.AccordionDetails,{className:n.mainContent,children:t.jsxs("form",{className:n.searchForm,onSubmit:_,children:[t.jsx("div",{className:n.inputItems,children:i}),t.jsxs(j.FlexButtons,{position:"flex-end",children:[t.jsx(r.Button,{onClick:d,variant:"outlined",color:"primary",className:n.clearButton,children:"クリア"}),t.jsx(r.Button,{type:"submit",variant:"contained",startIcon:t.jsx(s.Search,{}),color:"primary",className:n.submitButton,children:"検索"})]})]})})]})};exports.SearchForm=c;exports.default=c;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../../src/components/SearchForm/index.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { ExpandMore, Search } from \"@mui/icons-material\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../src/components/SearchForm/index.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { ExpandMore, Search } from \"@mui/icons-material\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from \"@mui/material\";\nimport { type FieldValues, type useForm } from \"react-hook-form\";\n\nimport Button from \"../Button\";\nimport { FlexButtons } from \"../FlexButtons\";\nimport styles from \"./index.module.scss\";\n\ntype Props<T extends FieldValues = FieldValues> = {\n headerTitle?: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n handleSubmit: ReturnType<typeof useForm<T>>[\"handleSubmit\"];\n onSubmitSearch: (data: T) => void;\n onClickClear?: () => void;\n};\n\nexport const SearchForm = <T extends FieldValues = FieldValues>({\n headerTitle,\n children,\n defaultExpanded,\n handleSubmit,\n onSubmitSearch,\n onClickClear,\n}: Props<T>) => {\n const handleClear = () => {\n if (onClickClear) {\n onClickClear();\n }\n };\n\n const handle = handleSubmit((data) => {\n onSubmitSearch(data);\n });\n\n return (\n <Accordion defaultExpanded={defaultExpanded} className={styles.container}>\n <AccordionSummary\n className={styles.header}\n aria-controls=\"panel-content\"\n expandIcon={<ExpandMore />}\n >\n {headerTitle || \"絞り込み\"}\n </AccordionSummary>\n <AccordionDetails className={styles.mainContent}>\n <form className={styles.searchForm} onSubmit={handle}>\n <div className={styles.inputItems}>{children}</div>\n <FlexButtons position=\"flex-end\">\n <Button\n onClick={handleClear}\n variant=\"outlined\"\n color=\"primary\"\n className={styles.clearButton}\n >\n クリア\n </Button>\n <Button\n type=\"submit\"\n variant=\"contained\"\n startIcon={<Search />}\n color=\"primary\"\n className={styles.submitButton}\n >\n 検索\n </Button>\n </FlexButtons>\n </form>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default SearchForm;\n"],"names":["SearchForm","headerTitle","children","defaultExpanded","handleSubmit","onSubmitSearch","onClickClear","handleClear","handle","data","jsxs","Accordion","styles","jsx","AccordionSummary","ExpandMore","AccordionDetails","FlexButtons","Button","Search"],"mappings":"oiBAsBaA,EAAa,CAAsC,CAC9D,YAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,aAAAC,EACA,eAAAC,EACA,aAAAC,CACF,IAAgB,CACd,MAAMC,EAAc,IAAM,CACpBD,GACFA,EAAA,CAEJ,EAEME,EAASJ,EAAcK,GAAS,CACpCJ,EAAeI,CAAI,CACrB,CAAC,EAED,OACEC,EAAAA,KAACC,EAAAA,UAAA,CAAU,gBAAAR,EAAkC,UAAWS,EAAO,UAC7D,SAAA,CAAAC,EAAAA,IAACC,EAAAA,iBAAA,CACC,UAAWF,EAAO,OAClB,gBAAc,gBACd,iBAAaG,EAAAA,WAAA,EAAW,EAEvB,SAAAd,GAAe,MAAA,CAAA,EAElBY,EAAAA,IAACG,EAAAA,iBAAA,CAAiB,UAAWJ,EAAO,YAClC,SAAAF,EAAAA,KAAC,OAAA,CAAK,UAAWE,EAAO,WAAY,SAAUJ,EAC5C,SAAA,CAAAK,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAO,WAAa,SAAAV,EAAS,EAC7CQ,EAAAA,KAACO,EAAAA,YAAA,CAAY,SAAS,WACpB,SAAA,CAAAJ,EAAAA,IAACK,EAAAA,OAAA,CACC,QAASX,EACT,QAAQ,WACR,MAAM,UACN,UAAWK,EAAO,YACnB,SAAA,KAAA,CAAA,EAGDC,EAAAA,IAACK,EAAAA,OAAA,CACC,KAAK,SACL,QAAQ,YACR,gBAAYC,EAAAA,OAAA,EAAO,EACnB,MAAM,UACN,UAAWP,EAAO,aACnB,SAAA,IAAA,CAAA,CAED,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EACF,CAEJ"}
|
|
@@ -1,66 +1,60 @@
|
|
|
1
|
-
import { jsxs as o, jsx as
|
|
2
|
-
import { ExpandMore as
|
|
3
|
-
import { Accordion as
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { jsxs as o, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { ExpandMore as _, Search as h } from "@mui/icons-material";
|
|
3
|
+
import { Accordion as p, AccordionSummary as v, AccordionDetails as B } from "@mui/material";
|
|
4
|
+
import { Button as r } from "../Button/index.es.js";
|
|
5
|
+
import { FlexButtons as f } from "../FlexButtons/index.es.js";
|
|
6
|
+
import '../../assets/index6.css';const j = "_container_vj5gz_1", g = "_header_vj5gz_6", x = "_mainContent_vj5gz_19", z = "_searchForm_vj5gz_27", N = "_inputItems_vj5gz_33", b = "_clearButton_vj5gz_39", F = "_submitButton_vj5gz_47", n = {
|
|
7
|
+
container: j,
|
|
8
|
+
header: g,
|
|
9
|
+
mainContent: x,
|
|
10
|
+
searchForm: z,
|
|
11
|
+
inputItems: N,
|
|
12
|
+
clearButton: b,
|
|
13
|
+
submitButton: F
|
|
14
|
+
}, D = ({
|
|
12
15
|
headerTitle: a,
|
|
13
16
|
children: c,
|
|
14
17
|
defaultExpanded: s,
|
|
15
18
|
handleSubmit: i,
|
|
16
19
|
onSubmitSearch: m,
|
|
17
|
-
onClickClear:
|
|
20
|
+
onClickClear: e
|
|
18
21
|
}) => {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
},
|
|
22
|
-
m(
|
|
22
|
+
const l = () => {
|
|
23
|
+
e && e();
|
|
24
|
+
}, u = i((d) => {
|
|
25
|
+
m(d);
|
|
23
26
|
});
|
|
24
|
-
return /* @__PURE__ */ o(
|
|
25
|
-
/* @__PURE__ */
|
|
26
|
-
|
|
27
|
+
return /* @__PURE__ */ o(p, { defaultExpanded: s, className: n.container, children: [
|
|
28
|
+
/* @__PURE__ */ t(
|
|
29
|
+
v,
|
|
27
30
|
{
|
|
28
|
-
className:
|
|
31
|
+
className: n.header,
|
|
29
32
|
"aria-controls": "panel-content",
|
|
30
|
-
expandIcon: /* @__PURE__ */
|
|
33
|
+
expandIcon: /* @__PURE__ */ t(_, {}),
|
|
31
34
|
children: a || "絞り込み"
|
|
32
35
|
}
|
|
33
36
|
),
|
|
34
|
-
/* @__PURE__ */
|
|
35
|
-
/* @__PURE__ */
|
|
36
|
-
/* @__PURE__ */ o(
|
|
37
|
-
/* @__PURE__ */
|
|
37
|
+
/* @__PURE__ */ t(B, { className: n.mainContent, children: /* @__PURE__ */ o("form", { className: n.searchForm, onSubmit: u, children: [
|
|
38
|
+
/* @__PURE__ */ t("div", { className: n.inputItems, children: c }),
|
|
39
|
+
/* @__PURE__ */ o(f, { position: "flex-end", children: [
|
|
40
|
+
/* @__PURE__ */ t(
|
|
38
41
|
r,
|
|
39
42
|
{
|
|
40
|
-
onClick:
|
|
43
|
+
onClick: l,
|
|
41
44
|
variant: "outlined",
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
background: "white",
|
|
45
|
-
color: "#6672e8",
|
|
46
|
-
borderBlockColor: "#6672e8",
|
|
47
|
-
width: "128px"
|
|
48
|
-
},
|
|
45
|
+
color: "primary",
|
|
46
|
+
className: n.clearButton,
|
|
49
47
|
children: "クリア"
|
|
50
48
|
}
|
|
51
49
|
),
|
|
52
|
-
/* @__PURE__ */
|
|
50
|
+
/* @__PURE__ */ t(
|
|
53
51
|
r,
|
|
54
52
|
{
|
|
55
53
|
type: "submit",
|
|
56
54
|
variant: "contained",
|
|
57
|
-
startIcon: /* @__PURE__ */
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
color: "white",
|
|
61
|
-
":hover": { background: "#6672e8" },
|
|
62
|
-
width: "128px"
|
|
63
|
-
},
|
|
55
|
+
startIcon: /* @__PURE__ */ t(h, {}),
|
|
56
|
+
color: "primary",
|
|
57
|
+
className: n.submitButton,
|
|
64
58
|
children: "検索"
|
|
65
59
|
}
|
|
66
60
|
)
|
|
@@ -69,7 +63,7 @@ import '../../assets/index6.css';const F = "_container_89suu_1", I = "_header_89
|
|
|
69
63
|
] });
|
|
70
64
|
};
|
|
71
65
|
export {
|
|
72
|
-
|
|
73
|
-
|
|
66
|
+
D as SearchForm,
|
|
67
|
+
D as default
|
|
74
68
|
};
|
|
75
69
|
//# sourceMappingURL=index.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../src/components/SearchForm/index.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { ExpandMore, Search } from \"@mui/icons-material\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../src/components/SearchForm/index.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { ExpandMore, Search } from \"@mui/icons-material\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n} from \"@mui/material\";\nimport { type FieldValues, type useForm } from \"react-hook-form\";\n\nimport Button from \"../Button\";\nimport { FlexButtons } from \"../FlexButtons\";\nimport styles from \"./index.module.scss\";\n\ntype Props<T extends FieldValues = FieldValues> = {\n headerTitle?: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n handleSubmit: ReturnType<typeof useForm<T>>[\"handleSubmit\"];\n onSubmitSearch: (data: T) => void;\n onClickClear?: () => void;\n};\n\nexport const SearchForm = <T extends FieldValues = FieldValues>({\n headerTitle,\n children,\n defaultExpanded,\n handleSubmit,\n onSubmitSearch,\n onClickClear,\n}: Props<T>) => {\n const handleClear = () => {\n if (onClickClear) {\n onClickClear();\n }\n };\n\n const handle = handleSubmit((data) => {\n onSubmitSearch(data);\n });\n\n return (\n <Accordion defaultExpanded={defaultExpanded} className={styles.container}>\n <AccordionSummary\n className={styles.header}\n aria-controls=\"panel-content\"\n expandIcon={<ExpandMore />}\n >\n {headerTitle || \"絞り込み\"}\n </AccordionSummary>\n <AccordionDetails className={styles.mainContent}>\n <form className={styles.searchForm} onSubmit={handle}>\n <div className={styles.inputItems}>{children}</div>\n <FlexButtons position=\"flex-end\">\n <Button\n onClick={handleClear}\n variant=\"outlined\"\n color=\"primary\"\n className={styles.clearButton}\n >\n クリア\n </Button>\n <Button\n type=\"submit\"\n variant=\"contained\"\n startIcon={<Search />}\n color=\"primary\"\n className={styles.submitButton}\n >\n 検索\n </Button>\n </FlexButtons>\n </form>\n </AccordionDetails>\n </Accordion>\n );\n};\n\nexport default SearchForm;\n"],"names":["SearchForm","headerTitle","children","defaultExpanded","handleSubmit","onSubmitSearch","onClickClear","handleClear","handle","data","jsxs","Accordion","styles","jsx","AccordionSummary","ExpandMore","AccordionDetails","FlexButtons","Button","Search"],"mappings":";;;;;;;;;;;;;GAsBaA,IAAa,CAAsC;AAAA,EAC9D,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AACF,MAAgB;AACd,QAAMC,IAAc,MAAM;AACxB,IAAID,KACFA,EAAA;AAAA,EAEJ,GAEME,IAASJ,EAAa,CAACK,MAAS;AACpC,IAAAJ,EAAeI,CAAI;AAAA,EACrB,CAAC;AAED,SACE,gBAAAC,EAACC,GAAA,EAAU,iBAAAR,GAAkC,WAAWS,EAAO,WAC7D,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAWF,EAAO;AAAA,QAClB,iBAAc;AAAA,QACd,8BAAaG,GAAA,EAAW;AAAA,QAEvB,UAAAd,KAAe;AAAA,MAAA;AAAA,IAAA;AAAA,IAElB,gBAAAY,EAACG,GAAA,EAAiB,WAAWJ,EAAO,aAClC,UAAA,gBAAAF,EAAC,QAAA,EAAK,WAAWE,EAAO,YAAY,UAAUJ,GAC5C,UAAA;AAAA,MAAA,gBAAAK,EAAC,OAAA,EAAI,WAAWD,EAAO,YAAa,UAAAV,GAAS;AAAA,MAC7C,gBAAAQ,EAACO,GAAA,EAAY,UAAS,YACpB,UAAA;AAAA,QAAA,gBAAAJ;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,SAASX;AAAA,YACT,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,WAAWK,EAAO;AAAA,YACnB,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,gBAAAC;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,6BAAYC,GAAA,EAAO;AAAA,YACnB,OAAM;AAAA,YACN,WAAWP,EAAO;AAAA,YACnB,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EAAA,CACF;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("classnames");const e=require("../../index-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("classnames");const e=require("../../index-DNu4-rkL.cjs");exports.SelectBox=e.SelectBox;exports.default=e.SelectBox;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const n=require("react/jsx-runtime"),e=require("../../react.esm-DGuy6Rn3.cjs"),o=require("../../index-
|
|
1
|
+
"use strict";const n=require("react/jsx-runtime"),e=require("../../react.esm-DGuy6Rn3.cjs"),o=require("../../index-DNu4-rkL.cjs");describe("SelectBox component",()=>{const r=[{label:"Option 1",value:"option1"},{label:"Option 2",value:"option2"}],c="test-selectbox",l="test-name";it("renders the select box with correct options",()=>{e.render(n.jsx(o.SelectBox,{id:c,name:l,values:r}));const t=e.screen.getByRole("combobox");expect(t).toHaveAttribute("id",c),expect(t).toHaveAttribute("name",l),r.forEach(({label:s,value:a})=>{const x=e.screen.getByText(s);expect(x).toBeInTheDocument(),expect(x).toHaveAttribute("value",a)})}),it("shows error message when provided",()=>{const t="Error message";e.render(n.jsx(o.SelectBox,{values:r,errorMessage:t}));const s=e.screen.getByText(t);expect(s).toBeInTheDocument()}),it("does not show error message when not provided",()=>{e.render(n.jsx(o.SelectBox,{values:r}));const t=e.screen.queryByText(/Error message/i);expect(t).not.toBeInTheDocument()}),it("applies the error class to select box when errorMessage is provided",()=>{e.render(n.jsx(o.SelectBox,{values:r,errorMessage:"Error message"}));const s=e.screen.getByRole("combobox");expect(s).toHaveClass(o.styles.error)}),it("does not apply the error class to select box when errorMessage is not provided",()=>{e.render(n.jsx(o.SelectBox,{values:r}));const t=e.screen.getByRole("combobox");expect(t).not.toHaveClass(o.styles.error)})});
|
|
2
2
|
//# sourceMappingURL=index.test.cjs.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as s } from "react/jsx-runtime";
|
|
2
2
|
import { r as n, s as t } from "../../react.esm-BBESb8eI.js";
|
|
3
|
-
import { s as p, S as c } from "../../index-
|
|
3
|
+
import { s as p, S as c } from "../../index-omG0Vz2u.js";
|
|
4
4
|
describe("SelectBox component", () => {
|
|
5
5
|
const o = [
|
|
6
6
|
{ label: "Option 1", value: "option1" },
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('../../assets/index5.css');const l=require("react/jsx-runtime"),f=require("@mui/icons-material"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('../../assets/index5.css');const l=require("react/jsx-runtime"),f=require("@mui/icons-material"),o=require("@mui/material"),A=require("react-hook-form"),B="_placeholder_egyvt_6",_={placeholder:B},x=g=>{const{control:v,name:y,options:a,defaultValue:j,isMulti:t,placeholder:b,emptyValue:i=t?[]:"",onChange:s,onClear:u,inputProps:M}=g,c=r=>Array.isArray(r)&&r.length||!t&&r;return l.jsx(o.Box,{display:"grid",children:l.jsx(A.Controller,{control:v,name:y,defaultValue:j,render:({field:r,fieldState:p})=>{var d;return l.jsxs(o.FormControl,{error:p.invalid,children:[l.jsx(o.Select,{...r,onChange:(e,n)=>{!t&&e.target.value===""?r.onChange(void 0):r.onChange(e),s==null||s(e,n)},multiple:t,size:"small",value:r.value??i,displayEmpty:!0,inputProps:{...M},renderValue:()=>{var n;const e=r.value;if(t&&Array.isArray(e)){if(e.length)return e.map(C=>{var h;return(h=a.find(S=>S.value===C))==null?void 0:h.label}).join(", ")}else if(e&&(typeof e=="string"||typeof e=="number"))return(n=a.find(m=>m.value===e))==null?void 0:n.label;return l.jsx("span",{className:_.placeholder,children:b})},endAdornment:l.jsx(o.IconButton,{sx:{visibility:c(r.value)?"visible":"hidden"},onClick:e=>{r.onChange(t?[]:i===""?void 0:i),u==null||u(e)},children:l.jsx(f.Clear,{})}),sx:{"& .MuiSelect-iconOutlined":{display:c(r.value)?"none":""},"&.Mui-focused .MuiIconButton-root":{color:"var(--jigowatts-color-primary, #6672e8)"},"& .MuiSelect-select ":{whiteSpace:"break-spaces !important",paddingRight:"4px !important",fontSize:{xs:"1rem",sm:"0.875rem"},paddingLeft:"9.5px"},paddingRight:"4px !important"},children:a.map(e=>l.jsxs(o.MenuItem,{value:e.value,children:[" ",e.label," "]},e.value))}),l.jsx(o.FormHelperText,{children:(d=p.error)==null?void 0:d.message})]})}})})};exports.SelectBoxController=x;exports.default=x;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.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
|
|
1
|
+
{"version":3,"file":"index.cjs.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: \"var(--jigowatts-color-primary, #6672e8)\",\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":"qRA2CaA,EAA8CC,GAAoB,CAC7E,KAAM,CACJ,QAAAC,EACA,KAAAC,EACA,QAAAC,EACA,aAAAC,EACA,QAAAC,EACA,YAAAC,EACA,WAAAC,EAAaF,EAAU,CAAA,EAAK,GAC5B,SAAAG,EACA,QAAAC,EACA,WAAAC,CAAA,EACEV,EAEEW,EACJC,GAEQ,MAAM,QAAQA,CAAK,GAAKA,EAAM,QAAY,CAACP,GAAWO,EAGhE,OACEC,EAAAA,IAACC,EAAAA,IAAA,CAAI,QAAS,OACZ,SAAAD,EAAAA,IAACE,EAAAA,WAAA,CACC,QAAAd,EACA,KAAAC,EACA,aAAAE,EACA,OAAQ,CAAC,CAAE,MAAAY,EAAO,WAAAC,YAChBC,OAAAA,EAAAA,KAACC,EAAAA,YAAA,CAAY,MAAOF,EAAW,QAC7B,SAAA,CAAAJ,EAAAA,IAACO,EAAAA,OAAA,CACE,GAAGJ,EACJ,SAAU,CAACK,EAAOC,IAAU,CACtB,CAACjB,GAAWgB,EAAM,OAAO,QAAU,GACrCL,EAAM,SAAS,MAAS,EAExBA,EAAM,SAASK,CAAK,EAEtBb,GAAA,MAAAA,EAAWa,EAAOC,EACpB,EACA,SAAUjB,EACV,KAAK,QACL,MAAOW,EAAM,OAAST,EACtB,aAAY,GACZ,WAAY,CAAE,GAAGG,CAAA,EACjB,YAAa,IAAM,OACjB,MAAME,EAAQI,EAAM,MACpB,GAAIX,GAAW,MAAM,QAAQO,CAAK,GAChC,GAAIA,EAAM,OAKR,OAJeA,EAAM,IAClBW,UACC,OAAAC,EAAArB,EAAQ,KAAMsB,GAAWA,EAAO,QAAUF,CAAG,IAA7C,YAAAC,EAAgD,MAAA,EAEtC,KAAK,IAAI,UAGzBZ,IACC,OAAOA,GAAU,UAAY,OAAOA,GAAU,UAE/C,OAAOY,EAAArB,EAAQ,KAAMsB,GAAWA,EAAO,QAAUb,CAAK,IAA/C,YAAAY,EACH,MAEN,OACEX,EAAAA,IAAC,OAAA,CAAK,UAAWa,EAAO,YAAc,SAAApB,EAAY,CAEtD,EACA,aACEO,EAAAA,IAACc,EAAAA,WAAA,CACC,GAAI,CACF,WAAYhB,EAAWK,EAAM,KAAK,EAAI,UAAY,QAAA,EAEpD,QAAUK,GAAU,CAClBL,EAAM,SACJX,EAAU,CAAA,EAAKE,IAAe,GAAK,OAAYA,CAAA,EAEjDE,GAAA,MAAAA,EAAUY,EACZ,EAEA,eAACO,EAAAA,MAAA,CAAA,CAAM,CAAA,CAAA,EAGX,GAAI,CACF,4BAA6B,CAC3B,QAASjB,EAAWK,EAAM,KAAK,EAAI,OAAS,EAAA,EAE9C,oCAAqC,CACnC,MAAO,yCAAA,EAET,uBAAwB,CACtB,WAAY,0BACZ,aAAc,iBACd,SAAU,CACR,GAAI,OACJ,GAAI,UAAA,EAEN,YAAa,OAAA,EAEf,aAAc,gBAAA,EAGf,SAAAb,EAAQ,IAAK0B,UACXC,EAAAA,SAAA,CAAS,MAAOD,EAAE,MAChB,SAAA,CAAA,IACAA,EAAE,MAAO,GAAA,CAAA,EAFmBA,EAAE,KAGjC,CACD,CAAA,CAAA,EAEHhB,EAAAA,IAACkB,EAAAA,eAAA,CAAgB,UAAAP,EAAAP,EAAW,QAAX,YAAAO,EAAkB,OAAA,CAAQ,CAAA,CAAA,CAC7C,EAAA,CAAA,EAGN,CAEJ"}
|