headmin 0.3.2 → 0.4.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.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +27 -0
  3. data/.gitignore +14 -0
  4. data/.nvmrc +1 -0
  5. data/.ruby-version +1 -1
  6. data/CHANGELOG.md +24 -0
  7. data/Gemfile +8 -5
  8. data/Gemfile.lock +197 -25
  9. data/README.md +9 -1
  10. data/Rakefile +1 -7
  11. data/app/assets/images/document.docx +0 -0
  12. data/app/assets/images/document.pdf +0 -0
  13. data/app/assets/images/image.jpg +0 -0
  14. data/app/assets/images/spreadsheet.xls +0 -0
  15. data/app/assets/images/video.mp4 +0 -0
  16. data/app/assets/javascripts/headmin/config/i18n.js +9 -9
  17. data/app/assets/javascripts/headmin/controllers/autocomplete_controller.js +255 -0
  18. data/app/assets/javascripts/headmin/controllers/blocks_controller.js +74 -79
  19. data/app/assets/javascripts/headmin/controllers/date_range_controller.js +24 -24
  20. data/app/assets/javascripts/headmin/controllers/dropzone_controller.js +23 -25
  21. data/app/assets/javascripts/headmin/controllers/file_preview_controller.js +237 -237
  22. data/app/assets/javascripts/headmin/controllers/filter_controller.js +44 -44
  23. data/app/assets/javascripts/headmin/controllers/filters_controller.js +57 -61
  24. data/app/assets/javascripts/headmin/controllers/flatpickr_controller.js +29 -29
  25. data/app/assets/javascripts/headmin/controllers/hello_controller.js +3 -3
  26. data/app/assets/javascripts/headmin/controllers/notification_controller.js +7 -6
  27. data/app/assets/javascripts/headmin/controllers/popup_controller.js +51 -52
  28. data/app/assets/javascripts/headmin/controllers/redactorx_controller.js +36 -9
  29. data/app/assets/javascripts/headmin/controllers/repeater_controller.js +122 -125
  30. data/app/assets/javascripts/headmin/controllers/select_controller.js +40 -39
  31. data/app/assets/javascripts/headmin/controllers/table_actions_controller.js +88 -77
  32. data/app/assets/javascripts/headmin/controllers/table_controller.js +103 -89
  33. data/app/assets/javascripts/headmin/index.js +38 -39
  34. data/app/assets/javascripts/headmin.js +287 -732
  35. data/app/assets/stylesheets/headmin/forms/autocomplete.scss +21 -0
  36. data/app/assets/stylesheets/headmin/forms/file.scss +46 -0
  37. data/app/assets/stylesheets/headmin/forms/repeater.scss +62 -0
  38. data/app/assets/stylesheets/headmin/forms/search.scss +12 -0
  39. data/app/assets/stylesheets/headmin/forms.scss +11 -0
  40. data/app/assets/stylesheets/headmin/general.scss +5 -0
  41. data/app/assets/stylesheets/headmin/overrides/bootstrap.scss +5 -3
  42. data/app/assets/stylesheets/headmin/overrides/redactorx.scss +74 -0
  43. data/app/assets/stylesheets/headmin/popup.scss +1 -0
  44. data/app/assets/stylesheets/headmin/syntax.scss +36 -349
  45. data/app/assets/stylesheets/headmin/table.scss +1 -1
  46. data/app/assets/stylesheets/headmin/utilities/buttons.scss +19 -0
  47. data/app/assets/stylesheets/headmin/utilities/dropzone.scss +72 -0
  48. data/app/assets/stylesheets/headmin/utilities.scss +2 -68
  49. data/app/assets/stylesheets/headmin/vendor/tom-select-bootstrap.css +1 -2
  50. data/app/assets/stylesheets/headmin.css +206 -206
  51. data/app/assets/stylesheets/headmin.scss +1 -1
  52. data/app/controllers/concerns/headmin/authentication.rb +1 -1
  53. data/app/controllers/concerns/headmin/searchable.rb +1 -1
  54. data/app/controllers/concerns/headmin/sortable.rb +7 -7
  55. data/app/helpers/headmin/admin_helper.rb +1 -2
  56. data/app/helpers/headmin/bootstrap_helper.rb +2 -24
  57. data/app/helpers/headmin/filter_helper.rb +1 -1
  58. data/app/helpers/headmin/form_helper.rb +5 -11
  59. data/app/helpers/headmin/notification_helper.rb +21 -21
  60. data/app/helpers/headmin/request_helper.rb +3 -3
  61. data/app/models/concerns/headmin/block.rb +1 -2
  62. data/app/models/concerns/headmin/blockable.rb +2 -2
  63. data/app/models/concerns/headmin/field.rb +2 -1
  64. data/app/models/concerns/headmin/fieldable.rb +8 -8
  65. data/app/models/concerns/headmin/form/autocompletable.rb +38 -0
  66. data/app/models/concerns/headmin/form/hintable.rb +19 -0
  67. data/app/models/concerns/headmin/form/input_groupable.rb +23 -0
  68. data/app/models/concerns/headmin/form/labelable.rb +33 -0
  69. data/app/models/concerns/headmin/form/listable.rb +28 -0
  70. data/app/models/concerns/headmin/form/placeholderable.rb +13 -0
  71. data/app/models/concerns/headmin/form/validatable.rb +40 -0
  72. data/app/models/concerns/headmin/form/wrappable.rb +21 -0
  73. data/app/models/headmin/.DS_Store +0 -0
  74. data/app/models/headmin/blocks_view.rb +15 -0
  75. data/app/models/headmin/form/blocks_view.rb +29 -0
  76. data/app/models/headmin/form/checkbox_view.rb +52 -0
  77. data/app/models/headmin/form/date_range_view.rb +25 -0
  78. data/app/models/headmin/form/date_view.rb +45 -0
  79. data/app/models/headmin/form/email_view.rb +48 -0
  80. data/app/models/headmin/form/file_view.rb +116 -0
  81. data/app/models/headmin/form/flatpickr_range_view.rb +102 -0
  82. data/app/models/headmin/form/flatpickr_view.rb +37 -0
  83. data/app/models/headmin/form/hidden_view.rb +10 -0
  84. data/app/models/headmin/form/hint_view.rb +6 -0
  85. data/app/models/headmin/form/input_group_view.rb +19 -0
  86. data/app/models/headmin/form/label_view.rb +24 -0
  87. data/app/models/headmin/form/number_view.rb +49 -0
  88. data/app/models/headmin/form/password_view.rb +44 -0
  89. data/app/models/headmin/form/redactorx_view.rb +59 -0
  90. data/app/models/headmin/form/search_view.rb +48 -0
  91. data/app/models/headmin/form/select_view.rb +62 -0
  92. data/app/models/headmin/form/switch_view.rb +23 -0
  93. data/app/models/headmin/form/text_view.rb +48 -0
  94. data/app/models/headmin/form/textarea_view.rb +44 -0
  95. data/app/models/headmin/form/url_view.rb +48 -0
  96. data/app/models/headmin/form/wrapper_view.rb +19 -0
  97. data/app/models/headmin/form/wysiwyg_view.rb +17 -0
  98. data/app/models/headmin/thumbnail_view.rb +66 -0
  99. data/app/models/view_model.rb +58 -0
  100. data/app/views/headmin/_blocks.html.erb +13 -9
  101. data/app/views/headmin/_heading.html.erb +7 -1
  102. data/app/views/headmin/_thumbnail.html.erb +5 -39
  103. data/app/views/headmin/dropdown/_item.html.erb +1 -1
  104. data/app/views/headmin/forms/_autocomplete.html.erb +11 -0
  105. data/app/views/headmin/forms/_blocks.html.erb +16 -17
  106. data/app/views/headmin/forms/_checkbox.html.erb +24 -29
  107. data/app/views/headmin/forms/_datalist.html.erb +3 -0
  108. data/app/views/headmin/forms/_date.html.erb +24 -24
  109. data/app/views/headmin/forms/_date_range.html.erb +19 -21
  110. data/app/views/headmin/forms/_email.html.erb +27 -32
  111. data/app/views/headmin/forms/_errors.html.erb +2 -3
  112. data/app/views/headmin/forms/_file.html.erb +84 -181
  113. data/app/views/headmin/forms/_flatpickr.html.erb +19 -20
  114. data/app/views/headmin/forms/_flatpickr_range.html.erb +28 -37
  115. data/app/views/headmin/forms/_hidden.html.erb +9 -10
  116. data/app/views/headmin/forms/_hint.html.erb +16 -0
  117. data/app/views/headmin/forms/_input_group.html.erb +21 -0
  118. data/app/views/headmin/forms/_label.html.erb +5 -13
  119. data/app/views/headmin/forms/_number.html.erb +23 -35
  120. data/app/views/headmin/forms/_password.html.erb +21 -30
  121. data/app/views/headmin/forms/_redactorx.html.erb +21 -40
  122. data/app/views/headmin/forms/_repeater.html.erb +55 -60
  123. data/app/views/headmin/forms/_search.html.erb +43 -0
  124. data/app/views/headmin/forms/_select.html.erb +24 -49
  125. data/app/views/headmin/forms/_switch.html.erb +29 -0
  126. data/app/views/headmin/forms/_text.html.erb +42 -96
  127. data/app/views/headmin/forms/_textarea.html.erb +21 -32
  128. data/app/views/headmin/forms/_url.html.erb +26 -31
  129. data/app/views/headmin/forms/_validation.html.erb +10 -13
  130. data/app/views/headmin/forms/_wrapper.html.erb +9 -0
  131. data/app/views/headmin/forms/_wysiwyg.html.erb +28 -0
  132. data/app/views/headmin/forms/autocomplete/_item.html.erb +3 -0
  133. data/app/views/headmin/forms/autocomplete/_list.html.erb +3 -0
  134. data/app/views/headmin/forms/fields/_group.html.erb +6 -4
  135. data/app/views/headmin/forms/repeater/_row.html.erb +4 -4
  136. data/app/views/headmin/nav/item/_devise.html.erb +1 -1
  137. data/app/views/headmin/table/_actions.html.erb +1 -1
  138. data/app/views/headmin/table/actions/_action.html.erb +2 -1
  139. data/app/views/headmin/table/actions/_delete.html.erb +1 -1
  140. data/app/views/headmin/views/devise/registrations/_edit.html.erb +2 -2
  141. data/bin/console +0 -1
  142. data/config/initializers/customize_input_error.rb +4 -4
  143. data/config/locales/headmin/forms/en.yml +0 -11
  144. data/config/locales/headmin/forms/nl.yml +0 -11
  145. data/esbuild-css.js +18 -18
  146. data/esbuild-js.js +8 -8
  147. data/headmin.gemspec +1 -3
  148. data/lib/generators/headmin/blocks_generator.rb +8 -8
  149. data/lib/generators/headmin/devise_generator.rb +4 -4
  150. data/lib/generators/headmin/fields_generator.rb +9 -9
  151. data/lib/generators/templates/controllers/auth/confirmations_controller.rb +1 -3
  152. data/lib/generators/templates/controllers/auth/omniauth_callbacks_controller.rb +1 -3
  153. data/lib/generators/templates/controllers/auth/passwords_controller.rb +1 -3
  154. data/lib/generators/templates/controllers/auth/registrations_controller.rb +1 -3
  155. data/lib/generators/templates/controllers/auth/sessions_controller.rb +1 -3
  156. data/lib/generators/templates/controllers/auth/unlocks_controller.rb +1 -3
  157. data/lib/generators/templates/models/block.rb +1 -1
  158. data/lib/headmin/engine.rb +6 -6
  159. data/lib/headmin/version.rb +1 -3
  160. data/lib/headmin.rb +0 -2
  161. data/package-lock.json +5359 -0
  162. data/package.json +13 -7
  163. data/view_model_benchmark.rb +74 -0
  164. data/yarn-error.log +367 -0
  165. data/yarn.lock +1448 -161
  166. metadata +69 -25
  167. data/.rubocop.yml +0 -13
  168. data/app/assets/stylesheets/headmin/form.scss +0 -132
  169. data/app/assets/stylesheets/headmin/overrides/redactorx.css +0 -3
  170. data/app/helpers/headmin/documentation_helper.rb +0 -35
  171. data/app/models/headmin/documentation_renderer.rb +0 -32
  172. data/app/models/headmin/form/base.rb +0 -79
  173. data/app/models/headmin/form/text.rb +0 -53
  174. data/app/services/block_service.rb +0 -72
  175. data/app/views/headmin/_card.html.erb +0 -52
  176. data/app/views/headmin/forms/_actions.html.erb +0 -28
  177. data/app/views/headmin/forms/_base.html.erb +0 -114
  178. data/app/views/headmin/forms/_image.html.erb +0 -21
  179. data/app/views/headmin/forms/_video.html.erb +0 -21
  180. data/app/views/headmin/forms/actions/_destroy.html.erb +0 -13
  181. data/app/views/headmin/forms/actions/_save.html.erb +0 -12
  182. data/app/views/headmin/forms/actions/_view.html.erb +0 -15
  183. data/docs/blocks-and-fields.md +0 -54
  184. data/docs/blocks.md +0 -48
  185. data/docs/devise.md +0 -41
  186. data/docs/fields.md +0 -79
@@ -0,0 +1,72 @@
1
+ .h-dropzone {
2
+ position: relative;
3
+ border: 2px dashed $input-border-color;
4
+ border-radius: $border-radius;
5
+
6
+ // Direct children
7
+ & > *:not(.form-control) {
8
+ margin: 0.5rem;
9
+ pointer-events: none;
10
+ z-index: 2;
11
+ }
12
+
13
+ &.dragover, &:hover {
14
+ border-color: $gray-400;
15
+ }
16
+
17
+ &.dragover {
18
+ input[type="file"] {
19
+ z-index: 3
20
+ }
21
+ }
22
+
23
+ &.focus, &.dragover {
24
+ border-color: $input-focus-border-color;
25
+ outline: 0;
26
+ @if $enable-shadows {
27
+ @include box-shadow($input-box-shadow, $input-focus-box-shadow);
28
+ } @else {
29
+ box-shadow: $input-focus-box-shadow;
30
+ }
31
+
32
+ &.is-valid {
33
+ border-color: $success;
34
+ box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($success, $input-btn-focus-color-opacity);
35
+ }
36
+
37
+ &.is-invalid {
38
+ border-color: $danger;
39
+ box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($danger, $input-btn-focus-color-opacity);
40
+ }
41
+ }
42
+
43
+ .form-control {
44
+ position: absolute;
45
+ top: 0;
46
+ left: 0;
47
+ width: 100%;
48
+ height: 100%;
49
+ z-index: 1;
50
+ border: none;
51
+ box-shadow: none;
52
+ text-indent: -100vw;
53
+ color: transparent;
54
+ background: none
55
+ }
56
+
57
+ &.is-invalid {
58
+ border-color: $form-feedback-invalid-color;
59
+ }
60
+
61
+ &.is-valid {
62
+ border-color: $form-feedback-valid-color;
63
+ }
64
+ }
65
+
66
+ .h-dropzone-placeholder {
67
+ color: $input-placeholder-color;
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ width: 100%;
72
+ }
@@ -1,68 +1,2 @@
1
- .btn-link {
2
- text-decoration: none;
3
- }
4
-
5
- .h-btn-light {
6
- color: $form-text-color;
7
- background-color: $gray-200;
8
- }
9
-
10
- .h-btn-outline-light {
11
- background-color: $white;
12
- color: $form-text-color;
13
- border-color: $input-border-color;
14
- }
15
-
16
- .h-btn-outline-transparent {
17
- color: $form-text-color;
18
- border: 1px solid $input-border-color;
19
- }
20
-
21
- .h-dropzone {
22
- border: 2px dashed $input-border-color;
23
- border-radius: $border-radius;
24
-
25
- // Direct children
26
- & > *:not(input[type="file"]) {
27
- pointer-events: none;
28
- z-index: 2;
29
- }
30
-
31
- &.dragover, &:hover {
32
- border-color: $gray-400;
33
- }
34
-
35
- &.dragover {
36
- input[type="file"] {
37
- z-index: 3
38
- }
39
- }
40
-
41
- &.active {
42
- border-color: $input-focus-border-color;
43
- outline: 0;
44
- @if $enable-shadows {
45
- @include box-shadow($input-box-shadow, $input-focus-box-shadow);
46
- } @else {
47
- box-shadow: $input-focus-box-shadow;
48
- }
49
- }
50
-
51
- input[type="file"] {
52
- position: absolute;
53
- top: 0;
54
- left: 0;
55
- width: 100%;
56
- height: 100%;
57
- opacity: 0;
58
- z-index: 1;
59
- }
60
- }
61
-
62
- .h-dropzone-placeholder {
63
- color: $input-placeholder-color;
64
- display: flex;
65
- align-items: center;
66
- justify-content: center;
67
- width: 100%;
68
- }
1
+ @import "utilities/buttons";
2
+ @import "utilities/dropzone";
@@ -533,5 +533,4 @@
533
533
  .input-group > .ts-wrapper:not(:last-child) > .ts-control {
534
534
  border-top-right-radius: 0;
535
535
  border-bottom-right-radius: 0;
536
- }
537
- /*# sourceMappingURL=tom-select.bootstrap5.css.map */
536
+ }
@@ -1,7 +1,7 @@
1
1
  @charset "UTF-8";
2
2
  @import "https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css";
3
3
 
4
- /* sass-plugin-0:/usr/local/var/www/headmin/src/scss/headmin.scss */
4
+ /* sass-plugin-0:/opt/homebrew/var/www/headmin/src/scss/headmin.scss */
5
5
  :root {
6
6
  --bs-blue: #0d6efd;
7
7
  --bs-indigo: #6610f2;
@@ -260,7 +260,7 @@ small,
260
260
  mark,
261
261
  .mark {
262
262
  padding: 0.2em;
263
- background-color: #fcf8e3;
263
+ background-color: #ffec89;
264
264
  }
265
265
  sub,
266
266
  sup {
@@ -12913,76 +12913,96 @@ span.flatpickr-weekday {
12913
12913
  top: 3px;
12914
12914
  }
12915
12915
  .rx-container {
12916
- width: 100%;
12916
+ padding: 0 !important;
12917
+ border: 1px solid #ced4da;
12918
+ border-radius: 0.25rem;
12917
12919
  }
12918
- input[type=search] {
12919
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%236c757d' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z'/%3E%3C/svg%3E%0A");
12920
- background-repeat: no-repeat;
12921
- background-position: 10px center;
12922
- padding-left: 35px;
12920
+ .rx-container.rx-in-focus {
12921
+ color: #212529;
12922
+ background-color: #fff;
12923
+ border-color: #86b7fe;
12924
+ outline: 0;
12925
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
12923
12926
  }
12924
- .form-control[readonly] {
12925
- background-color: transparent;
12927
+ .rx-container.rx-in-focus.is-valid {
12928
+ border-color: #198754;
12929
+ box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
12926
12930
  }
12927
- .form-label[required=required]:after {
12928
- content: "*";
12929
- margin-left: 1px;
12931
+ .rx-container.rx-in-focus.is-invalid {
12932
+ border-color: #dc3545;
12933
+ box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
12930
12934
  }
12931
- .forms-group .card-footer {
12932
- border-top: none;
12935
+ .rx-container.is-valid,
12936
+ .rx-container.is-invalid {
12937
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
12933
12938
  }
12934
- .repeater {
12935
- position: relative;
12939
+ .rx-toolbar-container.is-rx-toolbar {
12940
+ background: transparent;
12941
+ border-bottom: 1px solid #ced4da;
12936
12942
  }
12937
- .repeater-row {
12943
+ .rx-content {
12944
+ padding: 0.375rem 0.75rem !important;
12938
12945
  position: relative;
12939
12946
  }
12940
- .repeater-row :hover > .repeater-row-remove {
12941
- visibility: visible;
12947
+ .rx-content p {
12948
+ font-size: 0.9rem;
12949
+ line-height: 1.5;
12950
+ color: #212529;
12942
12951
  }
12943
- .repeater-row :hover > .repeater-row-add {
12944
- visibility: visible;
12952
+ .rx-placeholder:before {
12953
+ font-size: 0.9rem;
12954
+ color: #6c757d;
12955
+ opacity: 1;
12945
12956
  }
12946
- .repeater-row :hover > .repeater-row-handle {
12947
- visibility: visible;
12957
+ .rx-control {
12958
+ margin-left: -0.75rem;
12948
12959
  }
12949
- .repeater-row-remove {
12950
- position: absolute;
12951
- top: calc(50% - 17px);
12952
- right: -22px;
12953
- z-index: 2;
12954
- visibility: hidden;
12960
+ .rx-toolbar .rx-button-icon {
12961
+ background: #fff;
12955
12962
  }
12956
- .repeater-row-remove i.bi {
12957
- background: white;
12958
- border-radius: 50%;
12963
+ .rx-toolbar .rx-button-icon span {
12964
+ color: #6c757d;
12959
12965
  }
12960
- .repeater-row-add {
12961
- position: absolute;
12962
- top: calc(100% - 18px);
12963
- right: calc(50% - 17px);
12964
- z-index: 2;
12965
- visibility: hidden;
12966
+ .rx-toolbar .rx-button-icon:hover span {
12967
+ color: #212529;
12966
12968
  }
12967
- .repeater-row-add i.bi {
12968
- background: white;
12969
- border-radius: 50%;
12969
+ .form-label[required=required]:after,
12970
+ .form-check-label[required=required]:after {
12971
+ content: " *";
12972
+ color: #dc3545;
12970
12973
  }
12971
- .repeater-row-handle {
12974
+ .h-autocomplete {
12972
12975
  position: absolute;
12973
- top: 0;
12976
+ top: calc(100% + 2px);
12974
12977
  left: 0;
12975
- height: 100%;
12976
- width: 18px;
12977
- display: flex;
12978
- align-items: center;
12979
- justify-content: center;
12980
- z-index: 2;
12981
- visibility: hidden;
12982
- cursor: move;
12978
+ z-index: 1000;
12979
+ width: 100%;
12980
+ font-family: var(--bs-font-sans-serif);
12981
+ font-style: normal;
12982
+ font-weight: 400;
12983
+ line-height: 1.5;
12984
+ text-align: left;
12985
+ text-align: start;
12986
+ text-decoration: none;
12987
+ text-shadow: none;
12988
+ text-transform: none;
12989
+ letter-spacing: normal;
12990
+ word-break: normal;
12991
+ word-spacing: normal;
12992
+ white-space: normal;
12993
+ line-break: auto;
12994
+ font-size: 1rem;
12995
+ word-wrap: break-word;
12996
+ background-color: #fff;
12997
+ background-clip: padding-box;
12998
+ border-radius: 0.25rem !important;
12999
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
13000
+ border: 1px solid rgba(0, 0, 0, 0.15);
13001
+ overflow: hidden;
12983
13002
  }
12984
- .h-form-file {
12985
- position: relative;
13003
+ .h-autocomplete .list-group-flush {
13004
+ margin: 0;
13005
+ padding: 0;
12986
13006
  }
12987
13007
  .h-form-file .h-form-file-thumbnails {
12988
13008
  margin-bottom: 0.5rem;
@@ -13022,9 +13042,73 @@ input[type=search] {
13022
13042
  .h-form-file-thumbnail-remove:hover {
13023
13043
  background: #e15361;
13024
13044
  }
13045
+ .repeater {
13046
+ position: relative;
13047
+ }
13048
+ .repeater-row {
13049
+ position: relative;
13050
+ }
13051
+ .repeater-row:hover .repeater-row-remove {
13052
+ visibility: visible;
13053
+ }
13054
+ .repeater-row:hover .repeater-row-add {
13055
+ visibility: visible;
13056
+ }
13057
+ .repeater-row:hover .repeater-row-handle {
13058
+ visibility: visible;
13059
+ }
13060
+ .repeater-row-remove {
13061
+ position: absolute;
13062
+ top: calc(50% - 17px);
13063
+ right: -22px;
13064
+ z-index: 2;
13065
+ visibility: hidden;
13066
+ }
13067
+ .repeater-row-remove i.bi {
13068
+ background: white;
13069
+ border-radius: 50%;
13070
+ }
13071
+ .repeater-row-add {
13072
+ position: absolute;
13073
+ top: calc(100% - 18px);
13074
+ right: calc(50% - 17px);
13075
+ z-index: 2;
13076
+ visibility: hidden;
13077
+ }
13078
+ .repeater-row-add i.bi {
13079
+ background: white;
13080
+ border-radius: 50%;
13081
+ }
13082
+ .repeater-row-handle {
13083
+ position: absolute;
13084
+ top: 0;
13085
+ left: 0;
13086
+ height: 100%;
13087
+ width: 18px;
13088
+ display: flex;
13089
+ align-items: center;
13090
+ justify-content: center;
13091
+ z-index: 2;
13092
+ visibility: hidden;
13093
+ cursor: move;
13094
+ }
13095
+ input[type=search] {
13096
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%236c757d' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z'/%3E%3C/svg%3E%0A");
13097
+ background-repeat: no-repeat;
13098
+ background-position: 10px center;
13099
+ padding-left: 35px !important;
13100
+ }
13101
+ .form-floating input[type=search] ~ label {
13102
+ padding-left: 35px;
13103
+ }
13025
13104
  html {
13026
13105
  height: 100%;
13027
13106
  }
13107
+ mark,
13108
+ .mark {
13109
+ padding: 0;
13110
+ box-shadow: 0 0.2em 0 #ffec89, 0 -0.2em 0 #ffec89;
13111
+ }
13028
13112
  .body {
13029
13113
  background: rgba(0, 0, 0, 0.03);
13030
13114
  height: 100vh;
@@ -13129,10 +13213,12 @@ body.empty {
13129
13213
  border: 1px solid #ced4da;
13130
13214
  }
13131
13215
  .h-dropzone {
13216
+ position: relative;
13132
13217
  border: 2px dashed #ced4da;
13133
13218
  border-radius: 0.25rem;
13134
13219
  }
13135
- .h-dropzone > *:not(input[type=file]) {
13220
+ .h-dropzone > *:not(.form-control) {
13221
+ margin: 0.5rem;
13136
13222
  pointer-events: none;
13137
13223
  z-index: 2;
13138
13224
  }
@@ -13143,19 +13229,40 @@ body.empty {
13143
13229
  .h-dropzone.dragover input[type=file] {
13144
13230
  z-index: 3;
13145
13231
  }
13146
- .h-dropzone.active {
13232
+ .h-dropzone.focus,
13233
+ .h-dropzone.dragover {
13147
13234
  border-color: #86b7fe;
13148
13235
  outline: 0;
13149
13236
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
13150
13237
  }
13151
- .h-dropzone input[type=file] {
13238
+ .h-dropzone.focus.is-valid,
13239
+ .h-dropzone.dragover.is-valid {
13240
+ border-color: #198754;
13241
+ box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
13242
+ }
13243
+ .h-dropzone.focus.is-invalid,
13244
+ .h-dropzone.dragover.is-invalid {
13245
+ border-color: #dc3545;
13246
+ box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
13247
+ }
13248
+ .h-dropzone .form-control {
13152
13249
  position: absolute;
13153
13250
  top: 0;
13154
13251
  left: 0;
13155
13252
  width: 100%;
13156
13253
  height: 100%;
13157
- opacity: 0;
13158
13254
  z-index: 1;
13255
+ border: none;
13256
+ box-shadow: none;
13257
+ text-indent: -100vw;
13258
+ color: transparent;
13259
+ background: none;
13260
+ }
13261
+ .h-dropzone.is-invalid {
13262
+ border-color: #dc3545;
13263
+ }
13264
+ .h-dropzone.is-valid {
13265
+ border-color: #198754;
13159
13266
  }
13160
13267
  .h-dropzone-placeholder {
13161
13268
  color: #6c757d;
@@ -13232,6 +13339,7 @@ body.empty {
13232
13339
  background-clip: padding-box;
13233
13340
  border-radius: 0.3rem;
13234
13341
  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
13342
+ border: 1px solid rgba(0, 0, 0, 0.2);
13235
13343
  }
13236
13344
  .h-popup.closed {
13237
13345
  display: none;
@@ -13254,201 +13362,93 @@ body.empty {
13254
13362
  left: calc(50% - 14px);
13255
13363
  font-size: 28px;
13256
13364
  }
13365
+ .h-syntax {
13366
+ background-color: #ffffcc;
13367
+ }
13368
+ .h-syntax .hll {
13369
+ background-color: #ffffcc;
13370
+ }
13371
+ .h-syntax {
13372
+ background: #f8f8f8;
13373
+ }
13257
13374
  .h-syntax .c {
13258
- color: #727272;
13375
+ color: #6a737d;
13376
+ }
13377
+ .h-syntax .k {
13378
+ color: #d73a49;
13259
13379
  }
13260
13380
  .h-syntax .ch {
13261
- font-style: italic;
13262
- color: #60a0b0;
13381
+ color: #6a737d;
13263
13382
  }
13264
13383
  .h-syntax .cm {
13265
- color: #727272;
13384
+ color: #6a737d;
13266
13385
  }
13267
13386
  .h-syntax .cp {
13268
- color: #008085;
13387
+ color: #d73a49;
13269
13388
  }
13270
13389
  .h-syntax .cpf {
13271
- color: #007020;
13390
+ color: #032f62;
13272
13391
  }
13273
13392
  .h-syntax .c1 {
13274
- color: #727272;
13393
+ color: #6a737d;
13275
13394
  }
13276
13395
  .h-syntax .cs {
13277
- color: #727272;
13396
+ color: #6a737d;
13278
13397
  }
13279
13398
  .h-syntax .gd {
13280
- background-color: #fcc;
13281
- border: 1px solid #c00;
13282
- }
13283
- .h-syntax .ge {
13284
- font-style: italic;
13285
- }
13286
- .h-syntax .gr {
13287
- color: #f00;
13399
+ color: #b31d28;
13400
+ background-color: #ffeef0;
13288
13401
  }
13289
13402
  .h-syntax .gh {
13290
- color: #030;
13403
+ color: #005cc5;
13291
13404
  }
13292
13405
  .h-syntax .gi {
13293
- background-color: #cfc;
13294
- border: 1px solid #0c0;
13295
- }
13296
- .h-syntax .go {
13297
- color: #aaa;
13298
- }
13299
- .h-syntax .gp {
13300
- color: #009;
13406
+ color: #22863a;
13407
+ background-color: #f0fff4;
13301
13408
  }
13302
13409
  .h-syntax .gs {
13303
- font-weight: 700;
13410
+ font-weight: bold;
13304
13411
  }
13305
13412
  .h-syntax .gu {
13306
- color: #030;
13413
+ color: #6f42c1;
13414
+ font-weight: bold;
13307
13415
  }
13308
13416
  .h-syntax .gt {
13309
- color: #9c6;
13310
- }
13311
- .h-syntax .gl {
13312
- text-decoration: underline;
13313
- }
13314
- .h-syntax .k {
13315
- color: #069;
13417
+ color: #0044DD;
13316
13418
  }
13317
13419
  .h-syntax .kc {
13318
- color: #069;
13420
+ color: #005cc5;
13319
13421
  }
13320
13422
  .h-syntax .kd {
13321
- color: #069;
13423
+ color: #d73a49;
13322
13424
  }
13323
13425
  .h-syntax .kn {
13324
- color: #069;
13426
+ color: #d73a49;
13325
13427
  }
13326
13428
  .h-syntax .kp {
13327
- color: #069;
13429
+ color: #d73a49;
13328
13430
  }
13329
13431
  .h-syntax .kr {
13330
- color: #069;
13432
+ color: #d73a49;
13331
13433
  }
13332
13434
  .h-syntax .kt {
13333
- color: #078;
13435
+ color: #d73a49;
13334
13436
  }
13335
13437
  .h-syntax .m {
13336
- color: #c24f19;
13337
- }
13338
- .h-syntax .mb {
13339
- color: #40a070;
13340
- }
13341
- .h-syntax .mf {
13342
- color: #c24f19;
13343
- }
13344
- .h-syntax .mh {
13345
- color: #c24f19;
13346
- }
13347
- .h-syntax .mi {
13348
- color: #c24f19;
13349
- }
13350
- .h-syntax .il {
13351
- color: #c24f19;
13352
- }
13353
- .h-syntax .mo {
13354
- color: #c24f19;
13438
+ color: #666666;
13355
13439
  }
13356
13440
  .h-syntax .s {
13357
- color: #d73038;
13358
- }
13359
- .h-syntax .sa {
13360
- color: #4070a0;
13361
- }
13362
- .h-syntax .sb {
13363
- color: #c30;
13364
- }
13365
- .h-syntax .sc {
13366
- color: #c30;
13367
- }
13368
- .h-syntax .dl {
13369
- color: #4070a0;
13370
- }
13371
- .h-syntax .sd {
13372
- font-style: italic;
13373
- color: #c30;
13374
- }
13375
- .h-syntax .s2 {
13376
- color: #c30;
13377
- }
13378
- .h-syntax .se {
13379
- color: #c30;
13380
- }
13381
- .h-syntax .sh {
13382
- color: #c30;
13383
- }
13384
- .h-syntax .si {
13385
- color: #a00;
13386
- }
13387
- .h-syntax .sx {
13388
- color: #c30;
13389
- }
13390
- .h-syntax .sr {
13391
- color: #337e7e;
13392
- }
13393
- .h-syntax .s1 {
13394
- color: #c30;
13395
- }
13396
- .h-syntax .ss {
13397
- color: #fc3;
13398
- }
13399
- .h-syntax .na {
13400
- color: #006ee0;
13441
+ color: #032f62;
13401
13442
  }
13402
13443
  .h-syntax .nb {
13403
- color: #366;
13444
+ color: #005cc5;
13404
13445
  }
13405
13446
  .h-syntax .nc {
13406
- color: #168174;
13447
+ color: #6f42c1;
13407
13448
  }
13408
13449
  .h-syntax .no {
13409
- color: #360;
13450
+ color: #005cc5;
13410
13451
  }
13411
13452
  .h-syntax .nd {
13412
- color: #6b62de;
13413
- }
13414
- .h-syntax .ni {
13415
- color: #727272;
13416
- }
13417
- .h-syntax .ne {
13418
- color: #c00;
13419
- }
13420
- .h-syntax .nf {
13421
- color: #b715f4;
13422
- }
13423
- .h-syntax .nl {
13424
- color: #6b62de;
13425
- }
13426
- .h-syntax .nn {
13427
- color: #007ca5;
13428
- }
13429
- .h-syntax .nt {
13430
- color: #2f6f9f;
13431
- }
13432
- .h-syntax .nv {
13433
- color: #033;
13434
- }
13435
- .h-syntax .o {
13436
- color: #555;
13437
- }
13438
- .h-syntax .ow {
13439
- color: #000;
13440
- }
13441
- .h-syntax .w {
13442
- color: #bbb;
13443
- }
13444
- .h-syntax .language-bash::before,
13445
- .h-syntax .language-sh::before {
13446
- color: #009;
13447
- content: "$ ";
13448
- user-select: none;
13449
- }
13450
- .h-syntax .language-powershell::before {
13451
- color: #009;
13452
- content: "PM> ";
13453
- user-select: none;
13453
+ color: #6f42c1;
13454
13454
  }
@@ -53,7 +53,7 @@
53
53
 
54
54
  // Headmin
55
55
  @import "headmin/filters";
56
- @import "headmin/form";
56
+ @import "headmin/forms";
57
57
  @import "headmin/general";
58
58
  @import "headmin/layout";
59
59
  @import "headmin/login";
@@ -6,4 +6,4 @@ module Headmin
6
6
  before_action :authenticate_admin!
7
7
  end
8
8
  end
9
- end
9
+ end