UNPKG

4.82 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.DataTableTitle = exports.default = void 0;
7
8var React = _interopRequireWildcard(require("react"));
9
10var _reactNative = require("react-native");
11
12var _color = _interopRequireDefault(require("color"));
13
14var _MaterialCommunityIcon = _interopRequireDefault(require("../MaterialCommunityIcon"));
15
16var _Text = _interopRequireDefault(require("../Typography/Text"));
17
18var _theming = require("../../core/theming");
19
20function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
23
24function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
26function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
27
28/**
29 * A component to display title in table header.
30 *
31 * <div class="screenshots">
32 * <figure>
33 * <img class="medium" src="screenshots/data-table-header.png" />
34 * </figure>
35 * </div>
36 *
37 *
38 * ## Usage
39 * ```js
40 * import * as React from 'react';
41 * import { DataTable } from 'react-native-paper';
42 *
43 * const MyComponent = () => (
44 * <DataTable>
45 * <DataTable.Header>
46 * <DataTable.Title
47 * sortDirection='descending'
48 * >
49 * Dessert
50 * </DataTable.Title>
51 * <DataTable.Title numeric>Calories</DataTable.Title>
52 * <DataTable.Title numeric>Fat (g)</DataTable.Title>
53 * </DataTable.Header>
54 * </DataTable>
55 * );
56 *
57 * export default MyComponent;
58 * ```
59 */
60const DataTableTitle = ({
61 numeric,
62 children,
63 onPress,
64 sortDirection,
65 theme,
66 style,
67 numberOfLines = 1,
68 ...rest
69}) => {
70 const {
71 current: spinAnim
72 } = React.useRef(new _reactNative.Animated.Value(sortDirection === 'ascending' ? 0 : 1));
73 React.useEffect(() => {
74 _reactNative.Animated.timing(spinAnim, {
75 toValue: sortDirection === 'ascending' ? 0 : 1,
76 duration: 150,
77 useNativeDriver: true
78 }).start();
79 }, [sortDirection, spinAnim]);
80 const textColor = (0, _color.default)(theme.colors.text).alpha(0.6).rgb().string();
81 const spin = spinAnim.interpolate({
82 inputRange: [0, 1],
83 outputRange: ['0deg', '180deg']
84 });
85 const icon = sortDirection ? /*#__PURE__*/React.createElement(_reactNative.Animated.View, {
86 style: [styles.icon, {
87 transform: [{
88 rotate: spin
89 }]
90 }]
91 }, /*#__PURE__*/React.createElement(_MaterialCommunityIcon.default, {
92 name: "arrow-up",
93 size: 16,
94 color: theme.colors.text,
95 direction: _reactNative.I18nManager.isRTL ? 'rtl' : 'ltr'
96 })) : null;
97 return /*#__PURE__*/React.createElement(_reactNative.TouchableWithoutFeedback, _extends({
98 disabled: !onPress,
99 onPress: onPress
100 }, rest), /*#__PURE__*/React.createElement(_reactNative.View, {
101 style: [styles.container, numeric && styles.right, style]
102 }, icon, /*#__PURE__*/React.createElement(_Text.default, {
103 style: [styles.cell, sortDirection ? styles.sorted : {
104 color: textColor
105 }],
106 numberOfLines: numberOfLines
107 }, children)));
108};
109
110exports.DataTableTitle = DataTableTitle;
111DataTableTitle.displayName = 'DataTable.Title';
112
113const styles = _reactNative.StyleSheet.create({
114 container: {
115 flex: 1,
116 flexDirection: 'row',
117 alignContent: 'center',
118 paddingVertical: 12
119 },
120 right: {
121 justifyContent: 'flex-end'
122 },
123 cell: {
124 height: 24,
125 lineHeight: 24,
126 fontSize: 12,
127 fontWeight: '500',
128 alignItems: 'center'
129 },
130 sorted: {
131 marginLeft: 8
132 },
133 icon: {
134 height: 24,
135 justifyContent: 'center'
136 }
137});
138
139var _default = (0, _theming.withTheme)(DataTableTitle); // @component-docs ignore-next-line
140
141
142exports.default = _default;
143//# sourceMappingURL=DataTableTitle.js.map
\No newline at end of file