formstrap 0.1.3 → 0.2.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +38 -1
- data/app/assets/javascripts/formstrap/controllers/file_preview_controller.js +5 -5
- data/app/assets/javascripts/formstrap/controllers/media_controller.js +4 -2
- data/app/assets/javascripts/formstrap/controllers/media_modal_controller.js +38 -2
- data/app/assets/javascripts/formstrap/controllers/popup_controller.js +75 -0
- data/app/assets/javascripts/formstrap/controllers/repeater_controller.js +4 -4
- data/app/assets/javascripts/formstrap/index.js +2 -0
- data/app/assets/javascripts/formstrap.js +1790 -129
- data/app/assets/stylesheets/formstrap/{forms/autocomplete.scss → autocomplete.scss} +1 -1
- data/app/assets/stylesheets/formstrap/{forms/file.scss → file.scss} +10 -10
- data/app/assets/stylesheets/formstrap/general.scss +8 -1
- data/app/assets/stylesheets/formstrap/media/_modal.scss +9 -0
- data/app/assets/stylesheets/formstrap/{forms/media.scss → media/_validation.scss} +2 -2
- data/app/assets/stylesheets/formstrap/media.scss +2 -1
- data/app/assets/stylesheets/formstrap/{forms/repeater.scss → repeater.scss} +8 -8
- data/app/assets/stylesheets/formstrap/shared/popup.scss +17 -0
- data/app/assets/stylesheets/formstrap/shared/thumbnail.scss +23 -0
- data/app/assets/stylesheets/formstrap/shared.scss +2 -0
- data/app/assets/stylesheets/formstrap/utilities/dropzone.scss +2 -2
- data/app/assets/stylesheets/formstrap/utilities.scss +0 -1
- data/app/assets/stylesheets/formstrap.css +155 -143
- data/app/assets/stylesheets/formstrap.scss +5 -1
- data/app/controllers/formstrap/media_controller.rb +6 -12
- data/app/helpers/application_helper.rb +20 -0
- data/app/models/concerns/formstrap/attachment.rb +16 -0
- data/app/models/concerns/formstrap/blob.rb +56 -0
- data/app/models/formstrap/file_view.rb +3 -3
- data/app/models/formstrap/media_view.rb +12 -1
- data/app/models/formstrap/thumbnail_view.rb +108 -0
- data/app/views/formstrap/_autocomplete.html.erb +1 -1
- data/app/views/formstrap/_file.html.erb +8 -8
- data/app/views/formstrap/_media.html.erb +5 -4
- data/app/views/formstrap/_repeater.html.erb +3 -3
- data/app/views/formstrap/media/_item.html.erb +10 -7
- data/app/views/formstrap/media/_modal.html.erb +35 -8
- data/app/views/formstrap/media/_thumbnail.html.erb +12 -8
- data/app/views/formstrap/media/_validation.html.erb +1 -1
- data/app/views/formstrap/media/create.turbo_stream.erb +3 -1
- data/app/views/formstrap/media/index.html.erb +1 -1
- data/app/views/formstrap/repeater/_row.html.erb +4 -4
- data/app/views/formstrap/shared/_popup.html.erb +1 -1
- data/app/views/formstrap/shared/_thumbnail.html.erb +5 -3
- data/config/locales/formstrap/forms/en.yml +0 -14
- data/config/locales/formstrap/forms/nl.yml +1 -15
- data/config/locales/formstrap/media/en.yml +2 -10
- data/config/locales/formstrap/media/nl.yml +2 -10
- data/config/routes.rb +0 -2
- data/lib/formstrap/version.rb +1 -1
- metadata +16 -29
- data/app/assets/stylesheets/formstrap/forms.scss +0 -12
- data/app/assets/stylesheets/formstrap/media/index.scss +0 -9
- data/app/assets/stylesheets/formstrap/utilities/buttons.scss +0 -27
- data/app/models/formstrap/blocks_view.rb +0 -43
- data/app/views/formstrap/_blocks.html.erb +0 -45
- data/app/views/formstrap/_to_ary.html.erb +0 -0
- data/app/views/formstrap/blocks/_modal.html.erb +0 -20
- data/app/views/formstrap/fields/_base.html.erb +0 -25
- data/app/views/formstrap/fields/_file.html.erb +0 -17
- data/app/views/formstrap/fields/_files.html.erb +0 -17
- data/app/views/formstrap/fields/_group.html.erb +0 -52
- data/app/views/formstrap/fields/_list.html.erb +0 -31
- data/app/views/formstrap/fields/_text.html.erb +0 -17
- data/app/views/formstrap/media/_media_item_modal.html.erb +0 -77
- data/app/views/formstrap/media/show.html.erb +0 -9
- data/app/views/formstrap/media/update.turbo_stream.erb +0 -3
- data/config/locales/activerecord/en.yml +0 -12
- data/config/locales/activerecord/nl.yml +0 -13
- data/config/locales/defaults/en.yml +0 -215
- data/config/locales/defaults/nl.yml +0 -213
- data/config/locales/devise/en.yml +0 -65
- data/config/locales/devise/nl.yml +0 -85
- /data/app/assets/stylesheets/formstrap/{forms/search.scss → search.scss} +0 -0
@@ -1,20 +1,20 @@
|
|
1
|
-
.
|
1
|
+
.formstrap-file {
|
2
2
|
--fs-file-spacer-2: calc(1rem * .5);
|
3
3
|
|
4
|
-
.
|
4
|
+
.formstrap-file-thumbnails {
|
5
5
|
margin-bottom: var(--fs-file-spacer-2);
|
6
6
|
}
|
7
7
|
|
8
|
-
&.
|
8
|
+
&.formstrap-dropzone {
|
9
9
|
padding: var(--fs-file-spacer-2);
|
10
10
|
|
11
|
-
.
|
11
|
+
.formstrap-file-thumbnails {
|
12
12
|
margin-bottom: 0;
|
13
13
|
}
|
14
14
|
}
|
15
15
|
}
|
16
16
|
|
17
|
-
.
|
17
|
+
.formstrap-file-thumbnails {
|
18
18
|
--fs-file-spacer-2: calc(1rem * .5);
|
19
19
|
position: relative;
|
20
20
|
display: flex;
|
@@ -27,23 +27,23 @@
|
|
27
27
|
}
|
28
28
|
}
|
29
29
|
|
30
|
-
.
|
30
|
+
.formstrap-file-thumbnail {
|
31
31
|
position: relative;
|
32
32
|
pointer-events: initial !important;
|
33
33
|
display: flex;
|
34
34
|
|
35
35
|
&:hover {
|
36
|
-
.
|
36
|
+
.formstrap-file-thumbnail-actions {
|
37
37
|
display: block;
|
38
38
|
}
|
39
39
|
}
|
40
40
|
}
|
41
41
|
|
42
|
-
.
|
42
|
+
.formstrap-file-thumbnail-actions {
|
43
43
|
display: none;
|
44
44
|
}
|
45
45
|
|
46
|
-
.
|
46
|
+
.formstrap-file-thumbnail-remove {
|
47
47
|
position: absolute;
|
48
48
|
top: 5px;
|
49
49
|
right: 5px;
|
@@ -63,7 +63,7 @@
|
|
63
63
|
}
|
64
64
|
}
|
65
65
|
|
66
|
-
.
|
66
|
+
.formstrap-file-thumbnail-edit {
|
67
67
|
position: absolute;
|
68
68
|
top: 5px;
|
69
69
|
right: 35px;
|
@@ -15,4 +15,11 @@ mark {
|
|
15
15
|
--fs-mark-padding: .1875em;
|
16
16
|
padding: 0;
|
17
17
|
box-shadow: 0 var(--fs-mark-padding) 0 var(--bs-yellow), 0 calc(-1 * #{var(--fs-mark-padding)}) 0 var(--bs-yellow);
|
18
|
-
}
|
18
|
+
}
|
19
|
+
|
20
|
+
.form-label[required="required"], .form-check-label[required="required"] {
|
21
|
+
&:after {
|
22
|
+
content: ' *';
|
23
|
+
color: var(--bs-danger-rgb);
|
24
|
+
}
|
25
|
+
}
|
@@ -1 +1,2 @@
|
|
1
|
-
@import "media/
|
1
|
+
@import "media/modal";
|
2
|
+
@import "media/validation";
|
@@ -1,26 +1,26 @@
|
|
1
|
-
.repeater {
|
1
|
+
.formstrap-repeater {
|
2
2
|
position: relative;
|
3
3
|
}
|
4
4
|
|
5
|
-
.repeater-row {
|
5
|
+
.formstrap-repeater-row {
|
6
6
|
position: relative;
|
7
7
|
|
8
8
|
&:hover {
|
9
|
-
.repeater-row-remove {
|
9
|
+
.formstrap-repeater-row-remove {
|
10
10
|
visibility: visible;
|
11
11
|
}
|
12
12
|
|
13
|
-
.repeater-row-add {
|
13
|
+
.formstrap-repeater-row-add {
|
14
14
|
visibility: visible;
|
15
15
|
}
|
16
16
|
|
17
|
-
.repeater-row-handle {
|
17
|
+
.formstrap-repeater-row-handle {
|
18
18
|
visibility: visible;
|
19
19
|
}
|
20
20
|
}
|
21
21
|
}
|
22
22
|
|
23
|
-
.repeater-row-remove {
|
23
|
+
.formstrap-repeater-row-remove {
|
24
24
|
position: absolute;
|
25
25
|
top: calc(50% - 17px);
|
26
26
|
right: -22px;
|
@@ -33,7 +33,7 @@
|
|
33
33
|
}
|
34
34
|
}
|
35
35
|
|
36
|
-
.repeater-row-add {
|
36
|
+
.formstrap-repeater-row-add {
|
37
37
|
position: absolute;
|
38
38
|
top: calc(100% - 18px);
|
39
39
|
right: calc(50% - 17px);
|
@@ -46,7 +46,7 @@
|
|
46
46
|
}
|
47
47
|
}
|
48
48
|
|
49
|
-
.repeater-row-handle {
|
49
|
+
.formstrap-repeater-row-handle {
|
50
50
|
position: absolute;
|
51
51
|
top: 0;
|
52
52
|
left: 0;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
.formstrap-popup {
|
2
|
+
padding: 10px;
|
3
|
+
background: var(--bs-white);
|
4
|
+
z-index: 1070;
|
5
|
+
//@include reset-text();
|
6
|
+
font-size: var(--bs-popover-font-size);
|
7
|
+
word-wrap: break-word;
|
8
|
+
background-color: var(--bs-body-bg);
|
9
|
+
background-clip: padding-box;
|
10
|
+
border-radius: var(--bs-popover-border-radius);
|
11
|
+
box-shadow: 0 .5rem 1rem rgba(var(--bs-body-color-rgb), .15);
|
12
|
+
border: var(--bs-border-width) solid var(--bs-border-color-translucent);
|
13
|
+
|
14
|
+
&.closed {
|
15
|
+
display: none;
|
16
|
+
}
|
17
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
.formstrap-thumbnail {
|
2
|
+
display: inline-block;
|
3
|
+
position: relative;
|
4
|
+
}
|
5
|
+
|
6
|
+
.formstrap-thumbnail-bg {
|
7
|
+
display: flex;
|
8
|
+
align-items: center;
|
9
|
+
justify-content: center;
|
10
|
+
background-color: var(--bs-gray-100);
|
11
|
+
background-size: cover;
|
12
|
+
background-position: center center;
|
13
|
+
width: 100%;
|
14
|
+
height: 100%;
|
15
|
+
position: relative;
|
16
|
+
}
|
17
|
+
|
18
|
+
.formstrap-thumbnail-icon {
|
19
|
+
position: absolute;
|
20
|
+
top: calc(50% - 20px);
|
21
|
+
left: calc(50% - 14px);
|
22
|
+
font-size: 28px;
|
23
|
+
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
.
|
1
|
+
.formstrap-dropzone {
|
2
2
|
--fs-input-btn-focus-blur: 0;
|
3
3
|
--fs-input-btn-focus-width: .25rem;
|
4
4
|
--fs-input-btn-focus-color-opacity: .25;
|
@@ -63,7 +63,7 @@
|
|
63
63
|
}
|
64
64
|
}
|
65
65
|
|
66
|
-
.
|
66
|
+
.formstrap-dropzone-placeholder {
|
67
67
|
color: var(--bs-gray-600);
|
68
68
|
display: flex;
|
69
69
|
align-items: center;
|
@@ -1283,12 +1283,140 @@ span.flatpickr-weekday {
|
|
1283
1283
|
transform: translate3d(0, 0, 0);
|
1284
1284
|
}
|
1285
1285
|
}
|
1286
|
+
html {
|
1287
|
+
height: 100%;
|
1288
|
+
}
|
1289
|
+
.list-group-item {
|
1290
|
+
--fs-list-group-active-color: #fff;
|
1291
|
+
}
|
1292
|
+
.list-group-item.active .text-muted {
|
1293
|
+
color: var(--fs-list-group-active-color) !important;
|
1294
|
+
}
|
1295
|
+
mark {
|
1296
|
+
--fs-mark-padding: .1875em;
|
1297
|
+
padding: 0;
|
1298
|
+
box-shadow: 0 var(--fs-mark-padding) 0 var(--bs-yellow), 0 calc(-1 * var(--fs-mark-padding)) 0 var(--bs-yellow);
|
1299
|
+
}
|
1286
1300
|
.form-label[required=required]:after,
|
1287
1301
|
.form-check-label[required=required]:after {
|
1288
1302
|
content: " *";
|
1289
1303
|
color: var(--bs-danger-rgb);
|
1290
1304
|
}
|
1291
|
-
.
|
1305
|
+
.formstrap-dropzone {
|
1306
|
+
--fs-input-btn-focus-blur: 0;
|
1307
|
+
--fs-input-btn-focus-width: .25rem;
|
1308
|
+
--fs-input-btn-focus-color-opacity: .25;
|
1309
|
+
position: relative;
|
1310
|
+
border: 2px dashed var(--bs-gray-400);
|
1311
|
+
border-radius: var(--bs-border-radius);
|
1312
|
+
}
|
1313
|
+
.formstrap-dropzone > *:not(.form-control) {
|
1314
|
+
margin: 0.5rem;
|
1315
|
+
pointer-events: none;
|
1316
|
+
z-index: 2;
|
1317
|
+
}
|
1318
|
+
.formstrap-dropzone.dragover,
|
1319
|
+
.formstrap-dropzone:hover {
|
1320
|
+
border-color: var(--bs-gray-400);
|
1321
|
+
}
|
1322
|
+
.formstrap-dropzone.dragover input[type=file] {
|
1323
|
+
z-index: 3;
|
1324
|
+
}
|
1325
|
+
.formstrap-dropzone.focus,
|
1326
|
+
.formstrap-dropzone.dragover {
|
1327
|
+
border-color: var(--bs-primary-border-subtle);
|
1328
|
+
outline: 0;
|
1329
|
+
box-shadow: var(--bs-box-shadow);
|
1330
|
+
}
|
1331
|
+
.formstrap-dropzone.focus.is-valid,
|
1332
|
+
.formstrap-dropzone.dragover.is-valid {
|
1333
|
+
border-color: var(--bs-success);
|
1334
|
+
box-shadow: 0 0 var(--fs-input-btn-focus-blur) var(--fs-input-btn-focus-width) rgba(var(--bs-success), var(--fs-input-btn-focus-color-opacity));
|
1335
|
+
}
|
1336
|
+
.formstrap-dropzone.focus.is-invalid,
|
1337
|
+
.formstrap-dropzone.dragover.is-invalid {
|
1338
|
+
border-color: var(--bs-danger);
|
1339
|
+
box-shadow: 0 0 var(--fs-input-btn-focus-blur) var(--fs-input-btn-focus-width) rgba(var(--bs-danger), var(--fs-input-btn-focus-color-opacity));
|
1340
|
+
}
|
1341
|
+
.formstrap-dropzone .form-control {
|
1342
|
+
position: absolute;
|
1343
|
+
top: 0;
|
1344
|
+
left: 0;
|
1345
|
+
width: 100%;
|
1346
|
+
height: 100%;
|
1347
|
+
z-index: 1;
|
1348
|
+
border: none;
|
1349
|
+
box-shadow: none;
|
1350
|
+
text-indent: -100vw;
|
1351
|
+
color: transparent;
|
1352
|
+
background: none;
|
1353
|
+
}
|
1354
|
+
.formstrap-dropzone.is-invalid {
|
1355
|
+
border-color: var(--bs-danger);
|
1356
|
+
}
|
1357
|
+
.formstrap-dropzone.is-valid {
|
1358
|
+
border-color: var(--bs-success);
|
1359
|
+
}
|
1360
|
+
.formstrap-dropzone-placeholder {
|
1361
|
+
color: var(--bs-gray-600);
|
1362
|
+
display: flex;
|
1363
|
+
align-items: center;
|
1364
|
+
justify-content: center;
|
1365
|
+
width: 100%;
|
1366
|
+
}
|
1367
|
+
.formstrap-thumbnail {
|
1368
|
+
display: inline-block;
|
1369
|
+
position: relative;
|
1370
|
+
}
|
1371
|
+
.formstrap-thumbnail-bg {
|
1372
|
+
display: flex;
|
1373
|
+
align-items: center;
|
1374
|
+
justify-content: center;
|
1375
|
+
background-color: var(--bs-gray-100);
|
1376
|
+
background-size: cover;
|
1377
|
+
background-position: center center;
|
1378
|
+
width: 100%;
|
1379
|
+
height: 100%;
|
1380
|
+
position: relative;
|
1381
|
+
}
|
1382
|
+
.formstrap-thumbnail-icon {
|
1383
|
+
position: absolute;
|
1384
|
+
top: calc(50% - 20px);
|
1385
|
+
left: calc(50% - 14px);
|
1386
|
+
font-size: 28px;
|
1387
|
+
}
|
1388
|
+
.formstrap-popup {
|
1389
|
+
padding: 10px;
|
1390
|
+
background: var(--bs-white);
|
1391
|
+
z-index: 1070;
|
1392
|
+
font-size: var(--bs-popover-font-size);
|
1393
|
+
word-wrap: break-word;
|
1394
|
+
background-color: var(--bs-body-bg);
|
1395
|
+
background-clip: padding-box;
|
1396
|
+
border-radius: var(--bs-popover-border-radius);
|
1397
|
+
box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);
|
1398
|
+
border: var(--bs-border-width) solid var(--bs-border-color-translucent);
|
1399
|
+
}
|
1400
|
+
.formstrap-popup.closed {
|
1401
|
+
display: none;
|
1402
|
+
}
|
1403
|
+
.formstrap-media-modal .formstrap-thumbnail {
|
1404
|
+
cursor: pointer;
|
1405
|
+
}
|
1406
|
+
.formstrap-media-modal input[type=checkbox]:checked + label .formstrap-thumbnail {
|
1407
|
+
background-color: #0d6efd;
|
1408
|
+
}
|
1409
|
+
.formstrap-media-validation {
|
1410
|
+
opacity: 0;
|
1411
|
+
width: 100px;
|
1412
|
+
height: 0;
|
1413
|
+
padding: 0;
|
1414
|
+
margin: 0;
|
1415
|
+
position: absolute;
|
1416
|
+
bottom: 0;
|
1417
|
+
left: 0;
|
1418
|
+
}
|
1419
|
+
.formstrap-autocomplete {
|
1292
1420
|
--fs-dropdown-z-index: 1000;
|
1293
1421
|
--fs-dropdown-font-size: 1rem;
|
1294
1422
|
--fs-dropdown-border-radius: 0.375rem;
|
@@ -1307,47 +1435,47 @@ span.flatpickr-weekday {
|
|
1307
1435
|
border: var(--bs-border-width) solid var(--bs-border-color-translucent);
|
1308
1436
|
overflow: hidden;
|
1309
1437
|
}
|
1310
|
-
.
|
1438
|
+
.formstrap-autocomplete .list-group-flush {
|
1311
1439
|
margin: 0;
|
1312
1440
|
padding: 0;
|
1313
1441
|
}
|
1314
|
-
.
|
1442
|
+
.formstrap-file {
|
1315
1443
|
--fs-file-spacer-2: calc(1rem * .5);
|
1316
1444
|
}
|
1317
|
-
.
|
1445
|
+
.formstrap-file .formstrap-file-thumbnails {
|
1318
1446
|
margin-bottom: var(--fs-file-spacer-2);
|
1319
1447
|
}
|
1320
|
-
.
|
1448
|
+
.formstrap-file.formstrap-dropzone {
|
1321
1449
|
padding: var(--fs-file-spacer-2);
|
1322
1450
|
}
|
1323
|
-
.
|
1451
|
+
.formstrap-file.formstrap-dropzone .formstrap-file-thumbnails {
|
1324
1452
|
margin-bottom: 0;
|
1325
1453
|
}
|
1326
|
-
.
|
1454
|
+
.formstrap-file-thumbnails {
|
1327
1455
|
--fs-file-spacer-2: calc(1rem * .5);
|
1328
1456
|
position: relative;
|
1329
1457
|
display: flex;
|
1330
1458
|
flex-wrap: wrap;
|
1331
1459
|
gap: var(--fs-file-spacer-2);
|
1332
1460
|
}
|
1333
|
-
.
|
1334
|
-
.
|
1335
|
-
.
|
1461
|
+
.formstrap-file-thumbnails a,
|
1462
|
+
.formstrap-file-thumbnails a:link,
|
1463
|
+
.formstrap-file-thumbnails a:hover {
|
1336
1464
|
color: inherit;
|
1337
1465
|
text-decoration: inherit;
|
1338
1466
|
}
|
1339
|
-
.
|
1467
|
+
.formstrap-file-thumbnail {
|
1340
1468
|
position: relative;
|
1341
1469
|
pointer-events: initial !important;
|
1342
1470
|
display: flex;
|
1343
1471
|
}
|
1344
|
-
.
|
1472
|
+
.formstrap-file-thumbnail:hover .formstrap-file-thumbnail-actions {
|
1345
1473
|
display: block;
|
1346
1474
|
}
|
1347
|
-
.
|
1475
|
+
.formstrap-file-thumbnail-actions {
|
1348
1476
|
display: none;
|
1349
1477
|
}
|
1350
|
-
.
|
1478
|
+
.formstrap-file-thumbnail-remove {
|
1351
1479
|
position: absolute;
|
1352
1480
|
top: 5px;
|
1353
1481
|
right: 5px;
|
@@ -1362,10 +1490,10 @@ span.flatpickr-weekday {
|
|
1362
1490
|
z-index: 3;
|
1363
1491
|
cursor: pointer;
|
1364
1492
|
}
|
1365
|
-
.
|
1493
|
+
.formstrap-file-thumbnail-remove:hover {
|
1366
1494
|
opacity: 0.9;
|
1367
1495
|
}
|
1368
|
-
.
|
1496
|
+
.formstrap-file-thumbnail-edit {
|
1369
1497
|
position: absolute;
|
1370
1498
|
top: 5px;
|
1371
1499
|
right: 35px;
|
@@ -1380,57 +1508,47 @@ span.flatpickr-weekday {
|
|
1380
1508
|
cursor: pointer;
|
1381
1509
|
color: white !important;
|
1382
1510
|
}
|
1383
|
-
.
|
1511
|
+
.formstrap-file-thumbnail-edit:hover {
|
1384
1512
|
background-color: rgb(0, 0, 0);
|
1385
1513
|
}
|
1386
|
-
.
|
1387
|
-
opacity: 0;
|
1388
|
-
width: 100px;
|
1389
|
-
height: 0;
|
1390
|
-
padding: 0;
|
1391
|
-
margin: 0;
|
1392
|
-
position: absolute;
|
1393
|
-
bottom: 0;
|
1394
|
-
left: 0;
|
1395
|
-
}
|
1396
|
-
.repeater {
|
1514
|
+
.formstrap-repeater {
|
1397
1515
|
position: relative;
|
1398
1516
|
}
|
1399
|
-
.repeater-row {
|
1517
|
+
.formstrap-repeater-row {
|
1400
1518
|
position: relative;
|
1401
1519
|
}
|
1402
|
-
.repeater-row:hover .repeater-row-remove {
|
1520
|
+
.formstrap-repeater-row:hover .formstrap-repeater-row-remove {
|
1403
1521
|
visibility: visible;
|
1404
1522
|
}
|
1405
|
-
.repeater-row:hover .repeater-row-add {
|
1523
|
+
.formstrap-repeater-row:hover .formstrap-repeater-row-add {
|
1406
1524
|
visibility: visible;
|
1407
1525
|
}
|
1408
|
-
.repeater-row:hover .repeater-row-handle {
|
1526
|
+
.formstrap-repeater-row:hover .formstrap-repeater-row-handle {
|
1409
1527
|
visibility: visible;
|
1410
1528
|
}
|
1411
|
-
.repeater-row-remove {
|
1529
|
+
.formstrap-repeater-row-remove {
|
1412
1530
|
position: absolute;
|
1413
1531
|
top: calc(50% - 17px);
|
1414
1532
|
right: -22px;
|
1415
1533
|
z-index: 2;
|
1416
1534
|
visibility: hidden;
|
1417
1535
|
}
|
1418
|
-
.repeater-row-remove i.bi {
|
1536
|
+
.formstrap-repeater-row-remove i.bi {
|
1419
1537
|
background: white;
|
1420
1538
|
border-radius: 50%;
|
1421
1539
|
}
|
1422
|
-
.repeater-row-add {
|
1540
|
+
.formstrap-repeater-row-add {
|
1423
1541
|
position: absolute;
|
1424
1542
|
top: calc(100% - 18px);
|
1425
1543
|
right: calc(50% - 17px);
|
1426
1544
|
z-index: 2;
|
1427
1545
|
visibility: hidden;
|
1428
1546
|
}
|
1429
|
-
.repeater-row-add i.bi {
|
1547
|
+
.formstrap-repeater-row-add i.bi {
|
1430
1548
|
background: white;
|
1431
1549
|
border-radius: 50%;
|
1432
1550
|
}
|
1433
|
-
.repeater-row-handle {
|
1551
|
+
.formstrap-repeater-row-handle {
|
1434
1552
|
position: absolute;
|
1435
1553
|
top: 0;
|
1436
1554
|
left: 0;
|
@@ -1452,109 +1570,3 @@ input[type=search] {
|
|
1452
1570
|
.form-floating input[type=search] ~ label {
|
1453
1571
|
padding-left: 35px;
|
1454
1572
|
}
|
1455
|
-
html {
|
1456
|
-
height: 100%;
|
1457
|
-
}
|
1458
|
-
.list-group-item {
|
1459
|
-
--fs-list-group-active-color: #fff;
|
1460
|
-
}
|
1461
|
-
.list-group-item.active .text-muted {
|
1462
|
-
color: var(--fs-list-group-active-color) !important;
|
1463
|
-
}
|
1464
|
-
mark {
|
1465
|
-
--fs-mark-padding: .1875em;
|
1466
|
-
padding: 0;
|
1467
|
-
box-shadow: 0 var(--fs-mark-padding) 0 var(--bs-yellow), 0 calc(-1 * var(--fs-mark-padding)) 0 var(--bs-yellow);
|
1468
|
-
}
|
1469
|
-
.btn-link {
|
1470
|
-
text-decoration: none;
|
1471
|
-
}
|
1472
|
-
.h-btn-light {
|
1473
|
-
color: var(--bs-gray-600);
|
1474
|
-
background-color: var(--bs-gray-200);
|
1475
|
-
box-shadow: none;
|
1476
|
-
}
|
1477
|
-
.h-btn-outline-light {
|
1478
|
-
background-color: var(--bs-white);
|
1479
|
-
color: var(--bs-gray-600);
|
1480
|
-
border-color: var(--bs-gray-300);
|
1481
|
-
box-shadow: none;
|
1482
|
-
}
|
1483
|
-
.h-btn-outline-light:hover,
|
1484
|
-
.h-btn-outline-light:focus {
|
1485
|
-
background-color: var(--bs-white);
|
1486
|
-
border-color: var(--bs-gray-300);
|
1487
|
-
}
|
1488
|
-
.h-btn-outline-transparent {
|
1489
|
-
color: var(--bs-gray-600);
|
1490
|
-
border: 1px solid var(--bs-gray-300);
|
1491
|
-
box-shadow: none;
|
1492
|
-
}
|
1493
|
-
.h-dropzone {
|
1494
|
-
--fs-input-btn-focus-blur: 0;
|
1495
|
-
--fs-input-btn-focus-width: .25rem;
|
1496
|
-
--fs-input-btn-focus-color-opacity: .25;
|
1497
|
-
position: relative;
|
1498
|
-
border: 2px dashed var(--bs-gray-400);
|
1499
|
-
border-radius: var(--bs-border-radius);
|
1500
|
-
}
|
1501
|
-
.h-dropzone > *:not(.form-control) {
|
1502
|
-
margin: 0.5rem;
|
1503
|
-
pointer-events: none;
|
1504
|
-
z-index: 2;
|
1505
|
-
}
|
1506
|
-
.h-dropzone.dragover,
|
1507
|
-
.h-dropzone:hover {
|
1508
|
-
border-color: var(--bs-gray-400);
|
1509
|
-
}
|
1510
|
-
.h-dropzone.dragover input[type=file] {
|
1511
|
-
z-index: 3;
|
1512
|
-
}
|
1513
|
-
.h-dropzone.focus,
|
1514
|
-
.h-dropzone.dragover {
|
1515
|
-
border-color: var(--bs-primary-border-subtle);
|
1516
|
-
outline: 0;
|
1517
|
-
box-shadow: var(--bs-box-shadow);
|
1518
|
-
}
|
1519
|
-
.h-dropzone.focus.is-valid,
|
1520
|
-
.h-dropzone.dragover.is-valid {
|
1521
|
-
border-color: var(--bs-success);
|
1522
|
-
box-shadow: 0 0 var(--fs-input-btn-focus-blur) var(--fs-input-btn-focus-width) rgba(var(--bs-success), var(--fs-input-btn-focus-color-opacity));
|
1523
|
-
}
|
1524
|
-
.h-dropzone.focus.is-invalid,
|
1525
|
-
.h-dropzone.dragover.is-invalid {
|
1526
|
-
border-color: var(--bs-danger);
|
1527
|
-
box-shadow: 0 0 var(--fs-input-btn-focus-blur) var(--fs-input-btn-focus-width) rgba(var(--bs-danger), var(--fs-input-btn-focus-color-opacity));
|
1528
|
-
}
|
1529
|
-
.h-dropzone .form-control {
|
1530
|
-
position: absolute;
|
1531
|
-
top: 0;
|
1532
|
-
left: 0;
|
1533
|
-
width: 100%;
|
1534
|
-
height: 100%;
|
1535
|
-
z-index: 1;
|
1536
|
-
border: none;
|
1537
|
-
box-shadow: none;
|
1538
|
-
text-indent: -100vw;
|
1539
|
-
color: transparent;
|
1540
|
-
background: none;
|
1541
|
-
}
|
1542
|
-
.h-dropzone.is-invalid {
|
1543
|
-
border-color: var(--bs-danger);
|
1544
|
-
}
|
1545
|
-
.h-dropzone.is-valid {
|
1546
|
-
border-color: var(--bs-success);
|
1547
|
-
}
|
1548
|
-
.h-dropzone-placeholder {
|
1549
|
-
color: var(--bs-gray-600);
|
1550
|
-
display: flex;
|
1551
|
-
align-items: center;
|
1552
|
-
justify-content: center;
|
1553
|
-
width: 100%;
|
1554
|
-
}
|
1555
|
-
.media-modal .h-thumbnail {
|
1556
|
-
cursor: pointer;
|
1557
|
-
}
|
1558
|
-
.media-modal input[type=checkbox]:checked + label .h-thumbnail {
|
1559
|
-
background-color: #0d6efd;
|
1560
|
-
}
|
@@ -5,7 +5,11 @@
|
|
5
5
|
@import "formstrap/vendor/flatpickr";
|
6
6
|
|
7
7
|
// Formstrap
|
8
|
-
@import "formstrap/forms";
|
9
8
|
@import "formstrap/general";
|
10
9
|
@import "formstrap/utilities";
|
10
|
+
@import "formstrap/shared";
|
11
11
|
@import "formstrap/media";
|
12
|
+
@import "formstrap/autocomplete";
|
13
|
+
@import "formstrap/file";
|
14
|
+
@import "formstrap/repeater";
|
15
|
+
@import "formstrap/search";
|
@@ -34,14 +34,6 @@ class Formstrap::MediaController < FormstrapController
|
|
34
34
|
@blob = ActiveStorage::Blob.find(params[:id])
|
35
35
|
end
|
36
36
|
|
37
|
-
def update
|
38
|
-
@blob = ActiveStorage::Blob.find(params[:id])
|
39
|
-
media_item_params[:filename] = media_item_params[:filename] + "." + @blob.filename.to_s.rpartition(".").last
|
40
|
-
if @blob.update(media_item_params)
|
41
|
-
flash.now[:notice] = t("admin.flash.updated", name: @blob.filename)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
37
|
def thumbnail
|
46
38
|
@blob = ActiveStorage::Blob.find(params[:id])
|
47
39
|
end
|
@@ -52,6 +44,7 @@ class Formstrap::MediaController < FormstrapController
|
|
52
44
|
blobs = filter_unattached(blobs)
|
53
45
|
blobs = filter_by_mimetype(blobs, media_params[:mimetype]) if media_params[:mimetype].present?
|
54
46
|
blobs = filter_excluded_models(blobs, media_params[:exclude_models]) if media_params[:exclude_models].present?
|
47
|
+
blobs = filter_search(blobs, media_params[:search]) if media_params[:search].present?
|
55
48
|
blobs
|
56
49
|
end
|
57
50
|
|
@@ -67,6 +60,10 @@ class Formstrap::MediaController < FormstrapController
|
|
67
60
|
blobs.not_attached_to(model_names)
|
68
61
|
end
|
69
62
|
|
63
|
+
def filter_search(blobs, string)
|
64
|
+
blobs.search(string)
|
65
|
+
end
|
66
|
+
|
70
67
|
def sort(blobs)
|
71
68
|
blobs.order(created_at: :desc)
|
72
69
|
end
|
@@ -77,6 +74,7 @@ class Formstrap::MediaController < FormstrapController
|
|
77
74
|
:mimetype,
|
78
75
|
:min,
|
79
76
|
:name,
|
77
|
+
:search,
|
80
78
|
:page,
|
81
79
|
:page_start,
|
82
80
|
:per_page,
|
@@ -85,8 +83,4 @@ class Formstrap::MediaController < FormstrapController
|
|
85
83
|
exclude_models: []
|
86
84
|
)
|
87
85
|
end
|
88
|
-
|
89
|
-
def media_item_params
|
90
|
-
params.require(:blob).permit!
|
91
|
-
end
|
92
86
|
end
|