isite 2022.8.3 → 2022.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +7 -7
  2. package/apps/client-side/app.js +255 -182
  3. package/apps/client-side/site_files/css/bootstrap5-addon.css +87 -4
  4. package/apps/client-side/site_files/css/bootstrap5.css +1 -1
  5. package/apps/client-side/site_files/css/bootstrap5.css.map +1 -0
  6. package/apps/client-side/site_files/css/dropdown.css +22 -4
  7. package/apps/client-side/site_files/css/effect.css +342 -283
  8. package/apps/client-side/site_files/css/images.css +10 -7
  9. package/apps/client-side/site_files/css/layout.css +37 -44
  10. package/apps/client-side/site_files/css/modal.css +1 -1
  11. package/apps/client-side/site_files/css/normalize.css +146 -0
  12. package/apps/client-side/site_files/css/scrollbar.css +9 -5
  13. package/apps/client-side/site_files/css/table.css +3 -3
  14. package/apps/client-side/site_files/html/directive/i-button.html +5 -0
  15. package/apps/client-side/site_files/html/directive/i-checkbox.html +4 -0
  16. package/apps/client-side/site_files/html/directive/i-checklist.html +6 -0
  17. package/apps/client-side/site_files/html/directive/i-control.html +5 -0
  18. package/apps/client-side/site_files/html/directive/i-date.html +24 -0
  19. package/apps/client-side/site_files/html/directive/i-datetime.html +31 -0
  20. package/apps/client-side/site_files/html/{sub/i-file.content.html → directive/i-file.html} +3 -5
  21. package/apps/client-side/site_files/html/directive/i-image.html +7 -0
  22. package/apps/client-side/site_files/html/directive/i-list.html +20 -0
  23. package/apps/client-side/site_files/html/directive/i-radio.html +4 -0
  24. package/apps/client-side/site_files/html/directive/i-textarea.html +4 -0
  25. package/apps/client-side/site_files/html/directive/i-treenode.html +20 -0
  26. package/apps/client-side/site_files/html/directive/i-treeview.html +13 -0
  27. package/apps/client-side/site_files/html/directive/i-upload.html +5 -0
  28. package/apps/client-side/site_files/html/directive-core/i-date.html +64 -0
  29. package/apps/client-side/site_files/html/directive-core/i-list.html +22 -0
  30. package/apps/client-side/site_files/images/no.jpg +0 -0
  31. package/apps/client-side/site_files/js/bootstrap-5-directive.js +278 -998
  32. package/apps/client-side/site_files/js/bootstrap.js.map +1 -0
  33. package/apps/client-side/site_files/js/directive.js +1865 -2044
  34. package/apps/client-side/site_files/js/directive.min.js +2 -2
  35. package/apps/client-side/site_files/js/site.js +19 -3
  36. package/apps/security/site_files/html/login_modal.html +18 -26
  37. package/index.js +277 -278
  38. package/isite_files/images/no.jpg +0 -0
  39. package/lib/cookie.js +3 -5
  40. package/lib/email.js +108 -0
  41. package/lib/integrated.js +10 -26
  42. package/lib/parser.js +519 -509
  43. package/lib/routing.js +23 -15
  44. package/lib/security.js +1109 -1081
  45. package/lib/sessions.js +182 -247
  46. package/object-options/index.js +24 -4
  47. package/object-options/lib/fn.js +6 -3
  48. package/package.json +5 -3
  49. package/pull.bat +3 -0
  50. package/push.bat +2 -5
  51. package/apps/client-side/site_files/html/sub/i-date2.content.html +0 -64
  52. package/apps/client-side/site_files/html/sub/i-list.content.html +0 -31
  53. package/apps/client-side/site_files/html/sub/i-list2.content.html +0 -22
package/lib/sessions.js CHANGED
@@ -1,272 +1,207 @@
1
1
  module.exports = function init(____0) {
2
- const sessions = function () {};
3
- sessions.list = [];
4
- let $sessions = {};
5
-
6
- if (____0.options.mongodb.enabled) {
7
- $sessions = ____0.connectCollection({
8
- db: ____0.options.session.db,
9
- collection: ____0.options.session.collection,
10
- });
11
- }
12
-
13
- ____0.on('[session][update]', (session) => {
14
- sessions.list.forEach((s) => {
15
- if (s.accessToken == session.accessToken) {
16
- for (let key in session) {
17
- if (session.hasOwnProperty(key) && key !== 'accessToken') {
18
- key = key.toLowerCase();
19
- for (let i = 0; i < s.data.length; i++) {
20
- let obj = s.data[i];
21
- if (obj.key === key) {
22
- s.data[i] = {
23
- key: key,
24
- value: session[key],
25
- };
26
- }
27
- }
28
- s.data.push({
29
- key: key,
30
- value: session[key],
31
- });
32
- }
33
- }
34
- }
35
- });
36
- });
37
- ____0.on('[session][delete]', (session) => {
38
- sessions.list.forEach((s, i) => {
39
- if (s.accessToken == session.accessToken) {
40
- sessions.list.splice(i, 1);
41
- }
42
- });
43
- });
44
- ____0.on('[session][user][update]', (user) => {
45
- sessions.list.forEach((s) => {
46
- if (s.user && s.user.id == user.id) {
47
- s.user = user;
48
- }
49
- });
50
- });
51
-
52
- sessions.loadAll = function (callback) {
53
- callback =
54
- callback ||
55
- function (err, docs) {
56
- if (!err && docs) {
57
- sessions.list = docs;
58
- }
59
- };
60
-
61
- if (____0.options.session.storage !== 'mongodb' || ____0.options.mongodb.enabled === !1) {
62
- callback(
63
- {
64
- message: 'storage not monodb',
65
- },
66
- null,
67
- );
68
-
69
- return;
70
- }
71
-
72
- $sessions.findMany(
73
- {
74
- where: {},
75
- select: {},
76
- limit: 100000,
77
- },
78
- function (err, docs) {
79
- callback(err, docs);
80
- },
81
- );
82
- };
83
-
84
- ____0.getSession = sessions.attach = function (session, callback) {
85
- callback = callback || function () {};
86
- session.$exists = !1;
87
-
88
- if (session.accessToken) {
89
- sessions.list.forEach((s, i) => {
90
- if (s.accessToken && s.accessToken == session.accessToken) {
91
- session.$exists = !0;
92
- session.$index = i;
93
- }
94
- });
2
+ const sessions = function () {};
3
+ sessions.list = [];
4
+ sessions.path = ____0.path.resolve(____0.cwd + '/' + ____0.options.name + '_' + 'sessions.db');
5
+ sessions.$collection = ____0.connectCollection({ collection: ____0.options.session.collection, db: ____0.options.session.db });
6
+
7
+ sessions.loadAll = function (callback) {
8
+ callback =
9
+ callback ||
10
+ function (err, docs) {
11
+ if (!err && docs) {
12
+ sessions.list = docs;
95
13
  }
96
-
97
- if (!session.$exists) {
98
- session.$new = !0;
99
- session.lang = ____0.options.lang;
100
- session.theme = ____0.options.theme;
101
- session.data = [];
102
- session.ip_info = session.ip_info || {};
103
- session.requestesCount = 1;
104
- session.createdTime = new Date().getTime();
105
- session.$index = sessions.list.length;
106
- sessions.list.push(session);
14
+ };
15
+ if (____0.options.session.storage === 'mongodb') {
16
+ sessions.$collection.findAll({}, (err, docs) => {
17
+ callback(err, docs);
18
+ });
19
+ } else {
20
+ let ss = ____0.readFileSync(sessions.path);
21
+ if (ss) {
22
+ try {
23
+ ss = JSON.parse(ss);
24
+ callback(null, ss);
25
+ console.log(' ... sessions Loaded From ...' + sessions.path);
26
+ } catch (err) {
27
+ console.log(err.message);
107
28
  }
29
+ }
30
+ }
108
31
 
109
- callback(sessions.list[session.$index]);
110
- return sessions.list[session.$index];
111
- };
112
-
113
- ____0.saveSession = sessions.save = function (session, callback) {
114
- callback = callback || function () {};
115
- session.$exists = !1;
32
+ return;
33
+ };
116
34
 
117
- if (session.$index && sessions.list[session.$index]) {
118
- sessions.list[session.$index] = { ...sessions.list[session.$index], ...session };
119
- callback(sessions.list[session.$index]);
120
- return sessions.list[session.$index];
121
- } else {
122
- sessions.list.forEach((s, i) => {
123
- if (session.$exists) {
124
- return;
125
- }
126
- if (s.accessToken == session.accessToken) {
127
- sessions.list[i] = { ...sessions.list[i], ...session };
128
- session.$exists = !0;
129
- session.$index = i;
130
- callback(sessions.list[session.$index]);
131
- return sessions.list[session.$index];
132
- }
133
- });
35
+ sessions.saveAll = function (callback) {
36
+ callback =
37
+ callback ||
38
+ function (err) {
39
+ if (err) {
40
+ console.log(err.message);
134
41
  }
135
- return sessions.list[session.$index];
136
- };
42
+ };
137
43
 
138
- ____0.on('[any][saving data]', function () {
139
- sessions.saveAll();
44
+ if (____0.options.session.timeout === 0 || !____0.options.session.enabled) {
45
+ callback({
46
+ message: 'Timout is Zero or not Enabled , Sessions Will Not Saved',
47
+ });
48
+ return;
49
+ }
50
+
51
+ sessions.list.forEach((s, i) => {
52
+ let online = new Date().getTime() - s.createdTime;
53
+ let timeout = 1000 * 60 * ____0.options.session.timeout;
54
+ if (online > timeout) {
55
+ sessions.list.splice(i, 1);
56
+ }
140
57
  });
58
+ if (____0.options.session.storage === 'mongodb') {
59
+ sessions.$collection.deleteAll({}, (err, docs) => {
60
+ sessions.$collection.insertAll(sessions.list, (err, docs) => {
61
+ callback(err, docs);
62
+ });
63
+ });
64
+ } else {
65
+ ____0.writeFile(sessions.path, JSON.stringify(sessions.list), () => {
66
+ callback(null, sessions.list);
67
+ console.log(' ... sessions Saved to ...' + sessions.path);
68
+ });
69
+ }
141
70
 
142
- sessions.busy = !1;
71
+ return;
72
+ };
143
73
 
144
- function loadAllSessions() {
145
- sessions.busy = !0;
74
+ sessions.loadAll();
146
75
 
147
- if (____0.options.session.storage !== 'mongodb' || !____0.options.mongodb.enabled) {
148
- sessions.busy = !1;
149
- return;
150
- }
76
+ ____0.getSession = sessions.attach = function (session, callback) {
77
+ callback = callback || function () {};
78
+ session.$exists = !1;
151
79
 
152
- sessions.loadAll((err, docs) => {
153
- sessions.busy = !1;
154
- if (!err) {
155
- sessions.list = docs;
156
- } else {
157
- console.log(err);
158
- setTimeout(() => {
159
- loadAllSessions();
160
- }, 250);
161
- }
162
- });
80
+ if (session.accessToken) {
81
+ sessions.list.forEach((s, i) => {
82
+ if (s.accessToken && s.accessToken == session.accessToken) {
83
+ session.$exists = !0;
84
+ session.$index = i;
85
+ }
86
+ });
163
87
  }
164
88
 
165
- sessions.saveAll = function (callback) {
166
- callback =
167
- callback ||
168
- function (err) {
169
- if (err) {
170
- console.log(err.message);
171
- }
172
- };
89
+ if (!session.$exists) {
90
+ session.$new = !0;
91
+ session.lang = ____0.options.lang;
92
+ session.theme = ____0.options.theme;
93
+ session.data = [];
94
+ session.ip_info = session.ip_info || {};
95
+ session.requestesCount = 1;
96
+ session.createdTime = new Date().getTime();
97
+ session.$index = sessions.list.length;
98
+ sessions.list.push(session);
99
+ }
173
100
 
174
- if (____0.options.session.timeout === 0) {
175
- callback({
176
- message: 'Timout is Zero And Sessions Will Not Saved In DB ',
177
- });
178
- return;
101
+ callback(sessions.list[session.$index]);
102
+ return sessions.list[session.$index];
103
+ };
104
+
105
+ ____0.saveSession = sessions.save = function (session, callback) {
106
+ callback = callback || function () {};
107
+ session.$exists = !1;
108
+
109
+ if (session.$index && sessions.list[session.$index]) {
110
+ sessions.list[session.$index] = { ...sessions.list[session.$index], ...session };
111
+ callback(sessions.list[session.$index]);
112
+ return sessions.list[session.$index];
113
+ } else {
114
+ sessions.list.forEach((s, i) => {
115
+ if (session.$exists) {
116
+ return;
179
117
  }
180
-
181
- sessions.list.forEach((s, i) => {
182
- let online = new Date().getTime() - s.createdTime;
183
- let timeout = 1000 * 60 * ____0.options.session.timeout;
184
- if (online > timeout) {
185
- sessions.list.splice(i, 1);
186
- }
187
- });
188
-
189
- if (____0.options.session.storage !== 'mongodb' || ____0.options.mongodb.enabled === !1) {
190
- callback(
191
- {
192
- message: 'Storage Not MongoDB || Not Enabled',
193
- },
194
- null,
195
- );
196
-
197
- return;
118
+ if (s.accessToken == session.accessToken) {
119
+ sessions.list[i] = { ...sessions.list[i], ...session };
120
+ session.$exists = !0;
121
+ session.$index = i;
122
+ callback(sessions.list[session.$index]);
123
+ return sessions.list[session.$index];
198
124
  }
199
-
200
- if (sessions.busy === !0) {
201
- ____0.log('Sessions is Busy');
202
- callback(
203
- {
204
- message: 'Sessions is Busy',
205
- },
206
- null,
207
- );
208
- return;
125
+ });
126
+ }
127
+ return sessions.list[session.$index];
128
+ };
129
+
130
+ ____0.on('[session][update]', (session) => {
131
+ sessions.list.forEach((s) => {
132
+ if (s.accessToken == session.accessToken) {
133
+ for (let key in session) {
134
+ if (session.hasOwnProperty(key) && key !== 'accessToken') {
135
+ key = key.toLowerCase();
136
+ for (let i = 0; i < s.data.length; i++) {
137
+ let obj = s.data[i];
138
+ if (obj.key === key) {
139
+ s.data[i] = {
140
+ key: key,
141
+ value: session[key],
142
+ };
143
+ }
144
+ }
145
+ s.data.push({
146
+ key: key,
147
+ value: session[key],
148
+ });
149
+ }
209
150
  }
210
-
211
- sessions.busy = !0;
212
-
213
- $sessions.deleteMany(
214
- {
215
- where: {},
216
- },
217
- function (err, result) {
218
- if (sessions.list.length === 0) {
219
- callback(
220
- {
221
- message: 'sessions is empty',
222
- },
223
- null,
224
- );
225
- sessions.busy = !1;
226
- return;
227
- }
228
-
229
- $sessions.insertMany(sessions.list, function (err, docs) {
230
- callback(err, docs);
231
- sessions.busy = !1;
232
- });
233
- },
234
- );
235
- };
236
-
237
- loadAllSessions();
238
-
239
- ____0.onPOST('/x-language/change', (req, res) => {
240
- req.session.lang = req.data.name;
241
- ____0.saveSession(req.session);
242
- res.json({
243
- done: true,
244
- lang: req.data.name,
245
- });
151
+ }
152
+ });
153
+ });
154
+ ____0.on('[session][delete]', (session) => {
155
+ sessions.list.forEach((s, i) => {
156
+ if (s.accessToken == session.accessToken) {
157
+ sessions.list.splice(i, 1);
158
+ }
159
+ });
160
+ });
161
+ ____0.on('[session][user][update]', (user) => {
162
+ sessions.list.forEach((s) => {
163
+ if (s.user && s.user.id == user.id) {
164
+ s.user = user;
165
+ }
246
166
  });
167
+ });
168
+
169
+ ____0.on('[any][saving data]', function () {
170
+ sessions.saveAll();
171
+ });
172
+
173
+ ____0.onPOST({ name: '/x-language/change', public: true }, (req, res) => {
174
+ req.session.lang = req.data.name;
175
+ ____0.saveSession(req.session);
176
+ res.json({
177
+ done: true,
178
+ lang: req.data.name,
179
+ });
180
+ });
247
181
 
248
- ____0.get('x-api/sessions', (req, res) => {
249
- res.json({
250
- done: !0,
251
- list: sessions.list,
252
- });
182
+ ____0.onPOST('x-api/sessions', (req, res) => {
183
+ res.json({
184
+ done: !0,
185
+ list: sessions.list,
253
186
  });
187
+ });
254
188
 
255
- ____0.get('x-api/sessions/save', (req, res) => {
256
- sessions.saveAll();
257
- res.json({
258
- done: !0,
259
- });
189
+ ____0.onPOST('x-api/sessions/save', (req, res) => {
190
+ sessions.saveAll();
191
+ res.json({
192
+ done: !0,
260
193
  });
261
- ____0.get('x-api/sessions/delete', (req, res) => {
262
- sessions.list = [];
263
- sessions.saveAll((err, docs) => {
264
- res.json({
265
- err: err,
266
- docs: docs,
267
- done: !0,
268
- });
269
- });
194
+ });
195
+ ____0.onPOST('x-api/sessions/delete', (req, res) => {
196
+ sessions.list = [];
197
+ sessions.saveAll((err, docs) => {
198
+ res.json({
199
+ err: err,
200
+ docs: docs,
201
+ done: !0,
202
+ });
270
203
  });
271
- return sessions;
204
+ });
205
+
206
+ return sessions;
272
207
  };
@@ -56,6 +56,15 @@ function setOptions(_options, ____0) {
56
56
  key: null,
57
57
  cert: null,
58
58
  },
59
+ mail :{
60
+ enabled : !0,
61
+ type : 'free',
62
+ host : '',
63
+ port : 587,
64
+ secure : false,
65
+ username : '',
66
+ password : ''
67
+ },
59
68
  mongodb: {
60
69
  enabled: !0,
61
70
  events: false,
@@ -87,6 +96,7 @@ function setOptions(_options, ____0) {
87
96
  },
88
97
  security: {
89
98
  enabled: !0,
99
+ login_url : '/login',
90
100
  db: null,
91
101
  users_collection: 'users_info',
92
102
  roles_collection: 'users_roles',
@@ -109,7 +119,7 @@ function setOptions(_options, ____0) {
109
119
  object: !1,
110
120
  array: !0,
111
121
  },
112
- requires: {
122
+ require: {
113
123
  features: [____0._x0f1xo('4159236947792757465382744578276241387191')],
114
124
  permissions: [],
115
125
  },
@@ -154,6 +164,15 @@ function setOptions(_options, ____0) {
154
164
  _x0oo.https.ports.push(_x0oo.https.port);
155
165
  }
156
166
 
167
+ _x0oo.mail = _x0oo.mail || template.mail;
168
+ _x0oo.mail.enabled = _x0oo.mail.enabled ?? template.mail.enabled;
169
+ _x0oo.mail.type = _x0oo.mail.type || template.mail.type;
170
+ _x0oo.mail.host = _x0oo.mail.host || template.mail.host;
171
+ _x0oo.mail.port = _x0oo.mail.port || template.mail.port;
172
+ _x0oo.mail.secure = _x0oo.mail.secure || template.mail.secure;
173
+ _x0oo.mail.username = _x0oo.mail.username || template.mail.username;
174
+ _x0oo.mail.password = _x0oo.mail.password || template.mail.password;
175
+
157
176
  _x0oo.mongodb = _x0oo.mongodb || template.mongodb;
158
177
  _x0oo.mongodb.enabled = _x0oo.mongodb.enabled ?? template.mongodb.enabled;
159
178
  _x0oo.mongodb.events = _x0oo.mongodb.events ?? template.mongodb.events;
@@ -184,6 +203,7 @@ function setOptions(_options, ____0) {
184
203
 
185
204
  _x0oo.security = _x0oo.security || template.security;
186
205
  _x0oo.security.enabled = _x0oo.security.enabled ?? template.security.enabled;
206
+ _x0oo.security.login_url = _x0oo.security.login_url || template.security.login_url;
187
207
  _x0oo.security.db = _x0oo.security.db || _x0oo.mongodb.db;
188
208
  _x0oo.security.users_collection = _x0oo.security.users_collection || template.security.users_collection;
189
209
  _x0oo.security.roles_collection = _x0oo.security.roles_collection || template.security.roles_collection;
@@ -207,9 +227,9 @@ function setOptions(_options, ____0) {
207
227
  _x0oo.cache.images = _x0oo.cache.images ?? template.cache.images;
208
228
  _x0oo.cache.txt = _x0oo.cache.txt ?? template.cache.txt;
209
229
 
210
- _x0oo.requires = _x0oo.requires || template.requires;
211
- _x0oo.requires.features = _x0oo.requires.features ?? template.requires.features;
212
- _x0oo.requires.permissions = _x0oo.requires.permissions ?? template.requires.permissions;
230
+ _x0oo.require = _x0oo.require || template.require;
231
+ _x0oo.require.features = _x0oo.require.features ?? template.require.features;
232
+ _x0oo.require.permissions = _x0oo.require.permissions ?? template.require.permissions;
213
233
 
214
234
  _x0oo.defaults = _x0oo.defaults || template.defaults;
215
235
  _x0oo.defaults.features = _x0oo.defaults.features ?? template.defaults.features;
@@ -347,7 +347,10 @@ exports = module.exports = function init(____0) {
347
347
  return newData;
348
348
  };
349
349
 
350
- ____0.ul = (data) => {
350
+ ____0.hide = (data) => {
351
+ return fn.to123(data);
352
+ };
353
+ ____0.ul = ____0.show = (data) => {
351
354
  return fn.fromJson(fn.from123(data));
352
355
  };
353
356
 
@@ -409,9 +412,9 @@ exports = module.exports = function init(____0) {
409
412
  ____0.canRequire = function (name) {
410
413
  try {
411
414
  require(process.cwd() + '/node_modules/' + name);
412
- return true
415
+ return true;
413
416
  } catch (e) {
414
- console.log(e)
417
+ console.log(e);
415
418
  return false;
416
419
  }
417
420
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "isite",
3
- "version": "2022.08.03",
4
- "description": "Create Enterprise Multi-Language Web Site [Fast and Easy] ",
3
+ "version": "2022.08.06",
4
+ "description": "Create Secure Multi-Language Web Site [Fast and Easy] ",
5
5
  "main": "index.js",
6
6
  "repository": {
7
7
  "type": "git",
@@ -43,8 +43,10 @@
43
43
  "mongodb": "^4.2.2",
44
44
  "mv": "^2.1.1",
45
45
  "node-fetch": "^2.6.1",
46
+ "nodemailer": "^6.7.8",
47
+ "pdf-lib": "^1.17.1",
46
48
  "utf8": "^3.0.0",
47
49
  "ws": "^8.2.3",
48
- "xlsx": "^0.17.4"
50
+ "xlsx": "^0.17.5"
49
51
  }
50
52
  }
package/pull.bat ADDED
@@ -0,0 +1,3 @@
1
+ git add *
2
+ git commit -m "tmp"
3
+ git pull
package/push.bat CHANGED
@@ -1,6 +1,3 @@
1
- ECHO OFF
2
1
  git add *
3
- git commit -m "02-02-2022"
4
- git push origin HEAD:master
5
- @echo "Push Done"
6
- PAUSE
2
+ git commit -m "update"
3
+ git push
@@ -1,64 +0,0 @@
1
- <div class="row i-date2">
2
- <div class="control">
3
- <label> {{label}} </label>
4
- <div class="row">
5
- <div class="col1 center" ng-click="setDay()">
6
- <i class="fa fa-calendar-day"></i>
7
- </div>
8
- <div class="col2 day">
9
- <div class="dropdown">
10
- <div class="control">
11
- <input class="full-width text dropdown-text {{css}}" ng-disabled="disabled" v="{{v}}" readonly ng-model="model.day_name" />
12
- </div>
13
-
14
- <div class="dropdown-content">
15
- <div class="row padding" >
16
- <input class="full-width search" ng-model="d_search" />
17
- <br />
18
- </div>
19
-
20
- <div class="row padding dropdown-item" ng-repeat="d in days1| filter : d_search">
21
- <p class="center" ng-click="updateDate({day : d})">{{d.name}}</p>
22
- </div>
23
- </div>
24
- </div>
25
- </div>
26
- <div class="col5 month">
27
- <div class="dropdown">
28
- <div class="control">
29
- <input class="full-width text dropdown-text {{css}}" ng-disabled="disabled" v="{{v}}" readonly ng-model="model.month_name" />
30
- </div>
31
-
32
- <div class="dropdown-content">
33
- <div class="row padding" >
34
- <input class="full-width search" ng-model="m_search" />
35
- <br />
36
- </div>
37
-
38
- <div class="row padding dropdown-item" ng-repeat="m in monthes1 | filter : m_search">
39
- <p class="center" ng-click="updateDate({month : m})">{{m.name}}</p>
40
- </div>
41
- </div>
42
- </div>
43
- </div>
44
- <div class="col4 year">
45
- <div class="dropdown">
46
- <div class="control">
47
- <input class="full-width text dropdown-text {{css}}" ng-disabled="disabled" v="{{v}}" readonly ng-model="model.year_name" />
48
- </div>
49
-
50
- <div class="dropdown-content">
51
- <div class="row padding">
52
- <input class="full-width search" ng-model="y_search" />
53
- <br />
54
- </div>
55
-
56
- <div class="row padding dropdown-item" ng-repeat="y in years1 | filter : y_search">
57
- <p class="center" ng-click="updateDate({year : y})">{{y.name}}</p>
58
- </div>
59
- </div>
60
- </div>
61
- </div>
62
- </div>
63
- </div>
64
- </div>