hyper-kitten-tables 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +3 -0
  5. data/lib/hyper-kitten-tables.rb +6 -0
  6. data/lib/hyper_kitten_tables/components/table.rb +7 -0
  7. data/lib/hyper_kitten_tables/concerns/table.rb +134 -0
  8. data/lib/hyper_kitten_tables/engine.rb +5 -0
  9. data/lib/hyper_kitten_tables/version.rb +3 -0
  10. data/lib/tasks/tables_tasks.rake +4 -0
  11. data/spec/components/table_spec.rb +209 -0
  12. data/spec/dummy/Rakefile +6 -0
  13. data/spec/dummy/app/assets/config/manifest.js +3 -0
  14. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  15. data/spec/dummy/app/channels/application_cable/channel.rb +4 -0
  16. data/spec/dummy/app/channels/application_cable/connection.rb +4 -0
  17. data/spec/dummy/app/controllers/application_controller.rb +2 -0
  18. data/spec/dummy/app/controllers/pages_controller.rb +3 -0
  19. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  20. data/spec/dummy/app/jobs/application_job.rb +7 -0
  21. data/spec/dummy/app/mailers/application_mailer.rb +4 -0
  22. data/spec/dummy/app/models/application_record.rb +3 -0
  23. data/spec/dummy/app/views/hyper_kitten_meow/pages/hardcoded_page.html.haml +4 -0
  24. data/spec/dummy/app/views/pages/app_hardcoded_page.html.haml +4 -0
  25. data/spec/dummy/app/views/pages/show.html.haml +3 -0
  26. data/spec/dummy/bin/rails +4 -0
  27. data/spec/dummy/bin/rake +4 -0
  28. data/spec/dummy/bin/setup +33 -0
  29. data/spec/dummy/config/application.rb +26 -0
  30. data/spec/dummy/config/boot.rb +5 -0
  31. data/spec/dummy/config/cable.yml +10 -0
  32. data/spec/dummy/config/database.yml +16 -0
  33. data/spec/dummy/config/environment.rb +5 -0
  34. data/spec/dummy/config/environments/development.rb +56 -0
  35. data/spec/dummy/config/environments/production.rb +93 -0
  36. data/spec/dummy/config/environments/test.rb +50 -0
  37. data/spec/dummy/config/initializers/assets.rb +12 -0
  38. data/spec/dummy/config/initializers/content_security_policy.rb +26 -0
  39. data/spec/dummy/config/initializers/filter_parameter_logging.rb +6 -0
  40. data/spec/dummy/config/initializers/inflections.rb +16 -0
  41. data/spec/dummy/config/initializers/permissions_policy.rb +11 -0
  42. data/spec/dummy/config/locales/en.yml +33 -0
  43. data/spec/dummy/config/puma.rb +43 -0
  44. data/spec/dummy/config/routes.rb +3 -0
  45. data/spec/dummy/config/storage.yml +34 -0
  46. data/spec/dummy/config.ru +6 -0
  47. data/spec/dummy/db/migrate/20220805173427_create_action_text_tables.action_text.rb +26 -0
  48. data/spec/dummy/db/migrate/20220805173748_create_active_storage_tables.active_storage.rb +57 -0
  49. data/spec/dummy/db/schema.rb +134 -0
  50. data/spec/dummy/db/seeds.rb +23 -0
  51. data/spec/dummy/log/development.log +12689 -0
  52. data/spec/dummy/log/test.log +58989 -0
  53. data/spec/dummy/public/404.html +67 -0
  54. data/spec/dummy/public/422.html +67 -0
  55. data/spec/dummy/public/500.html +66 -0
  56. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  57. data/spec/dummy/public/apple-touch-icon.png +0 -0
  58. data/spec/dummy/public/favicon.ico +0 -0
  59. data/spec/dummy/storage/it/lb/itlbn65dlnw20cu9ii6epg3qtr0h +0 -0
  60. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-16-58-13.777.html +148 -0
  61. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-16-59-53.965.html +148 -0
  62. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-17-00-42.481.html +148 -0
  63. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-17-01-02.940.html +229 -0
  64. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-17-03-02.450.html +229 -0
  65. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-17-03-17.782.html +148 -0
  66. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-17-03-57.376.html +229 -0
  67. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-17-07-53.996.html +232 -0
  68. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-17-13-29.891.html +232 -0
  69. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-17-13-56.197.html +232 -0
  70. data/spec/dummy/tmp/capybara/screenshot_2022-10-04-17-15-26.557.html +232 -0
  71. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-14-43-43.563.html +165 -0
  72. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-14-45-19.375.html +157 -0
  73. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-15-29-06.088.html +1 -0
  74. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-15-29-06.102.html +1 -0
  75. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-15-29-06.116.html +1 -0
  76. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-15-29-06.193.html +1 -0
  77. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-15-29-06.206.html +1 -0
  78. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-26-51.644.html +96 -0
  79. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-26-54.957.html +91 -0
  80. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-30-28.415.html +91 -0
  81. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-30-34.037.html +96 -0
  82. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-43-01.197.html +91 -0
  83. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-43-04.942.html +96 -0
  84. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-45-09.535.html +96 -0
  85. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-45-14.082.html +91 -0
  86. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-45-26.094.html +96 -0
  87. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-45-26.446.html +91 -0
  88. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-57-08.858.html +96 -0
  89. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-57-11.332.html +91 -0
  90. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-58-08.456.html +91 -0
  91. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-16-58-08.832.html +96 -0
  92. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-02-35.674.html +91 -0
  93. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-02-39.415.html +96 -0
  94. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-03-38.082.html +96 -0
  95. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-03-38.564.html +91 -0
  96. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-04-08.143.html +91 -0
  97. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-04-08.472.html +96 -0
  98. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-04-34.570.html +91 -0
  99. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-04-40.657.html +96 -0
  100. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-04-52.001.html +91 -0
  101. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-04-52.410.html +96 -0
  102. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-06-40.488.html +91 -0
  103. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-06-46.796.html +96 -0
  104. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-09-28.828.html +91 -0
  105. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-09-32.459.html +96 -0
  106. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-09-45.931.html +91 -0
  107. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-09-46.318.html +96 -0
  108. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-12-03.393.html +96 -0
  109. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-12-06.113.html +91 -0
  110. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-12-11.111.html +96 -0
  111. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-12-16.868.html +91 -0
  112. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-15-57.176.html +91 -0
  113. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-16-03.653.html +96 -0
  114. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-29-32.001.html +91 -0
  115. data/spec/dummy/tmp/capybara/screenshot_2022-10-05-17-29-34.702.html +96 -0
  116. data/spec/dummy/tmp/capybara/screenshot_2022-10-11-16-24-42.604.html +85 -0
  117. data/spec/dummy/tmp/capybara/screenshot_2022-10-11-16-25-08.753.html +76 -0
  118. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-02-02.769.html +0 -0
  119. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-08-16.549.html +0 -0
  120. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-09-06.988.html +0 -0
  121. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-10-02.456.html +0 -0
  122. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-12-58.767.html +0 -0
  123. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-13-38.946.html +0 -0
  124. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-20-23.040.html +0 -0
  125. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-22-40.972.html +31 -0
  126. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-30-50.210.html +31 -0
  127. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-31-41.216.html +31 -0
  128. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-42-03.223.html +31 -0
  129. data/spec/dummy/tmp/capybara/screenshot_2022-10-12-14-53-14.392.html +0 -0
  130. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-52-54.850.html +35 -0
  131. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-53-03.992.html +0 -0
  132. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-53-40.077.html +0 -0
  133. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-53-55.068.html +0 -0
  134. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-54-08.951.html +0 -0
  135. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-54-39.523.html +0 -0
  136. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-55-46.588.html +0 -0
  137. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-56-53.302.html +0 -0
  138. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-57-13.712.html +0 -0
  139. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-16-59-55.972.html +0 -0
  140. data/spec/dummy/tmp/capybara/screenshot_2022-10-18-17-04-32.815.html +0 -0
  141. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-19-45-56.483.html +1 -0
  142. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-19-51-45.853.html +54 -0
  143. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-19-56-35.870.html +1 -0
  144. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-19-58-42.872.html +1 -0
  145. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-19-59-53.565.html +1 -0
  146. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-25-51.194.html +1 -0
  147. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-27-18.607.html +1 -0
  148. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-34-14.915.html +1 -0
  149. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-34-23.967.html +1 -0
  150. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-35-20.693.html +0 -0
  151. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-38-57.780.html +1 -0
  152. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-39-59.478.html +1 -0
  153. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-40-32.807.html +0 -0
  154. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-40-42.311.html +1 -0
  155. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-41-40.038.html +1 -0
  156. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-43-18.794.html +1 -0
  157. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-45-22.057.html +9 -0
  158. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-46-07.622.html +1 -0
  159. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-46-23.810.html +1 -0
  160. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-46-42.443.html +9 -0
  161. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-47-03.378.html +1 -0
  162. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-49-38.206.html +1 -0
  163. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-49-53.697.html +1 -0
  164. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-50-25.359.html +1 -0
  165. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-50-43.146.html +9 -0
  166. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-51-18.812.html +54 -0
  167. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-51-55.591.html +78 -0
  168. data/spec/dummy/tmp/capybara/screenshot_2022-11-16-20-52-42.586.html +78 -0
  169. data/spec/dummy/tmp/development_secret.txt +1 -0
  170. data/spec/dummy/tmp/restart.txt +0 -0
  171. data/spec/features/admin/create_first_user_spec.rb +34 -0
  172. data/spec/features/admin/menu_management_spec.rb +137 -0
  173. data/spec/features/admin/page_management_spec.rb +73 -0
  174. data/spec/features/admin/post_management_spec.rb +80 -0
  175. data/spec/features/admin/users_management_spec.rb +65 -0
  176. data/spec/features/display_pages_spec.rb +45 -0
  177. data/spec/features/display_posts_spec.rb +0 -0
  178. data/spec/rails_helper.rb +13 -0
  179. metadata +502 -0
@@ -0,0 +1,229 @@
1
+ <html class="h-100"><head><style type="text/css" data-tag-name="trix-editor">trix-editor {
2
+ display: block;
3
+ }
4
+
5
+ trix-editor:empty:not(:focus)::before {
6
+ content: attr(placeholder);
7
+ color: graytext;
8
+ cursor: text;
9
+ pointer-events: none;
10
+ white-space: pre-line;
11
+ }
12
+
13
+ trix-editor a[contenteditable=false] {
14
+ cursor: text;
15
+ }
16
+
17
+ trix-editor img {
18
+ max-width: 100%;
19
+ height: auto;
20
+ }
21
+
22
+ trix-editor [data-trix-attachment] figcaption textarea {
23
+ resize: none;
24
+ }
25
+
26
+ trix-editor [data-trix-attachment] figcaption textarea.trix-autoresize-clone {
27
+ position: absolute;
28
+ left: -9999px;
29
+ max-height: 0px;
30
+ }
31
+
32
+ trix-editor [data-trix-attachment] figcaption[data-trix-placeholder]:empty::before {
33
+ content: attr(data-trix-placeholder);
34
+ color: graytext;
35
+ }
36
+
37
+ trix-editor [data-trix-cursor-target] {
38
+ display: inline-block !important;
39
+ width: 1px !important;
40
+ padding: 0 !important;
41
+ margin: 0 !important;
42
+ border: none !important;
43
+ }
44
+
45
+ trix-editor [data-trix-cursor-target=left] {
46
+ vertical-align: top !important;
47
+ margin-left: -1px !important;
48
+ }
49
+
50
+ trix-editor [data-trix-cursor-target=right] {
51
+ vertical-align: bottom !important;
52
+ margin-right: -1px !important;
53
+ }</style><style type="text/css" data-tag-name="trix-toolbar">trix-toolbar {
54
+ display: block;
55
+ }
56
+
57
+ trix-toolbar {
58
+ white-space: nowrap;
59
+ }
60
+
61
+ trix-toolbar [data-trix-dialog] {
62
+ display: none;
63
+ }
64
+
65
+ trix-toolbar [data-trix-dialog][data-trix-active] {
66
+ display: block;
67
+ }
68
+
69
+ trix-toolbar [data-trix-dialog] [data-trix-validate]:invalid {
70
+ background-color: #ffdddd;
71
+ }</style>
72
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
73
+ <title>Meow</title>
74
+ <link rel="stylesheet" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3">
75
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/trix/1.3.1/trix.min.css">
76
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.9.1/font/bootstrap-icons.css">
77
+ <script type="importmap" data-turbo-track="reload">{
78
+ "imports": {
79
+ "bootstrap": "https://ga.jspm.io/npm:bootstrap@5.2.2/dist/js/bootstrap.esm.js",
80
+ "@popperjs/core": "https://ga.jspm.io/npm:@popperjs/core@2.11.6/lib/index.js",
81
+ "@hotwired/stimulus": "/assets/stimulus.min-aab608fae21f2c1bac54028a5ea332762374c7d5.js",
82
+ "@hotwired/stimulus-loading": "/assets/stimulus-loading-e367296568a6df104dc84fcfe5d1aafae5076fc0.js",
83
+ "sortablejs": "https://ga.jspm.io/npm:sortablejs@1.15.0/modular/sortable.esm.js",
84
+ "trix": "https://ga.jspm.io/npm:trix@2.0.0-beta.0/dist/trix.js",
85
+ "hyper_kitten_meow/application": "/assets/hyper_kitten_meow/application-18cb6ca0cdc2dc660e6211a74b9c9fd90ee26b70.js",
86
+ "hyper_kitten_meow/controllers/application": "/assets/hyper_kitten_meow/controllers/application-a45fcffa4627508814a7727d04043357d1dcedbe.js",
87
+ "hyper_kitten_meow/controllers": "/assets/hyper_kitten_meow/controllers/index-75d6331f3e6ac38720595fca892d1179c84dd34e.js",
88
+ "hyper_kitten_meow/controllers/menu_items_form_controller": "/assets/hyper_kitten_meow/controllers/menu_items_form_controller-9e4fa509fa20341521d88013ccadc71fa8f4c00e.js"
89
+ }
90
+ }</script>
91
+ <link rel="modulepreload" href="/assets/stimulus.min-aab608fae21f2c1bac54028a5ea332762374c7d5.js">
92
+ <link rel="modulepreload" href="/assets/stimulus-loading-e367296568a6df104dc84fcfe5d1aafae5076fc0.js">
93
+ <script src="/assets/es-module-shims.min-f7a11f41d669b1f9ca6432c0ba58580ba2b4087a.js" async="async" data-turbo-track="reload"></script>
94
+ <script type="module">import "application"</script>
95
+ <script type="module">import "hyper_kitten_meow/application"</script>
96
+
97
+ </head>
98
+ <body class="h-100">
99
+ <div class="container-fluid h-100">
100
+ <div class="row h-100">
101
+ <nav class="col-md-3 col-lg-2 d-md-block sidebar bg-dark text-white d-flex flex-column">
102
+ <h2 class="mb-3 mt-3">Meow</h2>
103
+ <hr>
104
+ <ul class="nav nav-pills flex-column mb-auto">
105
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/posts">Posts</a></li>
106
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/pages">Pages</a></li>
107
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/menus">Menus</a></li>
108
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/tags">Tags</a></li>
109
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/users">Users</a></li>
110
+ </ul>
111
+ <hr>
112
+ <a class="nav-link d-flex align-items-center text-white text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" href="#"><strong>Andrew</strong>
113
+ </a><ul class="dropdown-menu dropdown-menu-dark text-small shadow">
114
+ <li><a class="dropdown-item" href="/hyper-kitten-meow/admin/logout">Log Out</a></li>
115
+ </ul>
116
+ </nav>
117
+ <div class="col-md-9 col-lg-10 mt-3 px-4">
118
+ <section>
119
+ <div class="d-flex justify-content-between">
120
+ <h2>Edit My Menu</h2>
121
+ <div class="action">
122
+ <a class="btn btn-secondary" href="/hyper-kitten-meow/admin/menus">Back to Menus</a>
123
+ </div>
124
+ </div>
125
+ <form class="simple_form edit_menu" id="edit_menu_29" novalidate="novalidate" action="/hyper-kitten-meow/admin/menus/29" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="patch" autocomplete="off"><div class="mb-3 string required menu_name"><label class="form-label string required" for="menu_name">Name <abbr title="required">*</abbr></label><input class="form-control is-valid string required" type="text" value="My Menu" name="menu[name]" id="menu_name"></div>
126
+ <hr>
127
+ <div class="card">
128
+ <div class="card-body">
129
+ <h4>Menu Items</h4>
130
+ <div data-controller="menu-items-form">
131
+ <template data-menu-items-form-target="template">
132
+ <div class="card menu-item border mb-3" data-menu-items-target="menu-item" data-new-record="true" style="cursor: move">
133
+ <div class="card-body">
134
+ <div class="row">
135
+ <div class="col-1 align-self-center">
136
+ <i class="bi-grip-vertical fs-2"></i>
137
+ </div>
138
+ <div class="col-4">
139
+ <div class="mb-3 select required menu_menu_items_page"><label class="form-label select required" for="menu_menu_items_attributes_NEW_RECORD_page_id">Page <abbr title="required">*</abbr></label><select class="form-select select required" name="menu[menu_items_attributes][NEW_RECORD][page_id]" id="menu_menu_items_attributes_NEW_RECORD_page_id"><option value="" label=" "></option>
140
+ <option value="27">My Page 1</option>
141
+ <option value="28">My Page 2</option></select></div>
142
+ <div class="mb-3 hidden menu_menu_items_position"><input class="form-control hidden" autocomplete="off" type="hidden" name="menu[menu_items_attributes][NEW_RECORD][position]" id="menu_menu_items_attributes_NEW_RECORD_position"></div>
143
+ <div class="mb-3 hidden menu_menu_items__destroy"><input class="form-control hidden" autocomplete="off" type="hidden" value="false" name="menu[menu_items_attributes][NEW_RECORD][_destroy]" id="menu_menu_items_attributes_NEW_RECORD__destroy"></div>
144
+ </div>
145
+ <div class="col-3">
146
+ <div class="mb-3 string required menu_menu_items_title"><label class="form-label string required" for="menu_menu_items_attributes_NEW_RECORD_title">Title <abbr title="required">*</abbr></label><input class="form-control string required" type="text" name="menu[menu_items_attributes][NEW_RECORD][title]" id="menu_menu_items_attributes_NEW_RECORD_title"></div>
147
+ </div>
148
+ <div class="col-3">
149
+ <div class="mb-3 url optional menu_menu_items_url"><label class="form-label url optional" for="menu_menu_items_attributes_NEW_RECORD_url">Url</label><input class="form-control string url optional" type="url" name="menu[menu_items_attributes][NEW_RECORD][url]" id="menu_menu_items_attributes_NEW_RECORD_url"></div>
150
+ </div>
151
+ <div class="col-1 align-self-center">
152
+ <a class="btn btn-danger" data-action="click->menu-items-form#removeMenuItem" href="#">Remove</a>
153
+ </div>
154
+ </div>
155
+ </div>
156
+ </div>
157
+
158
+ </template>
159
+ <div class="card menu-item border mb-3" data-menu-items-target="menu-item" data-new-record="true" style="cursor: move">
160
+ <div class="card-body">
161
+ <div class="row">
162
+ <div class="col-1 align-self-center">
163
+ <i class="bi-grip-vertical fs-2"></i>
164
+ </div>
165
+ <div class="col-4">
166
+ <div class="mb-3 select required menu_menu_items_page"><label class="form-label select required" for="menu_menu_items_attributes_0_page_id">Page <abbr title="required">*</abbr></label><select class="form-select select required" name="menu[menu_items_attributes][0][page_id]" id="menu_menu_items_attributes_0_page_id"><option value="" label=" "></option>
167
+ <option value="27">My Page 1</option>
168
+ <option value="28">My Page 2</option></select></div>
169
+ <div class="mb-3 hidden menu_menu_items_position"><input class="form-control is-valid hidden" autocomplete="off" type="hidden" value="1" name="menu[menu_items_attributes][0][position]" id="menu_menu_items_attributes_0_position"></div>
170
+ <div class="mb-3 hidden menu_menu_items__destroy"><input class="form-control hidden" autocomplete="off" type="hidden" value="false" name="menu[menu_items_attributes][0][_destroy]" id="menu_menu_items_attributes_0__destroy"></div>
171
+ </div>
172
+ <div class="col-3">
173
+ <div class="mb-3 string required menu_menu_items_title"><label class="form-label string required" for="menu_menu_items_attributes_0_title">Title <abbr title="required">*</abbr></label><input class="form-control string required" type="text" name="menu[menu_items_attributes][0][title]" id="menu_menu_items_attributes_0_title"></div>
174
+ </div>
175
+ <div class="col-3">
176
+ <div class="mb-3 url optional menu_menu_items_url"><label class="form-label url optional" for="menu_menu_items_attributes_0_url">Url</label><input class="form-control string url optional" type="url" name="menu[menu_items_attributes][0][url]" id="menu_menu_items_attributes_0_url"></div>
177
+ </div>
178
+ <div class="col-1 align-self-center">
179
+ <a class="btn btn-danger" data-action="click->menu-items-form#removeMenuItem" href="#">Remove</a>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+
185
+
186
+ <div class="card menu-item border mb-3" data-menu-items-target="menu-item" data-new-record="true" style="cursor: move">
187
+ <div class="card-body">
188
+ <div class="row">
189
+ <div class="col-1 align-self-center">
190
+ <i class="bi-grip-vertical fs-2"></i>
191
+ </div>
192
+ <div class="col-4">
193
+ <div class="mb-3 select required menu_menu_items_page"><label class="form-label select required" for="menu_menu_items_attributes_1664903035345_page_id">Page <abbr title="required">*</abbr></label><select class="form-select select required" name="menu[menu_items_attributes][1664903035345][page_id]" id="menu_menu_items_attributes_1664903035345_page_id"><option value="" label=" "></option>
194
+ <option value="27">My Page 1</option>
195
+ <option value="28">My Page 2</option></select></div>
196
+ <div class="mb-3 hidden menu_menu_items_position"><input class="form-control hidden" autocomplete="off" type="hidden" name="menu[menu_items_attributes][1664903035345][position]" id="menu_menu_items_attributes_1664903035345_position"></div>
197
+ <div class="mb-3 hidden menu_menu_items__destroy"><input class="form-control hidden" autocomplete="off" type="hidden" value="false" name="menu[menu_items_attributes][1664903035345][_destroy]" id="menu_menu_items_attributes_1664903035345__destroy"></div>
198
+ </div>
199
+ <div class="col-3">
200
+ <div class="mb-3 string required menu_menu_items_title"><label class="form-label string required" for="menu_menu_items_attributes_1664903035345_title">Title <abbr title="required">*</abbr></label><input class="form-control string required" type="text" name="menu[menu_items_attributes][1664903035345][title]" id="menu_menu_items_attributes_1664903035345_title"></div>
201
+ </div>
202
+ <div class="col-3">
203
+ <div class="mb-3 url optional menu_menu_items_url"><label class="form-label url optional" for="menu_menu_items_attributes_1664903035345_url">Url</label><input class="form-control string url optional" type="url" name="menu[menu_items_attributes][1664903035345][url]" id="menu_menu_items_attributes_1664903035345_url"></div>
204
+ </div>
205
+ <div class="col-1 align-self-center">
206
+ <a class="btn btn-danger" data-action="click->menu-items-form#removeMenuItem" href="#">Remove</a>
207
+ </div>
208
+ </div>
209
+ </div>
210
+ </div>
211
+
212
+ <div class="mb-3" data-menu-items-form-target="links" draggable="false">
213
+ <a class="btn btn-success" data-action="click->menu-items-form#addMenuItem" href="#" draggable="false">Add Menu Item</a>
214
+ </div>
215
+ </div>
216
+ </div>
217
+ </div>
218
+ <div class="action mt-3">
219
+ <input type="submit" name="commit" value="Update Menu" class="btn btn-primary" data-disable-with="Update Menu">
220
+ </div>
221
+
222
+ </form></section>
223
+
224
+ </div>
225
+ </div>
226
+ </div>
227
+
228
+
229
+ </body></html>
@@ -0,0 +1,232 @@
1
+ <html class="h-100"><head><style type="text/css" data-tag-name="trix-editor">trix-editor {
2
+ display: block;
3
+ }
4
+
5
+ trix-editor:empty:not(:focus)::before {
6
+ content: attr(placeholder);
7
+ color: graytext;
8
+ cursor: text;
9
+ pointer-events: none;
10
+ white-space: pre-line;
11
+ }
12
+
13
+ trix-editor a[contenteditable=false] {
14
+ cursor: text;
15
+ }
16
+
17
+ trix-editor img {
18
+ max-width: 100%;
19
+ height: auto;
20
+ }
21
+
22
+ trix-editor [data-trix-attachment] figcaption textarea {
23
+ resize: none;
24
+ }
25
+
26
+ trix-editor [data-trix-attachment] figcaption textarea.trix-autoresize-clone {
27
+ position: absolute;
28
+ left: -9999px;
29
+ max-height: 0px;
30
+ }
31
+
32
+ trix-editor [data-trix-attachment] figcaption[data-trix-placeholder]:empty::before {
33
+ content: attr(data-trix-placeholder);
34
+ color: graytext;
35
+ }
36
+
37
+ trix-editor [data-trix-cursor-target] {
38
+ display: inline-block !important;
39
+ width: 1px !important;
40
+ padding: 0 !important;
41
+ margin: 0 !important;
42
+ border: none !important;
43
+ }
44
+
45
+ trix-editor [data-trix-cursor-target=left] {
46
+ vertical-align: top !important;
47
+ margin-left: -1px !important;
48
+ }
49
+
50
+ trix-editor [data-trix-cursor-target=right] {
51
+ vertical-align: bottom !important;
52
+ margin-right: -1px !important;
53
+ }</style><style type="text/css" data-tag-name="trix-toolbar">trix-toolbar {
54
+ display: block;
55
+ }
56
+
57
+ trix-toolbar {
58
+ white-space: nowrap;
59
+ }
60
+
61
+ trix-toolbar [data-trix-dialog] {
62
+ display: none;
63
+ }
64
+
65
+ trix-toolbar [data-trix-dialog][data-trix-active] {
66
+ display: block;
67
+ }
68
+
69
+ trix-toolbar [data-trix-dialog] [data-trix-validate]:invalid {
70
+ background-color: #ffdddd;
71
+ }</style>
72
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
73
+ <title>Meow</title>
74
+ <link rel="stylesheet" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3">
75
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/trix/1.3.1/trix.min.css">
76
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.9.1/font/bootstrap-icons.css">
77
+ <script type="importmap" data-turbo-track="reload">{
78
+ "imports": {
79
+ "bootstrap": "https://ga.jspm.io/npm:bootstrap@5.2.2/dist/js/bootstrap.esm.js",
80
+ "@popperjs/core": "https://ga.jspm.io/npm:@popperjs/core@2.11.6/lib/index.js",
81
+ "@hotwired/stimulus": "/assets/stimulus.min-aab608fae21f2c1bac54028a5ea332762374c7d5.js",
82
+ "@hotwired/stimulus-loading": "/assets/stimulus-loading-e367296568a6df104dc84fcfe5d1aafae5076fc0.js",
83
+ "sortablejs": "https://ga.jspm.io/npm:sortablejs@1.15.0/modular/sortable.esm.js",
84
+ "trix": "https://ga.jspm.io/npm:trix@2.0.0-beta.0/dist/trix.js",
85
+ "hyper_kitten_meow/application": "/assets/hyper_kitten_meow/application-18cb6ca0cdc2dc660e6211a74b9c9fd90ee26b70.js",
86
+ "hyper_kitten_meow/controllers/application": "/assets/hyper_kitten_meow/controllers/application-a45fcffa4627508814a7727d04043357d1dcedbe.js",
87
+ "hyper_kitten_meow/controllers": "/assets/hyper_kitten_meow/controllers/index-75d6331f3e6ac38720595fca892d1179c84dd34e.js",
88
+ "hyper_kitten_meow/controllers/menu_items_form_controller": "/assets/hyper_kitten_meow/controllers/menu_items_form_controller-9e4fa509fa20341521d88013ccadc71fa8f4c00e.js"
89
+ }
90
+ }</script>
91
+ <link rel="modulepreload" href="/assets/stimulus.min-aab608fae21f2c1bac54028a5ea332762374c7d5.js">
92
+ <link rel="modulepreload" href="/assets/stimulus-loading-e367296568a6df104dc84fcfe5d1aafae5076fc0.js">
93
+ <script src="/assets/es-module-shims.min-f7a11f41d669b1f9ca6432c0ba58580ba2b4087a.js" async="async" data-turbo-track="reload"></script>
94
+ <script type="module">import "application"</script>
95
+ <script type="module">import "hyper_kitten_meow/application"</script>
96
+
97
+ </head>
98
+ <body class="h-100">
99
+ <div class="container-fluid h-100">
100
+ <div class="row h-100">
101
+ <nav class="col-md-3 col-lg-2 d-md-block sidebar bg-dark text-white d-flex flex-column">
102
+ <h2 class="mb-3 mt-3">Meow</h2>
103
+ <hr>
104
+ <ul class="nav nav-pills flex-column mb-auto">
105
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/posts">Posts</a></li>
106
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/pages">Pages</a></li>
107
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/menus">Menus</a></li>
108
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/tags">Tags</a></li>
109
+ <li class="nav-item"><a class="nav-link text-white" href="/hyper-kitten-meow/admin/users">Users</a></li>
110
+ </ul>
111
+ <hr>
112
+ <a class="nav-link d-flex align-items-center text-white text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" href="#"><strong>Andrew</strong>
113
+ </a><ul class="dropdown-menu dropdown-menu-dark text-small shadow">
114
+ <li><a class="dropdown-item" href="/hyper-kitten-meow/admin/logout">Log Out</a></li>
115
+ </ul>
116
+ </nav>
117
+ <div class="col-md-9 col-lg-10 mt-3 px-4">
118
+ <div class="alert alert-danger">There was a problem saving the menu.</div>
119
+ <section>
120
+ <div class="d-flex justify-content-between">
121
+ <h2>Edit My Menu</h2>
122
+ <div class="action">
123
+ <a class="btn btn-secondary" href="/hyper-kitten-meow/admin/menus">Back to Menus</a>
124
+ </div>
125
+ </div>
126
+ <form class="simple_form edit_menu" id="edit_menu_30" novalidate="novalidate" action="/hyper-kitten-meow/admin/menus/30" accept-charset="UTF-8" method="post"><input type="hidden" name="_method" value="patch" autocomplete="off"><div class="mb-3 string required menu_name"><label class="form-label string required" for="menu_name">Name <abbr title="required">*</abbr></label><input class="form-control is-valid string required" type="text" value="My Menu" name="menu[name]" id="menu_name"></div>
127
+ <hr>
128
+ <div class="card">
129
+ <div class="card-body">
130
+ <h4>Menu Items</h4>
131
+ <div data-controller="menu-items-form">
132
+ <template data-menu-items-form-target="template">
133
+ <div class="card menu-item border mb-3" data-menu-items-target="menu-item" data-new-record="true" style="cursor: move">
134
+ <div class="card-body">
135
+ <div class="row">
136
+ <div class="col-1 align-self-center">
137
+ <i class="bi-grip-vertical fs-2"></i>
138
+ </div>
139
+ <div class="col-4">
140
+ <div class="mb-3 select required menu_menu_items_page"><label class="form-label select required" for="menu_menu_items_attributes_NEW_RECORD_page_id">Page <abbr title="required">*</abbr></label><select class="form-select select required" name="menu[menu_items_attributes][NEW_RECORD][page_id]" id="menu_menu_items_attributes_NEW_RECORD_page_id"><option value="" label=" "></option>
141
+ <option value="29">My Page 1</option>
142
+ <option value="30">My Page 2</option></select></div>
143
+ <div class="mb-3 hidden menu_menu_items_position"><input class="form-control hidden" autocomplete="off" type="hidden" name="menu[menu_items_attributes][NEW_RECORD][position]" id="menu_menu_items_attributes_NEW_RECORD_position"></div>
144
+ <div class="mb-3 hidden menu_menu_items__destroy"><input class="form-control hidden" autocomplete="off" type="hidden" value="false" name="menu[menu_items_attributes][NEW_RECORD][_destroy]" id="menu_menu_items_attributes_NEW_RECORD__destroy"></div>
145
+ </div>
146
+ <div class="col-3">
147
+ <div class="mb-3 string required menu_menu_items_title"><label class="form-label string required" for="menu_menu_items_attributes_NEW_RECORD_title">Title <abbr title="required">*</abbr></label><input class="form-control string required" type="text" name="menu[menu_items_attributes][NEW_RECORD][title]" id="menu_menu_items_attributes_NEW_RECORD_title"></div>
148
+ </div>
149
+ <div class="col-3">
150
+ <div class="mb-3 url optional menu_menu_items_url"><label class="form-label url optional" for="menu_menu_items_attributes_NEW_RECORD_url">Url</label><input class="form-control string url optional" type="url" name="menu[menu_items_attributes][NEW_RECORD][url]" id="menu_menu_items_attributes_NEW_RECORD_url"></div>
151
+ </div>
152
+ <div class="col-1 align-self-center">
153
+ <a class="btn btn-danger" data-action="click->menu-items-form#removeMenuItem" href="#">Remove</a>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+
159
+ </template>
160
+ <div class="card menu-item border mb-3" data-menu-items-target="menu-item" data-new-record="true" style="cursor: move">
161
+ <div class="card-body">
162
+ <div class="row">
163
+ <div class="col-1 align-self-center">
164
+ <i class="bi-grip-vertical fs-2"></i>
165
+ </div>
166
+ <div class="col-4">
167
+ <div class="mb-3 select required menu_menu_items_page"><label class="form-label select required" for="menu_menu_items_attributes_0_page_id">Page <abbr title="required">*</abbr></label><select class="form-select is-valid select required" name="menu[menu_items_attributes][0][page_id]" id="menu_menu_items_attributes_0_page_id"><option value="" label=" "></option>
168
+ <option selected="selected" value="29">My Page 1</option>
169
+ <option value="30">My Page 2</option></select></div>
170
+ <div class="mb-3 hidden menu_menu_items_position"><input class="form-control is-valid hidden" autocomplete="off" type="hidden" value="1" name="menu[menu_items_attributes][0][position]" id="menu_menu_items_attributes_0_position"></div>
171
+ <div class="mb-3 hidden menu_menu_items__destroy"><input class="form-control hidden" autocomplete="off" type="hidden" value="false" name="menu[menu_items_attributes][0][_destroy]" id="menu_menu_items_attributes_0__destroy"></div>
172
+ </div>
173
+ <div class="col-3">
174
+ <div class="mb-3 string required menu_menu_items_title"><label class="form-label string required" for="menu_menu_items_attributes_0_title">Title <abbr title="required">*</abbr></label><input class="form-control is-valid string required" type="text" value="First Item" name="menu[menu_items_attributes][0][title]" id="menu_menu_items_attributes_0_title"></div>
175
+ </div>
176
+ <div class="col-3">
177
+ <div class="mb-3 url optional menu_menu_items_url"><label class="form-label url optional" for="menu_menu_items_attributes_0_url">Url</label><input class="form-control string url optional" type="url" name="menu[menu_items_attributes][0][url]" id="menu_menu_items_attributes_0_url"></div>
178
+ </div>
179
+ <div class="col-1 align-self-center">
180
+ <a class="btn btn-danger" data-action="click->menu-items-form#removeMenuItem" href="#">Remove</a>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </div>
185
+
186
+ <div class="mb-3" data-menu-items-form-target="links">
187
+ <a class="btn btn-success" data-action="click->menu-items-form#addMenuItem" href="#">Add Menu Item</a>
188
+ </div>
189
+ <div class="card menu-item border mb-3" data-menu-items-target="menu-item" data-new-record="true" style="cursor: move">
190
+ <div class="card-body">
191
+ <div class="row">
192
+ <div class="col-1 align-self-center">
193
+ <i class="bi-grip-vertical fs-2"></i>
194
+ </div>
195
+ <div class="col-4">
196
+ <div class="mb-3 select required menu_menu_items_page"><label class="form-label select required" for="menu_menu_items_attributes_1_page_id">Page <abbr title="required">*</abbr></label><select class="form-select is-valid select required" name="menu[menu_items_attributes][1][page_id]" id="menu_menu_items_attributes_1_page_id"><option value="" label=" "></option>
197
+ <option value="29">My Page 1</option>
198
+ <option selected="selected" value="30">My Page 2</option></select></div>
199
+ <div class="mb-3 hidden menu_menu_items_position"><input class="form-control is-invalid hidden" aria-invalid="true" autocomplete="off" type="hidden" value="" name="menu[menu_items_attributes][1][position]" id="menu_menu_items_attributes_1_position"><div class="invalid-feedback">Position can't be blank</div></div>
200
+ <div class="mb-3 hidden menu_menu_items__destroy"><input class="form-control hidden" autocomplete="off" type="hidden" value="false" name="menu[menu_items_attributes][1][_destroy]" id="menu_menu_items_attributes_1__destroy"></div>
201
+ </div>
202
+ <div class="col-3">
203
+ <div class="mb-3 string required menu_menu_items_title"><label class="form-label string required" for="menu_menu_items_attributes_1_title">Title <abbr title="required">*</abbr></label><input class="form-control is-valid string required" type="text" value="Second Item" name="menu[menu_items_attributes][1][title]" id="menu_menu_items_attributes_1_title"></div>
204
+ </div>
205
+ <div class="col-3">
206
+ <div class="mb-3 url optional menu_menu_items_url"><label class="form-label url optional" for="menu_menu_items_attributes_1_url">Url</label><input class="form-control string url optional" type="url" name="menu[menu_items_attributes][1][url]" id="menu_menu_items_attributes_1_url"></div>
207
+ </div>
208
+ <div class="col-1 align-self-center">
209
+ <a class="btn btn-danger" data-action="click->menu-items-form#removeMenuItem" href="#">Remove</a>
210
+ </div>
211
+ </div>
212
+ </div>
213
+ </div>
214
+
215
+ <div class="mb-3" data-menu-items-form-target="links">
216
+ <a class="btn btn-success" data-action="click->menu-items-form#addMenuItem" href="#">Add Menu Item</a>
217
+ </div>
218
+ </div>
219
+ </div>
220
+ </div>
221
+ <div class="action mt-3">
222
+ <input type="submit" name="commit" value="Update Menu" class="btn btn-primary" data-disable-with="Update Menu">
223
+ </div>
224
+
225
+ </form></section>
226
+
227
+ </div>
228
+ </div>
229
+ </div>
230
+
231
+
232
+ </body></html>