formatic 0.2.3 → 0.2.4

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascript/declarations/date.d.ts +9 -0
  3. data/app/assets/javascript/declarations/file.d.ts +14 -0
  4. data/app/assets/javascript/declarations/select.d.ts +15 -0
  5. data/app/assets/javascript/declarations/setup.d.ts +3 -0
  6. data/app/assets/javascript/declarations/stepper.d.ts +12 -0
  7. data/app/assets/javascript/declarations/string.d.ts +14 -0
  8. data/app/assets/javascript/declarations/textarea.d.ts +15 -0
  9. data/app/assets/javascript/declarations/toggle.d.ts +8 -0
  10. data/app/assets/javascript/formatic/date.js +30 -0
  11. data/app/assets/javascript/formatic/date.js.map +1 -0
  12. data/app/assets/javascript/formatic/file.js +83 -0
  13. data/app/assets/javascript/formatic/file.js.map +1 -0
  14. data/app/assets/javascript/formatic/select.js +81 -0
  15. data/app/assets/javascript/formatic/select.js.map +1 -0
  16. data/app/assets/javascript/formatic/setup.js +42 -0
  17. data/app/assets/javascript/formatic/setup.js.map +1 -0
  18. data/app/assets/javascript/formatic/stepper.js +67 -0
  19. data/app/assets/javascript/formatic/stepper.js.map +1 -0
  20. data/app/assets/javascript/formatic/string.js +71 -0
  21. data/app/assets/javascript/formatic/string.js.map +1 -0
  22. data/app/assets/javascript/formatic/textarea.js +81 -0
  23. data/app/assets/javascript/formatic/textarea.js.map +1 -0
  24. data/app/assets/javascript/formatic/toggle.js +63 -0
  25. data/app/assets/javascript/formatic/toggle.js.map +1 -0
  26. data/app/assets/javascript/src/date.ts +41 -0
  27. data/app/assets/javascript/src/file.ts +101 -0
  28. data/app/assets/javascript/src/select.ts +101 -0
  29. data/app/assets/javascript/src/setup.js +44 -0
  30. data/app/assets/javascript/src/stepper.ts +80 -0
  31. data/app/assets/javascript/src/string.ts +89 -0
  32. data/app/assets/javascript/src/textarea.ts +101 -0
  33. data/app/assets/javascript/src/toggle.ts +76 -0
  34. data/app/assets/stylesheets/formatic/components/checklist.css +1 -0
  35. data/app/assets/stylesheets/formatic/components/checklist.css.map +1 -0
  36. data/app/assets/stylesheets/formatic/components/date.css +17 -0
  37. data/app/assets/stylesheets/formatic/components/date.sass +2 -2
  38. data/app/assets/stylesheets/formatic/components/select.css +17 -0
  39. data/app/assets/stylesheets/formatic/components/stepper.css +17 -0
  40. data/app/assets/stylesheets/formatic/components/string.css +17 -0
  41. data/app/assets/stylesheets/formatic/components/textarea.css +17 -0
  42. data/app/assets/stylesheets/formatic/components/time.css +17 -0
  43. data/app/assets/stylesheets/formatic/components/toggle.css +17 -0
  44. data/app/assets/stylesheets/formatic/components/wrapper.css +17 -0
  45. data/app/assets/stylesheets/formatic/formatic.css +450 -0
  46. data/app/assets/stylesheets/formatic/formatic.css.map +1 -0
  47. data/app/assets/stylesheets/formatic/generics/flip.css +1 -0
  48. data/app/assets/stylesheets/formatic/generics/flip.css.map +1 -0
  49. data/app/assets/stylesheets/formatic/scopes/form.css +17 -0
  50. data/app/assets/stylesheets/formatic/utilities/container.css +1 -0
  51. data/app/assets/stylesheets/formatic/utilities/container.css.map +1 -0
  52. data/app/assets/stylesheets/formatic/vendor.css +1107 -0
  53. data/app/assets/stylesheets/formatic/vendor.css.map +1 -0
  54. data/app/assets/stylesheets/formatic.css +18 -0
  55. data/app/assets/stylesheets/formatic.sass +17 -0
  56. data/app/assets/stylesheets/vendor.css +5 -0
  57. data/app/assets/stylesheets/vendor.css.map +1 -0
  58. data/app/assets/stylesheets/vendor.sass +1 -0
  59. data/app/components/formatic/base.rb +4 -1
  60. data/app/components/formatic/date.rb +1 -1
  61. data/app/components/formatic/file.rb +21 -0
  62. data/app/components/formatic/files.rb +8 -0
  63. data/app/components/formatic/select.rb +1 -1
  64. data/app/components/formatic/time.rb +3 -3
  65. data/config/importmap.rb +11 -0
  66. data/lib/formatic/choices/options.rb +1 -1
  67. data/lib/formatic/choices/records.rb +1 -1
  68. data/lib/formatic/engine.rb +12 -0
  69. data/lib/formatic/version.rb +1 -1
  70. data/lib/formatic/wrappers/required.rb +1 -1
  71. data/lib/formatic.rb +2 -1
  72. metadata +77 -17
  73. data/app/assets/javascript/formatic/components/date.ts +0 -54
  74. data/app/assets/javascript/formatic/components/select.ts +0 -113
  75. data/app/assets/javascript/formatic/components/stepper.ts +0 -89
  76. data/app/assets/javascript/formatic/components/string.ts +0 -103
  77. data/app/assets/javascript/formatic/components/textarea.ts +0 -112
  78. data/app/assets/javascript/formatic/components/toggle.ts +0 -89
  79. data/app/assets/javascript/formatic.js +0 -446
  80. data/app/assets/javascript/formatic.js.map +0 -1
  81. data/app/assets/stylesheets/formatic/index.sass +0 -17
  82. data/app/assets/stylesheets/formatic/package.json +0 -5
@@ -0,0 +1,76 @@
1
+ export class Toggle {
2
+
3
+ private el: HTMLElement
4
+
5
+ constructor(el: HTMLElement) {
6
+ this.el = el
7
+ this.setupBindings()
8
+ }
9
+
10
+ private setupBindings() {
11
+ this.checkbox.addEventListener('click', (event) => {
12
+ event.preventDefault()
13
+ const box = <HTMLInputElement>event.target
14
+ box.checked ? this.activate(box) : this.deactivate(box)
15
+ })
16
+ }
17
+
18
+ private activate(box: HTMLInputElement) {
19
+ const form = box.closest<HTMLFormElement>('form')
20
+ const data = new FormData(form)
21
+ data.set('_method', 'patch')
22
+
23
+ fetch(form.action, {
24
+ method: 'POST',
25
+ headers: { 'Accept': 'text/javascript' },
26
+ body: data
27
+ })
28
+ .then(response => {
29
+ // For accurate user feedback, we make sure this is not an accidental 200.
30
+ // Your controller needs to respond with 201 on create/update.
31
+ if (response.status == 201) {
32
+ console.debug('Activation confirmed')
33
+ box.checked = true
34
+ } else {
35
+ console.debug('Activation not confirmed')
36
+ console.log("Activation denied")
37
+ }
38
+ }).catch(err => {
39
+ console.warn(err)
40
+ console.debug('Failed badly to activate')
41
+ })
42
+ }
43
+
44
+ private deactivate(box: HTMLInputElement) {
45
+ const form = box.closest<HTMLFormElement>('form')
46
+ const data = new FormData(form)
47
+ data.set('_method', 'delete')
48
+
49
+ fetch(form.action, {
50
+ method: 'POST',
51
+ headers: { 'Accept': 'text/javascript' },
52
+ body: data
53
+ })
54
+ .then(response => {
55
+ // Your controller needs to respond with 204 on destroy.
56
+ if (response.status == 204) {
57
+ console.debug('Deactivation confirmed')
58
+ box.checked = false
59
+ } else {
60
+ console.debug('Deactivation not confirmed')
61
+ console.log("Deactivation denied")
62
+ }
63
+ }).catch(err => {
64
+ console.warn(err)
65
+ console.debug('Failed badly to deactivate')
66
+ })
67
+ }
68
+
69
+ // ------------
70
+ // DOM Elements
71
+ // ------------
72
+
73
+ private get checkbox() {
74
+ return this.el.querySelector<HTMLInputElement>('input[type="checkbox"]')
75
+ }
76
+ }
@@ -0,0 +1 @@
1
+ .c-formatic-checklist{display:grid;grid-row-gap:.4em}/*# sourceMappingURL=checklist.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["file:///Users/orange/Code/2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/checklist.sass"],"names":[],"mappings":"AAAA,sBACE,aACA","file":"checklist.css","sourcesContent":[".c-formatic-checklist\n display: grid\n grid-row-gap: 0.4em\n"]}
@@ -0,0 +1,17 @@
1
+ /* Error: Can't find stylesheet to import.
2
+ * ,
3
+ * 4 | @use "formatic/settings/colors"
4
+ * | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5
+ * '
6
+ * ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/date.sass 4:1 root stylesheet */
7
+
8
+ body::before {
9
+ font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
10
+ "Droid Sans Mono", monospace, monospace;
11
+ white-space: pre;
12
+ display: block;
13
+ padding: 1em;
14
+ margin-bottom: 1em;
15
+ border-bottom: 2px solid black;
16
+ content: "Error: Can't find stylesheet to import.\a \2577 \a 4 \2502 @use \"formatic/settings/colors\"\a \2502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\a \2575 \a ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/date.sass 4:1 root stylesheet";
17
+ }
@@ -36,11 +36,11 @@
36
36
  justify-content: center
37
37
  color: colors.$black
38
38
  +spacing.margin-right--smaller
39
- +spacing.padding-tiny
39
+ +spacing.padding--tiny
40
40
 
41
41
  &__clear
42
42
  +font-size.large
43
- +spacing.padding-small
43
+ +spacing.padding--small
44
44
 
45
45
  &__calendar-day-number
46
46
  +font-size.default
@@ -0,0 +1,17 @@
1
+ /* Error: Can't find stylesheet to import.
2
+ * ,
3
+ * 1 | @use "formatic/settings/colors"
4
+ * | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5
+ * '
6
+ * ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/select.sass 1:1 root stylesheet */
7
+
8
+ body::before {
9
+ font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
10
+ "Droid Sans Mono", monospace, monospace;
11
+ white-space: pre;
12
+ display: block;
13
+ padding: 1em;
14
+ margin-bottom: 1em;
15
+ border-bottom: 2px solid black;
16
+ content: "Error: Can't find stylesheet to import.\a \2577 \a 1 \2502 @use \"formatic/settings/colors\"\a \2502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\a \2575 \a ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/select.sass 1:1 root stylesheet";
17
+ }
@@ -0,0 +1,17 @@
1
+ /* Error: Can't find stylesheet to import.
2
+ * ,
3
+ * 3 | @use "formatic/settings/colors"
4
+ * | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5
+ * '
6
+ * ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/stepper.sass 3:1 root stylesheet */
7
+
8
+ body::before {
9
+ font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
10
+ "Droid Sans Mono", monospace, monospace;
11
+ white-space: pre;
12
+ display: block;
13
+ padding: 1em;
14
+ margin-bottom: 1em;
15
+ border-bottom: 2px solid black;
16
+ content: "Error: Can't find stylesheet to import.\a \2577 \a 3 \2502 @use \"formatic/settings/colors\"\a \2502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\a \2575 \a ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/stepper.sass 3:1 root stylesheet";
17
+ }
@@ -0,0 +1,17 @@
1
+ /* Error: Can't find stylesheet to import.
2
+ * ,
3
+ * 1 | @use "formatic/settings/colors"
4
+ * | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5
+ * '
6
+ * ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/string.sass 1:1 root stylesheet */
7
+
8
+ body::before {
9
+ font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
10
+ "Droid Sans Mono", monospace, monospace;
11
+ white-space: pre;
12
+ display: block;
13
+ padding: 1em;
14
+ margin-bottom: 1em;
15
+ border-bottom: 2px solid black;
16
+ content: "Error: Can't find stylesheet to import.\a \2577 \a 1 \2502 @use \"formatic/settings/colors\"\a \2502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\a \2575 \a ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/string.sass 1:1 root stylesheet";
17
+ }
@@ -0,0 +1,17 @@
1
+ /* Error: Can't find stylesheet to import.
2
+ * ,
3
+ * 1 | @use "formatic/tools/cloud"
4
+ * | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
5
+ * '
6
+ * ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/textarea.sass 1:1 root stylesheet */
7
+
8
+ body::before {
9
+ font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
10
+ "Droid Sans Mono", monospace, monospace;
11
+ white-space: pre;
12
+ display: block;
13
+ padding: 1em;
14
+ margin-bottom: 1em;
15
+ border-bottom: 2px solid black;
16
+ content: "Error: Can't find stylesheet to import.\a \2577 \a 1 \2502 @use \"formatic/tools/cloud\"\a \2502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^\a \2575 \a ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/textarea.sass 1:1 root stylesheet";
17
+ }
@@ -0,0 +1,17 @@
1
+ /* Error: Can't find stylesheet to import.
2
+ * ,
3
+ * 3 | @use "formatic/tools/mandatory"
4
+ * | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5
+ * '
6
+ * ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/time.sass 3:1 root stylesheet */
7
+
8
+ body::before {
9
+ font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
10
+ "Droid Sans Mono", monospace, monospace;
11
+ white-space: pre;
12
+ display: block;
13
+ padding: 1em;
14
+ margin-bottom: 1em;
15
+ border-bottom: 2px solid black;
16
+ content: "Error: Can't find stylesheet to import.\a \2577 \a 3 \2502 @use \"formatic/tools/mandatory\"\a \2502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\a \2575 \a ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/time.sass 3:1 root stylesheet";
17
+ }
@@ -0,0 +1,17 @@
1
+ /* Error: Can't find stylesheet to import.
2
+ * ,
3
+ * 2 | @use "formatic/settings/colors"
4
+ * | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5
+ * '
6
+ * ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/toggle.sass 2:1 root stylesheet */
7
+
8
+ body::before {
9
+ font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
10
+ "Droid Sans Mono", monospace, monospace;
11
+ white-space: pre;
12
+ display: block;
13
+ padding: 1em;
14
+ margin-bottom: 1em;
15
+ border-bottom: 2px solid black;
16
+ content: "Error: Can't find stylesheet to import.\a \2577 \a 2 \2502 @use \"formatic/settings/colors\"\a \2502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\a \2575 \a ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/toggle.sass 2:1 root stylesheet";
17
+ }
@@ -0,0 +1,17 @@
1
+ /* Error: Can't find stylesheet to import.
2
+ * ,
3
+ * 3 | @use "formatic/settings/colors"
4
+ * | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5
+ * '
6
+ * ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/wrapper.sass 3:1 root stylesheet */
7
+
8
+ body::before {
9
+ font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
10
+ "Droid Sans Mono", monospace, monospace;
11
+ white-space: pre;
12
+ display: block;
13
+ padding: 1em;
14
+ margin-bottom: 1em;
15
+ border-bottom: 2px solid black;
16
+ content: "Error: Can't find stylesheet to import.\a \2577 \a 3 \2502 @use \"formatic/settings/colors\"\a \2502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\a \2575 \a ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic/components/wrapper.sass 3:1 root stylesheet";
17
+ }