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 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/filepond/dist/filepond.css"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;AACA;AACI;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;EACA;;;AAEJ;AACA;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AACA;EACI;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;AAEA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;AACI;;;AAEJ;EACI;EACA;;;AAEJ;AACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;AACA;AACI;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;AAEA;AACA;AACA;AACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;;;AAEJ;EACI;;;AAEJ;AACI;;;AAEJ;EACI;EACA;AAEA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;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","file":"vendor.css"}
@@ -0,0 +1,18 @@
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 @use
7
+ * ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic.sass 5:1 root stylesheet */
8
+
9
+ body::before {
10
+ font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
11
+ "Droid Sans Mono", monospace, monospace;
12
+ white-space: pre;
13
+ display: block;
14
+ padding: 1em;
15
+ margin-bottom: 1em;
16
+ border-bottom: 2px solid black;
17
+ 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 @use\a ../../2-Areas/formatic/formatic/app/assets/stylesheets/formatic.sass 5:1 root stylesheet";
18
+ }
@@ -0,0 +1,17 @@
1
+ // ITCSS
2
+
3
+ @use "formatic/generics/flip.sass"
4
+
5
+ @use "formatic/components/wrapper.sass" // Wrapper comes first, rest alphabetically
6
+ @use "formatic/components/checklist.sass"
7
+ @use "formatic/components/date.sass"
8
+ @use "formatic/components/select.sass"
9
+ @use "formatic/components/stepper.sass"
10
+ @use "formatic/components/string.sass"
11
+ @use "formatic/components/textarea.sass"
12
+ @use "formatic/components/time.sass"
13
+ @use "formatic/components/toggle.sass"
14
+
15
+ @use "formatic/utilities/container"
16
+
17
+ @use "formatic/scopes/form"
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * FilePond 4.32.10
3
+ * Licensed under MIT, https://opensource.org/licenses/MIT/
4
+ * Please visit https://pqina.nl/filepond/ for details.
5
+ */.filepond--assistant{position:absolute;overflow:hidden;height:1px;width:1px;padding:0;border:0;clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.filepond--browser.filepond--browser{position:absolute;margin:0;padding:0;left:1em;top:1.75em;width:calc(100% - 2em);opacity:0;font-size:0}.filepond--data{position:absolute;width:0;height:0;padding:0;margin:0;border:none;visibility:hidden;pointer-events:none;contain:strict}.filepond--drip{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;opacity:.1;pointer-events:none;border-radius:.5em;background:rgba(0, 0, 0, 0.01)}.filepond--drip-blob{position:absolute;-webkit-transform-origin:center center;transform-origin:center center;top:0;left:0;width:8em;height:8em;margin-left:-4em;margin-top:-4em;background:#292625;border-radius:50%;will-change:transform,opacity}.filepond--drop-label{position:absolute;left:0;right:0;top:0;margin:0;color:#4f4f4f;display:flex;justify-content:center;align-items:center;height:0px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:transform,opacity}.filepond--drop-label.filepond--drop-label label{display:block;margin:0;padding:.5em}.filepond--drop-label label{cursor:default;font-size:.875em;font-weight:normal;text-align:center;line-height:1.5}.filepond--label-action{text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;-webkit-text-decoration-color:#a7a4a4;text-decoration-color:#a7a4a4;cursor:pointer}.filepond--root[data-disabled] .filepond--drop-label label{opacity:.5}.filepond--file-action-button.filepond--file-action-button{font-size:1em;width:1.625em;height:1.625em;font-family:inherit;line-height:inherit;margin:0;padding:0;border:none;outline:none;will-change:transform,opacity}.filepond--file-action-button.filepond--file-action-button span{position:absolute;overflow:hidden;height:1px;width:1px;padding:0;border:0;clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.filepond--file-action-button.filepond--file-action-button svg{width:100%;height:100%}.filepond--file-action-button.filepond--file-action-button::after{position:absolute;left:-0.75em;right:-0.75em;top:-0.75em;bottom:-0.75em;content:""}.filepond--file-action-button{cursor:auto;color:#fff;border-radius:50%;background-color:rgba(0, 0, 0, 0.5);background-image:none;box-shadow:0 0 0 0 rgba(255, 255, 255, 0);transition:box-shadow .25s ease-in}.filepond--file-action-button:hover,.filepond--file-action-button:focus{box-shadow:0 0 0 .125em rgba(255, 255, 255, 0.9)}.filepond--file-action-button[disabled]{color:rgba(255, 255, 255, 0.5);background-color:rgba(0, 0, 0, 0.25)}.filepond--file-action-button[hidden]{display:none}.filepond--action-edit-item.filepond--action-edit-item{width:2em;height:2em;padding:.1875em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=center]{margin-left:-0.1875em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=bottom]{margin-bottom:-0.1875em}.filepond--action-edit-item-alt{border:none;line-height:inherit;background:transparent;font-family:inherit;color:inherit;outline:none;padding:0;margin:0 0 0 .25em;pointer-events:all;position:absolute}.filepond--action-edit-item-alt svg{width:1.3125em;height:1.3125em}.filepond--action-edit-item-alt span{font-size:0;opacity:0}.filepond--file-info{position:static;display:flex;flex-direction:column;align-items:flex-start;flex:1;margin:0 .5em 0 0;min-width:0;will-change:transform,opacity;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.filepond--file-info *{margin:0}.filepond--file-info .filepond--file-info-main{font-size:.75em;line-height:1.2;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:100%}.filepond--file-info .filepond--file-info-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out;white-space:nowrap}.filepond--file-info .filepond--file-info-sub:empty{display:none}.filepond--file-status{position:static;display:flex;flex-direction:column;align-items:flex-end;flex-grow:0;flex-shrink:0;margin:0;min-width:2.25em;text-align:right;will-change:transform,opacity;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.filepond--file-status *{margin:0;white-space:nowrap}.filepond--file-status .filepond--file-status-main{font-size:.75em;line-height:1.2}.filepond--file-status .filepond--file-status-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out}.filepond--file-wrapper.filepond--file-wrapper{border:none;margin:0;padding:0;min-width:0;height:100%}.filepond--file-wrapper.filepond--file-wrapper>legend{position:absolute;overflow:hidden;height:1px;width:1px;padding:0;border:0;clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.filepond--file{position:static;display:flex;height:100%;align-items:flex-start;padding:.5625em .5625em;color:#fff;border-radius:.5em}.filepond--file .filepond--file-status{margin-left:auto;margin-right:2.25em}.filepond--file .filepond--processing-complete-indicator{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:3}.filepond--file .filepond--processing-complete-indicator,.filepond--file .filepond--progress-indicator,.filepond--file .filepond--file-action-button{position:absolute}.filepond--file [data-align*=left]{left:.5625em}.filepond--file [data-align*=right]{right:.5625em}.filepond--file [data-align*=center]{left:calc(50% - .8125em)}.filepond--file [data-align*=bottom]{bottom:1.125em}.filepond--file [data-align=center]{top:calc(50% - .8125em)}.filepond--file .filepond--progress-indicator{margin-top:.1875em}.filepond--file .filepond--progress-indicator[data-align*=right]{margin-right:.1875em}.filepond--file .filepond--progress-indicator[data-align*=left]{margin-left:.1875em}[data-filepond-item-state=cancelled] .filepond--file-info,[data-filepond-item-state*=invalid] .filepond--file-info,[data-filepond-item-state*=error] .filepond--file-info{margin-right:2.25em}[data-filepond-item-state~=processing] .filepond--file-status-sub{opacity:0}[data-filepond-item-state~=processing] .filepond--action-abort-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-error] .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-error] .filepond--action-retry-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing svg{-webkit-animation:fall .5s .125s linear both;animation:fall .5s .125s linear both}[data-filepond-item-state=processing-complete] .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--processing-complete-indicator:not([style*=hidden])~.filepond--file-status .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-complete] .filepond--file-info-sub{opacity:0}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing~.filepond--file-info .filepond--file-info-sub{opacity:.5}[data-filepond-item-state*=invalid] .filepond--panel,[data-filepond-item-state*=invalid] .filepond--file-wrapper,[data-filepond-item-state*=error] .filepond--panel,[data-filepond-item-state*=error] .filepond--file-wrapper{-webkit-animation:shake .65s linear both;animation:shake .65s linear both}[data-filepond-item-state*=busy] .filepond--progress-indicator svg{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotateZ(0deg);transform:rotateZ(0deg)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes spin{0%{-webkit-transform:rotateZ(0deg);transform:rotateZ(0deg)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@-webkit-keyframes shake{10%,90%{-webkit-transform:translateX(-0.0625em);transform:translateX(-0.0625em)}20%,80%{-webkit-transform:translateX(0.125em);transform:translateX(0.125em)}30%,50%,70%{-webkit-transform:translateX(-0.25em);transform:translateX(-0.25em)}40%,60%{-webkit-transform:translateX(0.25em);transform:translateX(0.25em)}}@keyframes shake{10%,90%{-webkit-transform:translateX(-0.0625em);transform:translateX(-0.0625em)}20%,80%{-webkit-transform:translateX(0.125em);transform:translateX(0.125em)}30%,50%,70%{-webkit-transform:translateX(-0.25em);transform:translateX(-0.25em)}40%,60%{-webkit-transform:translateX(0.25em);transform:translateX(0.25em)}}@-webkit-keyframes fall{0%{opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}70%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}100%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes fall{0%{opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}70%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}100%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.filepond--hopper[data-hopper-state=drag-over]>*{pointer-events:none}.filepond--hopper[data-hopper-state=drag-over]::after{content:"";position:absolute;left:0;top:0;right:0;bottom:0;z-index:100}.filepond--progress-indicator{z-index:103}.filepond--file-action-button{z-index:102}.filepond--file-status{z-index:101}.filepond--file-info{z-index:100}.filepond--item{position:absolute;top:0;left:0;right:0;z-index:1;padding:0;margin:.25em;will-change:transform,opacity;touch-action:auto}.filepond--item>.filepond--panel{z-index:-1}.filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:0 .0625em .125em -0.0625em rgba(0, 0, 0, 0.25)}.filepond--item>.filepond--file-wrapper,.filepond--item>.filepond--panel{transition:opacity .15s ease-out}.filepond--item[data-drag-state]{cursor:-webkit-grab;cursor:grab}.filepond--item[data-drag-state]>.filepond--panel{transition:box-shadow .125s ease-in-out;box-shadow:0 0 0 rgba(0, 0, 0, 0)}.filepond--item[data-drag-state=drag]{cursor:-webkit-grabbing;cursor:grabbing}.filepond--item[data-drag-state=drag]>.filepond--panel{box-shadow:0 .125em .3125em rgba(0, 0, 0, 0.325)}.filepond--item[data-drag-state]:not([data-drag-state=idle]){z-index:2}.filepond--item-panel{background-color:#64605e}[data-filepond-item-state=processing-complete] .filepond--item-panel{background-color:#369763}[data-filepond-item-state*=invalid] .filepond--item-panel,[data-filepond-item-state*=error] .filepond--item-panel{background-color:#c44e47}.filepond--item-panel{border-radius:.5em;transition:background-color .25s}.filepond--list-scroller{position:absolute;top:0;left:0;right:0;margin:0;will-change:transform}.filepond--list-scroller[data-state=overflow] .filepond--list{bottom:0;right:0}.filepond--list-scroller[data-state=overflow]{overflow-y:scroll;overflow-x:hidden;-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(to bottom, #000 calc(100% - 0.5em), transparent 100%);mask:linear-gradient(to bottom, #000 calc(100% - 0.5em), transparent 100%)}.filepond--list-scroller::-webkit-scrollbar{background:transparent}.filepond--list-scroller::-webkit-scrollbar:vertical{width:1em}.filepond--list-scroller::-webkit-scrollbar:horizontal{height:0}.filepond--list-scroller::-webkit-scrollbar-thumb{background-color:rgba(0, 0, 0, 0.3);border-radius:99999px;border:.3125em solid transparent;background-clip:content-box}.filepond--list.filepond--list{position:absolute;top:0;margin:0;padding:0;list-style-type:none;will-change:transform}.filepond--list{left:.75em;right:.75em}.filepond--root[data-style-panel-layout~=integrated]{width:100%;height:100%;max-width:none;margin:0}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root{border-radius:0}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root>*,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root>*{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{bottom:0;height:auto;display:flex;justify-content:center;align-items:center;z-index:7}.filepond--root[data-style-panel-layout~=circle] .filepond--item-panel,.filepond--root[data-style-panel-layout~=integrated] .filepond--item-panel{display:none}.filepond--root[data-style-panel-layout~=compact] .filepond--list-scroller,.filepond--root[data-style-panel-layout~=integrated] .filepond--list-scroller{overflow:hidden;height:100%;margin-top:0;margin-bottom:0}.filepond--root[data-style-panel-layout~=compact] .filepond--list,.filepond--root[data-style-panel-layout~=integrated] .filepond--list{left:0;right:0;height:100%}.filepond--root[data-style-panel-layout~=compact] .filepond--item,.filepond--root[data-style-panel-layout~=integrated] .filepond--item{margin:0}.filepond--root[data-style-panel-layout~=compact] .filepond--file-wrapper,.filepond--root[data-style-panel-layout~=integrated] .filepond--file-wrapper{height:100%}.filepond--root[data-style-panel-layout~=compact] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{z-index:7}.filepond--root[data-style-panel-layout~=circle]{border-radius:99999rem;overflow:hidden}.filepond--root[data-style-panel-layout~=circle]>.filepond--panel{border-radius:inherit}.filepond--root[data-style-panel-layout~=circle]>.filepond--panel>*{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--file-info{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--file-status{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item{opacity:1 !important;visibility:visible !important}@media not all and (min-resolution: 0.001dpcm){@supports(-webkit-appearance: none) and (stroke-color: transparent){.filepond--root[data-style-panel-layout~=circle]{will-change:transform}}}.filepond--panel-root{border-radius:.5em;background-color:#f1f0ef}.filepond--panel{position:absolute;left:0;top:0;right:0;margin:0;height:100% !important;pointer-events:none}.filepond-panel:not([data-scalable=false]){height:auto !important}.filepond--panel[data-scalable=false]>div{display:none}.filepond--panel[data-scalable=true]{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;background-color:transparent !important;border:none !important}.filepond--panel-top,.filepond--panel-bottom,.filepond--panel-center{position:absolute;left:0;top:0;right:0;margin:0;padding:0}.filepond--panel-top,.filepond--panel-bottom{height:.5em}.filepond--panel-top{border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom:none !important}.filepond--panel-top::after{content:"";position:absolute;height:2px;left:0;right:0;bottom:-1px;background-color:inherit}.filepond--panel-center,.filepond--panel-bottom{will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:left top;transform-origin:left top;-webkit-transform:translate3d(0, 0.5em, 0);transform:translate3d(0, 0.5em, 0)}.filepond--panel-bottom{border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-top:none !important}.filepond--panel-bottom::before{content:"";position:absolute;height:2px;left:0;right:0;top:-1px;background-color:inherit}.filepond--panel-center{height:100px !important;border-top:none !important;border-bottom:none !important;border-radius:0 !important}.filepond--panel-center:not([style]){visibility:hidden}.filepond--progress-indicator{position:static;width:1.25em;height:1.25em;color:#fff;margin:0;pointer-events:none;will-change:transform,opacity}.filepond--progress-indicator svg{width:100%;height:100%;vertical-align:top;transform-box:fill-box}.filepond--progress-indicator path{fill:none;stroke:currentColor}.filepond--list-scroller{z-index:6}.filepond--drop-label{z-index:5}.filepond--drip{z-index:3}.filepond--root>.filepond--panel{z-index:2}.filepond--browser{z-index:1}.filepond--root{box-sizing:border-box;position:relative;margin-bottom:1em;font-size:1rem;line-height:normal;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:450;text-align:left;text-rendering:optimizeLegibility;direction:ltr;contain:layout style size}.filepond--root *{box-sizing:inherit;line-height:inherit}.filepond--root *:not(text){font-size:inherit}.filepond--root[data-disabled]{pointer-events:none}.filepond--root[data-disabled] .filepond--list-scroller{pointer-events:all}.filepond--root[data-disabled] .filepond--list{pointer-events:none}.filepond--root .filepond--drop-label{min-height:4.75em}.filepond--root .filepond--list-scroller{margin-top:1em;margin-bottom:1em}.filepond--root .filepond--credits{position:absolute;right:0;opacity:.4;line-height:.85;font-size:11px;color:inherit;text-decoration:none;z-index:3;bottom:-14px}.filepond--root .filepond--credits[style]{top:0;bottom:auto;margin-top:14px}/*# sourceMappingURL=vendor.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["file:///Users/orange/Code/ensons/ensons/node_modules/filepond/dist/filepond.css"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA,GAOA,qBACI,kBACA,gBACA,WACA,UACA,UACA,SACA,8BACA,6BACA,qBACA,mBAGJ,qCAEI,kBACA,SACA,UAGA,SACA,WACA,uBAGA,UACA,YAEJ,gBACI,kBACA,QACA,SACA,UACA,SACA,YACA,kBACA,oBACA,eAEJ,gBACI,kBACA,MACA,OACA,QACA,SACA,gBACA,WAGA,oBAGA,mBAGA,+BAEJ,qBACI,kBACA,uCACA,+BACA,MACA,OACA,UACA,WACA,iBACA,gBACA,mBACA,kBAGA,8BAEJ,sBACI,kBACA,OACA,QACA,MACA,SACA,cAGA,aACA,uBACA,mBAGA,WAGA,yBACA,sBACA,qBACA,iBAGA,8BAGJ,iDACI,cACA,SACA,aAEJ,4BACI,eACA,iBACA,mBACA,kBACA,gBAEJ,wBACI,0BACA,iCACA,8BACA,sCACA,8BACA,eAEJ,2DACI,WAGJ,2DACI,cACA,cACA,eAEA,oBACA,oBAEA,SACA,UACA,YACA,aAEA,8BAIJ,gEACI,kBACA,gBACA,WACA,UACA,UACA,SACA,8BACA,6BACA,qBACA,mBAKJ,+DACI,WACA,YAKJ,kEACI,kBACA,aACA,cACA,YACA,eACA,WAGJ,8BAEI,YAGA,WAGA,kBACA,oCACA,sBAMA,0CACA,mCAEJ,wEAEI,iDAEJ,wCACI,+BACA,qCAEJ,sCACI,aAGJ,uDACI,UACA,WACA,gBAEJ,2EACI,sBAEJ,2EACI,wBAEJ,gCACI,YACA,oBACA,uBACA,oBACA,cACA,aACA,UACA,mBACA,mBACA,kBAEJ,oCACI,eACA,gBAEJ,qCACI,YACA,UAEJ,qBACI,gBACA,aACA,sBACA,uBACA,OACA,kBACA,YAGA,8BAGA,oBACA,yBACA,sBACA,qBACA,iBAIJ,uBACI,SAKJ,+CACI,gBACA,gBAGA,uBACA,gBACA,mBACA,WAEJ,8CACI,iBACA,WACA,oCACA,mBAEJ,oDACI,aAEJ,uBACI,gBACA,aACA,sBACA,qBACA,YACA,cAEA,SACA,iBACA,iBAGA,8BAGA,oBACA,yBACA,sBACA,qBACA,iBAIJ,yBACI,S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","file":"vendor.css","sourcesContent":["/*!\n * FilePond 4.32.10\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n.filepond--assistant {\n position: absolute;\n overflow: hidden;\n height: 1px;\n width: 1px;\n padding: 0;\n border: 0;\n clip: rect(1px, 1px, 1px, 1px);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n white-space: nowrap;\n}\n/* Hard to override styles */\n.filepond--browser.filepond--browser {\n /* is positioned absolute so it is focusable for form validation errors */\n position: absolute;\n margin: 0;\n padding: 0;\n\n /* is positioned ~behind drop label */\n left: 1em;\n top: 1.75em;\n width: calc(100% - 2em);\n\n /* hide visually */\n opacity: 0;\n font-size: 0; /* removes text cursor in Internet Explorer 11 */\n}\n.filepond--data {\n position: absolute;\n width: 0;\n height: 0;\n padding: 0;\n margin: 0;\n border: none;\n visibility: hidden;\n pointer-events: none;\n contain: strict;\n}\n.filepond--drip {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: hidden;\n opacity: 0.1;\n\n /* can't interact with this element */\n pointer-events: none;\n\n /* inherit border radius from parent (needed for drip-blob cut of) */\n border-radius: 0.5em;\n\n /* this seems to prevent Chrome from redrawing this layer constantly */\n background: rgba(0, 0, 0, 0.01);\n}\n.filepond--drip-blob {\n position: absolute;\n -webkit-transform-origin: center center;\n transform-origin: center center;\n top: 0;\n left: 0;\n width: 8em;\n height: 8em;\n margin-left: -4em;\n margin-top: -4em;\n background: #292625;\n border-radius: 50%;\n\n /* will be animated */\n will-change: transform, opacity;\n}\n.filepond--drop-label {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n margin: 0;\n color: #4f4f4f;\n\n /* center contents */\n display: flex;\n justify-content: center;\n align-items: center;\n\n /* fixes IE11 centering problems (is overruled by label min-height) */\n height: 0px;\n\n /* dont allow selection */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n /* will be animated */\n will-change: transform, opacity;\n}\n/* Hard to override styles on purpose */\n.filepond--drop-label.filepond--drop-label label {\n display: block;\n margin: 0;\n padding: 0.5em; /* use padding instead of margin so click area is not impacted */\n}\n.filepond--drop-label label {\n cursor: default;\n font-size: 0.875em;\n font-weight: normal;\n text-align: center;\n line-height: 1.5;\n}\n.filepond--label-action {\n text-decoration: underline;\n -webkit-text-decoration-skip: ink;\n text-decoration-skip-ink: auto;\n -webkit-text-decoration-color: #a7a4a4;\n text-decoration-color: #a7a4a4;\n cursor: pointer;\n}\n.filepond--root[data-disabled] .filepond--drop-label label {\n opacity: 0.5;\n}\n/* Hard to override styles */\n.filepond--file-action-button.filepond--file-action-button {\n font-size: 1em;\n width: 1.625em;\n height: 1.625em;\n\n font-family: inherit;\n line-height: inherit;\n\n margin: 0;\n padding: 0;\n border: none;\n outline: none;\n\n will-change: transform, opacity;\n\n /* hidden label */\n}\n.filepond--file-action-button.filepond--file-action-button span {\n position: absolute;\n overflow: hidden;\n height: 1px;\n width: 1px;\n padding: 0;\n border: 0;\n clip: rect(1px, 1px, 1px, 1px);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n white-space: nowrap;\n}\n.filepond--file-action-button.filepond--file-action-button {\n /* scale SVG to fill button */\n}\n.filepond--file-action-button.filepond--file-action-button svg {\n width: 100%;\n height: 100%;\n}\n.filepond--file-action-button.filepond--file-action-button {\n /* bigger touch area */\n}\n.filepond--file-action-button.filepond--file-action-button::after {\n position: absolute;\n left: -0.75em;\n right: -0.75em;\n top: -0.75em;\n bottom: -0.75em;\n content: '';\n}\n/* Soft styles */\n.filepond--file-action-button {\n /* use default arrow cursor */\n cursor: auto;\n\n /* reset default button styles */\n color: #fff;\n\n /* set default look n feel */\n border-radius: 50%;\n background-color: rgba(0, 0, 0, 0.5);\n background-image: none;\n\n /* we animate box shadow on focus */\n /* it's only slightly slower than animating */\n /* a pseudo-element with transforms and renders */\n /* a lot better on chrome */\n box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);\n transition: box-shadow 0.25s ease-in;\n}\n.filepond--file-action-button:hover,\n.filepond--file-action-button:focus {\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.9);\n}\n.filepond--file-action-button[disabled] {\n color: rgba(255, 255, 255, 0.5);\n background-color: rgba(0, 0, 0, 0.25);\n}\n.filepond--file-action-button[hidden] {\n display: none;\n}\n/* edit button */\n.filepond--action-edit-item.filepond--action-edit-item {\n width: 2em;\n height: 2em;\n padding: 0.1875em;\n}\n.filepond--action-edit-item.filepond--action-edit-item[data-align*='center'] {\n margin-left: -0.1875em;\n}\n.filepond--action-edit-item.filepond--action-edit-item[data-align*='bottom'] {\n margin-bottom: -0.1875em;\n}\n.filepond--action-edit-item-alt {\n border: none;\n line-height: inherit;\n background: transparent;\n font-family: inherit;\n color: inherit;\n outline: none;\n padding: 0;\n margin: 0 0 0 0.25em;\n pointer-events: all;\n position: absolute;\n}\n.filepond--action-edit-item-alt svg {\n width: 1.3125em;\n height: 1.3125em;\n}\n.filepond--action-edit-item-alt span {\n font-size: 0;\n opacity: 0;\n}\n.filepond--file-info {\n position: static;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n flex: 1;\n margin: 0 0.5em 0 0;\n min-width: 0;\n\n /* will be animated */\n will-change: transform, opacity;\n\n /* can't do anything with this info */\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n /* no margins on children */\n}\n.filepond--file-info * {\n margin: 0;\n}\n.filepond--file-info {\n /* we don't want to have these overrules so these selectors are a bit more specific */\n}\n.filepond--file-info .filepond--file-info-main {\n font-size: 0.75em;\n line-height: 1.2;\n\n /* we want ellipsis if this bar gets too wide */\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n}\n.filepond--file-info .filepond--file-info-sub {\n font-size: 0.625em;\n opacity: 0.5;\n transition: opacity 0.25s ease-in-out;\n white-space: nowrap;\n}\n.filepond--file-info .filepond--file-info-sub:empty {\n display: none;\n}\n.filepond--file-status {\n position: static;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n flex-grow: 0;\n flex-shrink: 0;\n\n margin: 0;\n min-width: 2.25em;\n text-align: right;\n\n /* will be animated */\n will-change: transform, opacity;\n\n /* can't do anything with this info */\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n /* no margins on children */\n}\n.filepond--file-status * {\n margin: 0;\n white-space: nowrap;\n}\n.filepond--file-status {\n /* font sizes */\n}\n.filepond--file-status .filepond--file-status-main {\n font-size: 0.75em;\n line-height: 1.2;\n}\n.filepond--file-status .filepond--file-status-sub {\n font-size: 0.625em;\n opacity: 0.5;\n transition: opacity 0.25s ease-in-out;\n}\n/* Hard to override styles */\n.filepond--file-wrapper.filepond--file-wrapper {\n border: none;\n margin: 0;\n padding: 0;\n min-width: 0;\n height: 100%;\n\n /* hide legend for visual users */\n}\n.filepond--file-wrapper.filepond--file-wrapper > legend {\n position: absolute;\n overflow: hidden;\n height: 1px;\n width: 1px;\n padding: 0;\n border: 0;\n clip: rect(1px, 1px, 1px, 1px);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n white-space: nowrap;\n}\n.filepond--file {\n position: static;\n display: flex;\n height: 100%;\n align-items: flex-start;\n\n padding: 0.5625em 0.5625em;\n\n color: #fff;\n border-radius: 0.5em;\n\n /* control positions */\n}\n.filepond--file .filepond--file-status {\n margin-left: auto;\n margin-right: 2.25em;\n}\n.filepond--file .filepond--processing-complete-indicator {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n z-index: 3;\n}\n.filepond--file .filepond--processing-complete-indicator,\n.filepond--file .filepond--progress-indicator,\n.filepond--file .filepond--file-action-button {\n position: absolute;\n}\n.filepond--file {\n /* .filepond--file-action-button */\n}\n.filepond--file [data-align*='left'] {\n left: 0.5625em;\n}\n.filepond--file [data-align*='right'] {\n right: 0.5625em;\n}\n.filepond--file [data-align*='center'] {\n left: calc(50% - 0.8125em); /* .8125 is half of button width */\n}\n.filepond--file [data-align*='bottom'] {\n bottom: 1.125em;\n}\n.filepond--file [data-align='center'] {\n top: calc(50% - 0.8125em);\n}\n.filepond--file .filepond--progress-indicator {\n margin-top: 0.1875em;\n}\n.filepond--file .filepond--progress-indicator[data-align*='right'] {\n margin-right: 0.1875em;\n}\n.filepond--file .filepond--progress-indicator[data-align*='left'] {\n margin-left: 0.1875em;\n}\n/* make sure text does not overlap */\n[data-filepond-item-state='cancelled'] .filepond--file-info,\n[data-filepond-item-state*='invalid'] .filepond--file-info,\n[data-filepond-item-state*='error'] .filepond--file-info {\n margin-right: 2.25em;\n}\n[data-filepond-item-state~='processing'] .filepond--file-status-sub {\n opacity: 0;\n}\n[data-filepond-item-state~='processing']\n .filepond--action-abort-item-processing\n ~ .filepond--file-status\n .filepond--file-status-sub {\n opacity: 0.5;\n}\n[data-filepond-item-state='processing-error'] .filepond--file-status-sub {\n opacity: 0;\n}\n[data-filepond-item-state='processing-error']\n .filepond--action-retry-item-processing\n ~ .filepond--file-status\n .filepond--file-status-sub {\n opacity: 0.5;\n}\n[data-filepond-item-state='processing-complete'] {\n /* busy state */\n}\n[data-filepond-item-state='processing-complete'] .filepond--action-revert-item-processing svg {\n -webkit-animation: fall 0.5s 0.125s linear both;\n animation: fall 0.5s 0.125s linear both;\n}\n[data-filepond-item-state='processing-complete'] {\n /* hide details by default, only show when can revert */\n}\n[data-filepond-item-state='processing-complete'] .filepond--file-status-sub {\n opacity: 0.5;\n}\n[data-filepond-item-state='processing-complete']\n .filepond--processing-complete-indicator:not([style*='hidden'])\n ~ .filepond--file-status\n .filepond--file-status-sub {\n opacity: 0;\n}\n[data-filepond-item-state='processing-complete'] .filepond--file-info-sub {\n opacity: 0;\n}\n[data-filepond-item-state='processing-complete']\n .filepond--action-revert-item-processing\n ~ .filepond--file-info\n .filepond--file-info-sub {\n opacity: 0.5;\n}\n/* file state can be invalid or error, both are visually similar but */\n/* having them as separate states might be useful */\n[data-filepond-item-state*='invalid'] .filepond--panel,\n[data-filepond-item-state*='invalid'] .filepond--file-wrapper,\n[data-filepond-item-state*='error'] .filepond--panel,\n[data-filepond-item-state*='error'] .filepond--file-wrapper {\n -webkit-animation: shake 0.65s linear both;\n animation: shake 0.65s linear both;\n}\n/* spins progress indicator when file is marked as busy */\n[data-filepond-item-state*='busy'] .filepond--progress-indicator svg {\n -webkit-animation: spin 1s linear infinite;\n animation: spin 1s linear infinite;\n}\n/**\n * States\n */\n@-webkit-keyframes spin {\n 0% {\n -webkit-transform: rotateZ(0deg);\n transform: rotateZ(0deg);\n }\n\n 100% {\n -webkit-transform: rotateZ(360deg);\n transform: rotateZ(360deg);\n }\n}\n@keyframes spin {\n 0% {\n -webkit-transform: rotateZ(0deg);\n transform: rotateZ(0deg);\n }\n\n 100% {\n -webkit-transform: rotateZ(360deg);\n transform: rotateZ(360deg);\n }\n}\n@-webkit-keyframes shake {\n 10%,\n 90% {\n -webkit-transform: translateX(-0.0625em);\n transform: translateX(-0.0625em);\n }\n\n 20%,\n 80% {\n -webkit-transform: translateX(0.125em);\n transform: translateX(0.125em);\n }\n\n 30%,\n 50%,\n 70% {\n -webkit-transform: translateX(-0.25em);\n transform: translateX(-0.25em);\n }\n\n 40%,\n 60% {\n -webkit-transform: translateX(0.25em);\n transform: translateX(0.25em);\n }\n}\n@keyframes shake {\n 10%,\n 90% {\n -webkit-transform: translateX(-0.0625em);\n transform: translateX(-0.0625em);\n }\n\n 20%,\n 80% {\n -webkit-transform: translateX(0.125em);\n transform: translateX(0.125em);\n }\n\n 30%,\n 50%,\n 70% {\n -webkit-transform: translateX(-0.25em);\n transform: translateX(-0.25em);\n }\n\n 40%,\n 60% {\n -webkit-transform: translateX(0.25em);\n transform: translateX(0.25em);\n }\n}\n@-webkit-keyframes fall {\n 0% {\n opacity: 0;\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 70% {\n opacity: 1;\n -webkit-transform: scale(1.1);\n transform: scale(1.1);\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 100% {\n -webkit-transform: scale(1);\n transform: scale(1);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n}\n@keyframes fall {\n 0% {\n opacity: 0;\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n\n 70% {\n opacity: 1;\n -webkit-transform: scale(1.1);\n transform: scale(1.1);\n -webkit-animation-timing-function: ease-in-out;\n animation-timing-function: ease-in-out;\n }\n\n 100% {\n -webkit-transform: scale(1);\n transform: scale(1);\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n }\n}\n/* ignore all other interaction elements while dragging a file */\n.filepond--hopper[data-hopper-state='drag-over'] > * {\n pointer-events: none;\n}\n/* capture all hit tests using a hidden layer, this speeds up the event flow */\n.filepond--hopper[data-hopper-state='drag-over']::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 100;\n}\n.filepond--progress-indicator {\n z-index: 103;\n}\n.filepond--file-action-button {\n z-index: 102;\n}\n.filepond--file-status {\n z-index: 101;\n}\n.filepond--file-info {\n z-index: 100;\n}\n.filepond--item {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n z-index: 1;\n\n padding: 0;\n margin: 0.25em;\n\n will-change: transform, opacity;\n\n touch-action: auto;\n\n /* item children order */\n}\n.filepond--item > .filepond--panel {\n z-index: -1;\n}\n/* has a slight shadow */\n.filepond--item > .filepond--panel .filepond--panel-bottom {\n box-shadow: 0 0.0625em 0.125em -0.0625em rgba(0, 0, 0, 0.25);\n}\n.filepond--item {\n /* drag related */\n}\n.filepond--item > .filepond--file-wrapper,\n.filepond--item > .filepond--panel {\n transition: opacity 0.15s ease-out;\n}\n.filepond--item[data-drag-state] {\n cursor: -webkit-grab;\n cursor: grab;\n}\n.filepond--item[data-drag-state] > .filepond--panel {\n transition: box-shadow 0.125s ease-in-out;\n box-shadow: 0 0 0 rgba(0, 0, 0, 0);\n}\n.filepond--item[data-drag-state='drag'] {\n cursor: -webkit-grabbing;\n cursor: grabbing;\n}\n.filepond--item[data-drag-state='drag'] > .filepond--panel {\n box-shadow: 0 0.125em 0.3125em rgba(0, 0, 0, 0.325);\n}\n.filepond--item[data-drag-state]:not([data-drag-state='idle']) {\n z-index: 2;\n}\n/* states */\n.filepond--item-panel {\n background-color: #64605e;\n}\n[data-filepond-item-state='processing-complete'] .filepond--item-panel {\n background-color: #369763;\n}\n[data-filepond-item-state*='invalid'] .filepond--item-panel,\n[data-filepond-item-state*='error'] .filepond--item-panel {\n background-color: #c44e47;\n}\n/* style of item panel */\n.filepond--item-panel {\n border-radius: 0.5em;\n transition: background-color 0.25s;\n}\n/* normal mode */\n.filepond--list-scroller {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n margin: 0;\n will-change: transform;\n}\n/* scroll mode */\n.filepond--list-scroller[data-state='overflow'] .filepond--list {\n bottom: 0;\n right: 0;\n}\n.filepond--list-scroller[data-state='overflow'] {\n overflow-y: scroll;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n -webkit-mask: linear-gradient(to bottom, #000 calc(100% - 0.5em), transparent 100%);\n mask: linear-gradient(to bottom, #000 calc(100% - 0.5em), transparent 100%);\n}\n/* style scrollbar */\n.filepond--list-scroller::-webkit-scrollbar {\n background: transparent;\n}\n.filepond--list-scroller::-webkit-scrollbar:vertical {\n width: 1em;\n}\n.filepond--list-scroller::-webkit-scrollbar:horizontal {\n height: 0;\n}\n.filepond--list-scroller::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.3);\n border-radius: 99999px;\n border: 0.3125em solid transparent;\n background-clip: content-box;\n}\n/* hard to overide styles on purpose */\n.filepond--list.filepond--list {\n position: absolute;\n top: 0;\n margin: 0;\n padding: 0;\n list-style-type: none;\n\n /* prevents endless paint calls on filepond--list-scroller */\n will-change: transform;\n}\n/* used for padding so allowed to be restyled */\n.filepond--list {\n left: 0.75em;\n right: 0.75em;\n}\n.filepond--root[data-style-panel-layout~='integrated'] {\n width: 100%;\n height: 100%;\n max-width: none;\n margin: 0;\n}\n.filepond--root[data-style-panel-layout~='circle'] .filepond--panel-root,\n.filepond--root[data-style-panel-layout~='integrated'] .filepond--panel-root {\n border-radius: 0;\n}\n.filepond--root[data-style-panel-layout~='circle'] .filepond--panel-root > *,\n.filepond--root[data-style-panel-layout~='integrated'] .filepond--panel-root > * {\n display: none;\n}\n.filepond--root[data-style-panel-layout~='circle'] .filepond--drop-label,\n.filepond--root[data-style-panel-layout~='integrated'] .filepond--drop-label {\n bottom: 0;\n height: auto;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 7;\n}\n.filepond--root[data-style-panel-layout~='circle'],\n.filepond--root[data-style-panel-layout~='integrated'] {\n /* we're only loading one item, this makes the intro animation a bit nicer */\n}\n.filepond--root[data-style-panel-layout~='circle'] .filepond--item-panel,\n.filepond--root[data-style-panel-layout~='integrated'] .filepond--item-panel {\n display: none;\n}\n.filepond--root[data-style-panel-layout~='compact'] .filepond--list-scroller,\n.filepond--root[data-style-panel-layout~='integrated'] .filepond--list-scroller {\n overflow: hidden;\n height: 100%;\n margin-top: 0;\n margin-bottom: 0;\n}\n.filepond--root[data-style-panel-layout~='compact'] .filepond--list,\n.filepond--root[data-style-panel-layout~='integrated'] .filepond--list {\n left: 0;\n right: 0;\n height: 100%;\n}\n.filepond--root[data-style-panel-layout~='compact'] .filepond--item,\n.filepond--root[data-style-panel-layout~='integrated'] .filepond--item {\n margin: 0;\n}\n.filepond--root[data-style-panel-layout~='compact'] .filepond--file-wrapper,\n.filepond--root[data-style-panel-layout~='integrated'] .filepond--file-wrapper {\n height: 100%;\n}\n.filepond--root[data-style-panel-layout~='compact'] .filepond--drop-label,\n.filepond--root[data-style-panel-layout~='integrated'] .filepond--drop-label {\n z-index: 7;\n}\n.filepond--root[data-style-panel-layout~='circle'] {\n border-radius: 99999rem;\n overflow: hidden;\n}\n.filepond--root[data-style-panel-layout~='circle'] > .filepond--panel {\n border-radius: inherit;\n}\n.filepond--root[data-style-panel-layout~='circle'] > .filepond--panel > * {\n display: none;\n}\n.filepond--root[data-style-panel-layout~='circle'] {\n /* circle cuts of this info, so best to hide it */\n}\n.filepond--root[data-style-panel-layout~='circle'] .filepond--file-info {\n display: none;\n}\n.filepond--root[data-style-panel-layout~='circle'] .filepond--file-status {\n display: none;\n}\n.filepond--root[data-style-panel-layout~='circle'] .filepond--action-edit-item {\n opacity: 1 !important;\n visibility: visible !important;\n}\n/* dirfty way to fix circular overflow issue on safari 11+ */\n@media not all and (min-resolution: 0.001dpcm) {\n @supports (-webkit-appearance: none) and (stroke-color: transparent) {\n .filepond--root[data-style-panel-layout~='circle'] {\n will-change: transform;\n }\n }\n}\n.filepond--panel-root {\n border-radius: 0.5em;\n background-color: #f1f0ef;\n}\n.filepond--panel {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n margin: 0;\n\n /* defaults to 100% height (fixed height mode) this fixes problem with panel height in IE11 */\n height: 100% !important;\n\n /* no interaction possible with panel */\n pointer-events: none;\n}\n.filepond-panel:not([data-scalable='false']) {\n height: auto !important;\n}\n.filepond--panel[data-scalable='false'] > div {\n display: none;\n}\n.filepond--panel[data-scalable='true'] {\n /* this seems to fix Chrome performance issues */\n /* - when box-shadow is enabled */\n /* - when multiple ponds are active on the same page */\n -webkit-transform-style: preserve-3d;\n transform-style: preserve-3d;\n\n /* prevent borders and backgrounds */\n background-color: transparent !important;\n border: none !important;\n}\n.filepond--panel-top,\n.filepond--panel-bottom,\n.filepond--panel-center {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n margin: 0;\n padding: 0;\n}\n.filepond--panel-top,\n.filepond--panel-bottom {\n height: 0.5em;\n}\n.filepond--panel-top {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n border-bottom: none !important;\n\n /* fixes tiny transparant line between top and center panel */\n}\n.filepond--panel-top::after {\n content: '';\n position: absolute;\n height: 2px;\n left: 0;\n right: 0;\n bottom: -1px;\n background-color: inherit;\n}\n.filepond--panel-center,\n.filepond--panel-bottom {\n will-change: transform;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-transform-origin: left top;\n transform-origin: left top;\n -webkit-transform: translate3d(0, 0.5em, 0);\n transform: translate3d(0, 0.5em, 0);\n}\n.filepond--panel-bottom {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n border-top: none !important;\n\n /* fixes tiny transparant line between bottom and center of panel */\n}\n.filepond--panel-bottom::before {\n content: '';\n position: absolute;\n height: 2px;\n left: 0;\n right: 0;\n top: -1px;\n background-color: inherit;\n}\n.filepond--panel-center {\n /* the center panel is scaled using scale3d to fit the correct height */\n /* we use 100px instead of 1px as scaling 1px to a huge height is really laggy on chrome */\n height: 100px !important;\n border-top: none !important;\n border-bottom: none !important;\n border-radius: 0 !important;\n\n /* hide if not transformed, prevents a little flash when the panel is at 100px height while attached for first time */\n}\n.filepond--panel-center:not([style]) {\n visibility: hidden;\n}\n.filepond--progress-indicator {\n position: static;\n width: 1.25em;\n height: 1.25em;\n\n color: #fff;\n\n /* can't have margins */\n margin: 0;\n\n /* no interaction possible with progress indicator */\n pointer-events: none;\n\n /* will be animated */\n will-change: transform, opacity;\n}\n.filepond--progress-indicator svg {\n width: 100%;\n height: 100%;\n vertical-align: top;\n transform-box: fill-box; /* should center the animation correctly when zoomed in */\n}\n.filepond--progress-indicator path {\n fill: none;\n stroke: currentColor;\n}\n.filepond--list-scroller {\n z-index: 6;\n}\n.filepond--drop-label {\n z-index: 5;\n}\n.filepond--drip {\n z-index: 3;\n}\n.filepond--root > .filepond--panel {\n z-index: 2;\n}\n.filepond--browser {\n z-index: 1;\n}\n.filepond--root {\n /* layout*/\n box-sizing: border-box;\n position: relative;\n margin-bottom: 1em;\n\n /* base font size for whole component */\n font-size: 1rem;\n\n /* base line height */\n line-height: normal;\n\n /* up uses default system font family */\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\n\n /* will increase font weight a bit on Safari */\n font-weight: 450;\n\n /* default text alignment */\n text-align: left;\n\n /* better text rendering on Safari */\n text-rendering: optimizeLegibility;\n\n /* text direction is ltr for now */\n direction: ltr;\n\n /* optimize rendering */\n /* https://developer.mozilla.org/en-US/docs/Web/CSS/contain */\n contain: layout style size;\n\n /* correct box sizing, line-height and positioning on child elements */\n}\n.filepond--root * {\n box-sizing: inherit;\n line-height: inherit;\n}\n.filepond--root *:not(text) {\n font-size: inherit;\n}\n.filepond--root {\n /* block everything */\n}\n.filepond--root[data-disabled] {\n pointer-events: none;\n}\n.filepond--root[data-disabled] .filepond--list-scroller {\n pointer-events: all;\n}\n.filepond--root[data-disabled] .filepond--list {\n pointer-events: none;\n}\n/**\n * Root element children layout\n */\n.filepond--root .filepond--drop-label {\n min-height: 4.75em;\n}\n.filepond--root .filepond--list-scroller {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n.filepond--root .filepond--credits {\n position: absolute;\n right: 0;\n opacity: 0.4;\n line-height: 0.85;\n font-size: 11px;\n color: inherit;\n text-decoration: none;\n z-index: 3;\n bottom: -14px;\n}\n.filepond--root .filepond--credits[style] {\n top: 0;\n bottom: auto;\n margin-top: 14px;\n}\n"]}
@@ -0,0 +1 @@
1
+ @use "filepond"
@@ -25,6 +25,9 @@ module Formatic
25
25
  # For inputs that support `<input autofocus=...>`
26
26
  option :autofocus, default: -> { false }
27
27
 
28
+ # Multiple records are submitted via one input.
29
+ option :multiple, default: -> { false }
30
+
28
31
  # Some inputs (such as checkboxes and textfields)
29
32
  # can be submitted continously by submitting their <form>
30
33
  # via javascript.
@@ -68,7 +71,7 @@ module Formatic
68
71
 
69
72
  # # Name of the URL param for this input.
70
73
  def input_name
71
- "#{param_key}[#{attribute_name}]"
74
+ "#{param_key}[#{attribute_name}]#{'[]' if multiple}"
72
75
  end
73
76
  end
74
77
  end
@@ -104,7 +104,7 @@ module Formatic
104
104
  end
105
105
 
106
106
  def collection_for_month
107
- result = (1..12).map { [l(::Date.new(1, _1), format: '%B  %-m'), _1] }
107
+ result = (1..12).map { [l(::Date.new(1, it), format: '%B  %-m'), it] }
108
108
  result.prepend([nil, nil]) if wrapper.optional?
109
109
  result
110
110
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Formatic
4
+ # File upload
5
+ class File < ::Formatic::Base
6
+ option :direct_upload, default: -> { true }
7
+ option :multiple, default: -> { false }
8
+
9
+ erb_template <<~ERB
10
+ <%= render wrapper do |wrap| %>
11
+
12
+ <% wrap.with_input do %>
13
+ <div class="c-formatic-file js-formatic-file">
14
+ <%= f.file_field attribute_name, class: "js-formatic-file__input", direct_upload:, multiple: %>
15
+ </div>
16
+
17
+ <% end %>
18
+ <% end %>
19
+ ERB
20
+ end
21
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Formatic
4
+ # File upload
5
+ class Files < ::Formatic::File
6
+ option :multiple, default: -> { true }
7
+ end
8
+ end
@@ -37,7 +37,7 @@ module Formatic
37
37
  end
38
38
 
39
39
  def current_choice_name
40
- choices.detect { _1.last == value }&.first
40
+ choices.detect { it.last == value }&.first
41
41
  end
42
42
 
43
43
  def include_blank?
@@ -40,7 +40,7 @@ module Formatic
40
40
 
41
41
  # Usually the time component is used below the date component (for a DateTime attribute).
42
42
  # So, normally we don't want the label to be shown twice.
43
- def label
43
+ def label # rubocop:disable Naming/PredicateMethod
44
44
  false
45
45
  end
46
46
 
@@ -76,7 +76,7 @@ module Formatic
76
76
  end
77
77
 
78
78
  def collection_for_hour
79
- result = (0..23).map { [_1, _1] }
79
+ result = (0..23).map { [it, it] }
80
80
  result.prepend([nil, nil]) if wrapper.optional?
81
81
  result
82
82
  end
@@ -91,7 +91,7 @@ module Formatic
91
91
  steps.sort!
92
92
  end
93
93
 
94
- result = steps.map { [_1.to_s.rjust(2, '0'), _1] }
94
+ result = steps.map { [it.to_s.rjust(2, '0'), it] }
95
95
  result.prepend([nil, nil]) if wrapper.optional?
96
96
  result
97
97
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ pin 'formatic', to: 'src/setup.js'
4
+
5
+ pin 'formatic/date', to: 'formatic/date.js'
6
+ pin 'formatic/file', to: 'formatic/file.js'
7
+ pin 'formatic/select', to: 'formatic/select.js'
8
+ pin 'formatic/stepper', to: 'formatic/stepper.js'
9
+ pin 'formatic/string', to: 'formatic/string.js'
10
+ pin 'formatic/textarea', to: 'formatic/textarea.js'
11
+ pin 'formatic/toggle', to: 'formatic/toggle.js'
@@ -32,7 +32,7 @@ module Formatic
32
32
  return false unless model_klass.respond_to?(:reflect_on_all_associations)
33
33
 
34
34
  model_klass.reflect_on_all_associations(:belongs_to)
35
- .detect { _1.foreign_key == attribute_name.to_s }
35
+ .detect { it.foreign_key == attribute_name.to_s }
36
36
  end
37
37
  end
38
38
  end
@@ -40,7 +40,7 @@ module Formatic
40
40
  return false unless model_klass.respond_to?(:reflect_on_all_associations)
41
41
 
42
42
  model_klass.reflect_on_all_associations(:belongs_to)
43
- .detect { _1.foreign_key == attribute_name.to_s }
43
+ .detect { it.foreign_key == attribute_name.to_s }
44
44
  end
45
45
  end
46
46
  end
@@ -7,6 +7,18 @@ module Formatic
7
7
  # :nodoc:
8
8
  class Engine < ::Rails::Engine
9
9
  isolate_namespace Formatic
10
+ config.autoload_paths << root.join('lib')
11
+
12
+ initializer 'formatic.importmap', before: 'importmap' do |app|
13
+ app.config.importmap.paths << Engine.root.join('config/importmap.rb')
14
+ # Watch JS changes in development
15
+ app.config.importmap.cache_sweepers << Engine.root.join('app/assets/javascript')
16
+ end
17
+
18
+ initializer 'formatic.assets' do |app|
19
+ app.config.assets.paths << Engine.root.join('app/javascript')
20
+ app.config.assets.paths << Engine.root.join('app/stylesheets')
21
+ end
10
22
 
11
23
  config.to_prepare do
12
24
  # Our Formatic components are subclasses of `ViewComponent::Base`.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Formatic
4
- VERSION = '0.2.3'
4
+ VERSION = '0.2.4'
5
5
  end
@@ -17,7 +17,7 @@ module Formatic
17
17
  return false if manual_required == false
18
18
  return false if validators.empty?
19
19
 
20
- validators.any? { applicable?(_1) }
20
+ validators.any? { applicable?(it) }
21
21
  end
22
22
 
23
23
  private
data/lib/formatic.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'calls'
4
4
  require 'countries'
5
5
  require 'holidays'
6
+ require 'importmap-rails'
6
7
  require 'dry/initializer'
7
8
 
8
9
  require 'formatic/version'
@@ -20,7 +21,7 @@ require 'formatic/wrappers/required'
20
21
  require 'formatic/wrappers/translate'
21
22
  require 'formatic/wrappers/validators'
22
23
 
23
- require 'formatic/engine' if defined?(Rails::Engine)
24
+ require 'formatic/engine'
24
25
 
25
26
  module Formatic
26
27
  class Error < ::StandardError; end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formatic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - halo
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-05-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: actionview
@@ -80,6 +79,20 @@ dependencies:
80
79
  - - ">="
81
80
  - !ruby/object:Gem::Version
82
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: importmap-rails
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
83
96
  - !ruby/object:Gem::Dependency
84
97
  name: view_component
85
98
  requirement: !ruby/object:Gem::Requirement
@@ -104,37 +117,85 @@ files:
104
117
  - CHANGELOG.md
105
118
  - LICENSE.txt
106
119
  - README.md
107
- - app/assets/javascript/formatic.js
108
- - app/assets/javascript/formatic.js.map
109
- - app/assets/javascript/formatic/components/date.ts
110
- - app/assets/javascript/formatic/components/select.ts
111
- - app/assets/javascript/formatic/components/stepper.ts
112
- - app/assets/javascript/formatic/components/string.ts
113
- - app/assets/javascript/formatic/components/textarea.ts
114
- - app/assets/javascript/formatic/components/toggle.ts
120
+ - app/assets/javascript/declarations/date.d.ts
121
+ - app/assets/javascript/declarations/file.d.ts
122
+ - app/assets/javascript/declarations/select.d.ts
123
+ - app/assets/javascript/declarations/setup.d.ts
124
+ - app/assets/javascript/declarations/stepper.d.ts
125
+ - app/assets/javascript/declarations/string.d.ts
126
+ - app/assets/javascript/declarations/textarea.d.ts
127
+ - app/assets/javascript/declarations/toggle.d.ts
128
+ - app/assets/javascript/formatic/date.js
129
+ - app/assets/javascript/formatic/date.js.map
130
+ - app/assets/javascript/formatic/file.js
131
+ - app/assets/javascript/formatic/file.js.map
132
+ - app/assets/javascript/formatic/select.js
133
+ - app/assets/javascript/formatic/select.js.map
134
+ - app/assets/javascript/formatic/setup.js
135
+ - app/assets/javascript/formatic/setup.js.map
136
+ - app/assets/javascript/formatic/stepper.js
137
+ - app/assets/javascript/formatic/stepper.js.map
138
+ - app/assets/javascript/formatic/string.js
139
+ - app/assets/javascript/formatic/string.js.map
140
+ - app/assets/javascript/formatic/textarea.js
141
+ - app/assets/javascript/formatic/textarea.js.map
142
+ - app/assets/javascript/formatic/toggle.js
143
+ - app/assets/javascript/formatic/toggle.js.map
144
+ - app/assets/javascript/src/date.ts
145
+ - app/assets/javascript/src/file.ts
146
+ - app/assets/javascript/src/select.ts
147
+ - app/assets/javascript/src/setup.js
148
+ - app/assets/javascript/src/stepper.ts
149
+ - app/assets/javascript/src/string.ts
150
+ - app/assets/javascript/src/textarea.ts
151
+ - app/assets/javascript/src/toggle.ts
152
+ - app/assets/stylesheets/formatic.css
153
+ - app/assets/stylesheets/formatic.sass
154
+ - app/assets/stylesheets/formatic/components/checklist.css
155
+ - app/assets/stylesheets/formatic/components/checklist.css.map
115
156
  - app/assets/stylesheets/formatic/components/checklist.sass
157
+ - app/assets/stylesheets/formatic/components/date.css
116
158
  - app/assets/stylesheets/formatic/components/date.sass
159
+ - app/assets/stylesheets/formatic/components/select.css
117
160
  - app/assets/stylesheets/formatic/components/select.sass
161
+ - app/assets/stylesheets/formatic/components/stepper.css
118
162
  - app/assets/stylesheets/formatic/components/stepper.sass
163
+ - app/assets/stylesheets/formatic/components/string.css
119
164
  - app/assets/stylesheets/formatic/components/string.sass
165
+ - app/assets/stylesheets/formatic/components/textarea.css
120
166
  - app/assets/stylesheets/formatic/components/textarea.sass
167
+ - app/assets/stylesheets/formatic/components/time.css
121
168
  - app/assets/stylesheets/formatic/components/time.sass
169
+ - app/assets/stylesheets/formatic/components/toggle.css
122
170
  - app/assets/stylesheets/formatic/components/toggle.sass
171
+ - app/assets/stylesheets/formatic/components/wrapper.css
123
172
  - app/assets/stylesheets/formatic/components/wrapper.sass
173
+ - app/assets/stylesheets/formatic/formatic.css
174
+ - app/assets/stylesheets/formatic/formatic.css.map
175
+ - app/assets/stylesheets/formatic/generics/flip.css
176
+ - app/assets/stylesheets/formatic/generics/flip.css.map
124
177
  - app/assets/stylesheets/formatic/generics/flip.sass
125
- - app/assets/stylesheets/formatic/index.sass
126
- - app/assets/stylesheets/formatic/package.json
178
+ - app/assets/stylesheets/formatic/scopes/form.css
127
179
  - app/assets/stylesheets/formatic/scopes/form.sass
128
180
  - app/assets/stylesheets/formatic/settings/_colors.sass
129
181
  - app/assets/stylesheets/formatic/tools/_cloud.sass
130
182
  - app/assets/stylesheets/formatic/tools/_mandatory.sass
131
183
  - app/assets/stylesheets/formatic/tools/_terminal.sass
132
184
  - app/assets/stylesheets/formatic/tools/_theme.sass
185
+ - app/assets/stylesheets/formatic/utilities/container.css
186
+ - app/assets/stylesheets/formatic/utilities/container.css.map
133
187
  - app/assets/stylesheets/formatic/utilities/container.sass
188
+ - app/assets/stylesheets/formatic/vendor.css
189
+ - app/assets/stylesheets/formatic/vendor.css.map
190
+ - app/assets/stylesheets/vendor.css
191
+ - app/assets/stylesheets/vendor.css.map
192
+ - app/assets/stylesheets/vendor.sass
134
193
  - app/components/formatic/application_component.rb
135
194
  - app/components/formatic/base.rb
136
195
  - app/components/formatic/checklist.rb
137
196
  - app/components/formatic/date.rb
197
+ - app/components/formatic/file.rb
198
+ - app/components/formatic/files.rb
138
199
  - app/components/formatic/select.rb
139
200
  - app/components/formatic/stepper.rb
140
201
  - app/components/formatic/string.rb
@@ -142,6 +203,7 @@ files:
142
203
  - app/components/formatic/time.rb
143
204
  - app/components/formatic/toggle.rb
144
205
  - app/components/formatic/wrapper.rb
206
+ - config/importmap.rb
145
207
  - config/locales/formatic.de.yml
146
208
  - config/locales/formatic.en.yml
147
209
  - lib/formatic.rb
@@ -170,7 +232,6 @@ metadata:
170
232
  source_code_uri: https://github.com/halo/formatic
171
233
  changelog_uri: https://github.com/halo/halo/blob/main/CHANGELOG.md
172
234
  rubygems_mfa_required: 'true'
173
- post_install_message:
174
235
  rdoc_options: []
175
236
  require_paths:
176
237
  - lib
@@ -178,15 +239,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
178
239
  requirements:
179
240
  - - ">="
180
241
  - !ruby/object:Gem::Version
181
- version: 3.2.0
242
+ version: 3.4.0
182
243
  required_rubygems_version: !ruby/object:Gem::Requirement
183
244
  requirements:
184
245
  - - ">="
185
246
  - !ruby/object:Gem::Version
186
247
  version: '0'
187
248
  requirements: []
188
- rubygems_version: 3.5.14
189
- signing_key:
249
+ rubygems_version: 3.7.2
190
250
  specification_version: 4
191
251
  summary: A set of ViewComponents for form elements
192
252
  test_files: []
@@ -1,54 +0,0 @@
1
- namespace Formatic {
2
- export class Date {
3
- private el: HTMLElement
4
-
5
- constructor(el: HTMLElement) {
6
- this.el = el
7
- this.setupBindings()
8
- }
9
-
10
- private setupBindings() {
11
- this.shortcutButtons.forEach((el) => {
12
- el.addEventListener('click', (event) => {
13
- event.preventDefault()
14
- const shortcut = <HTMLInputElement>event.currentTarget
15
-
16
- this.dayInput.value = shortcut.dataset.day
17
- this.monthInput.value = shortcut.dataset.month
18
- this.yearInput.value = shortcut.dataset.year
19
- })
20
- })
21
- }
22
-
23
- // ------------
24
- // DOM Elements
25
- // ------------
26
-
27
- private get dayInput() {
28
- return this.el.querySelector<HTMLSelectElement>('.js-formatic-date__day')
29
- }
30
-
31
- private get monthInput() {
32
- return this.el.querySelector<HTMLSelectElement>('.js-formatic-date__month')
33
- }
34
-
35
- private get yearInput() {
36
- return this.el.querySelector<HTMLSelectElement>('.js-formatic-date__year')
37
- }
38
-
39
- private get shortcutButtons() {
40
- return this.el.querySelectorAll<HTMLElement>('.js-formatic-date__shortcut')
41
- }
42
- }
43
- }
44
-
45
- // --------------
46
- // Initialization
47
- // --------------
48
-
49
- document.addEventListener('DOMContentLoaded', () => {
50
- document.querySelectorAll<HTMLElement>('.js-formatic-date').forEach((el) => {
51
- console.debug('Instantiating Formatic.Date...')
52
- new Formatic.Date(el)
53
- })
54
- })