Files
react-native/ReactCommon/fabric/components/textinput/iostextinput/TextInputProps.cpp
T
Samuel Susla 3d4535a2bb Introduce InputAccessoryView
Summary:
Changelog: [Internal]

Introducing InputAccessoryView.

There is one big difference between Fabric's implementation and Paper's implementation.

Fabric searches for text input from InputAccessoryView, unlike Paper where it is the other way around.

Reviewed By: shergin

Differential Revision: D22160445

fbshipit-source-id: 55313fe50afeced7aead5b57137d711dd1cfd3ae
2020-06-30 01:36:04 -07:00

102 lines
2.9 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "TextInputProps.h"
#include <react/attributedstring/conversions.h>
#include <react/components/iostextinput/propsConversions.h>
#include <react/core/propsConversions.h>
#include <react/graphics/conversions.h>
namespace facebook {
namespace react {
TextInputProps::TextInputProps(
TextInputProps const &sourceProps,
RawProps const &rawProps)
: ViewProps(sourceProps, rawProps),
BaseTextProps(sourceProps, rawProps),
traits(convertRawProp(rawProps, sourceProps.traits, {})),
paragraphAttributes(
convertRawProp(rawProps, sourceProps.paragraphAttributes, {})),
defaultValue(convertRawProp(
rawProps,
"defaultValue",
sourceProps.defaultValue,
{})),
placeholder(
convertRawProp(rawProps, "placeholder", sourceProps.placeholder, {})),
placeholderTextColor(convertRawProp(
rawProps,
"placeholderTextColor",
sourceProps.placeholderTextColor,
{})),
maxLength(
convertRawProp(rawProps, "maxLength", sourceProps.maxLength, {})),
cursorColor(
convertRawProp(rawProps, "cursorColor", sourceProps.cursorColor, {})),
selectionColor(convertRawProp(
rawProps,
"selectionColor",
sourceProps.selectionColor,
{})),
underlineColorAndroid(convertRawProp(
rawProps,
"underlineColorAndroid",
sourceProps.underlineColorAndroid,
{})),
text(convertRawProp(rawProps, "text", sourceProps.text, {})),
mostRecentEventCount(convertRawProp(
rawProps,
"mostRecentEventCount",
sourceProps.mostRecentEventCount,
{})),
autoFocus(
convertRawProp(rawProps, "autoFocus", sourceProps.autoFocus, {})),
inputAccessoryViewID(convertRawProp(
rawProps,
"inputAccessoryViewID",
sourceProps.inputAccessoryViewID,
{})){};
TextAttributes TextInputProps::getEffectiveTextAttributes(
Float fontSizeMultiplier) const {
auto result = TextAttributes::defaultTextAttributes();
result.fontSizeMultiplier = fontSizeMultiplier;
result.apply(textAttributes);
/*
* These props are applied to `View`, therefore they must not be a part of
* base text attributes.
*/
result.backgroundColor = clearColor();
result.opacity = 1;
return result;
}
ParagraphAttributes TextInputProps::getEffectiveParagraphAttributes() const {
auto result = paragraphAttributes;
if (!traits.multiline) {
result.maximumNumberOfLines = 1;
}
return result;
}
#ifdef ANDROID
folly::dynamic TextInputProps::getDynamic() const {
folly::dynamic props = folly::dynamic::object();
props["value"] = value;
return props;
}
#endif
} // namespace react
} // namespace facebook