cm-admin 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +12 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +6 -1
  6. data/Gemfile.lock +118 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +6 -40
  9. data/app/assets/images/logo.png +0 -0
  10. data/{lib/generators/cm_admin/templates/assets/stylesheets → app/assets/stylesheets/cm_admin}/base/auth.scss +16 -6
  11. data/app/assets/stylesheets/cm_admin/base/common.scss +237 -0
  12. data/app/assets/stylesheets/cm_admin/base/filters.scss +199 -0
  13. data/app/assets/stylesheets/cm_admin/base/form.scss +262 -0
  14. data/app/assets/stylesheets/cm_admin/base/main-nav.scss +47 -0
  15. data/app/assets/stylesheets/cm_admin/base/navbar.scss +67 -0
  16. data/app/assets/stylesheets/cm_admin/base/quicksearch.scss +69 -0
  17. data/app/assets/stylesheets/cm_admin/base/scaffold.scss +61 -0
  18. data/app/assets/stylesheets/cm_admin/base/show.scss +54 -0
  19. data/app/assets/stylesheets/cm_admin/base/sidebar.scss +225 -0
  20. data/app/assets/stylesheets/cm_admin/base/table.scss +303 -0
  21. data/app/assets/stylesheets/cm_admin/base/tabs.scss +26 -0
  22. data/app/assets/stylesheets/cm_admin/cm_admin.css.scss +26 -0
  23. data/app/assets/stylesheets/cm_admin/components/_alerts.scss +101 -0
  24. data/app/assets/stylesheets/cm_admin/components/_buttons.scss +135 -0
  25. data/app/assets/stylesheets/cm_admin/components/_dropdown-popup.scss +141 -0
  26. data/app/assets/stylesheets/cm_admin/components/_input.scss +274 -0
  27. data/app/assets/stylesheets/cm_admin/components/_modal.scss +34 -0
  28. data/app/assets/stylesheets/cm_admin/components/_range.scss +20 -0
  29. data/app/assets/stylesheets/cm_admin/components/_status-tag.scss +67 -0
  30. data/app/assets/stylesheets/cm_admin/components/index.scss +7 -0
  31. data/app/assets/stylesheets/cm_admin/dependency/bootstrap.min.css +7 -0
  32. data/app/assets/stylesheets/cm_admin/helpers/_mixins.scss +20 -0
  33. data/app/assets/stylesheets/cm_admin/helpers/_variable.scss +86 -0
  34. data/app/assets/stylesheets/cm_admin/helpers/index.scss +2 -0
  35. data/app/controllers/cm_admin/application_controller.rb +6 -0
  36. data/app/controllers/cm_admin/exports_controller.rb +16 -0
  37. data/app/controllers/cm_admin/main_controller.rb +8 -0
  38. data/app/helpers/cm_admin/application_helper.rb +11 -0
  39. data/app/javascript/packs/cm_admin/application.js +9 -0
  40. data/app/javascript/packs/cm_admin/filters.js +32 -0
  41. data/app/javascript/packs/cm_admin/scaffolds.js +14 -0
  42. data/app/views/cm_admin/main/_cm_pagy_nav.html.slim +23 -0
  43. data/app/views/cm_admin/main/_filters.html.slim +10 -0
  44. data/app/views/cm_admin/main/_table.html.slim +59 -0
  45. data/app/views/cm_admin/main/_top_navbar.html.slim +25 -0
  46. data/app/views/cm_admin/main/dashboard.html.slim +1 -0
  47. data/app/views/cm_admin/main/edit.html.slim +19 -0
  48. data/app/views/cm_admin/main/index.html.slim +9 -0
  49. data/app/views/cm_admin/main/new.html.slim +22 -0
  50. data/app/views/cm_admin/main/show.html.slim +13 -0
  51. data/app/views/layouts/_left_sidebar_nav.html.slim +30 -0
  52. data/app/views/layouts/cm_admin.html.slim +18 -0
  53. data/bin/console +1 -0
  54. data/bin/webpack +18 -0
  55. data/bin/webpack-dev-server +18 -0
  56. data/cm_admin.gemspec +20 -31
  57. data/{lib → config}/.DS_Store +0 -0
  58. data/config/initializers/active_record_extension.rb +9 -0
  59. data/config/routes.rb +18 -0
  60. data/config/webpack/development.js +5 -0
  61. data/config/webpack/environment.js +12 -0
  62. data/config/webpack/production.js +5 -0
  63. data/config/webpack/test.js +5 -0
  64. data/config/webpacker.yml +92 -0
  65. data/lib/c.png +0 -0
  66. data/lib/cm_admin.rb +31 -2
  67. data/lib/cm_admin/constants.rb +33 -0
  68. data/lib/cm_admin/engine.rb +38 -0
  69. data/lib/cm_admin/model.rb +262 -0
  70. data/lib/cm_admin/models/action.rb +22 -0
  71. data/lib/cm_admin/models/actions/blocks.rb +25 -0
  72. data/lib/cm_admin/models/blocks.rb +19 -0
  73. data/lib/cm_admin/models/column.rb +16 -0
  74. data/lib/cm_admin/models/export.rb +43 -0
  75. data/lib/cm_admin/models/field.rb +14 -0
  76. data/lib/cm_admin/models/filter.rb +30 -0
  77. data/lib/cm_admin/utils.rb +67 -0
  78. data/lib/cm_admin/version.rb +1 -1
  79. data/lib/cm_admin/view_helpers.rb +72 -0
  80. data/lib/cm_admin/view_helpers/field_column_helper.rb +23 -0
  81. data/lib/cm_admin/view_helpers/form_field_helper.rb +16 -0
  82. data/lib/cm_admin/view_helpers/form_helper.rb +55 -0
  83. data/lib/cm_admin/view_helpers/navigation_helper.rb +18 -0
  84. data/lib/cm_admin/view_helpers/page_info_helper.rb +21 -0
  85. data/lib/generators/cm_admin/install_generator.rb +10 -32
  86. data/lib/generators/cm_admin/templates/cm_admin_initializer.rb +4 -0
  87. data/lib/tasks/webpack_install.rake +63 -0
  88. data/package.json +18 -0
  89. data/postcss.config.js +12 -0
  90. data/yarn-error.log +44 -0
  91. data/yarn.lock +6903 -0
  92. metadata +123 -48
  93. data/CODE_OF_CONDUCT.md +0 -74
  94. data/lib/generators/cm_admin/USAGE +0 -8
  95. data/lib/generators/cm_admin/templates/assets/images/cm.png +0 -0
  96. data/lib/generators/cm_admin/templates/assets/stylesheets/application.css.scss +0 -33
  97. data/lib/generators/cm_admin/templates/assets/stylesheets/base/_variable.scss +0 -14
  98. data/lib/generators/cm_admin/templates/assets/stylesheets/base/form.scss +0 -125
  99. data/lib/generators/cm_admin/templates/assets/stylesheets/base/input-styles.scss +0 -72
  100. data/lib/generators/cm_admin/templates/assets/stylesheets/base/main-nav.scss +0 -79
  101. data/lib/generators/cm_admin/templates/assets/stylesheets/base/scaffold.scss +0 -95
  102. data/lib/generators/cm_admin/templates/assets/stylesheets/base/show.scss +0 -88
  103. data/lib/generators/cm_admin/templates/assets/stylesheets/base/sidebar.scss +0 -69
  104. data/lib/generators/cm_admin/templates/assets/stylesheets/base/table.scss +0 -246
  105. data/lib/generators/cm_admin/templates/layouts/_navbar.html.slim +0 -8
  106. data/lib/generators/cm_admin/templates/layouts/_side_navbar.html.slim +0 -12
  107. data/lib/generators/cm_admin/templates/layouts/application.html.slim +0 -20
  108. data/lib/generators/cm_admin/templates/layouts/initializer.rb +0 -2
  109. data/lib/generators/cm_admin/templates/views/_form.erb +0 -67
  110. data/lib/generators/cm_admin/templates/views/_table.erb +0 -22
  111. data/lib/generators/cm_admin/templates/views/edit.erb +0 -10
  112. data/lib/generators/cm_admin/templates/views/index.erb +0 -11
  113. data/lib/generators/cm_admin/templates/views/new.erb +0 -10
  114. data/lib/generators/cm_admin/templates/views/reset_password.erb +0 -12
  115. data/lib/generators/cm_admin/templates/views/show.erb +0 -18
  116. data/lib/generators/cm_admin/templates/views/sign_in.erb +0 -18
  117. data/lib/generators/cm_admin/view_generator.rb +0 -78
@@ -0,0 +1,199 @@
1
+ @import "../helpers/index.scss";
2
+
3
+ .cm-filters-v2 {
4
+ position: fixed;
5
+ top: 140px;
6
+ left: 225px;
7
+ width: calc(100% - 225px);
8
+ min-height: 64px;
9
+ padding: 16px 24px;
10
+ background-color: $white;
11
+ z-index: 1;
12
+ &__inner {
13
+ @include flex(row, flex-start, center, wrap);
14
+ .filter-chips-wrapper {
15
+ .filter-chip {
16
+ margin-left: 16px
17
+ }
18
+ }
19
+ .add-filter-btn {
20
+ font-size: $t4-text;
21
+ line-height: 22px;
22
+ font-weight: 600;
23
+ color: $primary-text-clr;
24
+ margin-left: 16px;
25
+ cursor: pointer;
26
+ span {
27
+ margin-right: 4px;
28
+ }
29
+ }
30
+ .clear-btn {
31
+ position: relative;
32
+ font-size: $t4-text;
33
+ line-height: 22px;
34
+ font-weight: 600;
35
+ color: $ink-lighter-clr;
36
+ margin-left: 32px;
37
+ cursor: pointer;
38
+ &::before {
39
+ content: '';
40
+ position: absolute;
41
+ top: -5px;
42
+ left: -16px;
43
+ height: 32px;
44
+ border-left: 1px solid $grey-regular-clr;
45
+ }
46
+ }
47
+ }
48
+ }
49
+
50
+ .cm-filters {
51
+ @include flex(row, space-between, flex-start, nowrap);
52
+ position: fixed;
53
+ top: 140px;
54
+ width: 100%;
55
+ min-height: 60px;
56
+ padding: 10px 20px;
57
+ background-color: $white;
58
+ box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.06);
59
+ z-index: 1;
60
+ @media screen and (max-width: 1280px) {
61
+ flex-wrap: wrap;
62
+ }
63
+ &__lhs {
64
+ @include flex(row, flex-start, center, wrap);
65
+ width: 75%;
66
+ .filter-field {
67
+ position: relative;
68
+ width: 250px;
69
+ margin: 4px 10px 4px 0;
70
+ align-self: center;
71
+ @media screen and (max-width: 1280px) {
72
+ margin-bottom: 10px;
73
+ }
74
+
75
+ //input-styles
76
+ input {
77
+ width: 100%;
78
+ height: 39px;
79
+ border: 1px solid #ccc;
80
+ border-radius: $radius-4;
81
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
82
+ &:focus {
83
+ border-color: $brand-color !important;
84
+ outline: 0 !important;
85
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6) !important;
86
+ }
87
+ }
88
+
89
+ //select2 styles
90
+ .select2 {
91
+ width: 100% !important;
92
+ .selection {
93
+ //single-select-styles
94
+ .select2-selection--single {
95
+ height: 39px;
96
+ border: 1px solid #ccc;
97
+ border-radius: $radius-4;
98
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
99
+ &:focus {
100
+ border-color: $brand-color;
101
+ outline: 0;
102
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
103
+ }
104
+ .select2-selection__rendered {
105
+ color: #555555;
106
+ line-height: 36px;
107
+ .select2-search--inline {
108
+ .select2-search__field {
109
+ height: 26px !important;
110
+ }
111
+ }
112
+ }
113
+ .select2-selection__arrow {
114
+ top: 7px;
115
+ b {
116
+ border-color: $brand-color transparent transparent transparent;
117
+ }
118
+ }
119
+ }
120
+ //multi-select-styles
121
+ .select2-selection--multiple {
122
+ max-height: 39px;
123
+ border: 1px solid #ccc;
124
+ border-radius: $radius-4;
125
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
126
+ overflow-y: auto;
127
+ .select2-selection__rendered {
128
+ .select2-search--inline {
129
+ .select2-search__field {
130
+ height: 26px !important;
131
+ border: none;
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+ }
138
+
139
+ //single-select-arrow-styles
140
+ .select2-container--open {
141
+ .selection {
142
+ .select2-selection--single {
143
+ .select2-selection__arrow {
144
+ top: 7px;
145
+ b {
146
+ border-color: transparent transparent $brand-color transparent;
147
+ }
148
+ }
149
+ }
150
+ }
151
+ }
152
+
153
+ .filter-rangepicker {
154
+ padding: 6px 12px;
155
+ color: #172b4d;
156
+ font-size: 16px;
157
+ }
158
+
159
+ .field-area {
160
+ display: block;
161
+ padding: 6px 12px;
162
+ font-size: 16px;
163
+ color: #555555;
164
+ }
165
+ .search-icon {
166
+ position: absolute;
167
+ top: 10px;
168
+ right: 15px;
169
+ color: $brand-color;
170
+ }
171
+ .down-arrow-icon {
172
+ position: absolute;
173
+ top: 10px;
174
+ right: 15px;
175
+ font-size: 20px;
176
+ color: $brand-color;
177
+ }
178
+ }
179
+ }
180
+ &__rhs {
181
+ width: 25%;
182
+ text-align: right;
183
+ .filter-btn {
184
+ padding: 5px 10px;
185
+ color: $white;
186
+ font-size: 16px;
187
+ background-color: $brand-color;
188
+ border: none;
189
+ border-radius: $radius-4;
190
+ transition: all 0.2s linear;
191
+ &:hover {
192
+ transform: scale(1.2);
193
+ }
194
+ span {
195
+ margin-right: 5px;
196
+ }
197
+ }
198
+ }
199
+ }
@@ -0,0 +1,262 @@
1
+ @import "../helpers/index.scss";
2
+
3
+ @function size($size) {
4
+ @return map-get($font-size, $size);
5
+ }
6
+
7
+ @function weight($weight) {
8
+ @return map-get($font-weight, $weight);
9
+ }
10
+
11
+ .form-page {
12
+ margin-top: 140px;
13
+ padding: 24px;
14
+ background-color: $white;
15
+ &__inner {
16
+ max-width: 752px;
17
+ }
18
+ .form-wrapper {
19
+ .form-container {
20
+ .form-title {
21
+ @include font($size: $t3-text, $color: $primary-text-clr, $weight: bold);
22
+ line-height: 24px;
23
+ margin: 0 0 16px;
24
+ }
25
+ &__inner {
26
+ padding: 24px;
27
+ border: 1px solid $grey-light-clr;
28
+ border-radius: $radius-4;
29
+ .form-field {
30
+ max-width: 320px;
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+ //Old form code
38
+ .form-wrapper {
39
+ // margin-top: 60px;
40
+
41
+ &__top-bar {
42
+ position: fixed;
43
+ top: 60px;
44
+ left: 250px;
45
+ display: flex;
46
+ align-items: center;
47
+ width: calc(100% - 250px);
48
+ height: 60px;
49
+ padding: 0 20px;
50
+ background-color: $white;
51
+ box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.06);
52
+ z-index: 9;
53
+ .back-btn {
54
+ @include font($size: $t1-text, $color: #091e42);
55
+ cursor: pointer;
56
+ span {
57
+ color: #0099ff;
58
+ margin-right: 8px;
59
+ }
60
+ }
61
+ }
62
+
63
+ &__inner {
64
+ margin-top: 120px;
65
+ padding: 20px;
66
+ .paper {
67
+ padding: 20px;
68
+ background-color: $white;
69
+ box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1);
70
+ border: 1px solid #ebecf0;
71
+ border-radius: $radius-4;
72
+ }
73
+ }
74
+
75
+ .custom-form {
76
+ max-width: 700px;
77
+ .form-field {
78
+ margin-bottom: 20px;
79
+ .form-label {
80
+ font-weight: 600;
81
+ color: #172b4d;
82
+ font-size: 14px;
83
+ margin-bottom: 0.5rem;
84
+ }
85
+ .form-input {
86
+ label {
87
+ @include font($size: $t4-text, $color: #172b4d, $weight: bold);
88
+ }
89
+ input {
90
+ width: 100%;
91
+ padding: 5px 10px;
92
+ border: 1px solid #c1c7d0;
93
+ border-radius: $radius-2;
94
+ &:focus {
95
+ border-color: #66afe9 !important;
96
+ outline: 0 !important;
97
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6) !important;
98
+ }
99
+ }
100
+ }
101
+
102
+ .form-select {
103
+ //select2 styles
104
+ .select2 {
105
+ width: 100% !important;
106
+ .selection {
107
+ //single-select-styles
108
+ .select2-selection--single {
109
+ height: 39px;
110
+ border: 1px solid #c1c7d0;
111
+ border-radius: $radius-2;
112
+ &:focus {
113
+ border-color: #66afe9;
114
+ outline: 0;
115
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
116
+ }
117
+ .select2-selection__rendered {
118
+ color: #555555;
119
+ line-height: 36px;
120
+ .select2-search--inline {
121
+ .select2-search__field {
122
+ height: 26px !important;
123
+ }
124
+ }
125
+ }
126
+ .select2-selection__arrow {
127
+ top: 7px;
128
+ b {
129
+ border-color: #0099ff transparent transparent transparent;
130
+ }
131
+ }
132
+ }
133
+ //multi-select-styles
134
+ .select2-selection--multiple {
135
+ max-height: 39px;
136
+ border: 1px solid #c1c7d0;
137
+ border-radius: $radius-2;
138
+ overflow-y: auto;
139
+ .select2-selection__rendered {
140
+ .select2-search--inline {
141
+ .select2-search__field {
142
+ height: 26px !important;
143
+ border: none;
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
+ //single-select-arrow-styles
152
+ .select2-container--open {
153
+ .selection {
154
+ .select2-selection--single {
155
+ .select2-selection__arrow {
156
+ top: 7px;
157
+ b {
158
+ border-color: transparent transparent #0099ff transparent;
159
+ }
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
165
+
166
+ .file-upload {
167
+ position: relative;
168
+ display: flex;
169
+ justify-content: center;
170
+ align-items: center;
171
+ width: 250px;
172
+ height: 80px;
173
+ border: 2px dashed #c1c7d0;
174
+ border-radius: $radius-4;
175
+ cursor: pointer;
176
+ input[type="file"] {
177
+ position: absolute;
178
+ top: 0;
179
+ right: 0;
180
+ bottom: 0;
181
+ left: 0;
182
+ opacity: 0;
183
+ cursor: pointer;
184
+ }
185
+ span {
186
+ text-align: center;
187
+ color: #0099ff;
188
+ margin: 0;
189
+ cursor: pointer;
190
+ }
191
+ i {
192
+ color: #0099ff;
193
+ margin-left: 8px;
194
+ }
195
+ }
196
+
197
+ .radio-label {
198
+ color: #172b4d;
199
+ font-size: size(16);
200
+ font-weight: weight(bold);
201
+ margin-left: 8px;
202
+ }
203
+
204
+ .checkbox-label {
205
+ color: #172b4d;
206
+ font-size: size(16);
207
+ font-weight: weight(bold);
208
+ margin-left: 8px;
209
+ }
210
+ }
211
+
212
+ .form-actions {
213
+ input {
214
+ padding: 5px 10px;
215
+ color: $white;
216
+ background-color: #0099ff;
217
+ border: none;
218
+ border-radius: $radius-4;
219
+ }
220
+ }
221
+ }
222
+ }
223
+
224
+ //cocoon field styles
225
+ .fields-group {
226
+ display: flex;
227
+ align-items: center;
228
+ margin: 16px 0;
229
+ .field-item {
230
+ margin: 0 5px;
231
+ label {
232
+ @include font($size: $t4-text, $color: #172b4d, $weight: bold);
233
+ margin-bottom: 4px;
234
+ }
235
+ input {
236
+ width: 100%;
237
+ padding: 5px 10px;
238
+ border: 1px solid #c1c7d0;
239
+ border-radius: $radius-2;
240
+ &:focus {
241
+ border-color: #66afe9 !important;
242
+ outline: 0 !important;
243
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6) !important;
244
+ }
245
+ }
246
+ }
247
+ .field-remove {
248
+ margin-top: 25px;
249
+ a {
250
+ @include font($size: $t1-text, $color: #ff5656);
251
+ @include transition-linear;
252
+ &:hover {
253
+ transform: scale(1.1);
254
+ }
255
+ }
256
+ }
257
+ }
258
+
259
+ .add-field-btn {
260
+ font-size: 14px;
261
+ margin: 10px 0;
262
+ }