UNPKG

react-formian

Version:

A React framework for easily creating and handling controlled forms

470 lines (453 loc) 20 kB
.formian-form { box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } .formian-form * { box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } .formian-form section { display: flex; flex-basis: 100%; flex-flow: row wrap; } .formian-form div, .formian-form section { position: relative; outline: none; } .formian-form .input-container.range input { -webkit-appearance: none; width: 100%; background: transparent; } .formian-form .input-container.range input::-webkit-slider-thumb { -webkit-appearance: none; } .formian-form .input-container.range input::-ms-track { width: 100%; cursor: pointer; /* Hides the slider so custom styles can be added */ background: transparent; border-color: transparent; color: transparent; } .formian-form .input-container.range input { background-color: #555555; border: 0px; height: 10px; border-radius: 90px; margin: 15px 0; } .formian-form .input-container.range input:focus::-webkit-slider-thumb { background: #31708f; border-color: #31708f; } .formian-form .input-container.range input::-webkit-slider-thumb { -webkit-appearance: none; height: 30px; background: #ffffff; border: 2px solid #555555; border-radius: 2px; width: 20px; cursor: pointer; } .formian-form .input-container.range input::-webkit-slider-thumb:hover, .formian-form .input-container.range input::-webkit-slider-thumb:focus { background: #31708f; border-color: #31708f; } .formian-form .input-container.select select { background-color: #ffffff; } .formian-form .input-container.select .select-custom .custom-icon { position: absolute; pointer-events: none; right: 5px; bottom: 9px; font-size: 1.5em; color: #555555; } .formian-form .input-container.select select:focus ~ .select-custom .custom-icon, .formian-form .input-container.select select:hover ~ .select-custom .custom-icon { color: #31708f; } .formian-form .input-container.checkbox, .formian-form .input-container.radio, .formian-form .input-container.onoff { /* Hover and focus states */ /* Checked state */ /* Hover and focus states whilst checked */ } .formian-form .input-container.checkbox label, .formian-form .input-container.radio label, .formian-form .input-container.onoff label { cursor: pointer; display: flex; align-items: center; line-height: 15px; vertical-align: middle; margin-left: 0; } .formian-form .input-container.checkbox input, .formian-form .input-container.radio input, .formian-form .input-container.onoff input { opacity: 0; height: 12px; width: 25px; z-index: 2; position: absolute; } .formian-form .input-container.checkbox .radio-text, .formian-form .input-container.checkbox .off-text, .formian-form .input-container.checkbox .on-text, .formian-form .input-container.radio .radio-text, .formian-form .input-container.radio .off-text, .formian-form .input-container.radio .on-text, .formian-form .input-container.onoff .radio-text, .formian-form .input-container.onoff .off-text, .formian-form .input-container.onoff .on-text { font-size: 20px; font-weight: normal; } .formian-form .input-container.checkbox .onoff-text, .formian-form .input-container.checkbox .checkbox-text, .formian-form .input-container.radio .onoff-text, .formian-form .input-container.radio .checkbox-text, .formian-form .input-container.onoff .onoff-text, .formian-form .input-container.onoff .checkbox-text { font-size: 1em; font-weight: normal; } .formian-form .input-container.checkbox .checkbox-custom, .formian-form .input-container.checkbox .onoff-custom, .formian-form .input-container.checkbox .radio-custom, .formian-form .input-container.radio .checkbox-custom, .formian-form .input-container.radio .onoff-custom, .formian-form .input-container.radio .radio-custom, .formian-form .input-container.onoff .checkbox-custom, .formian-form .input-container.onoff .onoff-custom, .formian-form .input-container.onoff .radio-custom { cursor: pointer; margin: 0 5px 0 0; position: relative; border: 2px solid #555555; } .formian-form .input-container.checkbox input:focus ~ .checkbox-custom, .formian-form .input-container.checkbox input:hover ~ .checkbox-custom, .formian-form .input-container.checkbox input:focus ~ .onoff-custom, .formian-form .input-container.checkbox input:hover ~ .onoff-custom, .formian-form .input-container.checkbox input:focus ~ .radio-custom, .formian-form .input-container.checkbox input:hover ~ .radio-custom, .formian-form .input-container.radio input:focus ~ .checkbox-custom, .formian-form .input-container.radio input:hover ~ .checkbox-custom, .formian-form .input-container.radio input:focus ~ .onoff-custom, .formian-form .input-container.radio input:hover ~ .onoff-custom, .formian-form .input-container.radio input:focus ~ .radio-custom, .formian-form .input-container.radio input:hover ~ .radio-custom, .formian-form .input-container.onoff input:focus ~ .checkbox-custom, .formian-form .input-container.onoff input:hover ~ .checkbox-custom, .formian-form .input-container.onoff input:focus ~ .onoff-custom, .formian-form .input-container.onoff input:hover ~ .onoff-custom, .formian-form .input-container.onoff input:focus ~ .radio-custom, .formian-form .input-container.onoff input:hover ~ .radio-custom { border-color: #31708f; } .formian-form .input-container.checkbox input:focus ~ .checkbox-custom .custom-icon, .formian-form .input-container.checkbox input:hover ~ .checkbox-custom .custom-icon, .formian-form .input-container.checkbox input:focus ~ .onoff-custom .custom-icon, .formian-form .input-container.checkbox input:hover ~ .onoff-custom .custom-icon, .formian-form .input-container.checkbox input:focus ~ .radio-custom .custom-icon, .formian-form .input-container.checkbox input:hover ~ .radio-custom .custom-icon, .formian-form .input-container.radio input:focus ~ .checkbox-custom .custom-icon, .formian-form .input-container.radio input:hover ~ .checkbox-custom .custom-icon, .formian-form .input-container.radio input:focus ~ .onoff-custom .custom-icon, .formian-form .input-container.radio input:hover ~ .onoff-custom .custom-icon, .formian-form .input-container.radio input:focus ~ .radio-custom .custom-icon, .formian-form .input-container.radio input:hover ~ .radio-custom .custom-icon, .formian-form .input-container.onoff input:focus ~ .checkbox-custom .custom-icon, .formian-form .input-container.onoff input:hover ~ .checkbox-custom .custom-icon, .formian-form .input-container.onoff input:focus ~ .onoff-custom .custom-icon, .formian-form .input-container.onoff input:hover ~ .onoff-custom .custom-icon, .formian-form .input-container.onoff input:focus ~ .radio-custom .custom-icon, .formian-form .input-container.onoff input:hover ~ .radio-custom .custom-icon { border-color: #31708f; } .formian-form .input-container.checkbox input:checked ~ .checkbox-custom .custom-icon, .formian-form .input-container.checkbox input:checked ~ .checkbox-custom .fa, .formian-form .input-container.checkbox input:checked ~ .onoff-custom .custom-icon, .formian-form .input-container.checkbox input:checked ~ .onoff-custom .fa, .formian-form .input-container.checkbox input:checked ~ .readio-custom .custom-icon, .formian-form .input-container.checkbox input:checked ~ .readio-custom .fa, .formian-form .input-container.radio input:checked ~ .checkbox-custom .custom-icon, .formian-form .input-container.radio input:checked ~ .checkbox-custom .fa, .formian-form .input-container.radio input:checked ~ .onoff-custom .custom-icon, .formian-form .input-container.radio input:checked ~ .onoff-custom .fa, .formian-form .input-container.radio input:checked ~ .readio-custom .custom-icon, .formian-form .input-container.radio input:checked ~ .readio-custom .fa, .formian-form .input-container.onoff input:checked ~ .checkbox-custom .custom-icon, .formian-form .input-container.onoff input:checked ~ .checkbox-custom .fa, .formian-form .input-container.onoff input:checked ~ .onoff-custom .custom-icon, .formian-form .input-container.onoff input:checked ~ .onoff-custom .fa, .formian-form .input-container.onoff input:checked ~ .readio-custom .custom-icon, .formian-form .input-container.onoff input:checked ~ .readio-custom .fa { opacity: 1; } .formian-form .input-container.checkbox:hover input:not([disabled]):checked ~ .checkbox-custom, .formian-form .input-container.checkbox:hover input:not([disabled]):checked ~ .radio-custom, .formian-form .input-container.checkbox:hover input:not([disabled]):checked ~ .onoff-custom, .formian-form .input-container.checkbox input:checked:focus ~ .checkbox-custom, .formian-form .input-container.checkbox input:checked:focus ~ .radio-custom, .formian-form .input-container.checkbox input:checked:focus ~ .onoff-custom, .formian-form .input-container.radio:hover input:not([disabled]):checked ~ .checkbox-custom, .formian-form .input-container.radio:hover input:not([disabled]):checked ~ .radio-custom, .formian-form .input-container.radio:hover input:not([disabled]):checked ~ .onoff-custom, .formian-form .input-container.radio input:checked:focus ~ .checkbox-custom, .formian-form .input-container.radio input:checked:focus ~ .radio-custom, .formian-form .input-container.radio input:checked:focus ~ .onoff-custom, .formian-form .input-container.onoff:hover input:not([disabled]):checked ~ .checkbox-custom, .formian-form .input-container.onoff:hover input:not([disabled]):checked ~ .radio-custom, .formian-form .input-container.onoff:hover input:not([disabled]):checked ~ .onoff-custom, .formian-form .input-container.onoff input:checked:focus ~ .checkbox-custom, .formian-form .input-container.onoff input:checked:focus ~ .radio-custom, .formian-form .input-container.onoff input:checked:focus ~ .onoff-custom { border-color: #31708f; } .formian-form .input-container.checkbox { margin: 5px 0 10px 0; } .formian-form .input-container.checkbox label { width: fit-content; } .formian-form .input-container.checkbox .checkbox-custom { height: 25px; width: 25px; background-color: #ffffff; } .formian-form .input-container.checkbox .checkbox-custom .custom-icon, .formian-form .input-container.checkbox .checkbox-custom .fa { position: absolute; bottom: 5px; font-size: 30px; color: #31708f; opacity: 0; } .formian-form .input-container.checkbox .checkbox-custom:hover, .formian-form .input-container.checkbox .checkbox-custom:focus, .formian-form .input-container.checkbox .checkbox-custom:active { border-color: #31708f; } .formian-form .input-container.onoff { margin: 5px 0 10px 0; /* Checked state */ } .formian-form .input-container.onoff label { width: fit-content; } .formian-form .input-container.onoff .onoff-custom { display: block; width: 80px; height: 30px; background: transparent; border-radius: 100px; overflow: hidden; } .formian-form .input-container.onoff .onoff-custom .onoff-custom-wrapper { width: 150%; margin-left: -50%; transition: all 0.5s ease; } .formian-form .input-container.onoff .onoff-custom .onoff-custom-wrapper .on-text, .formian-form .input-container.onoff .onoff-custom .onoff-custom-wrapper .custom-icon, .formian-form .input-container.onoff .onoff-custom .onoff-custom-wrapper .off-text { display: inline-block; position: relative; background-color: transparent; } .formian-form .input-container.onoff .onoff-custom .onoff-custom-wrapper .on-text { color: transparent; width: 35%; text-align: left; } .formian-form .input-container.onoff .onoff-custom .onoff-custom-wrapper .custom-icon { top: 3px; left: 3px; width: 20px; height: 20px; background: transparent; border-radius: 90px; opacity: 1; box-shadow: 0 0 0 2px transparent; border: 2px solid #555555; } .formian-form .input-container.onoff .onoff-custom .onoff-custom-wrapper .off-text { color: #000000; width: 35%; text-align: right; } .formian-form .input-container.onoff input:checked ~ .onoff-custom { background: #31708f; } .formian-form .input-container.onoff input:checked ~ .onoff-custom .onoff-custom-wrapper { margin-left: 10%; } .formian-form .input-container.onoff input:checked ~ .onoff-custom .onoff-custom-wrapper .custom-icon { border-color: #31708f; background: #ffffff; box-shadow: 0 0 0 2px #ffffff; } .formian-form .input-container.onoff input:checked ~ .onoff-custom .onoff-custom-wrapper .on-text { color: #ffffff; } .formian-form .input-container.onoff input:checked ~ .onoff-custom .onoff-custom-wrapper .off-text { color: transparent; } .formian-form .input-container.radio { display: inline-block; width: auto; } .formian-form .input-container.radio .radio-custom { min-width: 80px; background: transparent; border: 2px solid #555555; display: block; border-radius: 100px; position: relative; padding: 0px 5px; } .formian-form .input-container.radio .radio-custom .custom-icon { position: absolute; top: calc(50% - 9px); left: 4px; width: 18px; height: 18px; box-shadow: 0 0 0 2px transparent; border: 2px solid #555555; background-color: transparent; border-radius: 90px; } .formian-form .input-container.radio .radio-custom .radio-text { color: #000000; background-color: transparent; padding: 5px 5px 5px 30px; } .formian-form .input-container.radio input:focus ~ .radio-custom { border-color: #31708f; } .formian-form .input-container.radio input:focus ~ .radio-custom .custom-icon { box-shadow: 0 0 0 2px #ffffff; background-color: #ffffff; border-color: #31708f; } .formian-form .input-container.radio input:checked ~ .radio-custom { background-color: #31708f; border-color: #31708f; } .formian-form .input-container.radio input:checked ~ .radio-custom .custom-icon { border-color: #31708f; box-shadow: 0 0 0 2px white; background-color: white; } .formian-form .input-container.radio input:checked ~ .radio-custom .radio-text { color: #ffffff; } .formian-form .input-container.submit input, .formian-form .input-container.reset input { color: #31708f; background-color: #ffffff; border: 2px solid #31708f; padding: 15px 0; } .formian-form .input-container.submit input:focus, .formian-form .input-container.submit input:hover, .formian-form .input-container.reset input:focus, .formian-form .input-container.reset input:hover { color: #ffffff; background-color: #31708f; } .formian-form .input-container.submit.disabled input, .formian-form .input-container.reset.disabled input { color: #ababab; cursor: help; background-color: #808080; border-color: #808080; } .formian-form .input-container.submit.disabled input:focus, .formian-form .input-container.submit.disabled input:hover, .formian-form .input-container.reset.disabled input:focus, .formian-form .input-container.reset.disabled input:hover { color: #ababab; background-color: #808080; border-color: #808080; } .formian-form .error { border-color: #a94442 !important; } .formian-form .error-message { display: none; position: absolute; bottom: -10%; width: fit-content; max-width: 150px; color: #ffffff; background-color: #a94442; border-radius: 5px; padding: 10px; } .formian-form .error-message.error { display: block; } .formian-form .error-message.left { text-align: right; right: 102%; } .formian-form .error-message.left::after { right: -10px; } .formian-form .error-message.right { text-align: left; left: 102%; } .formian-form .error-message.right::after { left: -10px; } .formian-form .error-message::after { content: "\25B6"; color: #a94442; position: absolute; top: calc(50% - 6px); } .formian-form .input-container.field { padding-left: 5px; } .formian-form .input-container.field input { cursor: initial; } .formian-form .input-container.number.no-wheel input::-webkit-outer-spin-button, .formian-form .input-container.number.no-wheel input::-webkit-inner-spin-button { /* display: none; <- Crashes Chrome on hover */ -webkit-appearance: none; margin: 0; /* <-- Apparently some margin are still there even though it's hidden */ } .formian-form .input-container.file { display: flex; } .formian-form .input-container.file input { position: absolute; height: 0; width: 0; left: -9999px; } .formian-form .input-container.file label { color: #555555; background-color: #ffffff; border: 2px solid #555555; height: 35px; margin: 5px 0; border-top-left-radius: 2px; border-bottom-left-radius: 2px; border-right: 0; padding: 0 10px; flex-grow: 0; display: flex; align-items: center; } .formian-form .input-container.file label:focus, .formian-form .input-container.file label:hover { color: #ffffff; background-color: #31708f; border-color: #31708f; } .formian-form .input-container.file input:focus ~ label { color: #ffffff; background-color: #31708f; border-color: #31708f; } .formian-form .input-container.file .file-name { flex-grow: 1; z-index: 2; border: 2px solid #555555; height: 35px; margin: 5px 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; background: #ffffff; padding: 0 0 0 5px; font-size: 1em; display: flex; align-items: center; } .formian-form .input-container.file input:focus ~ .file-name, .formian-form .input-container.file label:hover ~ .file-name, .formian-form .input-container.file label:active ~ .file-name { border-color: #31708f; } .formian-form .input-container.file .file-info { position: absolute; right: 10px; bottom: -7px; z-index: 3; font-size: 0.6em; } .formian-form { width: 100%; display: flex; font-size: inherit; flex-basis: 100%; flex-flow: column; } .formian-form label, .formian-form legend { display: block; margin: 0 0 0 5px; font-size: 1.1em; font-weight: bold; } .formian-form fieldset { border: none; padding: 0; margin: 0 5px; } .formian-form fieldset.fieldset-radio { border: 2px solid #555555; } .formian-form fieldset.fieldset-radio:focus-within { border-color: #31708f; } .formian-form .input-container.fieldset { width: 100%; display: flex; flex-basis: 100%; flex-flow: row; flex-wrap: wrap; } .formian-form .input-container { position: relative; width: 100%; min-height: 25px; margin: 5px 0; padding: 0 5px; } .formian-form .input-container input, .formian-form .input-container select, .formian-form .input-container textarea { outline: none; resize: none; cursor: pointer; border: 2px solid #555555; -webkit-appearance: none; -webkit-border-radius: 2px; border-radius: 2px; width: 100%; margin: 5px 0 10px; padding: 5px; font-size: 1em; } .formian-form .input-container input:focus, .formian-form .input-container input:hover, .formian-form .input-container select:focus, .formian-form .input-container select:hover, .formian-form .input-container textarea:focus, .formian-form .input-container textarea:hover { outline: none; border-color: #31708f; } /*# sourceMappingURL=style.css.map*/