UNPKG

@redocly/theme

Version:

Shared UI components lib

101 lines (97 loc) 4.07 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Input = Input; const react_1 = __importStar(require("react")); const styled_components_1 = __importDefault(require("styled-components")); const lodash_debounce_1 = __importDefault(require("lodash.debounce")); const contexts_1 = require("../../../core/contexts"); const DEBOUNCE_TIME = 500; function Input(props) { const { id, label, placeholder } = props; const { getControlState, changeControlState } = (0, react_1.useContext)(contexts_1.CodeWalkthroughControlsStateContext); const inputState = getControlState(id); const [value, setValue] = (0, react_1.useState)((inputState === null || inputState === void 0 ? void 0 : inputState.value) || ''); // eslint-disable-next-line react-hooks/exhaustive-deps const debouncedSave = (0, react_1.useCallback)((0, lodash_debounce_1.default)((id, value) => { changeControlState(id, value); }, DEBOUNCE_TIME), []); if (!(inputState === null || inputState === void 0 ? void 0 : inputState.render)) { return null; } const handleChange = (event) => { const inputValue = event.target.value; setValue(inputValue); debouncedSave(id, inputValue); }; return (react_1.default.createElement(InputWrapper, { "data-component-name": "Markdoc/CodeWalkthrough/Input" }, label && react_1.default.createElement(Label, null, label), react_1.default.createElement(StyledInput, { id: id, value: value, onChange: handleChange, "aria-label": label, placeholder: placeholder }))); } const InputWrapper = styled_components_1.default.div ` display: flex; flex-direction: column; margin-top: var(--spacing-base); margin-bottom: var(--spacing-base); `; const Label = styled_components_1.default.p ` color: var(--text-color-secondary); font-size: var(--font-size-base); line-height: var(--line-height-base); font-family: var(--font-family-base); font-weight: var(--font-weight-medium); margin-bottom: var(--spacing-xxs) !important; `; const StyledInput = styled_components_1.default.input ` border: 1px solid var(--border-color-primary); width: 224px; outline: none; padding: var(--input-padding) var(--spacing-sm); border-radius: var(--input-border-radius); background-color: var(--input-bg-color); color: var(--text-color-secondary); font-family: var(--font-family-base); font-size: var(--font-size-base); line-height: var(--input-line-height); &::placeholder { opacity: 1; color: var(--input-content-placeholder-color); } &:hover { color: var(--text-color-primary); border: 1px solid var(--border-color-primary); } &:focus { color: var(--text-color-primary); border: 1px solid var(--border-color-primary); } &:-webkit-autofill { background-color: var(--input-bg-color); } `; //# sourceMappingURL=Input.js.map