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 "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 facebook {
|
||||||
namespace react {
|
namespace react {
|
||||||
|
|
||||||
AccessibilityProps::AccessibilityProps(
|
AccessibilityProps::AccessibilityProps(
|
||||||
const AccessibilityProps &sourceProps,
|
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 react
|
||||||
} // namespace facebook
|
} // namespace facebook
|
||||||
|
@ -29,11 +29,14 @@ class AccessibilityProps : public virtual DebugStringConvertible {
|
|||||||
#pragma mark - Props
|
#pragma mark - Props
|
||||||
|
|
||||||
const bool accessible{false};
|
const bool accessible{false};
|
||||||
const std::vector<std::string> accessibilityActions{};
|
|
||||||
const std::string accessibilityLabel{""};
|
|
||||||
const AccessibilityTraits accessibilityTraits{AccessibilityTraits::None};
|
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 accessibilityViewIsModal{false};
|
||||||
const bool accessibilityElementsHidden{false};
|
const bool accessibilityElementsHidden{false};
|
||||||
|
const bool accessibilityIgnoresInvertColors{false};
|
||||||
|
const std::string testId{""};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace react
|
} // 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