1
0
mirror of http://git.whoc.org.uk/git/password-manager.git synced 2024-11-14 18:19:02 +01:00

Merge pull request #73 from gcsolaroli/master

Minor fixes to /delta first public release
This commit is contained in:
Giulio Cesare Solaroli 2015-07-29 17:59:30 +02:00
commit 6af8f80abe
16 changed files with 214 additions and 21696 deletions

View File

@ -690,12 +690,6 @@ input[type=text] {
flex: none;
cursor: pointer; }
/* Firefox considers 100% respect to height of the whole window, this is rule is necessary to eliminate the card toolbar offset. */
@-moz-document url-prefix() {
#mainPanel.extra-wide .subpanel.cardContent {
height: calc(100% - 50px); }
#mainPanel.wide .cardContent {
height: calc(100% - 50px); } }
#mainPanel {
left: 0px; }
#mainPanel.extra-wide {
@ -803,7 +797,7 @@ input[type=text] {
.mainPage.narrow #extraFeaturesPanel.fullOpen .extraFeatureIndex {
width: 0px; }
.mainPage.narrow #extraFeaturesPanel .extraFeatureContent .extraFeature {
height: calc(100% - 50px); }
height: calc(100% - $mainCardToolbarHeight); }
#extraFeaturesPanel {
position: fixed;
@ -1283,7 +1277,8 @@ div.dialogBox {
z-index: 10;
background-color: rgba(0, 0, 0, 0.5); }
div.dialogBox .mask {
z-index: 25; }
z-index: 25;
-webkit-transform: translate3d(0, 0, 0); }
div.dialogBox div.dialog {
-webkit-box-flex: none;
-webkit-flex: none;
@ -1318,6 +1313,17 @@ div.dialogBox {
flex: none;
cursor: pointer; }
/* Firefox considers 100% respect to height of the whole window, this is rule is necessary to eliminate the card toolbar offset. */
@-moz-document url-prefix() {
#mainPanel.extra-wide .subpanel.cardContent {
height: calc(100% - 48px); }
#mainPanel.wide .cardContent {
height: calc(100% - 48px); } }
@media screen and (-webkit-min-device-pixel-ratio: 0) {
#mainPanel.extra-wide .subpanel.cardContent {
height: calc(100% - 48px); }
#mainPanel.wide .cardContent {
height: calc(100% - 48px); } }
.tagEditor {
display: -webkit-box;
display: -webkit-flex;
@ -2861,7 +2867,8 @@ span.count {
background-color: red; }
div.cardList.loadingCard li.selected {
background-color: gray; }
background-color: gray;
border-bottom: 1px solid gray; }
div.cardList ul {
background-color: #1863a1; }
div.cardList ul li {
@ -2909,10 +2916,11 @@ div.cardList ul {
-ms-flex: auto;
flex: auto;
font-size: 14pt;
padding-top: 0.8em;
padding-bottom: 0.8em;
padding-left: 8px;
padding-right: 8px; }
padding-top: 16px;
padding-bottom: 14px;
padding-left: 16px;
padding-right: 8px;
line-height: 1.2em; }
div.cardList.narrow {
overflow: auto;
@ -3041,8 +3049,6 @@ div.cardList.narrow {
#cardDetailPage .view .cardDetailToolbar.narrow .commandMenu.show .commandMenu ul li.disabled, .cardDetail .view .cardDetailToolbar.narrow .commandMenu.show .commandMenu ul li.disabled {
color: #ddd; }
#cardDetailPage .view .cardField textarea.fieldValue, .cardDetail .view .cardField textarea.fieldValue {
line-height: 1em;
height: 1.3em;
outline: none; }
#cardDetailPage .edit .cardDetailToolbar, .cardDetail .edit .cardDetailToolbar {
background-color: #1863a1;

File diff suppressed because one or more lines are too long

View File

@ -581,7 +581,8 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
result = someFilteredResults[0];
break;
default:
WTF = TODO;
console.log("Warning: Record.fieldWithLabel('" + aLabel + "') is returning more than one result: " + someFilteredResults.length);
result = someFilteredResults[0];
break;
}

View File

@ -681,6 +681,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
], {trace:false});
},
*/
'recordWithLabel': function (aLabel) {
return Clipperz.Async.callbacks("User.recordWithLabel", [
MochiKit.Base.method(this, 'getRecords'),
@ -701,7 +702,8 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
result = someFilteredResults[0];
break;
default:
WTF = TODO;
console.log("Warning: User.recordWithLabel('" + aLabel + "') is returning more than one result: " + someFilteredResults.length);
result = someFilteredResults[0];
break;
}

View File

@ -61,10 +61,8 @@ Clipperz.PM.UI.Components.Cards.ListClass = React.createClass({
};
result = React.DOM.li({'className':Clipperz.PM.UI.Components.classNames(classes), 'onClick': this.handleClick, 'key':anItem['_reference'], 'data-reference':anItem['_reference'], 'data-label':anItem['label']}, [
// React.DOM.span({'className':'favicon'}, React.DOM.img({'onLoad':this.faviconEvent, 'onError':this.faviconEvent, 'onAbort':this.faviconEvent, 'src':anItem['favicon']})),
React.DOM.span({'className':'favicon'}, Clipperz.PM.UI.Components.Cards.FavIcon({'src':anItem['favicon']})),
// React.DOM.span({'className':'favicon'}, Clipperz.PM.UI.Components.Cards.FavIcon({'src':anItem['favicon']})),
React.DOM.span({'className':'label'}, anItem['label']),
// React.DOM.span({'className':'action'}, 'show detail')
]);
}

View File

@ -30,7 +30,8 @@ Clipperz.PM.UI.Components.Cards.TextAreaClass = React.createClass({
componentDidMount: function() {
this.recalculateSize();
this.getDOMNode().addEventListener('input', this.recalculateSize, false);
this.getDOMNode().addEventListener('input', this.handleKeyDown, false);
this.getDOMNode().addEventListener('keydown', this.handleKeyDown, false);
},
componentDidUpdate: function () {
@ -39,6 +40,7 @@ Clipperz.PM.UI.Components.Cards.TextAreaClass = React.createClass({
componentWillUnmount: function() {
this.getDOMNode().removeEventListener('input', this.recalculateSize, false);
this.getDOMNode().removeEventListener('keydown', this.handleKeyDown, false);
},
// componentDidUpdate: function(prevProps) {
@ -58,6 +60,15 @@ Clipperz.PM.UI.Components.Cards.TextAreaClass = React.createClass({
// }
// },
handleKeyDown: function (anEvent) {
switch (anEvent.keyCode) {
case 27: // escape
console.log("ESCAPE");
Mousetrap.trigger('esc');
break;
}
},
//----------------------------------------------------------------------------
recalculateSize: function () {
@ -103,10 +114,6 @@ Clipperz.PM.UI.Components.Cards.TextAreaClass = React.createClass({
*/
//----------------------------------------------------------------------------
// render: function () {
// return React.DOM.textarea({'className':'cardNotes', /*'onChange':this.handleChange(this.record(), 'setNotes'), 'defaultValue':someNotes, 'key':this.props['_reference'] + '_notes',*/ 'placeholder': "notes"});
// },
render: function() {
return React.DOM.textarea(this.props, this.props.children);
},

View File

@ -221,7 +221,8 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
'readOnly': true,
'onClick': function(e) { e.target.select(); },
'className':Clipperz.PM.UI.Components.classNames(cardFieldValueClasses),
'value': aField['value']
'value': aField['value'],
'rows': 1
}),
]),
React.DOM.div({'className':'fieldAction'}, [

View File

@ -1,5 +1,5 @@
/**
* React v0.13.1
* React v0.13.3
*/
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.React = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
/**
@ -112,7 +112,7 @@ if ("production" !== "development") {
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
console.debug(
'Download the React DevTools for a better development experience: ' +
'http://fb.me/react-devtools'
'https://fb.me/react-devtools'
);
}
}
@ -139,7 +139,7 @@ if ("production" !== "development") {
if (!expectedFeatures[i]) {
console.error(
'One or more ES5 shim/shams expected by React are not available: ' +
'http://fb.me/react-warning-polyfills'
'https://fb.me/react-warning-polyfills'
);
break;
}
@ -147,7 +147,7 @@ if ("production" !== "development") {
}
}
React.version = '0.13.1';
React.version = '0.13.3';
module.exports = React;
@ -696,7 +696,9 @@ var isUnitlessNumber = {
columnCount: true,
flex: true,
flexGrow: true,
flexPositive: true,
flexShrink: true,
flexNegative: true,
fontWeight: true,
lineClamp: true,
lineHeight: true,
@ -709,7 +711,9 @@ var isUnitlessNumber = {
// SVG-related properties
fillOpacity: true,
strokeOpacity: true
strokeDashoffset: true,
strokeOpacity: true,
strokeWidth: true
};
/**
@ -3774,6 +3778,7 @@ var HTMLDOMPropertyConfig = {
headers: null,
height: MUST_USE_ATTRIBUTE,
hidden: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
high: null,
href: null,
hrefLang: null,
htmlFor: null,
@ -3784,6 +3789,7 @@ var HTMLDOMPropertyConfig = {
lang: null,
list: MUST_USE_ATTRIBUTE,
loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
low: null,
manifest: MUST_USE_ATTRIBUTE,
marginHeight: null,
marginWidth: null,
@ -3798,6 +3804,7 @@ var HTMLDOMPropertyConfig = {
name: null,
noValidate: HAS_BOOLEAN_VALUE,
open: HAS_BOOLEAN_VALUE,
optimum: null,
pattern: null,
placeholder: null,
poster: null,
@ -3811,6 +3818,7 @@ var HTMLDOMPropertyConfig = {
rowSpan: null,
sandbox: null,
scope: null,
scoped: HAS_BOOLEAN_VALUE,
scrolling: null,
seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
@ -3852,7 +3860,9 @@ var HTMLDOMPropertyConfig = {
itemID: MUST_USE_ATTRIBUTE,
itemRef: MUST_USE_ATTRIBUTE,
// property is supported for OpenGraph in meta tags.
property: null
property: null,
// IE-only attribute that controls focus behavior
unselectable: MUST_USE_ATTRIBUTE
},
DOMAttributeNames: {
acceptCharset: 'accept-charset',
@ -5808,7 +5818,7 @@ var ReactClass = {
("production" !== "development" ? warning(
this instanceof Constructor,
'Something is calling a React component directly. Use a factory or ' +
'JSX instead. See: http://fb.me/react-legacyfactory'
'JSX instead. See: https://fb.me/react-legacyfactory'
) : null);
}
@ -6018,20 +6028,38 @@ ReactComponent.prototype.forceUpdate = function(callback) {
*/
if ("production" !== "development") {
var deprecatedAPIs = {
getDOMNode: 'getDOMNode',
isMounted: 'isMounted',
replaceProps: 'replaceProps',
replaceState: 'replaceState',
setProps: 'setProps'
getDOMNode: [
'getDOMNode',
'Use React.findDOMNode(component) instead.'
],
isMounted: [
'isMounted',
'Instead, make sure to clean up subscriptions and pending requests in ' +
'componentWillUnmount to prevent memory leaks.'
],
replaceProps: [
'replaceProps',
'Instead call React.render again at the top level.'
],
replaceState: [
'replaceState',
'Refactor your code to use setState instead (see ' +
'https://github.com/facebook/react/issues/3236).'
],
setProps: [
'setProps',
'Instead call React.render again at the top level.'
]
};
var defineDeprecationWarning = function(methodName, displayName) {
var defineDeprecationWarning = function(methodName, info) {
try {
Object.defineProperty(ReactComponent.prototype, methodName, {
get: function() {
("production" !== "development" ? warning(
false,
'%s(...) is deprecated in plain JavaScript React classes.',
displayName
'%s(...) is deprecated in plain JavaScript React classes. %s',
info[0],
info[1]
) : null);
return undefined;
}
@ -6332,6 +6360,14 @@ var ReactCompositeComponentMixin = {
'Did you mean to define a state property instead?',
this.getName() || 'a component'
) : null);
("production" !== "development" ? warning(
!inst.getDefaultProps ||
inst.getDefaultProps.isReactClassApproved,
'getDefaultProps was defined on %s, a plain JavaScript class. ' +
'This is only supported for classes created using React.createClass. ' +
'Use a static property to define defaultProps instead.',
this.getName() || 'a component'
) : null);
("production" !== "development" ? warning(
!inst.propTypes,
'propTypes was defined as an instance property on %s. Use a static ' +
@ -6368,6 +6404,7 @@ var ReactCompositeComponentMixin = {
this._pendingReplaceState = false;
this._pendingForceUpdate = false;
var childContext;
var renderedElement;
var previouslyMounting = ReactLifeCycle.currentlyMountingInstance;
@ -6382,7 +6419,8 @@ var ReactCompositeComponentMixin = {
}
}
renderedElement = this._renderValidatedComponent();
childContext = this._getValidatedChildContext(context);
renderedElement = this._renderValidatedComponent(childContext);
} finally {
ReactLifeCycle.currentlyMountingInstance = previouslyMounting;
}
@ -6396,7 +6434,7 @@ var ReactCompositeComponentMixin = {
this._renderedComponent,
rootID,
transaction,
this._processChildContext(context)
this._mergeChildContext(context, childContext)
);
if (inst.componentDidMount) {
transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
@ -6526,7 +6564,7 @@ var ReactCompositeComponentMixin = {
* @return {object}
* @private
*/
_processChildContext: function(currentContext) {
_getValidatedChildContext: function(currentContext) {
var inst = this._instance;
var childContext = inst.getChildContext && inst.getChildContext();
if (childContext) {
@ -6551,6 +6589,13 @@ var ReactCompositeComponentMixin = {
name
) : invariant(name in inst.constructor.childContextTypes));
}
return childContext;
}
return null;
},
_mergeChildContext: function(currentContext, childContext) {
if (childContext) {
return assign({}, currentContext, childContext);
}
return currentContext;
@ -6810,6 +6855,10 @@ var ReactCompositeComponentMixin = {
return inst.state;
}
if (replace && queue.length === 1) {
return queue[0];
}
var nextState = assign({}, replace ? queue[0] : inst.state);
for (var i = replace ? 1 : 0; i < queue.length; i++) {
var partial = queue[i];
@ -6879,13 +6928,14 @@ var ReactCompositeComponentMixin = {
_updateRenderedComponent: function(transaction, context) {
var prevComponentInstance = this._renderedComponent;
var prevRenderedElement = prevComponentInstance._currentElement;
var nextRenderedElement = this._renderValidatedComponent();
var childContext = this._getValidatedChildContext();
var nextRenderedElement = this._renderValidatedComponent(childContext);
if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {
ReactReconciler.receiveComponent(
prevComponentInstance,
nextRenderedElement,
transaction,
this._processChildContext(context)
this._mergeChildContext(context, childContext)
);
} else {
// These two IDs are actually the same! But nothing should rely on that.
@ -6901,7 +6951,7 @@ var ReactCompositeComponentMixin = {
this._renderedComponent,
thisID,
transaction,
context
this._mergeChildContext(context, childContext)
);
this._replaceNodeWithMarkupByID(prevComponentID, nextMarkup);
}
@ -6939,11 +6989,12 @@ var ReactCompositeComponentMixin = {
/**
* @private
*/
_renderValidatedComponent: function() {
_renderValidatedComponent: function(childContext) {
var renderedComponent;
var previousContext = ReactContext.current;
ReactContext.current = this._processChildContext(
this._currentElement._context
ReactContext.current = this._mergeChildContext(
this._currentElement._context,
childContext
);
ReactCurrentOwner.current = this;
try {
@ -7308,6 +7359,7 @@ var ReactDOM = mapObject({
// SVG
circle: 'circle',
clipPath: 'clipPath',
defs: 'defs',
ellipse: 'ellipse',
g: 'g',
@ -7457,11 +7509,13 @@ function assertValidProps(props) {
'Can only set one of `children` or `props.dangerouslySetInnerHTML`.'
) : invariant(props.children == null));
("production" !== "development" ? invariant(
props.dangerouslySetInnerHTML.__html != null,
typeof props.dangerouslySetInnerHTML === 'object' &&
'__html' in props.dangerouslySetInnerHTML,
'`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' +
'Please visit http://fb.me/react-invariant-dangerously-set-inner-html ' +
'Please visit https://fb.me/react-invariant-dangerously-set-inner-html ' +
'for more information.'
) : invariant(props.dangerouslySetInnerHTML.__html != null));
) : invariant(typeof props.dangerouslySetInnerHTML === 'object' &&
'__html' in props.dangerouslySetInnerHTML));
}
if ("production" !== "development") {
("production" !== "development" ? warning(
@ -7769,6 +7823,8 @@ ReactDOMComponent.Mixin = {
if (propKey === STYLE) {
if (nextProp) {
nextProp = this._previousStyleCopy = assign({}, nextProp);
} else {
this._previousStyleCopy = null;
}
if (lastProp) {
// Unset styles on `lastProp` but not on `nextProp`.
@ -10251,7 +10307,7 @@ function warnAndMonitorForKeyUse(message, element, parentType) {
("production" !== "development" ? warning(
false,
message + '%s%s See http://fb.me/react-warning-keys for more information.',
message + '%s%s See https://fb.me/react-warning-keys for more information.',
parentOrOwnerAddendum,
childOwnerAddendum
) : null);
@ -10375,9 +10431,9 @@ function warnForPropsMutation(propName, element) {
("production" !== "development" ? warning(
false,
'Don\'t set .props.%s of the React component%s. ' +
'Instead, specify the correct value when ' +
'initially creating the element.%s',
'Don\'t set .props.%s of the React component%s. Instead, specify the ' +
'correct value when initially creating the element or use ' +
'React.cloneElement to make a new element with updated props.%s',
propName,
elementInfo,
ownerInfo
@ -15047,6 +15103,7 @@ var MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;
var SVGDOMPropertyConfig = {
Properties: {
clipPath: MUST_USE_ATTRIBUTE,
cx: MUST_USE_ATTRIBUTE,
cy: MUST_USE_ATTRIBUTE,
d: MUST_USE_ATTRIBUTE,
@ -15092,6 +15149,7 @@ var SVGDOMPropertyConfig = {
y: MUST_USE_ATTRIBUTE
},
DOMAttributeNames: {
clipPath: 'clip-path',
fillOpacity: 'fill-opacity',
fontFamily: 'font-family',
fontSize: 'font-size',
@ -17887,6 +17945,7 @@ var shouldWrap = {
// Force wrapping for SVG elements because if they get created inside a <div>,
// they will be initialized in the wrong namespace (and will not display).
'circle': true,
'clipPath': true,
'defs': true,
'ellipse': true,
'g': true,
@ -17929,6 +17988,7 @@ var markupWrap = {
'th': trWrap,
'circle': svgWrap,
'clipPath': svgWrap,
'defs': svgWrap,
'ellipse': svgWrap,
'g': svgWrap,
@ -18274,6 +18334,7 @@ assign(
function isInternalComponentType(type) {
return (
typeof type === 'function' &&
typeof type.prototype !== 'undefined' &&
typeof type.prototype.mountComponent === 'function' &&
typeof type.prototype.receiveComponent === 'function'
);

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -51,8 +51,8 @@
"MochiKit/Selector.js",
"-- MochiKit/Visual.js",
"-- React/react-0.13.1.js",
"React/react.min-0.13.1.js",
"-- React/react-0.13.3.js",
"React/react.min-0.13.3.js",
"-- #React/react-with-addons-0.13.1.js",
"-- #React/react-with-addons.min-0.13.1.js",
@ -202,7 +202,7 @@
"Clipperz/PM/UI/Components/ExtraFeatures/DataImport/CSV/Notes.js",
"Clipperz/PM/UI/Components/ExtraFeatures/DataImport/CSV/Hidden.js",
"Clipperz/PM/UI/Components/Cards/FavIcon.js",
"-- Clipperz/PM/UI/Components/Cards/FavIcon.js",
"Clipperz/PM/UI/Components/Cards/List.js",
"Clipperz/PM/UI/Components/Cards/Detail.js",
"Clipperz/PM/UI/Components/Cards/View.js",

View File

@ -91,6 +91,16 @@ http://jonibologna.com/flexbox-cheatsheet/
//
// (Placeholder selectors for each type, for those who rather @extend)
// ------------------------------------------------------------------
//
// F L E X B O X d e b u g g i n g
//
// http://philipwalton.com/articles/normalizing-cross-browser-flexbox-bugs/
// https://github.com/philipwalton/flexbugs
//
// ------------------------------------------------------------------
@mixin flexbox {
display: -webkit-box;
display: -webkit-flex;

View File

@ -94,28 +94,6 @@ input[type=text] {
}
}
/* Firefox considers 100% respect to height of the whole window, this is rule is necessary to eliminate the card toolbar offset. */
@-moz-document url-prefix() {
#mainPanel {
&.extra-wide {
.subpanel {
&.cardContent {
height: calc(100% - 50px);
}
}
}
&.wide {
.cardContent {
height: calc(100% - 50px);
}
}
}
}
#mainPanel {
// background-color: $yellow;
left: 0px;
@ -201,7 +179,7 @@ input[type=text] {
.extraFeatureContent {
.extraFeature {
height: calc(100% - 50px);
height: calc(100% - $mainCardToolbarHeight);
}
}
@ -298,9 +276,8 @@ input[type=text] {
.cardToolbar {
@include flex(none);
}
.cardContent {
}
}
@ -599,7 +576,9 @@ div.dialogBox {
.mask {
z-index: 25;
@include chromeFix();
}
div.dialog {
@include flex(none);
z-index: 99999;
@ -622,3 +601,41 @@ div.dialogBox {
}
}
}
/* Firefox considers 100% respect to height of the whole window, this is rule is necessary to eliminate the card toolbar offset. */
@-moz-document url-prefix() {
#mainPanel {
&.extra-wide {
.subpanel {
&.cardContent {
height: calc(100% - #{$mainCardToolbarHeight});
}
}
}
&.wide {
.cardContent {
height: calc(100% - #{$mainCardToolbarHeight});
}
}
}
}
@media screen and (-webkit-min-device-pixel-ratio:0) {
#mainPanel {
&.extra-wide {
.subpanel {
&.cardContent {
height: calc(100% - #{$mainCardToolbarHeight});
}
}
}
&.wide {
.cardContent {
height: calc(100% - #{$mainCardToolbarHeight});
}
}
}
}

View File

@ -43,6 +43,7 @@ div.cardList {
&.loadingCard {
li.selected {
background-color: gray;
border-bottom: 1px solid gray;
}
}
@ -96,10 +97,13 @@ div.cardList {
font-size: 14pt;
padding-top: 0.8em;
padding-bottom: 0.8em;
padding-left: $padding;
// padding-top: 0.8em;
padding-top: 16px;
// padding-bottom: 0.8em;
padding-bottom: 14px;
padding-left: $padding * 2;
padding-right: $padding;
line-height: 1.2em;
}
}
@ -249,8 +253,8 @@ $cardViewBasePadding: 10px;
.cardField {
textarea.fieldValue {
line-height: 1em;
height: 1.3em;
// line-height: 1em;
// height: 1.3em;
outline: none;
}
}