diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..8d87b1d
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1 @@
+node_modules/*
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..71c0e41
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,24 @@
+{
+ "env": {
+ "browser": true,
+ "es6": true
+ },
+ "extends": "eslint:recommended",
+ "parserOptions": {
+ "ecmaFeatures": {
+ "experimentalObjectRestSpread": true,
+ "jsx": true
+ },
+ "sourceType": "module"
+ },
+ "plugins": ["react"],
+ "rules": {
+ "react/jsx-uses-vars": "error",
+ "no-console": "off",
+ "no-undef": "error"
+ },
+ "globals": {
+ "require": false,
+ "module": false
+ }
+}
diff --git a/package.json b/package.json
index 988ade1..2b72ebb 100644
--- a/package.json
+++ b/package.json
@@ -23,7 +23,6 @@
"webpack": "^2.6.1"
},
"dependencies": {
- "react": "^15.6.0",
- "react-dom": "^15.6.0"
+ "react-lite": "0.15.30"
}
}
diff --git a/src/index.es6 b/src/index.es6
new file mode 100644
index 0000000..5ce38ce
--- /dev/null
+++ b/src/index.es6
@@ -0,0 +1,39 @@
+/*jshint esversion: 6 */
+/*
+ * This file is part of Cockpit.
+ *
+ * Copyright (C) 2017 Red Hat, Inc.
+ *
+ * Cockpit is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * Cockpit is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Cockpit; If not, see .
+ */
+import React from 'react';
+import { Subscriptions } from './subscriptions-view.jsx';
+
+function render() {
+ React.render(
+ React.createElement(
+ Subscriptions,
+ {title: "Sample Page"}
+ ),
+ document.getElementById('app')
+ );
+}
+
+/**
+ * Start the application.
+ */
+export function run() {
+ // do initial render
+ render();
+}
diff --git a/src/index.js b/src/index.js
index 7bdd5b0..3f840fd 100644
--- a/src/index.js
+++ b/src/index.js
@@ -20,5 +20,6 @@
var cockpit = require("cockpit");
document.addEventListener("DOMContentLoaded", function() {
- console.log("subscription-manager loaded");
+ var app = require("./index.es6");
+ app.run();
});
diff --git a/src/subscriptions-view.jsx b/src/subscriptions-view.jsx
new file mode 100644
index 0000000..c75876a
--- /dev/null
+++ b/src/subscriptions-view.jsx
@@ -0,0 +1,39 @@
+/*jshint esversion: 6 */
+/*
+ * This file is part of Cockpit.
+ *
+ * Copyright (C) 2017 Red Hat, Inc.
+ *
+ * Cockpit is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * Cockpit is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Cockpit; If not, see .
+ */
+import React from 'react';
+
+export class Subscriptions extends React.Component {
+ constructor() {
+ super();
+ // a good place to initialize this.state
+ }
+
+ render() {
+ let title = this.props.title?({this.props.title}):"Empty title";
+ return (
+
+
{title}
+
+ Some content
+
+
+ );
+ }
+}
diff --git a/src/subscriptions.css b/src/subscriptions.css
new file mode 100644
index 0000000..375e234
--- /dev/null
+++ b/src/subscriptions.css
@@ -0,0 +1,19 @@
+/*
+ * This file is part of Cockpit.
+ *
+ * Copyright (C) 2017 Red Hat, Inc.
+ *
+ * Cockpit is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * Cockpit is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Cockpit; If not, see .
+ */
+
diff --git a/webpack.config.js b/webpack.config.js
index 0365de9..19ad7d6 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -11,11 +11,13 @@ const srcdir = (process.env.SRCDIR || __dirname) + path.sep + "src";
const builddir = (process.env.SRCDIR || __dirname);
const distdir = builddir + path.sep + "dist";
const section = process.env.ONLYDIR || null;
+const nodedir = path.resolve((process.env.SRCDIR || __dirname), "node_modules");
var info = {
entries: {
"index": [
- "./index.js"
+ "./index.js",
+ "./subscriptions.css",
]
},
files: [
@@ -78,6 +80,12 @@ module.exports = {
entry: info.entries,
externals: externals,
output: output,
+ devtool: "source-map",
+ resolve: {
+ alias: {
+ "react$": path.resolve(nodedir, "react-lite/dist/react-lite.js")
+ }
+ },
module: {
rules: [
{