quicksnack 3.25.2 → 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;
@@ -7,6 +7,7 @@ export interface ButtonProps extends React.ButtonHTMLAttributes<any> {
7
7
  hasChildren?: boolean;
8
8
  actionButton?: boolean;
9
9
  stretch?: boolean;
10
+ inline?: boolean;
10
11
  }
11
12
  export declare const Button: React.FC<React.PropsWithChildren<ButtonProps>>;
12
13
  export {};
@@ -59,7 +59,7 @@ var theme_1 = require("../../theme");
59
59
  var responsiveProps_1 = require("../../responsiveness/responsiveProps");
60
60
  var Wrapper = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n ", "\n ", " \n"], ["\n ", "\n ", " \n"])), function (props) { return props.stretch && "width: 100%;"; }, function (props) { return props.actionButton || props.stretch
61
61
  ? (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["margin: 0;"], ["margin: 0;"]))) : (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["margin: ", ";"], ["margin: ", ";"])), function (props) { return props.theme.spacing(0, 2, 0, 0); }); });
62
- var StyledButton = styled_components_1.default.button(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n font-size: 14px;\n font-weight: bold;\n letter-spacing: 1px; \n line-height: 1em; \n outline: 0;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n text-decoration: none;\n font-family: \"Open Sans\", Lato, \"Helvetica Neue\", Arial, Helvetica, sans-serif; \n transition: background-color .1s ease, color .1s ease; \n display: flex;\n flex-direction: row;\n align-items: center;\n user-select: none;\n min-height: 38px; \n \n ", "\n \n ", "\n \n \n ", " \n \n &:disabled {\n opacity: .5;\n cursor: default;\n } \n \n &:focus {\n background-blend-mode: darken;\n } \n \n ", "\n \n ", " \n"], ["\n font-size: 14px;\n font-weight: bold;\n letter-spacing: 1px; \n line-height: 1em; \n outline: 0;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n text-decoration: none;\n font-family: \"Open Sans\", Lato, \"Helvetica Neue\", Arial, Helvetica, sans-serif; \n transition: background-color .1s ease, color .1s ease; \n display: flex;\n flex-direction: row;\n align-items: center;\n user-select: none;\n min-height: 38px; \n \n ", "\n \n ", "\n \n \n ", " \n \n &:disabled {\n opacity: .5;\n cursor: default;\n } \n \n &:focus {\n background-blend-mode: darken;\n } \n \n ", "\n \n ", " \n"])), function (props) { return props.stretch && (0, styled_components_1.css)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n width: 100%;\n display: block;\n "], ["\n width: 100%;\n display: block;\n "]))); }, function (props) { return props.actionButton && (0, styled_components_1.css)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n width: 100%; \n ", "\n "], ["\n width: 100%; \n ", "\n "])), (0, responsiveProps_1.mq)('laptop', "width: auto")); }, function (props) { return props.variant !== 'text'
62
+ var StyledButton = styled_components_1.default.button(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n font-size: 14px;\n font-weight: bold;\n letter-spacing: 1px; \n line-height: 1em; \n outline: 0;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n text-decoration: none;\n font-family: \"Open Sans\", Lato, \"Helvetica Neue\", Arial, Helvetica, sans-serif; \n transition: background-color .1s ease, color .1s ease; \n display: flex;\n flex-direction: row;\n align-items: center;\n user-select: none;\n min-height: ", "; \n \n ", "\n \n ", "\n \n \n ", " \n \n &:disabled {\n opacity: .5;\n cursor: default;\n } \n \n &:focus {\n background-blend-mode: darken;\n } \n \n ", "\n \n ", " \n"], ["\n font-size: 14px;\n font-weight: bold;\n letter-spacing: 1px; \n line-height: 1em; \n outline: 0;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n text-decoration: none;\n font-family: \"Open Sans\", Lato, \"Helvetica Neue\", Arial, Helvetica, sans-serif; \n transition: background-color .1s ease, color .1s ease; \n display: flex;\n flex-direction: row;\n align-items: center;\n user-select: none;\n min-height: ", "; \n \n ", "\n \n ", "\n \n \n ", " \n \n &:disabled {\n opacity: .5;\n cursor: default;\n } \n \n &:focus {\n background-blend-mode: darken;\n } \n \n ", "\n \n ", " \n"])), function (props) { return props.inline ? 'auto' : '38px'; }, function (props) { return props.stretch && (0, styled_components_1.css)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n width: 100%;\n display: block;\n "], ["\n width: 100%;\n display: block;\n "]))); }, function (props) { return props.actionButton && (0, styled_components_1.css)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n width: 100%; \n ", "\n "], ["\n width: 100%; \n ", "\n "])), (0, responsiveProps_1.mq)('laptop', "width: auto")); }, function (props) { return props.variant !== 'text'
63
63
  ? !props.icon
64
64
  ? (0, styled_components_1.css)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["padding: ", "; min-width: ", ";"], ["padding: ", "; min-width: ", ";"])), props.theme.spacing(3, 5), function (props) { return props.theme.spacing(10); }) : props.hasChildren && (0, styled_components_1.css)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["position: relative; padding: ", ";"], ["position: relative; padding: ", ";"])), props.theme.spacing(3, 5, 3, 13))
65
65
  : (0, styled_components_1.css)(templateObject_8 || (templateObject_8 = __makeTemplateObject(["font-weight: 700; padding: 0;"], ["font-weight: 700; padding: 0;"]))); }, function (props) {
@@ -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.25.2",
4
+ "version": "3.27.0",
5
5
  "private": false,
6
6
  "files": [
7
7
  "dist/**"