This repository was archived by the owner on Jun 4, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 49
/
Copy pathBdi.react.js
164 lines (137 loc) · 3.95 KB
/
Bdi.react.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import React from 'react';
import PropTypes from 'prop-types';
import {omit} from 'ramda';
const Bdi = (props) => {
const dataAttributes = {};
if(props.loading_state && props.loading_state.is_loading) {
dataAttributes['data-dash-is-loading'] = true;
}
return (
<bdi
onClick={() => {
if (props.setProps) {
props.setProps({
n_clicks: props.n_clicks + 1,
n_clicks_timestamp: Date.now()
})
}
}}
{...omit(['n_clicks', 'n_clicks_timestamp', 'loading_state', 'setProps'], props)}
{...dataAttributes}
>
{props.children}
</bdi>
);
};
Bdi.defaultProps = {
n_clicks: 0,
n_clicks_timestamp: -1,
};
Bdi.propTypes = {
/**
* The ID of this component, used to identify dash components
* in callbacks. The ID needs to be unique across all of the
* components in an app.
*/
'id': PropTypes.string,
/**
* The children of this component
*/
'children': PropTypes.node,
/**
* An integer that represents the number of times
* that this element has been clicked on.
*/
'n_clicks': PropTypes.number,
/**
* An integer that represents the time (in ms since 1970)
* at which n_clicks changed. This can be used to tell
* which button was changed most recently.
*/
'n_clicks_timestamp': PropTypes.number,
/**
* A unique identifier for the component, used to improve
* performance by React.js while rendering components
* See https://reactjs.org/docs/lists-and-keys.html for more info
*/
'key': PropTypes.string,
/**
* The ARIA role attribute
*/
'role': PropTypes.string,
/**
* A wildcard data attribute
*/
'data-*': PropTypes.string,
/**
* A wildcard aria attribute
*/
'aria-*': PropTypes.string,
/**
* Defines a keyboard shortcut to activate or add focus to the element.
*/
'accessKey': PropTypes.string,
/**
* Often used with CSS to style elements with common properties.
*/
'className': PropTypes.string,
/**
* Indicates whether the element's content is editable.
*/
'contentEditable': PropTypes.string,
/**
* Defines the ID of a <menu> element which will serve as the element's context menu.
*/
'contextMenu': PropTypes.string,
/**
* Defines the text direction. Allowed values are ltr (Left-To-Right) or rtl (Right-To-Left)
*/
'dir': PropTypes.string,
/**
* Defines whether the element can be dragged.
*/
'draggable': PropTypes.string,
/**
* Prevents rendering of given element, while keeping child elements, e.g. script elements, active.
*/
'hidden': PropTypes.string,
/**
* Defines the language used in the element.
*/
'lang': PropTypes.string,
/**
* Indicates whether spell checking is allowed for the element.
*/
'spellCheck': PropTypes.string,
/**
* Defines CSS styles which will override styles previously set.
*/
'style': PropTypes.object,
/**
* Overrides the browser's default tab order and follows the one specified instead.
*/
'tabIndex': PropTypes.string,
/**
* Text to be displayed in a tooltip when hovering over the element.
*/
'title': PropTypes.string,
/**
* Object that holds the loading state object coming from dash-renderer
*/
'loading_state': PropTypes.shape({
/**
* Determines if the component is loading or not
*/
is_loading: PropTypes.bool,
/**
* Holds which property is loading
*/
prop_name: PropTypes.string,
/**
* Holds the name of the component that is loading
*/
component_name: PropTypes.string,
}),
'setProps': PropTypes.func
};
export default Bdi;