hippo-fw 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +2 -3
  4. data/Gemfile +1 -1
  5. data/client/hippo/__mocks__/config.js +4 -4
  6. data/client/hippo/boot.jsx +1 -0
  7. data/client/hippo/components/asset.jsx +4 -4
  8. data/client/hippo/components/date-time.jsx +169 -0
  9. data/client/hippo/components/date-time.scss +38 -0
  10. data/client/hippo/components/date-time/calendar.jsx +115 -0
  11. data/client/hippo/components/date-time/date-time-drop.jsx +77 -0
  12. data/client/hippo/components/date-time/date-time.scss +157 -0
  13. data/client/hippo/components/date-time/time.jsx +120 -0
  14. data/client/hippo/components/form/fields/date-wrapper.jsx +4 -3
  15. data/client/hippo/components/form/model.js +0 -2
  16. data/client/hippo/components/text-editor.jsx +85 -0
  17. data/client/hippo/components/text-editor/display-modes/Button.jsx +17 -0
  18. data/client/hippo/components/text-editor/display-modes/SaveState.jsx +17 -0
  19. data/client/hippo/components/text-editor/display-modes/ToggleEdit.jsx +22 -0
  20. data/client/hippo/components/text-editor/display-modes/ToggleInsert.jsx +21 -0
  21. data/client/hippo/components/text-editor/display-modes/ToggleLayout.jsx +21 -0
  22. data/client/hippo/components/text-editor/display-modes/TogglePreview.jsx +21 -0
  23. data/client/hippo/components/text-editor/display-modes/ToggleResize.jsx +21 -0
  24. data/client/hippo/components/text-editor/display-modes/index.css +0 -0
  25. data/client/hippo/components/text-editor/display-modes/index.js +30 -0
  26. data/client/hippo/components/text-editor/image-plugin/Component/Display/index.js +80 -0
  27. data/client/hippo/components/text-editor/image-plugin/Component/Form/index.js +40 -0
  28. data/client/hippo/components/text-editor/image-plugin/Component/index.js +16 -0
  29. data/client/hippo/components/text-editor/image-plugin/Component/index.scss +0 -0
  30. data/client/hippo/components/text-editor/image-plugin/index.js +32 -0
  31. data/client/hippo/components/text-editor/image-plugin/index.scss +25 -0
  32. data/client/hippo/components/text-editor/plugins.js +22 -0
  33. data/client/hippo/components/text-editor/renderer.jsx +37 -0
  34. data/client/hippo/components/text-editor/text-editor.scss +49 -0
  35. data/client/hippo/extensions/base.js +5 -2
  36. data/client/hippo/extensions/hippo.js +5 -2
  37. data/client/hippo/extensions/index.js +9 -3
  38. data/client/hippo/lib/__mocks__/request-assets.js +2 -2
  39. data/client/hippo/lib/bootstrap.js +0 -1
  40. data/client/hippo/lib/smooth-scroll.js +0 -1
  41. data/client/hippo/lib/util.js +4 -4
  42. data/client/hippo/models/asset.js +43 -23
  43. data/client/hippo/models/base.js +1 -2
  44. data/client/hippo/models/config.js +0 -1
  45. data/client/hippo/models/decorators.js +3 -3
  46. data/client/hippo/models/pub_sub.js +2 -5
  47. data/client/hippo/models/pub_sub/channel.js +0 -1
  48. data/client/hippo/models/query.js +0 -1
  49. data/client/hippo/models/query/array-result.js +0 -1
  50. data/client/hippo/models/query/clause.js +0 -1
  51. data/client/hippo/models/query/field.js +0 -1
  52. data/client/hippo/models/query/info.js +0 -3
  53. data/client/hippo/models/query/operator.js +0 -2
  54. data/client/hippo/models/query/result.js +0 -1
  55. data/client/hippo/models/sync.js +1 -1
  56. data/client/hippo/models/system-setting.js +0 -2
  57. data/client/hippo/models/tenant.js +0 -1
  58. data/client/hippo/screens/definition.js +0 -2
  59. data/client/hippo/screens/group.js +0 -2
  60. data/client/hippo/screens/instance.js +0 -3
  61. data/client/hippo/screens/system-settings/mailer-config.jsx +0 -3
  62. data/client/hippo/styles/global.scss +3 -0
  63. data/client/hippo/testing/mocks/fetch.js +6 -6
  64. data/client/hippo/user.js +4 -4
  65. data/client/hippo/workspace/index.jsx +12 -5
  66. data/client/hippo/workspace/root-view.jsx +10 -0
  67. data/command-reference-files/initial/.gitignore +1 -0
  68. data/command-reference-files/initial/Gemfile +1 -1
  69. data/command-reference-files/initial/client/appy-app/extension.js +4 -0
  70. data/command-reference-files/initial/config/webpack.config.js +25 -23
  71. data/config/routes.rb +4 -1
  72. data/config/webpack.config.js +1 -2
  73. data/hippo-fw.gemspec +4 -2
  74. data/lib/hippo.rb +0 -1
  75. data/lib/hippo/api/handlers/asset.rb +9 -0
  76. data/lib/hippo/api/updates.rb +2 -2
  77. data/lib/hippo/configuration.rb +0 -4
  78. data/lib/hippo/db.rb +2 -2
  79. data/lib/hippo/{rails.rb → db/fake_rails.rb} +0 -0
  80. data/lib/hippo/extension.rb +1 -2
  81. data/lib/hippo/mailer.rb +1 -0
  82. data/lib/hippo/spec_helper.rb +1 -0
  83. data/lib/hippo/version.rb +1 -1
  84. data/package-lock.json +626 -68
  85. data/package.json +14 -13
  86. data/spec/client/access/login-dialog.spec.jsx +1 -0
  87. data/spec/client/components/asset.spec.jsx +1 -2
  88. data/spec/client/components/date-time.spec.jsx +20 -0
  89. data/spec/client/extension/base.spec.js +0 -2
  90. data/spec/client/models/base.spec.js +4 -4
  91. data/spec/client/models/query.spec.js +2 -2
  92. data/spec/client/models/sync.spec.js +1 -1
  93. data/spec/client/screens/system-settings.spec.jsx +2 -1
  94. data/spec/client/setup.js +3 -0
  95. data/spec/client/test-models.js +0 -2
  96. data/spec/server/api/tenant_change_spec.rb +1 -1
  97. data/spec/server/api/tenant_isolation_spec.rb +6 -3
  98. data/spec/server/concerns/api_path_spec.rb +2 -2
  99. data/templates/.gitignore +1 -0
  100. data/templates/client/extension.js +4 -0
  101. data/templates/config/webpack.config.js +25 -23
  102. metadata +48 -12
  103. data/client/hippo/lib/pub_sub.js +0 -34
  104. data/client/hippo/react/viewport-root.jsx +0 -44
  105. data/spec/client/components/__snapshots__/asset.spec.jsx.snap +0 -48
  106. data/spec/client/screens/__snapshots__/system-settings.spec.jsx.snap +0 -443
  107. data/templates/gitignore +0 -4
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hippo-fw",
3
- "version": "0.9.3",
3
+ "version": "0.9.4",
4
4
  "description": "Hippo is a framework for easily writing single page web applications",
5
5
  "main": "client/hippo/index.js",
6
6
  "repository": "https://github.com/argosity/hippo",
@@ -10,11 +10,11 @@
10
10
  "client"
11
11
  ],
12
12
  "dependencies": {
13
- "actioncable": "^5.0.4",
13
+ "actioncable": "^5.1.1",
14
14
  "babel-core": "^6.25.0",
15
15
  "babel-eslint": "^7.2.3",
16
16
  "babel-jest": "^20.0.3",
17
- "babel-loader": "^7.0.0",
17
+ "babel-loader": "^7.1.0",
18
18
  "babel-plugin-lodash": "^3.2.11",
19
19
  "babel-plugin-transform-decorators-legacy": "^1.3.4",
20
20
  "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0",
@@ -34,30 +34,30 @@
34
34
  "core-decorators": "^0.19.0",
35
35
  "create-react-class": "^15.6.0",
36
36
  "css-loader": "^0.28.4",
37
- "date-fns": "^1.28.2",
38
37
  "domtastic": "^0.15.0",
39
- "enzyme": "^2.8.2",
38
+ "enzyme": "^2.9.0",
40
39
  "eslint": "^4.0.0",
41
40
  "eslint-config-argosity": "^1.1.3",
42
41
  "file-loader": "^0.11.2",
43
42
  "flexboxgrid": "^6.3.1",
44
43
  "grommet": "^1.4.0",
45
- "history": "^4.6.2",
44
+ "history": "^4.6.3",
46
45
  "identity-obj-proxy": "^3.0.0",
47
46
  "invariant": "^2.2.2",
48
47
  "jest": "^20.0.4",
49
48
  "jest-cli": "^20.0.4",
50
- "jest-enzyme": "^3.1.0",
49
+ "jest-enzyme": "^3.3.0",
51
50
  "jest-fetch-mock": "^1.0.7",
52
51
  "js-yaml": "^3.8.2",
53
52
  "jsdom": "^11.0.0",
54
53
  "lodash": "^4.17.4",
55
54
  "loglevel": "^1.4.1",
56
- "mobx": "^3.1.15",
55
+ "mobx": "^3.1.16",
57
56
  "mobx-decorated-models": "^0.5.2",
58
57
  "mobx-persist": "^0.3.3",
59
58
  "mobx-react": "^4.1.0",
60
59
  "node-sass": "^4.5.0",
60
+ "ory-editor": "^0.2.12",
61
61
  "pluralize": "^5.0.0",
62
62
  "prop-types": "^15.5.8",
63
63
  "qs": "^6.3.0",
@@ -66,9 +66,10 @@
66
66
  "react-addons-test-utils": "^15.6.0",
67
67
  "react-async-component": "^1.0.0-beta.3",
68
68
  "react-dom": "^15.6.1",
69
- "react-dropzone": "^3.10.0",
69
+ "react-dropzone": "^3.13.3",
70
70
  "react-flexbox-grid": "git+https://github.com/nathanstitt/react-flexbox-grid.git#devel",
71
71
  "react-hot-loader": "3.0.0-beta.6",
72
+ "react-input-slider": "^1.6.0",
72
73
  "react-motion": "^0.5.0",
73
74
  "react-native-storage": "^0.2.2",
74
75
  "react-router": "^4.1.1",
@@ -77,16 +78,16 @@
77
78
  "react-test-renderer": "^15.6.1",
78
79
  "react-tippy": "^0.14.0",
79
80
  "react-virtualized": "^9.8.0",
80
- "resolve-url-loader": "^2.0.2",
81
+ "resolve-url-loader": "^2.0.3",
81
82
  "rsvp": "^3.3.3",
82
83
  "sass-loader": "^6.0.6",
83
84
  "sockjs-client": "^1.1.4",
84
85
  "sprintf-js": "^1.0.3",
85
86
  "style-loader": "^0.18.2",
86
87
  "url-loader": "^0.5.9",
87
- "validator": "^7.0.0",
88
- "webpack": "^2.6.1",
89
- "webpack-dev-server": "^2.4.5",
88
+ "validator": "^7.1.0",
89
+ "webpack": "^3.0.0",
90
+ "webpack-dev-server": "^2.5.0",
90
91
  "whatwg-fetch": "^2.0.2",
91
92
  "when-dom-ready": "^1.2.4"
92
93
  }
@@ -23,6 +23,7 @@ describe('Login Dialog', () => {
23
23
  expect(dialog).not.toHaveRendered('LoginForm');
24
24
  return User.logout().then(() => {
25
25
  expect(dialog).not.toHaveRendered('LoginForm');
26
+ expect(Config.reset).toHaveBeenCalled();
26
27
  });
27
28
  });
28
29
  });
@@ -7,10 +7,9 @@ import { TestImage } from '../test-models';
7
7
  import { Snapshot } from 'hippo/testing/screens';
8
8
 
9
9
  describe("Asset Component", () => {
10
- it('renders and matches snapshot', () => {
10
+ it('renders', () => {
11
11
  const image = new TestImage();
12
12
  const asset = mount(<Asset model={image} name="asset" />);
13
13
  expect(asset).toHaveRendered('Dropzone');
14
- expect(Snapshot(<Asset model={image} name="asset" />)).toMatchSnapshot();
15
14
  });
16
15
  });
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import DateTime from 'hippo/components/date-time/date-time-drop';
3
+ import moment from 'moment';
4
+
5
+ describe('DateTime Component', () => {
6
+ let props;
7
+ beforeEach(() => {
8
+ props = {
9
+ value: moment('2017-06-26T21:33:13Z'),
10
+ onChange: jest.fn(),
11
+ };
12
+ });
13
+
14
+ it('sets time', () => {
15
+ const dt = mount(<DateTime {...props} />);
16
+ dt.find('.minutes').simulate('change', { target: { value: '42' } });
17
+ expect(props.onChange).toHaveBeenCalledWith(props.value);
18
+ expect(props.value.minute()).toEqual(42);
19
+ });
20
+ });
@@ -2,9 +2,7 @@ import { BaseExtension } from 'hippo/extensions/base';
2
2
  import { observable } from 'mobx';
3
3
 
4
4
  class TestExtension extends BaseExtension {
5
-
6
5
  @observable identifier = 'foo-bar-baz';
7
-
8
6
  }
9
7
 
10
8
  describe('Base Extension', () => {
@@ -27,15 +27,15 @@ describe('BaseModel Test', () => {
27
27
  const box = new Box({ id: 11, width: 5 });
28
28
  const spy = jest.fn();
29
29
  autorun(() => spy(box.syncUrl));
30
- expect(spy).toHaveBeenCalledWith('/api/test/boxes/11');
30
+ expect(spy).toHaveBeenCalledWith('/api/test/box/11');
31
31
  expect(box.id).toEqual(11);
32
32
  expect(box.identifierFieldValue).toEqual(11);
33
33
  expect(box.isNew).toEqual(false);
34
- expect(box.syncUrl).toEqual('/api/test/boxes/11');
34
+ expect(box.syncUrl).toEqual('/api/test/box/11');
35
35
  box.id = 42;
36
36
  expect(spy).toHaveBeenCalledTimes(2);
37
- expect(spy).toHaveBeenCalledWith('/api/test/boxes/42');
38
- expect(box.syncUrl).toEqual('/api/test/boxes/42');
37
+ expect(spy).toHaveBeenCalledWith('/api/test/box/42');
38
+ expect(box.syncUrl).toEqual('/api/test/box/42');
39
39
  });
40
40
 
41
41
  it('is set from sync', () => {
@@ -138,7 +138,7 @@ describe('Model Queries', () => {
138
138
  query.clauses[0].value = 'test value';
139
139
  query.results.fetch();
140
140
  expect(Sync.perform).toHaveBeenLastCalledWith(
141
- '/api/test/boxes', {
141
+ '/api/test/box', {
142
142
  total_count: 't',
143
143
  fields: ['id', 'label', 'width', 'height', 'depth'],
144
144
  query: { computed: { op: 'like', value: 'test value%' } },
@@ -227,7 +227,7 @@ describe('Model Queries', () => {
227
227
  expect(query.results.fullyLoaded).toEqual(false);
228
228
  query.setSort({ field: query.fields[2], ascending: true });
229
229
  expect(Sync.perform).toHaveBeenLastCalledWith(
230
- '/api/test/boxes', {
230
+ '/api/test/box', {
231
231
  total_count: 't',
232
232
  fields: ['id', 'label', 'width', 'height', 'depth'],
233
233
  order: { label: 'asc' },
@@ -43,7 +43,7 @@ describe('Network sync', () => {
43
43
  const body = JSON.stringify(box.syncData);
44
44
  Sync.forModel(box).then(() => expect(box.width).toEqual(12));
45
45
  expect(fetch).lastCalledWith(
46
- '/api/test/boxes/11.json',
46
+ '/api/test/box/11.json',
47
47
  { body, headers: { 'Content-Type': 'application/json' }, method: 'PUT' });
48
48
  });
49
49
  });
@@ -17,6 +17,7 @@ describe('SystemSettings Screen', () => {
17
17
  });
18
18
 
19
19
  it('renders', () => {
20
- expect(Snapshot(<Settings screen={instance} />)).toMatchSnapshot();
20
+ const settings = mount(<Settings screen={instance} />);
21
+ expect(settings).toHaveRendered('Screen');
21
22
  });
22
23
  });
@@ -3,6 +3,9 @@
3
3
  require('hippo/testing');
4
4
  const matchers = require('hippo/testing/matchers');
5
5
  const { shallow, mount } = require('enzyme');
6
+ const log = require('loglevel');
7
+
8
+ log.setLevel(log.levels.WARN);
6
9
 
7
10
  global.expect.extend(matchers);
8
11
 
@@ -30,7 +30,6 @@ export class TestImage extends BaseModel {
30
30
 
31
31
  @identifiedBy('test/box')
32
32
  export class Box extends BaseModel {
33
-
34
33
  @session visibleIdentifier;
35
34
 
36
35
  @session({ type: 'string' }) label;
@@ -50,7 +49,6 @@ export class Box extends BaseModel {
50
49
 
51
50
  @identifiedBy('test/container')
52
51
  export class Container extends BaseModel {
53
-
54
52
  @identifier({ type: 'string' }) id;
55
53
 
56
54
  @field name;
@@ -8,7 +8,7 @@ describe "Tenant changes", api: true, vcr: VCR_OPTS do
8
8
  let!(:user) { FactoryGirl.create :user, tenant: tenant, role_names: ['administrator'] }
9
9
 
10
10
  it 'sends email when tenant identifier changes' do
11
- post '/api/hippo/tenants.json', {
11
+ post '/api/hippo/tenant.json', {
12
12
  'slug' => 'RED'
13
13
  }.to_json, {
14
14
  'HTTP_AUTHORIZATION' => user.jwt_token,
@@ -9,8 +9,11 @@ describe "Tenant isoloation", api: true, vcr: VCR_OPTS do
9
9
  let!(:foo_user) { FactoryGirl.create :user, tenant: foo }
10
10
  let!(:bar_user) { FactoryGirl.create :user, tenant: bar }
11
11
 
12
+ before(:each) {
13
+ Hippo.logger.level = ::Logger::ERROR
14
+ }
12
15
  it 'isolates foo’s tenant data from bar' do
13
- get '/api/hippo/users.json', {} , {
16
+ get '/api/hippo/user.json', {} , {
14
17
  'HTTP_AUTHORIZATION' => foo_user.jwt_token,
15
18
  'SERVER_NAME' => "#{foo.slug}.example.ua" }
16
19
  ids = last_response_json['data'].map { |u| u['id'] }
@@ -19,7 +22,7 @@ describe "Tenant isoloation", api: true, vcr: VCR_OPTS do
19
22
  end
20
23
 
21
24
  it 'isolates bar’s tenant data from foo' do
22
- get '/api/hippo/users.json', {}, {
25
+ get '/api/hippo/user.json', {}, {
23
26
  'HTTP_AUTHORIZATION' => bar_user.jwt_token,
24
27
  'SERVER_NAME' => "#{bar.slug}.example.ua" }
25
28
  ids = last_response_json['data'].map { |u| u['id'] }
@@ -28,7 +31,7 @@ describe "Tenant isoloation", api: true, vcr: VCR_OPTS do
28
31
  end
29
32
 
30
33
  it 'disallows using a user’s token on incorrect domain' do
31
- get '/api/hippo/users.json', {}, {
34
+ get '/api/hippo/user.json', {}, {
32
35
  'HTTP_AUTHORIZATION' => foo_user.jwt_token,
33
36
  'SERVER_NAME' => "#{bar.slug}.example.ua" }
34
37
  expect(last_response).to_not be_ok
@@ -11,10 +11,10 @@ describe "ApiPath" do
11
11
  end
12
12
 
13
13
  it "generates path" do
14
- expect('test-models').to eq(TestModel.api_path)
14
+ expect('test-model').to eq(TestModel.api_path)
15
15
  end
16
16
 
17
17
  it "converts path to model" do
18
- expect(TestModel).to eq(Hippo::Model.from_api_path('test-models'))
18
+ expect(TestModel).to eq(Hippo::Model.from_api_path('test-model'))
19
19
  end
20
20
  end
@@ -2,3 +2,4 @@ node_modules
2
2
  public/assets
3
3
  tmp/cache
4
4
  log/*log
5
+ config/secrets.yml
@@ -25,6 +25,10 @@ export default class Extension extends BaseExtension {
25
25
  // the Base class will simply store the provided data as @data
26
26
  setBootstrapData() { return super.setBootstrapData(...arguments); }
27
27
 
28
+ // The root view that will be rendered when a screen is not being shown
29
+ // Return a different component here to customize
30
+ rootView() { return super.rootView(); }
31
+
28
32
  // A React component that should be rendered as part of the settings screen
29
33
  get systemSettingsComponent() {
30
34
  return null;
@@ -9,9 +9,9 @@ const entries = {
9
9
  };
10
10
 
11
11
  <%% unless Hippo.env.production? -%>
12
- for (var key in entries) {
13
- entries[key].unshift('react-hot-loader/patch');
14
- }
12
+ for (var key in entries) {
13
+ entries[key].unshift('react-hot-loader/patch');
14
+ }
15
15
  <%% end -%>
16
16
 
17
17
  const config = {
@@ -19,7 +19,7 @@ const config = {
19
19
  output: {
20
20
  path: '<%%= config_directory.join('..','public', 'assets') %>',
21
21
  publicPath: '<%%= Hippo.env.production? ? "https://assets.#{Hippo.config.website_domain}/assets/" : 'http://test.hippo.dev:8889/assets/' %>',
22
- filename: '[name]-[hash].js',
22
+ filename: '[name]-[hash].js',
23
23
  },
24
24
  resolve: {
25
25
  modules: [
@@ -63,17 +63,19 @@ const config = {
63
63
  },
64
64
  },
65
65
  { test: /\.scss$/,
66
- use: [
67
- 'style-loader',
68
- 'css-loader',
69
- 'resolve-url-loader',
70
- {
71
- loader: 'sass-loader',
72
- options: {
73
- includePaths: [path.resolve('./node_modules')],
74
- },
75
- },
76
- ],
66
+ use: [
67
+ 'style-loader',
68
+ 'css-loader',
69
+ 'resolve-url-loader',
70
+ {
71
+ loader: 'sass-loader',
72
+ options: {
73
+ includePaths: [
74
+ "<%%= Hippo::Extensions.client_module_paths.join('","') %>",
75
+ ],
76
+ },
77
+ },
78
+ ],
77
79
  },
78
80
  ],
79
81
  },
@@ -82,20 +84,20 @@ const config = {
82
84
  new webpack.DefinePlugin({
83
85
  'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
84
86
  }),
85
- <%% if Hippo.env.production? %>
87
+ <%% if Hippo.env.production? %>
86
88
  new webpack.optimize.UglifyJsPlugin(), //minify everything
87
89
  new webpack.optimize.AggressiveMergingPlugin(), //Merge chunks
88
90
  new webpack.optimize.OccurrenceOrderPlugin(), // use smallest id for most used chuncks
89
91
  new CompressionPlugin({
90
- asset: "[path].gz[query]",
91
- algorithm: "gzip",
92
- test: /\.(js|html)$/,
93
- threshold: 10240,
94
- minRatio: 0.8
92
+ asset: "[path].gz[query]",
93
+ algorithm: "gzip",
94
+ test: /\.(js|html)$/,
95
+ threshold: 10240,
96
+ minRatio: 0.8
95
97
  }),
96
- <%% else %>
98
+ <%% else %>
97
99
  new webpack.NamedModulesPlugin(),
98
- <%% end %>
100
+ <%% end %>
99
101
  ],
100
102
  node: {
101
103
  fs: 'empty',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hippo-fw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Stitt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-22 00:00:00.000000000 Z
11
+ date: 2017-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.0.0
19
+ version: 5.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.0.0
26
+ version: 5.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 5.0.0
33
+ version: 5.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 5.0.0
40
+ version: 5.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord-multi-tenant
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.6'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.6'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: litecable
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -677,6 +691,12 @@ files:
677
691
  - client/hippo/components/data-table.jsx
678
692
  - client/hippo/components/data-table/header-cell.jsx
679
693
  - client/hippo/components/data-table/table-styles.scss
694
+ - client/hippo/components/date-time.jsx
695
+ - client/hippo/components/date-time.scss
696
+ - client/hippo/components/date-time/calendar.jsx
697
+ - client/hippo/components/date-time/date-time-drop.jsx
698
+ - client/hippo/components/date-time/date-time.scss
699
+ - client/hippo/components/date-time/time.jsx
680
700
  - client/hippo/components/enabled.js.erb
681
701
  - client/hippo/components/field-validation.js
682
702
  - client/hippo/components/form.jsx
@@ -745,6 +765,25 @@ files:
745
765
  - client/hippo/components/shared/resize-sensor.scss
746
766
  - client/hippo/components/shared/styles.scss
747
767
  - client/hippo/components/shared/throbber.scss
768
+ - client/hippo/components/text-editor.jsx
769
+ - client/hippo/components/text-editor/display-modes/Button.jsx
770
+ - client/hippo/components/text-editor/display-modes/SaveState.jsx
771
+ - client/hippo/components/text-editor/display-modes/ToggleEdit.jsx
772
+ - client/hippo/components/text-editor/display-modes/ToggleInsert.jsx
773
+ - client/hippo/components/text-editor/display-modes/ToggleLayout.jsx
774
+ - client/hippo/components/text-editor/display-modes/TogglePreview.jsx
775
+ - client/hippo/components/text-editor/display-modes/ToggleResize.jsx
776
+ - client/hippo/components/text-editor/display-modes/index.css
777
+ - client/hippo/components/text-editor/display-modes/index.js
778
+ - client/hippo/components/text-editor/image-plugin/Component/Display/index.js
779
+ - client/hippo/components/text-editor/image-plugin/Component/Form/index.js
780
+ - client/hippo/components/text-editor/image-plugin/Component/index.js
781
+ - client/hippo/components/text-editor/image-plugin/Component/index.scss
782
+ - client/hippo/components/text-editor/image-plugin/index.js
783
+ - client/hippo/components/text-editor/image-plugin/index.scss
784
+ - client/hippo/components/text-editor/plugins.js
785
+ - client/hippo/components/text-editor/renderer.jsx
786
+ - client/hippo/components/text-editor/text-editor.scss
748
787
  - client/hippo/components/tool-tip.jsx
749
788
  - client/hippo/components/toolbar/changes-notification.scss
750
789
  - client/hippo/components/toolbar/index.js
@@ -769,7 +808,6 @@ files:
769
808
  - client/hippo/lib/bootstrap.js
770
809
  - client/hippo/lib/index.js.erb
771
810
  - client/hippo/lib/loader.js
772
- - client/hippo/lib/pub_sub.js
773
811
  - client/hippo/lib/request-assets.js
774
812
  - client/hippo/lib/smooth-scroll.js
775
813
  - client/hippo/lib/util.js
@@ -796,7 +834,6 @@ files:
796
834
  - client/hippo/react/DefaultComponentNotFound.jsx
797
835
  - client/hippo/react/Root.jsx
798
836
  - client/hippo/react/index.js
799
- - client/hippo/react/viewport-root.jsx
800
837
  - client/hippo/screens/all.js.erb
801
838
  - client/hippo/screens/definition.js
802
839
  - client/hippo/screens/group.js
@@ -846,6 +883,7 @@ files:
846
883
  - client/hippo/workspace/menu-option.jsx
847
884
  - client/hippo/workspace/menu.jsx
848
885
  - client/hippo/workspace/navbar.jsx
886
+ - client/hippo/workspace/root-view.jsx
849
887
  - client/hippo/workspace/screen.jsx
850
888
  - client/hippo/workspace/styles.scss
851
889
  - client/hippo/workspace/styles/forms.scss
@@ -1011,6 +1049,7 @@ files:
1011
1049
  - lib/hippo/concerns/sorting_expressions.rb
1012
1050
  - lib/hippo/configuration.rb
1013
1051
  - lib/hippo/db.rb
1052
+ - lib/hippo/db/fake_rails.rb
1014
1053
  - lib/hippo/db/migrations.rb
1015
1054
  - lib/hippo/environment.rb
1016
1055
  - lib/hippo/extension.rb
@@ -1023,7 +1062,6 @@ files:
1023
1062
  - lib/hippo/mailer.rb
1024
1063
  - lib/hippo/model.rb
1025
1064
  - lib/hippo/numbers.rb
1026
- - lib/hippo/rails.rb
1027
1065
  - lib/hippo/rake_tasks.rb
1028
1066
  - lib/hippo/redis.rb
1029
1067
  - lib/hippo/reloadable_sinatra.rb
@@ -1051,13 +1089,13 @@ files:
1051
1089
  - package.json
1052
1090
  - spec/client/.eslintrc.js
1053
1091
  - spec/client/access/login-dialog.spec.jsx
1054
- - spec/client/components/__snapshots__/asset.spec.jsx.snap
1055
1092
  - spec/client/components/__snapshots__/master-detail.spec.jsx.snap
1056
1093
  - spec/client/components/__snapshots__/network-activity-overlay.spec.jsx.snap
1057
1094
  - spec/client/components/__snapshots__/query-builder.spec.jsx.snap
1058
1095
  - spec/client/components/asset.spec.jsx
1059
1096
  - spec/client/components/data-list.spec.jsx
1060
1097
  - spec/client/components/data-table.spec.jsx
1098
+ - spec/client/components/date-time.spec.jsx
1061
1099
  - spec/client/components/form.spec.jsx
1062
1100
  - spec/client/components/master-detail.spec.jsx
1063
1101
  - spec/client/components/network-activity-overlay.spec.jsx
@@ -1072,7 +1110,6 @@ files:
1072
1110
  - spec/client/models/query.spec.js
1073
1111
  - spec/client/models/sync.spec.js
1074
1112
  - spec/client/models/system-setting.spec.js
1075
- - spec/client/screens/__snapshots__/system-settings.spec.jsx.snap
1076
1113
  - spec/client/screens/__snapshots__/tabs.spec.jsx.snap
1077
1114
  - spec/client/screens/definition.spec.js
1078
1115
  - spec/client/screens/group.spec.js
@@ -1163,7 +1200,6 @@ files:
1163
1200
  - templates/config/screens.rb
1164
1201
  - templates/config/webpack.config.js
1165
1202
  - templates/db/create_table_migration.rb
1166
- - templates/gitignore
1167
1203
  - templates/js/config-data.js
1168
1204
  - templates/js/jest.config.json
1169
1205
  - templates/js/root-view.html