quicksnack 3.26.0 → 3.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import { Button } from "../../form/Button/Button";
3
3
  interface Props {
4
4
  buttonProps: React.ComponentProps<typeof Button>;
5
+ stayOpenOnClick?: boolean;
5
6
  align?: 'left' | 'right';
6
7
  }
7
8
  export declare const DropdownMenu: import("styled-components").StyledComponent<"ul", import("styled-components").DefaultTheme, {}, never>;
@@ -48,10 +48,16 @@ var Dropper = styled_components_1.default.span(templateObject_4 || (templateObje
48
48
  exports.DropdownMenu = styled_components_1.default.ul(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n list-style: none;\n margin: 0;\n padding: ", "; \n"], ["\n list-style: none;\n margin: 0;\n padding: ", "; \n"])), function (props) { return props.theme.spacing(2, 0); });
49
49
  exports.DropdownMenuItem = styled_components_1.default.li(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n cursor: pointer;\n padding: ", ";\n &:hover {\n background-color: #ddd;\n }\n"], ["\n cursor: pointer;\n padding: ", ";\n &:hover {\n background-color: #ddd;\n }\n"])), function (props) { return props.theme.spacing(0, 3); });
50
50
  var Dropdown = function (_a) {
51
- var buttonProps = _a.buttonProps, align = _a.align, children = _a.children;
51
+ var buttonProps = _a.buttonProps, align = _a.align, children = _a.children, stayOpenOnClick = _a.stayOpenOnClick;
52
+ var dropper = (0, react_1.useRef)(null);
52
53
  var _b = (0, react_1.useState)(false), isOpen = _b[0], setIsOpen = _b[1];
53
54
  var handleOpen = (0, react_1.useCallback)(function () { return setIsOpen(true); }, [setIsOpen]);
54
- var handleClose = (0, react_1.useCallback)(function () { return setIsOpen(false); }, [setIsOpen]);
55
+ var handleClose = (0, react_1.useCallback)(function (e) {
56
+ var _a;
57
+ if (stayOpenOnClick && ((_a = dropper.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)))
58
+ return;
59
+ setIsOpen(false);
60
+ }, [setIsOpen, stayOpenOnClick]);
55
61
  react_1.default.useEffect(function () {
56
62
  if (isOpen) {
57
63
  setTimeout(function () { return document.addEventListener('click', handleClose); }, 1);
@@ -63,7 +69,7 @@ var Dropdown = function (_a) {
63
69
  return (react_1.default.createElement(Wrapper, null,
64
70
  react_1.default.createElement(Button_1.Button, __assign({}, buttonProps, { onClick: handleOpen })),
65
71
  isOpen && (react_1.default.createElement(SlideInFromTop_1.SlideInFromTop, { speed: '.1s' },
66
- react_1.default.createElement(Dropper, { align: align || 'left' }, children)))));
72
+ react_1.default.createElement(Dropper, { ref: dropper, align: align || 'left' }, children)))));
67
73
  };
68
74
  exports.Dropdown = Dropdown;
69
75
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -2,6 +2,7 @@ import React from "react";
2
2
  interface Props extends React.InputHTMLAttributes<any> {
3
3
  dimmed?: boolean;
4
4
  options: Record<string, string>;
5
+ spacing?: number;
5
6
  }
6
7
  export declare const Checkbox: React.FC<React.PropsWithChildren<Props>>;
7
8
  export {};
@@ -55,18 +55,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
55
55
  exports.Checkbox = void 0;
56
56
  var react_1 = __importDefault(require("react"));
57
57
  var styled_components_1 = __importStar(require("styled-components"));
58
- var Wrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n margin: 4px 0; \n"], ["\n margin: 4px 0; \n"])));
59
- var Label = styled_components_1.default.label(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n position: relative; \n"], ["\n position: relative; \n"])));
60
- var Input = styled_components_1.default.input(templateObject_3 || (templateObject_3 = __makeTemplateObject([" \n position: absolute;\n top: 0;\n left: 0;\n \n width: 17px;\n height: 17px; \n \n z-index: 99;\n opacity: 0; \n margin-right: ", ";\n transform: translateY(1px);\n \n &~span {\n user-select: none;\n padding-left: 1.85714em;\n cursor: pointer;\n font-size: .92857143em;\n }\n \n &~span:before, &~span:after {\n position: absolute;\n top: 0;\n left: 0;\n width: 17px;\n height: 17px;\n line-height: 17px;\n content: ''; \n border-radius: 4px;\n border: 1px solid rgba(34,36,38,.15);\n z-index:0;\n }\n \n &:checked~span {\n font-style: italic;\n }\n \n &:checked~span:before {\n background: #fff;\n border-color: rgba(34,36,38,.35); \n }\n \n &:checked~span:after { \n font-style: normal; \n text-align: center;\n content: '\\2714';\n opacity: 1;\n color: ", "\n } \n \n &:focus~span:before, &:focus~span:after {\n border-color: #85b7d9;\n border-radius: 4px;\n background: #fff;\n box-shadow: 0 0 0 0 rgba(34,36,38,.35) inset;\n } \n \n &.error~span {\n color: ", "; \n }\n \n &.error~span:before, &.error~span:after {\n background: #fff6f6;\n border-color: #e0b4b4;\n color: #9f3a38;\n } \n"], [" \n position: absolute;\n top: 0;\n left: 0;\n \n width: 17px;\n height: 17px; \n \n z-index: 99;\n opacity: 0; \n margin-right: ", ";\n transform: translateY(1px);\n \n &~span {\n user-select: none;\n padding-left: 1.85714em;\n cursor: pointer;\n font-size: .92857143em;\n }\n \n &~span:before, &~span:after {\n position: absolute;\n top: 0;\n left: 0;\n width: 17px;\n height: 17px;\n line-height: 17px;\n content: ''; \n border-radius: 4px;\n border: 1px solid rgba(34,36,38,.15);\n z-index:0;\n }\n \n &:checked~span {\n font-style: italic;\n }\n \n &:checked~span:before {\n background: #fff;\n border-color: rgba(34,36,38,.35); \n }\n \n &:checked~span:after { \n font-style: normal; \n text-align: center;\n content: '\\\\2714';\n opacity: 1;\n color: ", "\n } \n \n &:focus~span:before, &:focus~span:after {\n border-color: #85b7d9;\n border-radius: 4px;\n background: #fff;\n box-shadow: 0 0 0 0 rgba(34,36,38,.35) inset;\n } \n \n &.error~span {\n color: ", "; \n }\n \n &.error~span:before, &.error~span:after {\n background: #fff6f6;\n border-color: #e0b4b4;\n color: #9f3a38;\n } \n"])), function (props) { return props.theme.spacing(2); }, function (props) { return props.theme.palette.common.black; }, function (props) { return props.theme.palette.form.error; });
61
- var Span = styled_components_1.default.span(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (props) { return props.dimmed ? (0, styled_components_1.css)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["color: #999c9e;"], ["color: #999c9e;"]))) : ''; });
58
+ var Box_1 = require("../../components/Box/Box");
59
+ var Label = styled_components_1.default.label(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: relative; \n"], ["\n position: relative; \n"])));
60
+ var Input = styled_components_1.default.input(templateObject_2 || (templateObject_2 = __makeTemplateObject([" \n position: absolute;\n top: 0;\n left: 0;\n \n width: 17px;\n height: 17px; \n \n z-index: 99;\n opacity: 0; \n margin-right: ", ";\n transform: translateY(1px);\n \n &~span {\n user-select: none;\n padding-left: 1.85714em;\n cursor: pointer;\n font-size: .92857143em;\n }\n \n &~span:before, &~span:after {\n position: absolute;\n top: 0;\n left: 0;\n width: 17px;\n height: 17px;\n line-height: 17px;\n content: ''; \n border-radius: 4px;\n border: 1px solid rgba(34,36,38,.15);\n z-index:0;\n }\n \n &:checked~span {\n font-style: italic;\n }\n \n &:checked~span:before {\n background: #fff;\n border-color: rgba(34,36,38,.35); \n }\n \n &:checked~span:after { \n font-style: normal; \n text-align: center;\n content: '\\2714';\n opacity: 1;\n color: ", "\n } \n \n &:focus~span:before, &:focus~span:after {\n border-color: #85b7d9;\n border-radius: 4px;\n background: #fff;\n box-shadow: 0 0 0 0 rgba(34,36,38,.35) inset;\n } \n \n &.error~span {\n color: ", "; \n }\n \n &.error~span:before, &.error~span:after {\n background: #fff6f6;\n border-color: #e0b4b4;\n color: #9f3a38;\n } \n"], [" \n position: absolute;\n top: 0;\n left: 0;\n \n width: 17px;\n height: 17px; \n \n z-index: 99;\n opacity: 0; \n margin-right: ", ";\n transform: translateY(1px);\n \n &~span {\n user-select: none;\n padding-left: 1.85714em;\n cursor: pointer;\n font-size: .92857143em;\n }\n \n &~span:before, &~span:after {\n position: absolute;\n top: 0;\n left: 0;\n width: 17px;\n height: 17px;\n line-height: 17px;\n content: ''; \n border-radius: 4px;\n border: 1px solid rgba(34,36,38,.15);\n z-index:0;\n }\n \n &:checked~span {\n font-style: italic;\n }\n \n &:checked~span:before {\n background: #fff;\n border-color: rgba(34,36,38,.35); \n }\n \n &:checked~span:after { \n font-style: normal; \n text-align: center;\n content: '\\\\2714';\n opacity: 1;\n color: ", "\n } \n \n &:focus~span:before, &:focus~span:after {\n border-color: #85b7d9;\n border-radius: 4px;\n background: #fff;\n box-shadow: 0 0 0 0 rgba(34,36,38,.35) inset;\n } \n \n &.error~span {\n color: ", "; \n }\n \n &.error~span:before, &.error~span:after {\n background: #fff6f6;\n border-color: #e0b4b4;\n color: #9f3a38;\n } \n"])), function (props) { return props.theme.spacing(2); }, function (props) { return props.theme.palette.common.black; }, function (props) { return props.theme.palette.form.error; });
61
+ var Span = styled_components_1.default.span(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (props) { return props.dimmed ? (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["color: #999c9e;"], ["color: #999c9e;"]))) : ''; });
62
62
  exports.Checkbox = react_1.default.forwardRef(function (_a, ref) {
63
- var options = _a.options, name = _a.name, dimmed = _a.dimmed, restProps = __rest(_a, ["options", "name", "dimmed"]);
63
+ var options = _a.options, _b = _a.spacing, spacing = _b === void 0 ? 1 : _b, name = _a.name, dimmed = _a.dimmed, restProps = __rest(_a, ["options", "spacing", "name", "dimmed"]);
64
64
  return (react_1.default.createElement(react_1.default.Fragment, null, Object.entries(options).map(function (_a) {
65
65
  var value = _a[0], label = _a[1];
66
- return (react_1.default.createElement(Wrapper, { key: value },
66
+ return (react_1.default.createElement(Box_1.Box, { key: value, mt: spacing, mb: spacing },
67
67
  react_1.default.createElement(Label, { key: value },
68
68
  react_1.default.createElement(Input, __assign({ type: "checkbox", value: value, name: name, ref: ref }, restProps)),
69
69
  react_1.default.createElement(Span, { dimmed: dimmed }, label))));
70
70
  })));
71
71
  });
72
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
72
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "quicksnack",
3
3
  "description": "Quickly create beautiful admin layouts using react",
4
- "version": "3.26.0",
4
+ "version": "3.27.0",
5
5
  "private": false,
6
6
  "files": [
7
7
  "dist/**"