inertia_rails 3.12.1 → 3.13.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 (160) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/lib/generators/inertia/controller/templates/controller.rb.tt +1 -1
  4. data/lib/generators/inertia/install/frameworks.yml +16 -36
  5. data/lib/generators/inertia/install/install_generator.rb +51 -8
  6. data/lib/generators/inertia/install/js_package_manager.rb +6 -6
  7. data/lib/generators/inertia/install/templates/controller.rb +2 -4
  8. data/lib/generators/inertia/install/templates/inertia_controller.rb +5 -0
  9. data/lib/generators/inertia/install/templates/react/InertiaExample.jsx +2 -2
  10. data/lib/generators/inertia/install/templates/react/InertiaExample.tsx +2 -2
  11. data/lib/generators/inertia/install/templates/react/inertia.jsx +65 -0
  12. data/lib/generators/inertia/install/templates/react/inertia.tsx +65 -0
  13. data/lib/generators/inertia/install/templates/react/tsconfig.app.json +7 -0
  14. data/lib/generators/inertia/install/templates/react/types/globals.d.ts +8 -0
  15. data/lib/generators/inertia/install/templates/react/types/index.ts +8 -0
  16. data/lib/generators/inertia/install/templates/svelte/InertiaExample.svelte +1 -1
  17. data/lib/generators/inertia/install/templates/svelte/InertiaExample.ts.svelte +1 -1
  18. data/lib/generators/inertia/install/templates/svelte/inertia.js +14 -3
  19. data/lib/generators/inertia/install/templates/svelte/{inertia.ts.tt → inertia.ts} +12 -2
  20. data/lib/generators/inertia/install/templates/svelte/tsconfig.json +8 -0
  21. data/lib/generators/inertia/install/templates/svelte/types/globals.d.ts +8 -0
  22. data/lib/generators/inertia/install/templates/svelte/types/index.ts +8 -0
  23. data/lib/generators/inertia/install/templates/tailwind/application.css +3 -3
  24. data/lib/generators/inertia/install/templates/vue/InertiaExample.ts.vue +1 -1
  25. data/lib/generators/inertia/install/templates/vue/InertiaExample.vue +1 -1
  26. data/lib/generators/inertia/install/templates/vue/inertia.js +30 -3
  27. data/lib/generators/inertia/install/templates/vue/inertia.ts +31 -3
  28. data/lib/generators/inertia/install/templates/vue/tsconfig.app.json +9 -1
  29. data/lib/generators/inertia/install/templates/vue/types/globals.d.ts +8 -0
  30. data/lib/generators/inertia/install/templates/vue/types/index.ts +8 -0
  31. data/lib/generators/inertia/scaffold_controller/scaffold_controller_generator.rb +4 -0
  32. data/lib/generators/inertia/scaffold_controller/templates/controller.rb.tt +7 -5
  33. data/lib/generators/inertia_templates/scaffold/templates/react/{Edit.jsx.tt → edit.jsx.tt} +5 -8
  34. data/lib/generators/inertia_templates/scaffold/templates/react/{Edit.tsx.tt → edit.tsx.tt} +7 -9
  35. data/lib/generators/inertia_templates/scaffold/templates/react/form.jsx.tt +94 -0
  36. data/lib/generators/inertia_templates/scaffold/templates/react/form.tsx.tt +109 -0
  37. data/lib/generators/inertia_templates/scaffold/templates/react/{Index.jsx.tt → index.jsx.tt} +1 -1
  38. data/lib/generators/inertia_templates/scaffold/templates/react/{Index.tsx.tt → index.tsx.tt} +1 -1
  39. data/lib/generators/inertia_templates/scaffold/templates/react/{New.jsx.tt → new.jsx.tt} +3 -5
  40. data/lib/generators/inertia_templates/scaffold/templates/react/{New.tsx.tt → new.tsx.tt} +5 -6
  41. data/lib/generators/inertia_templates/scaffold/templates/react/{Show.jsx.tt → show.jsx.tt} +1 -1
  42. data/lib/generators/inertia_templates/scaffold/templates/react/{Show.tsx.tt → show.tsx.tt} +1 -1
  43. data/lib/generators/inertia_templates/scaffold/templates/svelte/{Edit.svelte.tt → edit.svelte.tt} +9 -13
  44. data/lib/generators/inertia_templates/scaffold/templates/{svelte4/Edit.svelte.tt → svelte/edit.ts.svelte.tt} +11 -15
  45. data/lib/generators/inertia_templates/scaffold/templates/svelte/form.svelte.tt +96 -0
  46. data/lib/generators/inertia_templates/scaffold/templates/svelte/form.ts.svelte.tt +103 -0
  47. data/lib/generators/inertia_templates/scaffold/templates/svelte/{Index.svelte.tt → index.svelte.tt} +1 -1
  48. data/lib/generators/inertia_templates/scaffold/templates/svelte/{Index.ts.svelte.tt → index.ts.svelte.tt} +1 -1
  49. data/lib/generators/inertia_templates/scaffold/templates/svelte/{New.svelte.tt → new.svelte.tt} +4 -7
  50. data/lib/generators/inertia_templates/scaffold/templates/{svelte4/New.svelte.tt → svelte/new.ts.svelte.tt} +6 -9
  51. data/lib/generators/inertia_templates/scaffold/templates/svelte/{Show.svelte.tt → show.svelte.tt} +1 -1
  52. data/lib/generators/inertia_templates/scaffold/templates/svelte/{Show.ts.svelte.tt → show.ts.svelte.tt} +1 -1
  53. data/lib/generators/inertia_templates/scaffold/templates/vue/{Edit.ts.vue.tt → edit.ts.vue.tt} +11 -15
  54. data/lib/generators/inertia_templates/scaffold/templates/vue/{Edit.vue.tt → edit.vue.tt} +9 -13
  55. data/lib/generators/inertia_templates/scaffold/templates/vue/form.ts.vue.tt +102 -0
  56. data/lib/generators/inertia_templates/scaffold/templates/vue/form.vue.tt +98 -0
  57. data/lib/generators/inertia_templates/scaffold/templates/vue/{Index.ts.vue.tt → index.ts.vue.tt} +1 -1
  58. data/lib/generators/inertia_templates/scaffold/templates/vue/{Index.vue.tt → index.vue.tt} +1 -1
  59. data/lib/generators/inertia_templates/scaffold/templates/vue/{New.ts.vue.tt → new.ts.vue.tt} +6 -9
  60. data/lib/generators/inertia_templates/scaffold/templates/vue/{New.vue.tt → new.vue.tt} +4 -7
  61. data/lib/generators/inertia_templates/scaffold/templates/vue/{Show.ts.vue.tt → show.ts.vue.tt} +1 -1
  62. data/lib/generators/inertia_templates/scaffold/templates/vue/{Show.vue.tt → show.vue.tt} +1 -1
  63. data/lib/generators/inertia_tw_templates/scaffold/templates/react/{Edit.jsx.tt → edit.jsx.tt} +5 -8
  64. data/lib/generators/inertia_tw_templates/scaffold/templates/react/{Edit.tsx.tt → edit.tsx.tt} +6 -9
  65. data/lib/generators/inertia_tw_templates/scaffold/templates/react/form.jsx.tt +106 -0
  66. data/lib/generators/inertia_tw_templates/scaffold/templates/react/form.tsx.tt +122 -0
  67. data/lib/generators/inertia_tw_templates/scaffold/templates/react/{Index.jsx.tt → index.jsx.tt} +1 -1
  68. data/lib/generators/inertia_tw_templates/scaffold/templates/react/{Index.tsx.tt → index.tsx.tt} +1 -1
  69. data/lib/generators/inertia_tw_templates/scaffold/templates/react/{New.jsx.tt → new.jsx.tt} +3 -5
  70. data/lib/generators/inertia_tw_templates/scaffold/templates/react/{New.tsx.tt → new.tsx.tt} +4 -6
  71. data/lib/generators/inertia_tw_templates/scaffold/templates/react/{Show.jsx.tt → show.jsx.tt} +1 -1
  72. data/lib/generators/inertia_tw_templates/scaffold/templates/react/{Show.tsx.tt → show.tsx.tt} +1 -1
  73. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/{Edit.svelte.tt → edit.svelte.tt} +9 -13
  74. data/lib/generators/inertia_tw_templates/scaffold/templates/{svelte4/Edit.svelte.tt → svelte/edit.ts.svelte.tt} +11 -15
  75. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/form.svelte.tt +109 -0
  76. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/form.ts.svelte.tt +115 -0
  77. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/{Index.svelte.tt → index.svelte.tt} +1 -1
  78. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/{Index.ts.svelte.tt → index.ts.svelte.tt} +1 -1
  79. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/{New.svelte.tt → new.svelte.tt} +4 -6
  80. data/lib/generators/inertia_tw_templates/scaffold/templates/{svelte4/New.svelte.tt → svelte/new.ts.svelte.tt} +6 -9
  81. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/{Show.svelte.tt → show.svelte.tt} +1 -1
  82. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/{Show.ts.svelte.tt → show.ts.svelte.tt} +1 -1
  83. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{Edit.ts.vue.tt → edit.ts.vue.tt} +10 -15
  84. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{Edit.vue.tt → edit.vue.tt} +8 -13
  85. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{Form.ts.vue.tt → form.ts.vue.tt} +19 -42
  86. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{Form.vue.tt → form.vue.tt} +18 -38
  87. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{Index.ts.vue.tt → index.ts.vue.tt} +1 -1
  88. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{Index.vue.tt → index.vue.tt} +1 -1
  89. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{New.ts.vue.tt → new.ts.vue.tt} +6 -9
  90. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{New.vue.tt → new.vue.tt} +4 -7
  91. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{Show.ts.vue.tt → show.ts.vue.tt} +1 -1
  92. data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{Show.vue.tt → show.vue.tt} +1 -1
  93. data/lib/inertia_rails/generators/controller_template_base.rb +1 -1
  94. data/lib/inertia_rails/generators/helper.rb +2 -3
  95. data/lib/inertia_rails/generators/scaffold_template_base.rb +3 -3
  96. data/lib/inertia_rails/version.rb +1 -1
  97. metadata +87 -116
  98. data/lib/generators/inertia/install/templates/react/inertia.js +0 -45
  99. data/lib/generators/inertia/install/templates/react/inertia.ts +0 -51
  100. data/lib/generators/inertia/install/templates/svelte4/InertiaExample.svelte +0 -116
  101. data/lib/generators/inertia/install/templates/svelte4/InertiaExample.ts.svelte +0 -116
  102. data/lib/generators/inertia/install/templates/svelte4/inertia.js +0 -43
  103. data/lib/generators/inertia/install/templates/svelte4/inertia.ts.tt +0 -44
  104. data/lib/generators/inertia/install/templates/svelte4/svelte.config.js +0 -7
  105. data/lib/generators/inertia/install/templates/svelte4/tsconfig.json +0 -21
  106. data/lib/generators/inertia/install/templates/svelte4/tsconfig.node.json +0 -12
  107. data/lib/generators/inertia/install/templates/svelte4/vite-env.d.ts +0 -2
  108. data/lib/generators/inertia_templates/controller/templates/svelte4/view.svelte.tt +0 -2
  109. data/lib/generators/inertia_templates/scaffold/templates/react/Form.jsx.tt +0 -111
  110. data/lib/generators/inertia_templates/scaffold/templates/react/Form.tsx.tt +0 -130
  111. data/lib/generators/inertia_templates/scaffold/templates/svelte/Edit.ts.svelte.tt +0 -37
  112. data/lib/generators/inertia_templates/scaffold/templates/svelte/Form.svelte.tt +0 -97
  113. data/lib/generators/inertia_templates/scaffold/templates/svelte/Form.ts.svelte.tt +0 -102
  114. data/lib/generators/inertia_templates/scaffold/templates/svelte/New.ts.svelte.tt +0 -30
  115. data/lib/generators/inertia_templates/scaffold/templates/svelte4/Edit.ts.svelte.tt +0 -38
  116. data/lib/generators/inertia_templates/scaffold/templates/svelte4/Form.svelte.tt +0 -96
  117. data/lib/generators/inertia_templates/scaffold/templates/svelte4/Form.ts.svelte.tt +0 -106
  118. data/lib/generators/inertia_templates/scaffold/templates/svelte4/Index.svelte.tt +0 -36
  119. data/lib/generators/inertia_templates/scaffold/templates/svelte4/Index.ts.svelte.tt +0 -37
  120. data/lib/generators/inertia_templates/scaffold/templates/svelte4/New.ts.svelte.tt +0 -31
  121. data/lib/generators/inertia_templates/scaffold/templates/svelte4/One.svelte.tt +0 -28
  122. data/lib/generators/inertia_templates/scaffold/templates/svelte4/One.ts.svelte.tt +0 -30
  123. data/lib/generators/inertia_templates/scaffold/templates/svelte4/Show.svelte.tt +0 -39
  124. data/lib/generators/inertia_templates/scaffold/templates/svelte4/Show.ts.svelte.tt +0 -40
  125. data/lib/generators/inertia_templates/scaffold/templates/svelte4/types.ts.tt +0 -19
  126. data/lib/generators/inertia_templates/scaffold/templates/vue/Form.ts.vue.tt +0 -101
  127. data/lib/generators/inertia_templates/scaffold/templates/vue/Form.vue.tt +0 -94
  128. data/lib/generators/inertia_tw_templates/controller/templates/svelte4/view.svelte.tt +0 -2
  129. data/lib/generators/inertia_tw_templates/scaffold/templates/react/Form.jsx.tt +0 -122
  130. data/lib/generators/inertia_tw_templates/scaffold/templates/react/Form.tsx.tt +0 -142
  131. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/Edit.ts.svelte.tt +0 -45
  132. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/Form.svelte.tt +0 -118
  133. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/Form.ts.svelte.tt +0 -123
  134. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/New.ts.svelte.tt +0 -33
  135. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/Edit.ts.svelte.tt +0 -46
  136. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/Form.svelte.tt +0 -120
  137. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/Form.ts.svelte.tt +0 -130
  138. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/Index.svelte.tt +0 -43
  139. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/Index.ts.svelte.tt +0 -44
  140. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/New.ts.svelte.tt +0 -34
  141. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/One.svelte.tt +0 -28
  142. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/One.ts.svelte.tt +0 -30
  143. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/Show.svelte.tt +0 -51
  144. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/Show.ts.svelte.tt +0 -52
  145. data/lib/generators/inertia_tw_templates/scaffold/templates/svelte4/types.ts.tt +0 -19
  146. /data/lib/generators/inertia/install/templates/react/{vite-env.d.ts → types/vite-env.d.ts} +0 -0
  147. /data/lib/generators/inertia/install/templates/svelte/{vite-env.d.ts → types/vite-env.d.ts} +0 -0
  148. /data/lib/generators/inertia/install/templates/vue/{vite-env.d.ts → types/vite-env.d.ts} +0 -0
  149. /data/lib/generators/inertia_templates/scaffold/templates/react/{One.jsx.tt → one.jsx.tt} +0 -0
  150. /data/lib/generators/inertia_templates/scaffold/templates/react/{One.tsx.tt → one.tsx.tt} +0 -0
  151. /data/lib/generators/inertia_templates/scaffold/templates/svelte/{One.svelte.tt → one.svelte.tt} +0 -0
  152. /data/lib/generators/inertia_templates/scaffold/templates/svelte/{One.ts.svelte.tt → one.ts.svelte.tt} +0 -0
  153. /data/lib/generators/inertia_templates/scaffold/templates/vue/{One.ts.vue.tt → one.ts.vue.tt} +0 -0
  154. /data/lib/generators/inertia_templates/scaffold/templates/vue/{One.vue.tt → one.vue.tt} +0 -0
  155. /data/lib/generators/inertia_tw_templates/scaffold/templates/react/{One.jsx.tt → one.jsx.tt} +0 -0
  156. /data/lib/generators/inertia_tw_templates/scaffold/templates/react/{One.tsx.tt → one.tsx.tt} +0 -0
  157. /data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/{One.svelte.tt → one.svelte.tt} +0 -0
  158. /data/lib/generators/inertia_tw_templates/scaffold/templates/svelte/{One.ts.svelte.tt → one.ts.svelte.tt} +0 -0
  159. /data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{One.ts.vue.tt → one.ts.vue.tt} +0 -0
  160. /data/lib/generators/inertia_tw_templates/scaffold/templates/vue/{One.vue.tt → one.vue.tt} +0 -0
@@ -1,120 +0,0 @@
1
- <script>
2
- import { useForm } from '@inertiajs/svelte'
3
- import { createEventDispatcher } from 'svelte'
4
-
5
- const dispatch = createEventDispatcher()
6
-
7
- export let <%= singular_table_name %>
8
- export let submitText
9
-
10
- const form = useForm({
11
- <% attributes.each do |attribute| -%>
12
- <% if attribute.password_digest? -%>
13
- password: '',
14
- password_confirmation: '',
15
- <% else -%>
16
- <%= attribute.column_name %>: <%= singular_table_name %>.<%= attribute.column_name %> || <%= default_value(attribute) %>,
17
- <% end -%>
18
- <% end -%>
19
- })
20
- </script>
21
-
22
- <form
23
- class="contents"
24
- on:submit|preventDefault={dispatch('submit', { form: $form })}
25
- >
26
- <% attributes.each do |attribute| -%>
27
- <div class="my-5">
28
- <% if attribute.password_digest? -%>
29
- <label for="password">Password</label>
30
- <input
31
- type="password"
32
- name="password"
33
- id="password"
34
- bind:value={$form.password}
35
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
36
- />
37
- {#if $form.errors.password}
38
- <div class="text-red-500 px-3 py-2 font-medium">
39
- {$form.errors.password.join(', ')}
40
- </div>
41
- {/if}
42
- </div>
43
-
44
- <div class="my-5">
45
- <label for="password_confirmation">Password confirmation</label>
46
- <input
47
- type="password"
48
- name="password_confirmation"
49
- id="password_confirmation"
50
- bind:value={$form.password_confirmation}
51
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
52
- />
53
- {#if $form.errors.password_confirmation}
54
- <div class="text-red-500 px-3 py-2 font-medium">
55
- {$form.errors.password_confirmation.join(', ')}
56
- </div>
57
- {/if}
58
- <% else -%>
59
- <label for="<%= attribute.singular_name %>"><%= attribute.human_name %></label>
60
- <% if input_type(attribute) == "text_area" -%>
61
- <textarea
62
- name="<%= attribute.singular_name %>"
63
- id="<%= attribute.singular_name %>"
64
- bind:value={$form.<%= attribute.column_name %>}
65
- rows="4"
66
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
67
- />
68
- <% elsif attribute.attachment? -%>
69
- <input
70
- type="file"
71
- name="<%= attribute.singular_name %>"
72
- id="<%= attribute.singular_name %>"
73
- on:input={(e) => ($form.<%= attribute.column_name %> = e.target.files[0])}
74
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
75
- />
76
- <% elsif attribute.attachments? -%>
77
- <input
78
- type="file"
79
- multiple
80
- name="<%= attribute.singular_name %>[]"
81
- id="<%= attribute.singular_name %>"
82
- on:input={(e) => ($form.<%= attribute.column_name %> = Array.from(e.target.files))}
83
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
84
- />
85
- <% elsif input_type(attribute) == "checkbox" -%>
86
- <input
87
- type="<%= input_type(attribute) %>"
88
- name="<%= attribute.singular_name %>"
89
- id="<%= attribute.singular_name %>"
90
- bind:checked={$form.<%= attribute.column_name %>}
91
- class="block mt-2 h-5 w-5"
92
- />
93
- <% else -%>
94
- <input
95
- type="<%= input_type(attribute) %>"
96
- name="<%= attribute.singular_name %>"
97
- id="<%= attribute.singular_name %>"
98
- bind:value={$form.<%= attribute.column_name %>}
99
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
100
- />
101
- <% end -%>
102
- {#if $form.errors.<%= attribute.column_name %>}
103
- <div class="text-red-500 px-3 py-2 font-medium">
104
- {$form.errors.<%= attribute.column_name %>.join(', ')}
105
- </div>
106
- {/if}
107
- <% end -%>
108
- </div>
109
-
110
- <% end -%>
111
- <div class="inline">
112
- <button
113
- type="submit"
114
- disabled={$form.processing}
115
- class="rounded-lg py-3 px-5 bg-blue-600 text-white inline-block font-medium cursor-pointer"
116
- >
117
- {submitText}
118
- </button>
119
- </div>
120
- </form>
@@ -1,130 +0,0 @@
1
- <script lang="ts">
2
- import { useForm, type InertiaForm } from '@inertiajs/svelte'
3
- import { createEventDispatcher } from 'svelte'
4
- import type { <%= inertia_model_type %>, <%= inertia_model_form_type %> } from './types'
5
-
6
- const dispatch = createEventDispatcher<{
7
- submit: { form: InertiaForm<<%= inertia_model_form_type %>> }
8
- }>()
9
-
10
- export let <%= singular_table_name %>: <%= inertia_model_type %>
11
- export let submitText: string
12
-
13
- <% if attributes.any? { |a| a.attachment? || a.attachments? } -%>
14
- const filesFromEvent = (e: Event) => {
15
- const target = e.target as HTMLInputElement
16
- return Array.from(target.files || [])
17
- }
18
-
19
- <% end -%>
20
- const form = useForm<<%= inertia_model_form_type %>>({
21
- <% attributes.reject { |a| a.attachment? || a.attachments? }.each do |attribute| -%>
22
- <% if attribute.password_digest? -%>
23
- password: '',
24
- password_confirmation: '',
25
- <% else -%>
26
- <%= attribute.column_name %>: <%= singular_table_name %>.<%= attribute.column_name %>,
27
- <% end -%>
28
- <% end -%>
29
- })
30
- </script>
31
-
32
- <form
33
- class="contents"
34
- on:submit|preventDefault={() => dispatch('submit', { form: $form })}
35
- >
36
- <% attributes.each do |attribute| -%>
37
- <div class="my-5">
38
- <% if attribute.password_digest? -%>
39
- <label for="password">Password</label>
40
- <input
41
- type="password"
42
- name="password"
43
- id="password"
44
- bind:value={$form.password}
45
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
46
- />
47
- {#if $form.errors.password}
48
- <div class="text-red-500 px-3 py-2 font-medium">
49
- {$form.errors.password}
50
- </div>
51
- {/if}
52
- </div>
53
-
54
- <div class="my-5">
55
- <label for="password_confirmation">Password confirmation</label>
56
- <input
57
- type="password"
58
- name="password_confirmation"
59
- id="password_confirmation"
60
- bind:value={$form.password_confirmation}
61
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
62
- />
63
- {#if $form.errors.password_confirmation}
64
- <div class="text-red-500 px-3 py-2 font-medium">
65
- {$form.errors.password_confirmation}
66
- </div>
67
- {/if}
68
- <% else -%>
69
- <label for="<%= attribute.singular_name %>"><%= attribute.human_name %></label>
70
- <% if input_type(attribute) == "text_area" -%>
71
- <textarea
72
- name="<%= attribute.singular_name %>"
73
- id="<%= attribute.singular_name %>"
74
- bind:value={$form.<%= attribute.column_name %>}
75
- rows="4"
76
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
77
- />
78
- <% elsif attribute.attachment? -%>
79
- <input
80
- type="file"
81
- name="<%= attribute.singular_name %>"
82
- id="<%= attribute.singular_name %>"
83
- on:input={(e) => ($form.<%= attribute.column_name %> = filesFromEvent(e)[0])}
84
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
85
- />
86
- <% elsif attribute.attachments? -%>
87
- <input
88
- type="file"
89
- multiple
90
- name="<%= attribute.singular_name %>[]"
91
- id="<%= attribute.singular_name %>"
92
- on:input={(e) => ($form.<%= attribute.column_name %> = filesFromEvent(e))}
93
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
94
- />
95
- <% elsif input_type(attribute) == "checkbox" -%>
96
- <input
97
- type="<%= input_type(attribute) %>"
98
- name="<%= attribute.singular_name %>"
99
- id="<%= attribute.singular_name %>"
100
- bind:checked={$form.<%= attribute.column_name %>}
101
- class="block mt-2 h-5 w-5"
102
- />
103
- <% else -%>
104
- <input
105
- type="<%= input_type(attribute) %>"
106
- name="<%= attribute.singular_name %>"
107
- id="<%= attribute.singular_name %>"
108
- bind:value={$form.<%= attribute.column_name %>}
109
- class="block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full"
110
- />
111
- <% end -%>
112
- {#if $form.errors.<%= attribute.column_name %>}
113
- <div class="text-red-500 px-3 py-2 font-medium">
114
- {$form.errors.<%= attribute.column_name %>}
115
- </div>
116
- {/if}
117
- <% end -%>
118
- </div>
119
-
120
- <% end -%>
121
- <div class="inline">
122
- <button
123
- type="submit"
124
- disabled={$form.processing}
125
- class="rounded-lg py-3 px-5 bg-blue-600 text-white inline-block font-medium cursor-pointer"
126
- >
127
- {submitText}
128
- </button>
129
- </div>
130
- </form>
@@ -1,43 +0,0 @@
1
- <script>
2
- import { Link } from '@inertiajs/svelte'
3
- import <%= inertia_component_name %> from './<%= inertia_component_name %>.svelte'
4
-
5
- export let <%= plural_table_name %>
6
- export let flash
7
- </script>
8
-
9
- <svelte:head>
10
- <title><%= human_name.pluralize %></title>
11
- </svelte:head>
12
-
13
- <div class="mx-auto md:w-2/3 w-full px-8 pt-8">
14
- {#if flash.notice}
15
- <p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block">
16
- {flash.notice}
17
- </p>
18
- {/if}
19
-
20
- <div class="flex justify-between items-center">
21
- <h1 class="font-bold text-4xl"><%= human_name.pluralize %></h1>
22
- <Link
23
- href="<%= js_new_resource_path %>"
24
- class="rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium"
25
- >
26
- New <%= human_name.downcase %>
27
- </Link>
28
- </div>
29
-
30
- <div class="min-w-full">
31
- {#each <%= plural_table_name %> as <%= singular_table_name %> (<%= singular_table_name %>.id)}
32
- <<%= inertia_component_name %> {<%= singular_table_name %>} />
33
- <p>
34
- <Link
35
- href={`<%= js_resource_path %>`}
36
- class="ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium"
37
- >
38
- Show this <%= human_name.downcase %>
39
- </Link>
40
- </p>
41
- {/each}
42
- </div>
43
- </div>
@@ -1,44 +0,0 @@
1
- <script lang="ts">
2
- import { Link } from '@inertiajs/svelte'
3
- import <%= inertia_component_name %> from './<%= inertia_component_name %>.svelte'
4
- import type { <%= inertia_model_type %> } from './types'
5
-
6
- export let <%= plural_table_name %>: <%= inertia_model_type %>[]
7
- export let flash: { notice?: string }
8
- </script>
9
-
10
- <svelte:head>
11
- <title><%= human_name.pluralize %></title>
12
- </svelte:head>
13
-
14
- <div class="mx-auto md:w-2/3 w-full px-8 pt-8">
15
- {#if flash.notice}
16
- <p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block">
17
- {flash.notice}
18
- </p>
19
- {/if}
20
-
21
- <div class="flex justify-between items-center">
22
- <h1 class="font-bold text-4xl"><%= human_name.pluralize %></h1>
23
- <Link
24
- href="<%= js_new_resource_path %>"
25
- class="rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium"
26
- >
27
- New <%= human_name.downcase %>
28
- </Link>
29
- </div>
30
-
31
- <div class="min-w-full">
32
- {#each <%= plural_table_name %> as <%= singular_table_name %> (<%= singular_table_name %>.id)}
33
- <<%= inertia_component_name %> {<%= singular_table_name %>} />
34
- <p>
35
- <Link
36
- href={`<%= js_resource_path %>`}
37
- class="ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium"
38
- >
39
- Show this <%= human_name.downcase %>
40
- </Link>
41
- </p>
42
- {/each}
43
- </div>
44
- </div>
@@ -1,34 +0,0 @@
1
- <script lang="ts">
2
- import { Link, type InertiaForm } from '@inertiajs/svelte'
3
- import Form from './Form.svelte'
4
- import type { <%= inertia_model_type %>, <%= inertia_model_form_type %> } from './types'
5
-
6
- export let <%= singular_table_name %>: <%= inertia_model_type %>
7
-
8
- const handleSubmit = (e: CustomEvent<{ form: InertiaForm<<%= inertia_model_form_type %>> }>) => {
9
- const { form } = e.detail
10
- form.transform((data) => ({ <%= singular_table_name %>: data }))
11
- form.post('<%= js_resources_path %>')
12
- }
13
- </script>
14
-
15
- <svelte:head>
16
- <title>New <%= human_name.downcase %></title>
17
- </svelte:head>
18
-
19
- <div class="mx-auto md:w-2/3 w-full px-8 pt-8">
20
- <h1 class="font-bold text-4xl">New <%= human_name.downcase %></h1>
21
-
22
- <Form
23
- {<%= singular_table_name %>}
24
- submitText="Create <%= human_name %>"
25
- on:submit={handleSubmit}
26
- />
27
-
28
- <Link
29
- href="<%= js_resources_path %>"
30
- class="ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium"
31
- >
32
- Back to <%= human_name.pluralize.downcase %>
33
- </Link>
34
- </div>
@@ -1,28 +0,0 @@
1
- <script>
2
- export let <%= singular_table_name %>
3
- </script>
4
-
5
- <div>
6
- <% attributes.reject(&:password_digest?).each do |attribute| -%>
7
- <p class="my-5">
8
- <strong class="block font-medium mb-1"><%= attribute.human_name %>:</strong>
9
- <% if attribute.attachment? -%>
10
- {#if <%= singular_table_name %>.<%= attribute.column_name %>}
11
- <a href={<%= singular_table_name %>.<%= attribute.column_name %>.url}>
12
- {<%= singular_table_name %>.<%= attribute.column_name %>.filename}
13
- </a>
14
- {/if}
15
- </p>
16
- <% elsif attribute.attachments? -%>
17
- </p>
18
- {#each <%= singular_table_name %>.<%= attribute.column_name %> as { url, filename }}
19
- <div>
20
- <a href={url}>{filename}</a>
21
- </div>
22
- {/each}
23
- <% else -%>
24
- {<%= singular_table_name %>.<%= attribute.column_name %>}
25
- </p>
26
- <% end -%>
27
- <% end -%>
28
- </div>
@@ -1,30 +0,0 @@
1
- <script lang="ts">
2
- import type { <%= inertia_model_type %> } from './types'
3
-
4
- export let <%= singular_table_name %>: <%= inertia_model_type %>
5
- </script>
6
-
7
- <div>
8
- <% attributes.reject(&:password_digest?).each do |attribute| -%>
9
- <p class="my-5">
10
- <strong class="block font-medium mb-1"><%= attribute.human_name %>:</strong>
11
- <% if attribute.attachment? -%>
12
- {#if <%= singular_table_name %>.<%= attribute.column_name %>}
13
- <a href={<%= singular_table_name %>.<%= attribute.column_name %>.url}>
14
- {<%= singular_table_name %>.<%= attribute.column_name %>.filename}
15
- </a>
16
- {/if}
17
- </p>
18
- <% elsif attribute.attachments? -%>
19
- </p>
20
- {#each <%= singular_table_name %>.<%= attribute.column_name %> as { url, filename }}
21
- <div>
22
- <a href={url}>{filename}</a>
23
- </div>
24
- {/each}
25
- <% else -%>
26
- {<%= singular_table_name %>.<%= attribute.column_name %>}
27
- </p>
28
- <% end -%>
29
- <% end -%>
30
- </div>
@@ -1,51 +0,0 @@
1
- <script>
2
- import { inertia, Link } from '@inertiajs/svelte'
3
- import <%= inertia_component_name %> from './<%= inertia_component_name %>.svelte'
4
-
5
- export let <%= singular_table_name %>
6
- export let flash
7
- </script>
8
-
9
- <svelte:head>
10
- <title><%= human_name %> #{<%= singular_table_name %>.id}</title>
11
- </svelte:head>
12
-
13
- <div class="mx-auto md:w-2/3 w-full px-8 pt-8">
14
- <div class="mx-auto">
15
- {#if flash.notice}
16
- <p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block">
17
- {flash.notice}
18
- </p>
19
- {/if}
20
-
21
- <h1 class="font-bold text-4xl"><%= human_name %> #{<%= singular_table_name %>.id}</h1>
22
-
23
- <<%= inertia_component_name %> {<%= singular_table_name %>} />
24
-
25
- <Link
26
- href={`<%= js_edit_resource_path %>`}
27
- class="ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium"
28
- >
29
- Edit this <%= human_name.downcase %>
30
- </Link>
31
- <Link
32
- href="<%= js_resources_path %>"
33
- class="ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium"
34
- >
35
- Back to <%= human_name.pluralize.downcase %>
36
- </Link>
37
- <div class="inline-block ml-2">
38
- <button
39
- use:inertia={{ href: `<%= js_resource_path %>`, method: 'delete' }}
40
- type="button"
41
- class="mt-2 rounded-lg py-3 px-5 bg-gray-100 font-medium"
42
- >
43
- Destroy this <%= human_name.downcase %>
44
- </button>
45
- </div>
46
- </div>
47
- </div>
48
-
49
-
50
-
51
-
@@ -1,52 +0,0 @@
1
- <script lang="ts">
2
- import { inertia, Link } from '@inertiajs/svelte'
3
- import <%= inertia_component_name %> from './<%= inertia_component_name %>.svelte'
4
- import type { <%= inertia_model_type %> } from './types'
5
-
6
- export let <%= singular_table_name %>: <%= inertia_model_type %>
7
- export let flash: { notice?: string }
8
- </script>
9
-
10
- <svelte:head>
11
- <title><%= human_name %> #{<%= singular_table_name %>.id}</title>
12
- </svelte:head>
13
-
14
- <div class="mx-auto md:w-2/3 w-full px-8 pt-8">
15
- <div class="mx-auto">
16
- {#if flash.notice}
17
- <p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block">
18
- {flash.notice}
19
- </p>
20
- {/if}
21
-
22
- <h1 class="font-bold text-4xl"><%= human_name %> #{<%= singular_table_name %>.id}</h1>
23
-
24
- <<%= inertia_component_name %> {<%= singular_table_name %>} />
25
-
26
- <Link
27
- href={`<%= js_edit_resource_path %>`}
28
- class="ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium"
29
- >
30
- Edit this <%= human_name.downcase %>
31
- </Link>
32
- <Link
33
- href="<%= js_resources_path %>"
34
- class="ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium"
35
- >
36
- Back to <%= human_name.pluralize.downcase %>
37
- </Link>
38
- <div class="inline-block ml-2">
39
- <button
40
- use:inertia={{ href: `<%= js_resource_path %>`, method: 'delete' }}
41
- type="button"
42
- class="mt-2 rounded-lg py-3 px-5 bg-gray-100 font-medium"
43
- >
44
- Destroy this <%= human_name.downcase %>
45
- </button>
46
- </div>
47
- </div>
48
- </div>
49
-
50
-
51
-
52
-
@@ -1,19 +0,0 @@
1
- export interface <%= inertia_model_type %> {
2
- id: number
3
- <% attributes.reject(&:password_digest?).each do |attribute| -%>
4
- <%= attribute.column_name %>: <%= ts_type(attribute) %>
5
- <% end -%>
6
- }
7
-
8
- export type <%= inertia_model_form_type %> = Omit<<%= inertia_model_type %>, <%= omit_input_attributes.map { |a| "'#{a}'" }.join(' | ') %>><% if custom_form_attributes.any? -%> & {
9
- <% custom_form_attributes.map do |attribute| -%>
10
- <% if attribute.password_digest? -%>
11
- password: string
12
- password_confirmation: string
13
- <% elsif attribute.attachment? -%>
14
- <%= attribute.column_name %>?: File
15
- <% elsif attribute.attachments? -%>
16
- <%= attribute.column_name %>?: File[]
17
- <% end -%>
18
- <% end -%>
19
- }<% end %>