mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-05-16 02:17:11 +00:00
134 lines
3.8 KiB
JavaScript
134 lines
3.8 KiB
JavaScript
/** @jsx React.DOM */
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/* jshint newcap:false */
|
|
/* global loop:true, React */
|
|
|
|
(function() {
|
|
"use strict";
|
|
|
|
// 1. Desktop components
|
|
// 1.1 Panel
|
|
var PanelView = loop.panel.PanelView;
|
|
// 1.2. Conversation Window
|
|
var IncomingCallView = loop.conversation.IncomingCallView;
|
|
|
|
// 2. Standalone webapp
|
|
var CallUrlExpiredView = loop.webapp.CallUrlExpiredView;
|
|
|
|
// 3. Shared components
|
|
var ConversationToolbar = loop.shared.views.ConversationToolbar;
|
|
var ConversationView = loop.shared.views.ConversationView;
|
|
|
|
// Local helpers
|
|
function returnTrue() {
|
|
return true;
|
|
}
|
|
|
|
function returnFalse() {
|
|
return false;
|
|
}
|
|
|
|
var Example = React.createClass({displayName: 'Example',
|
|
render: function() {
|
|
var cx = React.addons.classSet;
|
|
return (
|
|
React.DOM.div({className: "example"},
|
|
React.DOM.h3(null, this.props.summary),
|
|
React.DOM.div({className: cx({comp: true, dashed: this.props.dashed}),
|
|
style: this.props.style || {}},
|
|
this.props.children
|
|
)
|
|
)
|
|
);
|
|
}
|
|
});
|
|
|
|
var Section = React.createClass({displayName: 'Section',
|
|
render: function() {
|
|
return (
|
|
React.DOM.section({id: this.props.name},
|
|
React.DOM.h1(null, this.props.name),
|
|
this.props.children
|
|
)
|
|
);
|
|
}
|
|
});
|
|
|
|
var ShowCase = React.createClass({displayName: 'ShowCase',
|
|
render: function() {
|
|
return (
|
|
React.DOM.div({className: "showcase"},
|
|
React.DOM.header(null,
|
|
React.DOM.h1(null, "Loop UI Components Showcase"),
|
|
React.DOM.nav({className: "menu"},
|
|
React.Children.map(this.props.children, function(section) {
|
|
return (
|
|
React.DOM.a({className: "btn btn-info", href: "#" + section.props.name},
|
|
section.props.name
|
|
)
|
|
);
|
|
})
|
|
)
|
|
),
|
|
this.props.children
|
|
)
|
|
);
|
|
}
|
|
});
|
|
|
|
var App = React.createClass({displayName: 'App',
|
|
render: function() {
|
|
return (
|
|
ShowCase(null,
|
|
Section({name: "PanelView"},
|
|
Example({summary: "332px wide", dashed: "true", style: {width: "332px"}},
|
|
PanelView(null)
|
|
)
|
|
),
|
|
|
|
Section({name: "IncomingCallView"},
|
|
Example({summary: "Default", dashed: "true", style: {width: "280px"}},
|
|
IncomingCallView(null)
|
|
)
|
|
),
|
|
|
|
Section({name: "ConversationToolbar"},
|
|
Example({summary: "Default"},
|
|
ConversationToolbar({video: {enabled: true}, audio: {enabled: true}})
|
|
),
|
|
Example({summary: "Video muted"},
|
|
ConversationToolbar({video: {enabled: false}, audio: {enabled: true}})
|
|
),
|
|
Example({summary: "Audio muted"},
|
|
ConversationToolbar({video: {enabled: true}, audio: {enabled: false}})
|
|
)
|
|
),
|
|
|
|
Section({name: "ConversationView"},
|
|
Example({summary: "Default"},
|
|
ConversationView({video: {enabled: true}, audio: {enabled: true}})
|
|
)
|
|
),
|
|
|
|
Section({name: "CallUrlExpiredView"},
|
|
Example({summary: "Firefox User"},
|
|
CallUrlExpiredView({helper: {isFirefox: returnTrue}})
|
|
),
|
|
Example({summary: "Non-Firefox User"},
|
|
CallUrlExpiredView({helper: {isFirefox: returnFalse}})
|
|
)
|
|
)
|
|
)
|
|
);
|
|
}
|
|
});
|
|
|
|
window.addEventListener("DOMContentLoaded", function() {
|
|
React.renderComponent(App(null), document.body);
|
|
});
|
|
})();
|