Skip to content

Commit bd22af5

Browse files
rxavierskborchers
authored andcommitted
Change API to Addon instead of mixin
1 parent d3167a3 commit bd22af5

File tree

6 files changed

+29
-61
lines changed

6 files changed

+29
-61
lines changed

examples/modules/currency.js renamed to examples/components/currency.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
var ReactGlobalize = require('../react-globalize');
1+
var FormatCurrency = require('../react-globalize').FormatCurrency;
22
var React = require('react');
33

4-
var FormatCurrency = React.createClass({
5-
mixins: [ReactGlobalize.formatCurrency],
6-
render: function() {
7-
return (
8-
<span>{this.state.formattedValue}</span>
9-
);
10-
}
11-
});
12-
134
module.exports = React.createClass({
145
getInitialState: function() {
156
return {

examples/modules/dates.js renamed to examples/components/dates.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
var ReactGlobalize = require('../react-globalize');
1+
var FormatDate = require('../react-globalize').FormatDate;
22
var React = require('react');
33

4-
var FormatDate = React.createClass({
5-
mixins: [ReactGlobalize.formatDate],
6-
render: function() {
7-
return (
8-
<span>{this.state.formattedValue}</span>
9-
);
10-
}
11-
});
12-
134
module.exports = React.createClass({
145
getInitialState: function() {
156
return {

examples/modules/messages.js renamed to examples/components/messages.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
1-
var ReactGlobalize = require('../react-globalize');
1+
var FormatMessage = require('../react-globalize').FormatMessage;
22
var React = require('react');
33
var Globalize = require('globalize');
44

5-
var FormatMessage = React.createClass({
6-
mixins: [ReactGlobalize.formatMessage],
7-
render: function() {
8-
return (
9-
<span>{this.state.formattedValue}</span>
10-
);
11-
}
12-
});
13-
145
module.exports = React.createClass({
156
getInitialState: function() {
167
return {

examples/modules/numbers.js renamed to examples/components/numbers.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
var ReactGlobalize = require('../react-globalize');
1+
var FormatNumber = require('../react-globalize').FormatNumber;
22
var React = require('react');
33

4-
var FormatNumber = React.createClass({
5-
mixins: [ReactGlobalize.formatNumber],
6-
render: function() {
7-
return (
8-
<span>{this.state.formattedValue}</span>
9-
);
10-
}
11-
});
12-
134
module.exports = React.createClass({
145
getInitialState: function() {
156
return {

examples/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
var React = require('react');
22
var Globalize = require('globalize');
3-
var LocalizedCurrencies = require('./modules/currency');
4-
var LocalizedDates = require('./modules/dates');
5-
var LocalizedMessages = require('./modules/messages');
6-
var LocalizedNumbers = require('./modules/numbers');
3+
var LocalizedCurrencies = require('./components/currency');
4+
var LocalizedDates = require('./components/dates');
5+
var LocalizedMessages = require('./components/messages');
6+
var LocalizedNumbers = require('./components/numbers');
77

88
var messages = {
99
en: {

index.js

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,38 @@
11
var Globalize = require("globalize");
2-
var mixins = {};
2+
var React = require("react");
3+
var ReactGlobalize = {};
4+
5+
function capitalizeFirstLetter(string) {
6+
return string.charAt(0).toUpperCase() + string.slice(1);
7+
}
38

49
Object.getOwnPropertyNames(Globalize).forEach(function(fn) {
510
if (fn.indexOf("format") === 0) {
11+
var Fn = capitalizeFirstLetter(fn);
612
var fnString = Globalize[fn].toString();
713
var argString = fnString.substr(fnString.indexOf("(")+1, fnString.indexOf(")")-(fnString.indexOf("(")+1)).trim();
814
var argArray = argString.split(", ");
915

10-
(function(currentFn, currentArgs) {
11-
var formatter = function(nextProps) {
16+
ReactGlobalize[Fn] = React.createClass({
17+
displayName: Fn,
18+
render: function() {
19+
var formatted;
20+
var componentProps = this.props;
1221
var instance = Globalize;
13-
var componentProps = nextProps || this.props;
14-
var propArgs = currentArgs.map(function(element) {
15-
return componentProps[element.replace(/(\s\/\*|\*\/)/,"").trim()];
16-
});
22+
var propArgs = argArray.map(function(element) {
23+
return componentProps[element.replace(/(\s\/\*|\*\/)/,"").trim()];
24+
});
1725

1826
if (componentProps["locale"]) {
1927
instance = Globalize(componentProps["locale"]);
2028
}
21-
this.setState({
22-
formattedValue: instance[currentFn].apply(instance, propArgs)
23-
});
24-
};
2529

26-
mixins[currentFn] = {
27-
componentWillMount: formatter,
28-
componentWillReceiveProps: formatter
29-
};
30-
})(fn, argArray);
30+
formatted = instance[fn].apply(instance, propArgs);
31+
32+
return React.DOM.span(null, formatted);
33+
}
34+
});
3135
}
3236
});
3337

34-
module.exports = mixins;
38+
module.exports = ReactGlobalize;

0 commit comments

Comments
 (0)