mirror of
https://github.com/status-im/react-native.git
synced 2025-02-22 14:18:23 +00:00
Fabric: Proper parsing of Accessibility Props
Summary: Previsouly, we basically didn't support Accessibility at all. Reviewed By: mdvacca Differential Revision: D10250635 fbshipit-source-id: d33eed8f56374f57310654653f41c312cb5942e6
This commit is contained in:
parent
8f51243957
commit
04fbdd347b
@ -7,14 +7,48 @@
|
||||
|
||||
#include "AccessibilityProps.h"
|
||||
|
||||
#include "accessibilityValuesConversions.h"
|
||||
#include <fabric/components/view/accessibilityPropsConversions.h>
|
||||
#include <fabric/components/view/propsConversions.h>
|
||||
#include <fabric/core/propsConversions.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
AccessibilityProps::AccessibilityProps(
|
||||
const AccessibilityProps &sourceProps,
|
||||
const RawProps &rawProps) {}
|
||||
const RawProps &rawProps)
|
||||
: accessible(convertRawProp(
|
||||
rawProps,
|
||||
"accessible",
|
||||
sourceProps.accessible)),
|
||||
accessibilityTraits(convertRawProp(
|
||||
rawProps,
|
||||
"accessibilityTraits",
|
||||
sourceProps.accessibilityTraits)),
|
||||
accessibilityLabel(convertRawProp(
|
||||
rawProps,
|
||||
"accessibilityLabel",
|
||||
sourceProps.accessibilityLabel)),
|
||||
accessibilityHint(convertRawProp(
|
||||
rawProps,
|
||||
"accessibilityHint",
|
||||
sourceProps.accessibilityHint)),
|
||||
accessibilityActions(convertRawProp(
|
||||
rawProps,
|
||||
"accessibilityActions",
|
||||
sourceProps.accessibilityActions)),
|
||||
accessibilityViewIsModal(convertRawProp(
|
||||
rawProps,
|
||||
"accessibilityViewIsModal",
|
||||
sourceProps.accessibilityViewIsModal)),
|
||||
accessibilityElementsHidden(convertRawProp(
|
||||
rawProps,
|
||||
"accessibilityElementsHidden",
|
||||
sourceProps.accessibilityElementsHidden)),
|
||||
accessibilityIgnoresInvertColors(convertRawProp(
|
||||
rawProps,
|
||||
"accessibilityIgnoresInvertColors",
|
||||
sourceProps.accessibilityIgnoresInvertColors)) {}
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
|
@ -29,11 +29,14 @@ class AccessibilityProps : public virtual DebugStringConvertible {
|
||||
#pragma mark - Props
|
||||
|
||||
const bool accessible{false};
|
||||
const std::vector<std::string> accessibilityActions{};
|
||||
const std::string accessibilityLabel{""};
|
||||
const AccessibilityTraits accessibilityTraits{AccessibilityTraits::None};
|
||||
const std::string accessibilityLabel{""};
|
||||
const std::string accessibilityHint{""};
|
||||
const std::vector<std::string> accessibilityActions{};
|
||||
const bool accessibilityViewIsModal{false};
|
||||
const bool accessibilityElementsHidden{false};
|
||||
const bool accessibilityIgnoresInvertColors{false};
|
||||
const std::string testId{""};
|
||||
};
|
||||
|
||||
} // namespace react
|
||||
|
@ -0,0 +1,106 @@
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <fabric/components/view/AccessibilityPrimitives.h>
|
||||
#include <folly/dynamic.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
inline void fromString(const std::string &string, AccessibilityTraits &result) {
|
||||
if (string == "none") {
|
||||
result = AccessibilityTraits::None;
|
||||
return;
|
||||
}
|
||||
if (string == "button") {
|
||||
result = AccessibilityTraits::Button;
|
||||
return;
|
||||
}
|
||||
if (string == "link") {
|
||||
result = AccessibilityTraits::Link;
|
||||
return;
|
||||
}
|
||||
if (string == "image") {
|
||||
result = AccessibilityTraits::Image;
|
||||
return;
|
||||
}
|
||||
if (string == "selected") {
|
||||
result = AccessibilityTraits::Selected;
|
||||
return;
|
||||
}
|
||||
if (string == "plays") {
|
||||
result = AccessibilityTraits::PlaysSound;
|
||||
return;
|
||||
}
|
||||
if (string == "keyboardkey") {
|
||||
result = AccessibilityTraits::KeyboardKey;
|
||||
return;
|
||||
}
|
||||
if (string == "text") {
|
||||
result = AccessibilityTraits::StaticText;
|
||||
return;
|
||||
}
|
||||
if (string == "disabled") {
|
||||
result = AccessibilityTraits::NotEnabled;
|
||||
return;
|
||||
}
|
||||
if (string == "frequentUpdates") {
|
||||
result = AccessibilityTraits::UpdatesFrequently;
|
||||
return;
|
||||
}
|
||||
if (string == "search") {
|
||||
result = AccessibilityTraits::SearchField;
|
||||
return;
|
||||
}
|
||||
if (string == "startsMedia") {
|
||||
result = AccessibilityTraits::StartsMediaSession;
|
||||
return;
|
||||
}
|
||||
if (string == "adjustable") {
|
||||
result = AccessibilityTraits::Adjustable;
|
||||
return;
|
||||
}
|
||||
if (string == "allowsDirectInteraction") {
|
||||
result = AccessibilityTraits::DirectInteraction;
|
||||
return;
|
||||
}
|
||||
if (string == "pageTurn") {
|
||||
result = AccessibilityTraits::CausesPageTurn;
|
||||
return;
|
||||
}
|
||||
if (string == "header") {
|
||||
result = AccessibilityTraits::Header;
|
||||
return;
|
||||
}
|
||||
abort();
|
||||
}
|
||||
|
||||
inline void fromDynamic(
|
||||
const folly::dynamic &value,
|
||||
AccessibilityTraits &result) {
|
||||
if (value.isString()) {
|
||||
fromString(value.asString(), result);
|
||||
return;
|
||||
}
|
||||
|
||||
if (value.isArray()) {
|
||||
result = {};
|
||||
for (auto &item : value) {
|
||||
auto string = item.asString();
|
||||
AccessibilityTraits itemAccessibilityTraits;
|
||||
fromString(value.asString(), itemAccessibilityTraits);
|
||||
result = result | itemAccessibilityTraits;
|
||||
}
|
||||
}
|
||||
|
||||
abort();
|
||||
}
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
@ -1,24 +0,0 @@
|
||||
/**
|
||||
* 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 "accessibilityValuesConversions.h"
|
||||
|
||||
#include <folly/Conv.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
AccessibilityTraits accessibilityTraitsFromDynamic(
|
||||
const folly::dynamic &value) {
|
||||
assert(value.isString());
|
||||
|
||||
// FIXME: Not clear yet.
|
||||
abort();
|
||||
}
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
@ -1,19 +0,0 @@
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <fabric/components/view/AccessibilityPrimitives.h>
|
||||
#include <folly/dynamic.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
AccessibilityTraits accessibilityTraitsFromDynamic(const folly::dynamic &value);
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
Loading…
x
Reference in New Issue
Block a user