satis 1.0.75 → 2.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/gem-push.yml +11 -0
- data/.gitignore +15 -0
- data/.nvmrc +1 -0
- data/.rubocop.yml +18 -0
- data/Gemfile +27 -0
- data/Procfile +2 -0
- data/README.md +47 -25
- data/TODO.md +26 -0
- data/app/assets/config/satis_manifest.js +8 -1
- data/app/assets/fontawesome/brands.js +6 -0
- data/app/assets/fontawesome/fontawesome.js +6 -0
- data/app/assets/fontawesome/solid.js +6 -0
- data/app/assets/images/satis/flags/1x1/ac.svg +81 -0
- data/app/assets/images/satis/flags/1x1/ad.svg +148 -0
- data/app/assets/images/satis/flags/1x1/ae.svg +6 -0
- data/app/assets/images/satis/flags/1x1/af.svg +81 -0
- data/app/assets/images/satis/flags/1x1/ag.svg +14 -0
- data/app/assets/images/satis/flags/1x1/ai.svg +763 -0
- data/app/assets/images/satis/flags/1x1/al.svg +5 -0
- data/app/assets/images/satis/flags/1x1/am.svg +5 -0
- data/app/assets/images/satis/flags/1x1/ao.svg +13 -0
- data/app/assets/images/satis/flags/1x1/aq.svg +5 -0
- data/app/assets/images/satis/flags/1x1/ar.svg +31 -0
- data/app/assets/images/satis/flags/1x1/as.svg +33 -0
- data/app/assets/images/satis/flags/1x1/at.svg +6 -0
- data/app/assets/images/satis/flags/1x1/au.svg +11 -0
- data/app/assets/images/satis/flags/1x1/aw.svg +186 -0
- data/app/assets/images/satis/flags/1x1/ax.svg +18 -0
- data/app/assets/images/satis/flags/1x1/az.svg +8 -0
- data/app/assets/images/satis/flags/1x1/ba.svg +12 -0
- data/app/assets/images/satis/flags/1x1/bb.svg +6 -0
- data/app/assets/images/satis/flags/1x1/bd.svg +4 -0
- data/app/assets/images/satis/flags/1x1/be.svg +7 -0
- data/app/assets/images/satis/flags/1x1/bf.svg +7 -0
- data/app/assets/images/satis/flags/1x1/bg.svg +7 -0
- data/app/assets/images/satis/flags/1x1/bh.svg +9 -0
- data/app/assets/images/satis/flags/1x1/bi.svg +15 -0
- data/app/assets/images/satis/flags/1x1/bj.svg +14 -0
- data/app/assets/images/satis/flags/1x1/bl.svg +7 -0
- data/app/assets/images/satis/flags/1x1/bm.svg +99 -0
- data/app/assets/images/satis/flags/1x1/bn.svg +36 -0
- data/app/assets/images/satis/flags/1x1/bo.svg +678 -0
- data/app/assets/images/satis/flags/1x1/bq.svg +5 -0
- data/app/assets/images/satis/flags/1x1/br.svg +45 -0
- data/app/assets/images/satis/flags/1x1/bs.svg +13 -0
- data/app/assets/images/satis/flags/1x1/bt.svg +89 -0
- data/app/assets/images/satis/flags/1x1/bv.svg +13 -0
- data/app/assets/images/satis/flags/1x1/bw.svg +7 -0
- data/app/assets/images/satis/flags/1x1/by.svg +22 -0
- data/app/assets/images/satis/flags/1x1/bz.svg +145 -0
- data/app/assets/images/satis/flags/1x1/ca.svg +4 -0
- data/app/assets/images/satis/flags/1x1/cc.svg +19 -0
- data/app/assets/images/satis/flags/1x1/cd.svg +12 -0
- data/app/assets/images/satis/flags/1x1/cf.svg +15 -0
- data/app/assets/images/satis/flags/1x1/cg.svg +12 -0
- data/app/assets/images/satis/flags/1x1/ch.svg +9 -0
- data/app/assets/images/satis/flags/1x1/ci.svg +7 -0
- data/app/assets/images/satis/flags/1x1/ck.svg +11 -0
- data/app/assets/images/satis/flags/1x1/cl.svg +13 -0
- data/app/assets/images/satis/flags/1x1/cm.svg +15 -0
- data/app/assets/images/satis/flags/1x1/cn.svg +11 -0
- data/app/assets/images/satis/flags/1x1/co.svg +7 -0
- data/app/assets/images/satis/flags/1x1/cp.svg +7 -0
- data/app/assets/images/satis/flags/1x1/cr.svg +7 -0
- data/app/assets/images/satis/flags/1x1/cu.svg +13 -0
- data/app/assets/images/satis/flags/1x1/cv.svg +13 -0
- data/app/assets/images/satis/flags/1x1/cw.svg +14 -0
- data/app/assets/images/satis/flags/1x1/cx.svg +15 -0
- data/app/assets/images/satis/flags/1x1/cy.svg +6 -0
- data/app/assets/images/satis/flags/1x1/cz.svg +5 -0
- data/app/assets/images/satis/flags/1x1/de.svg +5 -0
- data/app/assets/images/satis/flags/1x1/dg.svg +140 -0
- data/app/assets/images/satis/flags/1x1/dj.svg +13 -0
- data/app/assets/images/satis/flags/1x1/dk.svg +5 -0
- data/app/assets/images/satis/flags/1x1/dm.svg +152 -0
- data/app/assets/images/satis/flags/1x1/do.svg +6745 -0
- data/app/assets/images/satis/flags/1x1/dz.svg +5 -0
- data/app/assets/images/satis/flags/1x1/ea.svg +547 -0
- data/app/assets/images/satis/flags/1x1/ec.svg +138 -0
- data/app/assets/images/satis/flags/1x1/ee.svg +7 -0
- data/app/assets/images/satis/flags/1x1/eg.svg +38 -0
- data/app/assets/images/satis/flags/1x1/eh.svg +16 -0
- data/app/assets/images/satis/flags/1x1/er.svg +13 -0
- data/app/assets/images/satis/flags/1x1/es-ct.svg +4 -0
- data/app/assets/images/satis/flags/1x1/es-ga.svg +189 -0
- data/app/assets/images/satis/flags/1x1/es.svg +547 -0
- data/app/assets/images/satis/flags/1x1/et.svg +14 -0
- data/app/assets/images/satis/flags/1x1/eu.svg +28 -0
- data/app/assets/images/satis/flags/1x1/fi.svg +5 -0
- data/app/assets/images/satis/flags/1x1/fj.svg +125 -0
- data/app/assets/images/satis/flags/1x1/fk.svg +93 -0
- data/app/assets/images/satis/flags/1x1/fm.svg +11 -0
- data/app/assets/images/satis/flags/1x1/fo.svg +12 -0
- data/app/assets/images/satis/flags/1x1/fr.svg +7 -0
- data/app/assets/images/satis/flags/1x1/ga.svg +7 -0
- data/app/assets/images/satis/flags/1x1/gb-eng.svg +5 -0
- data/app/assets/images/satis/flags/1x1/gb-nir.svg +131 -0
- data/app/assets/images/satis/flags/1x1/gb-sct.svg +4 -0
- data/app/assets/images/satis/flags/1x1/gb-wls.svg +9 -0
- data/app/assets/images/satis/flags/1x1/gb.svg +7 -0
- data/app/assets/images/satis/flags/1x1/gd.svg +27 -0
- data/app/assets/images/satis/flags/1x1/ge.svg +6 -0
- data/app/assets/images/satis/flags/1x1/gf.svg +7 -0
- data/app/assets/images/satis/flags/1x1/gg.svg +9 -0
- data/app/assets/images/satis/flags/1x1/gh.svg +6 -0
- data/app/assets/images/satis/flags/1x1/gi.svg +32 -0
- data/app/assets/images/satis/flags/1x1/gl.svg +4 -0
- data/app/assets/images/satis/flags/1x1/gm.svg +9 -0
- data/app/assets/images/satis/flags/1x1/gn.svg +7 -0
- data/app/assets/images/satis/flags/1x1/gp.svg +7 -0
- data/app/assets/images/satis/flags/1x1/gq.svg +23 -0
- data/app/assets/images/satis/flags/1x1/gr.svg +16 -0
- data/app/assets/images/satis/flags/1x1/gs.svg +245 -0
- data/app/assets/images/satis/flags/1x1/gt.svg +204 -0
- data/app/assets/images/satis/flags/1x1/gu.svg +39 -0
- data/app/assets/images/satis/flags/1x1/gw.svg +15 -0
- data/app/assets/images/satis/flags/1x1/gy.svg +9 -0
- data/app/assets/images/satis/flags/1x1/hk.svg +30 -0
- data/app/assets/images/satis/flags/1x1/hm.svg +11 -0
- data/app/assets/images/satis/flags/1x1/hn.svg +18 -0
- data/app/assets/images/satis/flags/1x1/hr.svg +56 -0
- data/app/assets/images/satis/flags/1x1/ht.svg +116 -0
- data/app/assets/images/satis/flags/1x1/hu.svg +7 -0
- data/app/assets/images/satis/flags/1x1/ic.svg +7 -0
- data/app/assets/images/satis/flags/1x1/id.svg +6 -0
- data/app/assets/images/satis/flags/1x1/ie.svg +7 -0
- data/app/assets/images/satis/flags/1x1/il.svg +14 -0
- data/app/assets/images/satis/flags/1x1/im.svg +36 -0
- data/app/assets/images/satis/flags/1x1/in.svg +25 -0
- data/app/assets/images/satis/flags/1x1/io.svg +140 -0
- data/app/assets/images/satis/flags/1x1/iq.svg +10 -0
- data/app/assets/images/satis/flags/1x1/ir.svg +219 -0
- data/app/assets/images/satis/flags/1x1/is.svg +12 -0
- data/app/assets/images/satis/flags/1x1/it.svg +7 -0
- data/app/assets/images/satis/flags/1x1/je.svg +47 -0
- data/app/assets/images/satis/flags/1x1/jm.svg +8 -0
- data/app/assets/images/satis/flags/1x1/jo.svg +16 -0
- data/app/assets/images/satis/flags/1x1/jp.svg +11 -0
- data/app/assets/images/satis/flags/1x1/ke.svg +23 -0
- data/app/assets/images/satis/flags/1x1/kg.svg +15 -0
- data/app/assets/images/satis/flags/1x1/kh.svg +61 -0
- data/app/assets/images/satis/flags/1x1/ki.svg +36 -0
- data/app/assets/images/satis/flags/1x1/km.svg +16 -0
- data/app/assets/images/satis/flags/1x1/kn.svg +14 -0
- data/app/assets/images/satis/flags/1x1/kp.svg +15 -0
- data/app/assets/images/satis/flags/1x1/kr.svg +24 -0
- data/app/assets/images/satis/flags/1x1/kw.svg +13 -0
- data/app/assets/images/satis/flags/1x1/ky.svg +225 -0
- data/app/assets/images/satis/flags/1x1/kz.svg +23 -0
- data/app/assets/images/satis/flags/1x1/la.svg +12 -0
- data/app/assets/images/satis/flags/1x1/lb.svg +15 -0
- data/app/assets/images/satis/flags/1x1/lc.svg +8 -0
- data/app/assets/images/satis/flags/1x1/li.svg +43 -0
- data/app/assets/images/satis/flags/1x1/lk.svg +22 -0
- data/app/assets/images/satis/flags/1x1/lr.svg +14 -0
- data/app/assets/images/satis/flags/1x1/ls.svg +8 -0
- data/app/assets/images/satis/flags/1x1/lt.svg +7 -0
- data/app/assets/images/satis/flags/1x1/lu.svg +5 -0
- data/app/assets/images/satis/flags/1x1/lv.svg +6 -0
- data/app/assets/images/satis/flags/1x1/ly.svg +13 -0
- data/app/assets/images/satis/flags/1x1/ma.svg +4 -0
- data/app/assets/images/satis/flags/1x1/mc.svg +6 -0
- data/app/assets/images/satis/flags/1x1/md.svg +71 -0
- data/app/assets/images/satis/flags/1x1/me.svg +118 -0
- data/app/assets/images/satis/flags/1x1/mf.svg +7 -0
- data/app/assets/images/satis/flags/1x1/mg.svg +7 -0
- data/app/assets/images/satis/flags/1x1/mh.svg +8 -0
- data/app/assets/images/satis/flags/1x1/mk.svg +5 -0
- data/app/assets/images/satis/flags/1x1/ml.svg +7 -0
- data/app/assets/images/satis/flags/1x1/mm.svg +16 -0
- data/app/assets/images/satis/flags/1x1/mn.svg +13 -0
- data/app/assets/images/satis/flags/1x1/mo.svg +9 -0
- data/app/assets/images/satis/flags/1x1/mp.svg +86 -0
- data/app/assets/images/satis/flags/1x1/mq.svg +7 -0
- data/app/assets/images/satis/flags/1x1/mr.svg +6 -0
- data/app/assets/images/satis/flags/1x1/ms.svg +70 -0
- data/app/assets/images/satis/flags/1x1/mt.svg +50 -0
- data/app/assets/images/satis/flags/1x1/mu.svg +8 -0
- data/app/assets/images/satis/flags/1x1/mv.svg +6 -0
- data/app/assets/images/satis/flags/1x1/mw.svg +15 -0
- data/app/assets/images/satis/flags/1x1/mx.svg +378 -0
- data/app/assets/images/satis/flags/1x1/my.svg +11 -0
- data/app/assets/images/satis/flags/1x1/mz.svg +21 -0
- data/app/assets/images/satis/flags/1x1/na.svg +16 -0
- data/app/assets/images/satis/flags/1x1/nc.svg +14 -0
- data/app/assets/images/satis/flags/1x1/ne.svg +6 -0
- data/app/assets/images/satis/flags/1x1/nf.svg +11 -0
- data/app/assets/images/satis/flags/1x1/ng.svg +6 -0
- data/app/assets/images/satis/flags/1x1/ni.svg +129 -0
- data/app/assets/images/satis/flags/1x1/nl.svg +5 -0
- data/app/assets/images/satis/flags/1x1/no.svg +7 -0
- data/app/assets/images/satis/flags/1x1/np.svg +19 -0
- data/app/assets/images/satis/flags/1x1/nr.svg +12 -0
- data/app/assets/images/satis/flags/1x1/nu.svg +26 -0
- data/app/assets/images/satis/flags/1x1/nz.svg +42 -0
- data/app/assets/images/satis/flags/1x1/om.svg +115 -0
- data/app/assets/images/satis/flags/1x1/pa.svg +13 -0
- data/app/assets/images/satis/flags/1x1/pe.svg +244 -0
- data/app/assets/images/satis/flags/1x1/pf.svg +18 -0
- data/app/assets/images/satis/flags/1x1/pg.svg +16 -0
- data/app/assets/images/satis/flags/1x1/ph.svg +9 -0
- data/app/assets/images/satis/flags/1x1/pk.svg +15 -0
- data/app/assets/images/satis/flags/1x1/pl.svg +6 -0
- data/app/assets/images/satis/flags/1x1/pm.svg +7 -0
- data/app/assets/images/satis/flags/1x1/pn.svg +100 -0
- data/app/assets/images/satis/flags/1x1/pr.svg +13 -0
- data/app/assets/images/satis/flags/1x1/ps.svg +15 -0
- data/app/assets/images/satis/flags/1x1/pt.svg +57 -0
- data/app/assets/images/satis/flags/1x1/pw.svg +11 -0
- data/app/assets/images/satis/flags/1x1/py.svg +156 -0
- data/app/assets/images/satis/flags/1x1/qa.svg +4 -0
- data/app/assets/images/satis/flags/1x1/re.svg +7 -0
- data/app/assets/images/satis/flags/1x1/ro.svg +7 -0
- data/app/assets/images/satis/flags/1x1/rs.svg +296 -0
- data/app/assets/images/satis/flags/1x1/ru.svg +7 -0
- data/app/assets/images/satis/flags/1x1/rw.svg +13 -0
- data/app/assets/images/satis/flags/1x1/sa.svg +26 -0
- data/app/assets/images/satis/flags/1x1/sb.svg +13 -0
- data/app/assets/images/satis/flags/1x1/sc.svg +14 -0
- data/app/assets/images/satis/flags/1x1/sd.svg +13 -0
- data/app/assets/images/satis/flags/1x1/se.svg +5 -0
- data/app/assets/images/satis/flags/1x1/sg.svg +13 -0
- data/app/assets/images/satis/flags/1x1/sh.svg +81 -0
- data/app/assets/images/satis/flags/1x1/si.svg +18 -0
- data/app/assets/images/satis/flags/1x1/sj.svg +7 -0
- data/app/assets/images/satis/flags/1x1/sk.svg +9 -0
- data/app/assets/images/satis/flags/1x1/sl.svg +12 -0
- data/app/assets/images/satis/flags/1x1/sm.svg +89 -0
- data/app/assets/images/satis/flags/1x1/sn.svg +8 -0
- data/app/assets/images/satis/flags/1x1/so.svg +11 -0
- data/app/assets/images/satis/flags/1x1/sr.svg +6 -0
- data/app/assets/images/satis/flags/1x1/ss.svg +8 -0
- data/app/assets/images/satis/flags/1x1/st.svg +16 -0
- data/app/assets/images/satis/flags/1x1/sv.svg +594 -0
- data/app/assets/images/satis/flags/1x1/sx.svg +56 -0
- data/app/assets/images/satis/flags/1x1/sy.svg +6 -0
- data/app/assets/images/satis/flags/1x1/sz.svg +45 -0
- data/app/assets/images/satis/flags/1x1/ta.svg +81 -0
- data/app/assets/images/satis/flags/1x1/tc.svg +52 -0
- data/app/assets/images/satis/flags/1x1/td.svg +7 -0
- data/app/assets/images/satis/flags/1x1/tf.svg +15 -0
- data/app/assets/images/satis/flags/1x1/tg.svg +14 -0
- data/app/assets/images/satis/flags/1x1/th.svg +7 -0
- data/app/assets/images/satis/flags/1x1/tj.svg +26 -0
- data/app/assets/images/satis/flags/1x1/tk.svg +5 -0
- data/app/assets/images/satis/flags/1x1/tl.svg +13 -0
- data/app/assets/images/satis/flags/1x1/tm.svg +203 -0
- data/app/assets/images/satis/flags/1x1/tn.svg +13 -0
- data/app/assets/images/satis/flags/1x1/to.svg +10 -0
- data/app/assets/images/satis/flags/1x1/tr.svg +8 -0
- data/app/assets/images/satis/flags/1x1/tt.svg +7 -0
- data/app/assets/images/satis/flags/1x1/tv.svg +16 -0
- data/app/assets/images/satis/flags/1x1/tw.svg +32 -0
- data/app/assets/images/satis/flags/1x1/tz.svg +15 -0
- data/app/assets/images/satis/flags/1x1/ua.svg +6 -0
- data/app/assets/images/satis/flags/1x1/ug.svg +30 -0
- data/app/assets/images/satis/flags/1x1/um.svg +15 -0
- data/app/assets/images/satis/flags/1x1/un.svg +16 -0
- data/app/assets/images/satis/flags/1x1/us.svg +10 -0
- data/app/assets/images/satis/flags/1x1/uy.svg +28 -0
- data/app/assets/images/satis/flags/1x1/uz.svg +30 -0
- data/app/assets/images/satis/flags/1x1/va.svg +479 -0
- data/app/assets/images/satis/flags/1x1/vc.svg +8 -0
- data/app/assets/images/satis/flags/1x1/ve.svg +26 -0
- data/app/assets/images/satis/flags/1x1/vg.svg +127 -0
- data/app/assets/images/satis/flags/1x1/vi.svg +28 -0
- data/app/assets/images/satis/flags/1x1/vn.svg +11 -0
- data/app/assets/images/satis/flags/1x1/vu.svg +18 -0
- data/app/assets/images/satis/flags/1x1/wf.svg +7 -0
- data/app/assets/images/satis/flags/1x1/ws.svg +7 -0
- data/app/assets/images/satis/flags/1x1/xk.svg +16 -0
- data/app/assets/images/satis/flags/1x1/xx.svg +5 -0
- data/app/assets/images/satis/flags/1x1/ye.svg +7 -0
- data/app/assets/images/satis/flags/1x1/yt.svg +7 -0
- data/app/assets/images/satis/flags/1x1/za.svg +17 -0
- data/app/assets/images/satis/flags/1x1/zm.svg +27 -0
- data/app/assets/images/satis/flags/1x1/zw.svg +21 -0
- data/app/assets/images/satis/flags/4x3/ac.svg +76 -0
- data/app/assets/images/satis/flags/4x3/ad.svg +150 -0
- data/app/assets/images/satis/flags/4x3/ae.svg +6 -0
- data/app/assets/images/satis/flags/4x3/af.svg +81 -0
- data/app/assets/images/satis/flags/4x3/ag.svg +14 -0
- data/app/assets/images/satis/flags/4x3/ai.svg +763 -0
- data/app/assets/images/satis/flags/4x3/al.svg +5 -0
- data/app/assets/images/satis/flags/4x3/am.svg +5 -0
- data/app/assets/images/satis/flags/4x3/ao.svg +13 -0
- data/app/assets/images/satis/flags/4x3/aq.svg +5 -0
- data/app/assets/images/satis/flags/4x3/ar.svg +31 -0
- data/app/assets/images/satis/flags/4x3/as.svg +33 -0
- data/app/assets/images/satis/flags/4x3/at.svg +6 -0
- data/app/assets/images/satis/flags/4x3/au.svg +9 -0
- data/app/assets/images/satis/flags/4x3/aw.svg +186 -0
- data/app/assets/images/satis/flags/4x3/ax.svg +18 -0
- data/app/assets/images/satis/flags/4x3/az.svg +8 -0
- data/app/assets/images/satis/flags/4x3/ba.svg +12 -0
- data/app/assets/images/satis/flags/4x3/bb.svg +6 -0
- data/app/assets/images/satis/flags/4x3/bd.svg +4 -0
- data/app/assets/images/satis/flags/4x3/be.svg +7 -0
- data/app/assets/images/satis/flags/4x3/bf.svg +7 -0
- data/app/assets/images/satis/flags/4x3/bg.svg +7 -0
- data/app/assets/images/satis/flags/4x3/bh.svg +9 -0
- data/app/assets/images/satis/flags/4x3/bi.svg +15 -0
- data/app/assets/images/satis/flags/4x3/bj.svg +14 -0
- data/app/assets/images/satis/flags/4x3/bl.svg +7 -0
- data/app/assets/images/satis/flags/4x3/bm.svg +99 -0
- data/app/assets/images/satis/flags/4x3/bn.svg +36 -0
- data/app/assets/images/satis/flags/4x3/bo.svg +676 -0
- data/app/assets/images/satis/flags/4x3/bq.svg +5 -0
- data/app/assets/images/satis/flags/4x3/br.svg +45 -0
- data/app/assets/images/satis/flags/4x3/bs.svg +13 -0
- data/app/assets/images/satis/flags/4x3/bt.svg +89 -0
- data/app/assets/images/satis/flags/4x3/bv.svg +13 -0
- data/app/assets/images/satis/flags/4x3/bw.svg +7 -0
- data/app/assets/images/satis/flags/4x3/by.svg +20 -0
- data/app/assets/images/satis/flags/4x3/bz.svg +145 -0
- data/app/assets/images/satis/flags/4x3/ca.svg +4 -0
- data/app/assets/images/satis/flags/4x3/cc.svg +19 -0
- data/app/assets/images/satis/flags/4x3/cd.svg +5 -0
- data/app/assets/images/satis/flags/4x3/cf.svg +15 -0
- data/app/assets/images/satis/flags/4x3/cg.svg +12 -0
- data/app/assets/images/satis/flags/4x3/ch.svg +9 -0
- data/app/assets/images/satis/flags/4x3/ci.svg +7 -0
- data/app/assets/images/satis/flags/4x3/ck.svg +9 -0
- data/app/assets/images/satis/flags/4x3/cl.svg +13 -0
- data/app/assets/images/satis/flags/4x3/cm.svg +15 -0
- data/app/assets/images/satis/flags/4x3/cn.svg +11 -0
- data/app/assets/images/satis/flags/4x3/co.svg +7 -0
- data/app/assets/images/satis/flags/4x3/cp.svg +7 -0
- data/app/assets/images/satis/flags/4x3/cr.svg +7 -0
- data/app/assets/images/satis/flags/4x3/cu.svg +13 -0
- data/app/assets/images/satis/flags/4x3/cv.svg +13 -0
- data/app/assets/images/satis/flags/4x3/cw.svg +14 -0
- data/app/assets/images/satis/flags/4x3/cx.svg +15 -0
- data/app/assets/images/satis/flags/4x3/cy.svg +6 -0
- data/app/assets/images/satis/flags/4x3/cz.svg +5 -0
- data/app/assets/images/satis/flags/4x3/de.svg +5 -0
- data/app/assets/images/satis/flags/4x3/dg.svg +138 -0
- data/app/assets/images/satis/flags/4x3/dj.svg +13 -0
- data/app/assets/images/satis/flags/4x3/dk.svg +5 -0
- data/app/assets/images/satis/flags/4x3/dm.svg +152 -0
- data/app/assets/images/satis/flags/4x3/do.svg +6745 -0
- data/app/assets/images/satis/flags/4x3/dz.svg +5 -0
- data/app/assets/images/satis/flags/4x3/ea.svg +544 -0
- data/app/assets/images/satis/flags/4x3/ec.svg +138 -0
- data/app/assets/images/satis/flags/4x3/ee.svg +7 -0
- data/app/assets/images/satis/flags/4x3/eg.svg +38 -0
- data/app/assets/images/satis/flags/4x3/eh.svg +16 -0
- data/app/assets/images/satis/flags/4x3/er.svg +8 -0
- data/app/assets/images/satis/flags/4x3/es-ct.svg +4 -0
- data/app/assets/images/satis/flags/4x3/es-ga.svg +189 -0
- data/app/assets/images/satis/flags/4x3/es.svg +544 -0
- data/app/assets/images/satis/flags/4x3/et.svg +14 -0
- data/app/assets/images/satis/flags/4x3/eu.svg +28 -0
- data/app/assets/images/satis/flags/4x3/fi.svg +5 -0
- data/app/assets/images/satis/flags/4x3/fj.svg +122 -0
- data/app/assets/images/satis/flags/4x3/fk.svg +90 -0
- data/app/assets/images/satis/flags/4x3/fm.svg +11 -0
- data/app/assets/images/satis/flags/4x3/fo.svg +12 -0
- data/app/assets/images/satis/flags/4x3/fr.svg +7 -0
- data/app/assets/images/satis/flags/4x3/ga.svg +7 -0
- data/app/assets/images/satis/flags/4x3/gb-eng.svg +5 -0
- data/app/assets/images/satis/flags/4x3/gb-nir.svg +132 -0
- data/app/assets/images/satis/flags/4x3/gb-sct.svg +4 -0
- data/app/assets/images/satis/flags/4x3/gb-wls.svg +9 -0
- data/app/assets/images/satis/flags/4x3/gb.svg +7 -0
- data/app/assets/images/satis/flags/4x3/gd.svg +27 -0
- data/app/assets/images/satis/flags/4x3/ge.svg +6 -0
- data/app/assets/images/satis/flags/4x3/gf.svg +7 -0
- data/app/assets/images/satis/flags/4x3/gg.svg +9 -0
- data/app/assets/images/satis/flags/4x3/gh.svg +6 -0
- data/app/assets/images/satis/flags/4x3/gi.svg +32 -0
- data/app/assets/images/satis/flags/4x3/gl.svg +4 -0
- data/app/assets/images/satis/flags/4x3/gm.svg +14 -0
- data/app/assets/images/satis/flags/4x3/gn.svg +7 -0
- data/app/assets/images/satis/flags/4x3/gp.svg +7 -0
- data/app/assets/images/satis/flags/4x3/gq.svg +23 -0
- data/app/assets/images/satis/flags/4x3/gr.svg +16 -0
- data/app/assets/images/satis/flags/4x3/gs.svg +242 -0
- data/app/assets/images/satis/flags/4x3/gt.svg +204 -0
- data/app/assets/images/satis/flags/4x3/gu.svg +39 -0
- data/app/assets/images/satis/flags/4x3/gw.svg +13 -0
- data/app/assets/images/satis/flags/4x3/gy.svg +9 -0
- data/app/assets/images/satis/flags/4x3/hk.svg +30 -0
- data/app/assets/images/satis/flags/4x3/hm.svg +9 -0
- data/app/assets/images/satis/flags/4x3/hn.svg +18 -0
- data/app/assets/images/satis/flags/4x3/hr.svg +58 -0
- data/app/assets/images/satis/flags/4x3/ht.svg +116 -0
- data/app/assets/images/satis/flags/4x3/hu.svg +7 -0
- data/app/assets/images/satis/flags/4x3/ic.svg +7 -0
- data/app/assets/images/satis/flags/4x3/id.svg +6 -0
- data/app/assets/images/satis/flags/4x3/ie.svg +7 -0
- data/app/assets/images/satis/flags/4x3/il.svg +14 -0
- data/app/assets/images/satis/flags/4x3/im.svg +36 -0
- data/app/assets/images/satis/flags/4x3/in.svg +25 -0
- data/app/assets/images/satis/flags/4x3/io.svg +138 -0
- data/app/assets/images/satis/flags/4x3/iq.svg +10 -0
- data/app/assets/images/satis/flags/4x3/ir.svg +219 -0
- data/app/assets/images/satis/flags/4x3/is.svg +12 -0
- data/app/assets/images/satis/flags/4x3/it.svg +7 -0
- data/app/assets/images/satis/flags/4x3/je.svg +47 -0
- data/app/assets/images/satis/flags/4x3/jm.svg +8 -0
- data/app/assets/images/satis/flags/4x3/jo.svg +16 -0
- data/app/assets/images/satis/flags/4x3/jp.svg +11 -0
- data/app/assets/images/satis/flags/4x3/ke.svg +23 -0
- data/app/assets/images/satis/flags/4x3/kg.svg +15 -0
- data/app/assets/images/satis/flags/4x3/kh.svg +61 -0
- data/app/assets/images/satis/flags/4x3/ki.svg +36 -0
- data/app/assets/images/satis/flags/4x3/km.svg +16 -0
- data/app/assets/images/satis/flags/4x3/kn.svg +14 -0
- data/app/assets/images/satis/flags/4x3/kp.svg +15 -0
- data/app/assets/images/satis/flags/4x3/kr.svg +24 -0
- data/app/assets/images/satis/flags/4x3/kw.svg +13 -0
- data/app/assets/images/satis/flags/4x3/ky.svg +225 -0
- data/app/assets/images/satis/flags/4x3/kz.svg +23 -0
- data/app/assets/images/satis/flags/4x3/la.svg +12 -0
- data/app/assets/images/satis/flags/4x3/lb.svg +15 -0
- data/app/assets/images/satis/flags/4x3/lc.svg +8 -0
- data/app/assets/images/satis/flags/4x3/li.svg +43 -0
- data/app/assets/images/satis/flags/4x3/lk.svg +22 -0
- data/app/assets/images/satis/flags/4x3/lr.svg +14 -0
- data/app/assets/images/satis/flags/4x3/ls.svg +8 -0
- data/app/assets/images/satis/flags/4x3/lt.svg +7 -0
- data/app/assets/images/satis/flags/4x3/lu.svg +5 -0
- data/app/assets/images/satis/flags/4x3/lv.svg +6 -0
- data/app/assets/images/satis/flags/4x3/ly.svg +13 -0
- data/app/assets/images/satis/flags/4x3/ma.svg +4 -0
- data/app/assets/images/satis/flags/4x3/mc.svg +6 -0
- data/app/assets/images/satis/flags/4x3/md.svg +70 -0
- data/app/assets/images/satis/flags/4x3/me.svg +116 -0
- data/app/assets/images/satis/flags/4x3/mf.svg +7 -0
- data/app/assets/images/satis/flags/4x3/mg.svg +7 -0
- data/app/assets/images/satis/flags/4x3/mh.svg +7 -0
- data/app/assets/images/satis/flags/4x3/mk.svg +5 -0
- data/app/assets/images/satis/flags/4x3/ml.svg +7 -0
- data/app/assets/images/satis/flags/4x3/mm.svg +16 -0
- data/app/assets/images/satis/flags/4x3/mn.svg +13 -0
- data/app/assets/images/satis/flags/4x3/mo.svg +9 -0
- data/app/assets/images/satis/flags/4x3/mp.svg +86 -0
- data/app/assets/images/satis/flags/4x3/mq.svg +7 -0
- data/app/assets/images/satis/flags/4x3/mr.svg +6 -0
- data/app/assets/images/satis/flags/4x3/ms.svg +78 -0
- data/app/assets/images/satis/flags/4x3/mt.svg +49 -0
- data/app/assets/images/satis/flags/4x3/mu.svg +8 -0
- data/app/assets/images/satis/flags/4x3/mv.svg +6 -0
- data/app/assets/images/satis/flags/4x3/mw.svg +10 -0
- data/app/assets/images/satis/flags/4x3/mx.svg +382 -0
- data/app/assets/images/satis/flags/4x3/my.svg +11 -0
- data/app/assets/images/satis/flags/4x3/mz.svg +21 -0
- data/app/assets/images/satis/flags/4x3/na.svg +16 -0
- data/app/assets/images/satis/flags/4x3/nc.svg +14 -0
- data/app/assets/images/satis/flags/4x3/ne.svg +6 -0
- data/app/assets/images/satis/flags/4x3/nf.svg +9 -0
- data/app/assets/images/satis/flags/4x3/ng.svg +6 -0
- data/app/assets/images/satis/flags/4x3/ni.svg +129 -0
- data/app/assets/images/satis/flags/4x3/nl.svg +5 -0
- data/app/assets/images/satis/flags/4x3/no.svg +7 -0
- data/app/assets/images/satis/flags/4x3/np.svg +14 -0
- data/app/assets/images/satis/flags/4x3/nr.svg +12 -0
- data/app/assets/images/satis/flags/4x3/nu.svg +26 -0
- data/app/assets/images/satis/flags/4x3/nz.svg +42 -0
- data/app/assets/images/satis/flags/4x3/om.svg +115 -0
- data/app/assets/images/satis/flags/4x3/pa.svg +14 -0
- data/app/assets/images/satis/flags/4x3/pe.svg +244 -0
- data/app/assets/images/satis/flags/4x3/pf.svg +19 -0
- data/app/assets/images/satis/flags/4x3/pg.svg +9 -0
- data/app/assets/images/satis/flags/4x3/ph.svg +9 -0
- data/app/assets/images/satis/flags/4x3/pk.svg +15 -0
- data/app/assets/images/satis/flags/4x3/pl.svg +6 -0
- data/app/assets/images/satis/flags/4x3/pm.svg +7 -0
- data/app/assets/images/satis/flags/4x3/pn.svg +97 -0
- data/app/assets/images/satis/flags/4x3/pr.svg +13 -0
- data/app/assets/images/satis/flags/4x3/ps.svg +15 -0
- data/app/assets/images/satis/flags/4x3/pt.svg +57 -0
- data/app/assets/images/satis/flags/4x3/pw.svg +11 -0
- data/app/assets/images/satis/flags/4x3/py.svg +157 -0
- data/app/assets/images/satis/flags/4x3/qa.svg +4 -0
- data/app/assets/images/satis/flags/4x3/re.svg +7 -0
- data/app/assets/images/satis/flags/4x3/ro.svg +7 -0
- data/app/assets/images/satis/flags/4x3/rs.svg +292 -0
- data/app/assets/images/satis/flags/4x3/ru.svg +7 -0
- data/app/assets/images/satis/flags/4x3/rw.svg +13 -0
- data/app/assets/images/satis/flags/4x3/sa.svg +26 -0
- data/app/assets/images/satis/flags/4x3/sb.svg +13 -0
- data/app/assets/images/satis/flags/4x3/sc.svg +14 -0
- data/app/assets/images/satis/flags/4x3/sd.svg +13 -0
- data/app/assets/images/satis/flags/4x3/se.svg +5 -0
- data/app/assets/images/satis/flags/4x3/sg.svg +13 -0
- data/app/assets/images/satis/flags/4x3/sh.svg +76 -0
- data/app/assets/images/satis/flags/4x3/si.svg +18 -0
- data/app/assets/images/satis/flags/4x3/sj.svg +7 -0
- data/app/assets/images/satis/flags/4x3/sk.svg +9 -0
- data/app/assets/images/satis/flags/4x3/sl.svg +7 -0
- data/app/assets/images/satis/flags/4x3/sm.svg +91 -0
- data/app/assets/images/satis/flags/4x3/sn.svg +8 -0
- data/app/assets/images/satis/flags/4x3/so.svg +11 -0
- data/app/assets/images/satis/flags/4x3/sr.svg +6 -0
- data/app/assets/images/satis/flags/4x3/ss.svg +8 -0
- data/app/assets/images/satis/flags/4x3/st.svg +16 -0
- data/app/assets/images/satis/flags/4x3/sv.svg +594 -0
- data/app/assets/images/satis/flags/4x3/sx.svg +56 -0
- data/app/assets/images/satis/flags/4x3/sy.svg +6 -0
- data/app/assets/images/satis/flags/4x3/sz.svg +45 -0
- data/app/assets/images/satis/flags/4x3/ta.svg +76 -0
- data/app/assets/images/satis/flags/4x3/tc.svg +52 -0
- data/app/assets/images/satis/flags/4x3/td.svg +7 -0
- data/app/assets/images/satis/flags/4x3/tf.svg +15 -0
- data/app/assets/images/satis/flags/4x3/tg.svg +14 -0
- data/app/assets/images/satis/flags/4x3/th.svg +7 -0
- data/app/assets/images/satis/flags/4x3/tj.svg +22 -0
- data/app/assets/images/satis/flags/4x3/tk.svg +5 -0
- data/app/assets/images/satis/flags/4x3/tl.svg +13 -0
- data/app/assets/images/satis/flags/4x3/tm.svg +206 -0
- data/app/assets/images/satis/flags/4x3/tn.svg +13 -0
- data/app/assets/images/satis/flags/4x3/to.svg +10 -0
- data/app/assets/images/satis/flags/4x3/tr.svg +8 -0
- data/app/assets/images/satis/flags/4x3/tt.svg +5 -0
- data/app/assets/images/satis/flags/4x3/tv.svg +16 -0
- data/app/assets/images/satis/flags/4x3/tw.svg +34 -0
- data/app/assets/images/satis/flags/4x3/tz.svg +13 -0
- data/app/assets/images/satis/flags/4x3/ua.svg +6 -0
- data/app/assets/images/satis/flags/4x3/ug.svg +30 -0
- data/app/assets/images/satis/flags/4x3/um.svg +15 -0
- data/app/assets/images/satis/flags/4x3/un.svg +16 -0
- data/app/assets/images/satis/flags/4x3/us.svg +10 -0
- data/app/assets/images/satis/flags/4x3/uy.svg +28 -0
- data/app/assets/images/satis/flags/4x3/uz.svg +30 -0
- data/app/assets/images/satis/flags/4x3/va.svg +479 -0
- data/app/assets/images/satis/flags/4x3/vc.svg +8 -0
- data/app/assets/images/satis/flags/4x3/ve.svg +26 -0
- data/app/assets/images/satis/flags/4x3/vg.svg +127 -0
- data/app/assets/images/satis/flags/4x3/vi.svg +28 -0
- data/app/assets/images/satis/flags/4x3/vn.svg +11 -0
- data/app/assets/images/satis/flags/4x3/vu.svg +18 -0
- data/app/assets/images/satis/flags/4x3/wf.svg +7 -0
- data/app/assets/images/satis/flags/4x3/ws.svg +7 -0
- data/app/assets/images/satis/flags/4x3/xk.svg +16 -0
- data/app/assets/images/satis/flags/4x3/xx.svg +5 -0
- data/app/assets/images/satis/flags/4x3/ye.svg +7 -0
- data/app/assets/images/satis/flags/4x3/yt.svg +7 -0
- data/app/assets/images/satis/flags/4x3/za.svg +17 -0
- data/app/assets/images/satis/flags/4x3/zm.svg +27 -0
- data/app/assets/images/satis/flags/4x3/zw.svg +21 -0
- data/app/assets/images/satis/intl-tel-input/flags.png +0 -0
- data/app/assets/images/satis/intl-tel-input/flags@2x.png +0 -0
- data/app/assets/images/satis/leaflet/layers-2x.png +0 -0
- data/app/assets/images/satis/leaflet/layers.png +0 -0
- data/app/assets/images/satis/leaflet/marker-icon-2x.png +0 -0
- data/app/assets/images/satis/leaflet/marker-icon.png +0 -0
- data/app/assets/images/satis/leaflet/marker-shadow.png +0 -0
- data/app/assets/stylesheets/satis/application.css +68 -15
- data/app/assets/stylesheets/satis/components/diffy.css +74 -0
- data/app/assets/stylesheets/satis/components/flag-icons.min.css +1 -0
- data/app/assets/stylesheets/satis/components/form.css +158 -0
- data/app/assets/stylesheets/satis/components/intlTelInput.min.css +1 -0
- data/app/assets/stylesheets/satis/components/leaflet.css +661 -0
- data/app/assets/stylesheets/satis/components/phone-number.css +30 -0
- data/app/assets/stylesheets/satis/components/tippyjs.css +8 -0
- data/app/assets/stylesheets/satis/components/trix.css +412 -0
- data/app/components/satis/appearance_switcher/{component.scss → component.css} +1 -1
- data/app/components/satis/appearance_switcher/component.html.slim +1 -1
- data/app/components/satis/appearance_switcher/component_controller.js +3 -4
- data/app/components/satis/application_component.rb +8 -42
- data/app/components/satis/avatar/component.rb +3 -1
- data/app/components/satis/calendar_month/component.html.slim +522 -0
- data/app/components/satis/calendar_month/component.rb +9 -0
- data/app/components/satis/card/component.css +19 -0
- data/app/components/satis/card/component.html.slim +8 -32
- data/app/components/satis/card/component.rb +35 -8
- data/app/components/satis/date_time_picker/component.rb +10 -10
- data/app/components/satis/date_time_picker/component_controller.js +61 -45
- data/app/components/satis/dialog/component.css +0 -0
- data/app/components/satis/dialog/component.html.slim +26 -0
- data/app/components/satis/dialog/component.rb +22 -0
- data/app/components/satis/dialog/component_controller.js +16 -0
- data/app/components/satis/dropdown/{component.scss → component.css} +5 -1
- data/app/components/satis/dropdown/component.html.slim +28 -14
- data/app/components/satis/dropdown/component.rb +44 -7
- data/app/components/satis/dropdown/component_controller.js +568 -172
- data/app/components/satis/editor/component.css +3 -0
- data/app/components/satis/editor/component.html.slim +5 -0
- data/app/components/satis/editor/component.rb +45 -0
- data/app/components/satis/editor/component_controller.js +90 -0
- data/app/components/satis/flash_messages/{component.scss → component.css} +5 -4
- data/app/components/satis/info_item/component.html.slim +2 -2
- data/app/components/satis/info_item/component.rb +10 -2
- data/app/components/satis/input/component_controller.js +20 -0
- data/app/components/satis/input_array/component.css +3 -0
- data/app/components/satis/input_array/component.html.slim +33 -0
- data/app/components/satis/input_array/component.rb +18 -0
- data/app/components/satis/input_array/component_controller.js +54 -0
- data/app/components/satis/map/{component.scss → component.css} +1 -1
- data/app/components/satis/map/component.html.slim +1 -1
- data/app/components/satis/map/component_controller.js +14 -12
- data/app/components/satis/menu/component.html.slim +4 -5
- data/app/components/satis/menu/component.rb +8 -3
- data/app/components/satis/menu/component_controller.js +139 -17
- data/app/components/satis/menu_item/component.html.slim +13 -8
- data/app/components/satis/menu_item/component.rb +1 -0
- data/app/components/satis/page/component.html.slim +30 -12
- data/app/components/satis/page/component_controller.js +2 -2
- data/app/components/satis/progress_bar/component.html.slim +4 -0
- data/app/components/satis/progress_bar/component.rb +57 -0
- data/app/components/satis/sidebar_menu/component.css +0 -0
- data/app/components/satis/sidebar_menu/component.html.slim +2 -3
- data/app/components/satis/sidebar_menu/component_controller.js +3 -4
- data/app/components/satis/sidebar_menu/mobile/component.html.slim +1 -2
- data/app/components/satis/sidebar_menu_item/component.html.slim +8 -5
- data/app/components/satis/sidebar_menu_item/component.rb +1 -0
- data/app/components/satis/sidebar_menu_item/component_controller.js +13 -4
- data/app/components/satis/switch/component_controller.js +3 -4
- data/app/components/satis/tab/component.rb +41 -17
- data/app/components/satis/tabs/{component.scss → component.css} +17 -1
- data/app/components/satis/tabs/component.html.slim +23 -9
- data/app/components/satis/tabs/component.rb +9 -2
- data/app/components/satis/tabs/component_controller.js +34 -19
- data/app/controllers/satis/dialogs_controller.rb +20 -0
- data/app/controllers/satis/documentation/avatars_controller.rb +7 -0
- data/app/controllers/satis/documentation/cards_controller.rb +6 -0
- data/app/controllers/satis/documentation/editors_controller.rb +12 -0
- data/app/controllers/satis/documentation/forms_controller.rb +14 -0
- data/app/controllers/satis/documentation/tabs_controller.rb +7 -0
- data/app/controllers/satis/documentation_controller.rb +6 -0
- data/app/controllers/satis/user_data_controller.rb +5 -4
- data/app/helpers/satis/showcases/avatars_helper.rb +4 -0
- data/app/javascript/satis/application.js +8 -0
- data/app/javascript/satis/controllers/application.js +12 -0
- data/app/javascript/satis/controllers/application_controller.js +71 -0
- data/app/javascript/satis/controllers/fields_for_controller.js +74 -0
- data/app/javascript/satis/controllers/file_controller.js +26 -0
- data/app/javascript/satis/controllers/form_controller.js +77 -0
- data/app/javascript/satis/controllers/index.js +70 -0
- data/app/javascript/satis/controllers/link_controller.js +34 -0
- data/app/javascript/satis/controllers/phone_number_controller.js +30 -0
- data/app/javascript/satis/elements/copyable_element.js +57 -0
- data/app/javascript/satis/utility_controllers/draggable_controller.js +144 -0
- data/app/javascript/satis/utility_controllers/help_controller.js +18 -0
- data/app/javascript/satis/utility_controllers/index.js +14 -0
- data/app/javascript/satis/utility_controllers/show_hide_controller.js +71 -0
- data/app/javascript/satis/utility_controllers/toggle_controller.js +100 -0
- data/app/javascript/satis/utils.js +41 -0
- data/app/models/satis/user_data.rb +3 -1
- data/app/views/satis/documentation/avatars/index.html.slim +39 -0
- data/app/views/satis/documentation/cards/index.html.slim +72 -0
- data/app/views/satis/documentation/editors/index.html.slim +44 -0
- data/app/views/satis/documentation/forms/index.html.slim +109 -0
- data/app/views/satis/documentation/forms/select.html.slim +7 -0
- data/app/views/satis/documentation/index.html.slim +6 -0
- data/app/views/satis/documentation/tabs/index.html.slim +31 -0
- data/app/views/shared/_fields_for.html.slim +3 -3
- data/bin/importmap +4 -0
- data/bin/rails +14 -0
- data/config/importmap.rb +49 -0
- data/config/locales/en.yml +9 -0
- data/config/routes.rb +14 -0
- data/db/migrate/20221212083110_change_satis_user_data.rb +2 -2
- data/db/migrate/20230918115448_add_type_to_satis_user_data.rb +10 -0
- data/lib/generators/satis/install_generator.rb +22 -0
- data/lib/generators/satis/tailwind_config_generator.rb +24 -0
- data/lib/generators/satis/templates/config/initializers/satis.rb +13 -0
- data/lib/satis/concerns/contextual_translations.rb +58 -0
- data/lib/satis/configuration.rb +51 -30
- data/lib/satis/engine.rb +25 -10
- data/lib/satis/forms/builder.rb +130 -87
- data/lib/satis/forms/concerns/buttons.rb +2 -2
- data/lib/satis/forms/concerns/file.rb +1 -1
- data/lib/satis/helpers/container.rb +9 -7
- data/lib/satis/menus/item.rb +1 -1
- data/lib/satis/menus/menu.rb +3 -2
- data/lib/satis/version.rb +1 -1
- data/lib/satis.rb +2 -10
- data/lib/tasks/satis_tasks.rake +13 -4
- data/package.json +9 -0
- data/satis.gemspec +39 -0
- data/vendor/javascript/@codemirror--autocomplete.js +2 -0
- data/vendor/javascript/@codemirror--commands.js +2 -0
- data/vendor/javascript/@codemirror--lang-css.js +2 -0
- data/vendor/javascript/@codemirror--lang-html.js +2 -0
- data/vendor/javascript/@codemirror--lang-javascript.js +2 -0
- data/vendor/javascript/@codemirror--lang-json.js +2 -0
- data/vendor/javascript/@codemirror--lang-liquid.js +2 -0
- data/vendor/javascript/@codemirror--lang-markdown.js +2 -0
- data/vendor/javascript/@codemirror--lang-yaml.js +2 -0
- data/vendor/javascript/@codemirror--language.js +2 -0
- data/vendor/javascript/@codemirror--lint.js +2 -0
- data/vendor/javascript/@codemirror--search.js +2 -0
- data/vendor/javascript/@codemirror--state.js +2 -0
- data/vendor/javascript/@codemirror--view.js +2 -0
- data/vendor/javascript/@lezer--common.js +2 -0
- data/vendor/javascript/@lezer--css.js +2 -0
- data/vendor/javascript/@lezer--highlight.js +2 -0
- data/vendor/javascript/@lezer--html.js +2 -0
- data/vendor/javascript/@lezer--javascript.js +2 -0
- data/vendor/javascript/@lezer--json.js +2 -0
- data/vendor/javascript/@lezer--lr.js +2 -0
- data/vendor/javascript/@lezer--markdown.js +2 -0
- data/vendor/javascript/@lezer--yaml.js +2 -0
- data/vendor/javascript/@rails--actiontext.js +2 -0
- data/vendor/javascript/codemirror.js +2 -0
- data/vendor/javascript/crelt.js +2 -0
- data/vendor/javascript/data.min.js +7 -0
- data/vendor/javascript/intl-tel-input-utils.js +520 -0
- data/vendor/javascript/intl-tel-input.js +1782 -0
- data/vendor/javascript/leaflet.js +6 -0
- data/vendor/javascript/popper.js.js +1805 -0
- data/vendor/javascript/sortablejs.js +134 -0
- data/vendor/javascript/style-mod.js +2 -0
- data/vendor/javascript/tippy.js.js +2 -0
- data/vendor/javascript/trix.js +2 -0
- data/vendor/javascript/w3c-keyname.js +2 -0
- data/yarn.lock +821 -0
- metadata +755 -20
- data/app/components/satis/card/component.md +0 -14
- data/app/components/satis/card/component.scss +0 -15
- /data/app/{components/satis/sidebar_menu/component.scss → assets/images/satis/.keep} +0 -0
- /data/app/components/satis/breadcrumbs/{component.scss → component.css} +0 -0
- /data/app/components/satis/date_time_picker/{component.scss → component.css} +0 -0
- /data/app/components/satis/input/{component.scss → component.css} +0 -0
- /data/app/components/satis/menu/{component.scss → component.css} +0 -0
- /data/app/components/satis/sidebar_menu_item/{component.scss → component.css} +0 -0
@@ -0,0 +1,71 @@
|
|
1
|
+
import ApplicationController from "satis/controllers/application_controller"
|
2
|
+
|
3
|
+
/*
|
4
|
+
Usage:
|
5
|
+
|
6
|
+
<div data-controller="show-hide">
|
7
|
+
<input type="checkbox" data-show-hide-target="input" />
|
8
|
+
<div data-show-hide-showable="true" data-show-hide-value="true">
|
9
|
+
This is shown when the show-hide.input value equates to true, it is hidden otherwise
|
10
|
+
</div>
|
11
|
+
<div data-show-hide-hidable="true" data-show-hide-value="true">
|
12
|
+
This is hidden when the show-hide.input value equates to true, it is shown otherwise
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
*/
|
16
|
+
export default class extends ApplicationController {
|
17
|
+
static targets = ["showable", "hidable", "input"]
|
18
|
+
|
19
|
+
connect() {
|
20
|
+
this.boundUpdate = this.update.bind(this)
|
21
|
+
|
22
|
+
this.watchOn = "input"
|
23
|
+
if (this.inputTarget.type == "hidden") {
|
24
|
+
this.watchOn = "change"
|
25
|
+
}
|
26
|
+
|
27
|
+
this.inputTarget.addEventListener(this.watchOn, this.boundUpdate)
|
28
|
+
|
29
|
+
this.update()
|
30
|
+
}
|
31
|
+
|
32
|
+
disconnect() {
|
33
|
+
this.inputTarget.removeEventListener(this.watchOn, this.boundUpdate)
|
34
|
+
}
|
35
|
+
|
36
|
+
update() {
|
37
|
+
this.toggle(this.currentValue)
|
38
|
+
}
|
39
|
+
|
40
|
+
toggle(value) {
|
41
|
+
if (this.hasShowableTarget) {
|
42
|
+
this.showableTargets.forEach((element) => {
|
43
|
+
if (element.getAttribute("data-show-hide-value") == value) {
|
44
|
+
element.classList.remove("hidden")
|
45
|
+
} else {
|
46
|
+
element.classList.add("hidden")
|
47
|
+
}
|
48
|
+
})
|
49
|
+
}
|
50
|
+
if (this.hasHidableTarget) {
|
51
|
+
this.hidableTargets.forEach((element) => {
|
52
|
+
if (element.getAttribute("data-show-hide-value") == value) {
|
53
|
+
element.classList.add("hidden")
|
54
|
+
} else {
|
55
|
+
element.classList.remove("hidden")
|
56
|
+
}
|
57
|
+
})
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
get currentValue() {
|
62
|
+
if (this.inputTarget.type == "checkbox") {
|
63
|
+
return this.inputTarget.checked ? "true" : "false"
|
64
|
+
} else if (this.inputTarget.tagName == "SELECT" && this.data.get("attr")) {
|
65
|
+
let option = this.inputTarget.options[this.inputTarget.selectedIndex]
|
66
|
+
return option.getAttribute(this.data.get("attr"))
|
67
|
+
} else {
|
68
|
+
return this.inputTarget.value
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
@@ -0,0 +1,100 @@
|
|
1
|
+
import ApplicationController from "satis/controllers/application_controller"
|
2
|
+
|
3
|
+
/*
|
4
|
+
Usage:
|
5
|
+
|
6
|
+
<div data-controller="toggle" data-toggle-attr='data-serialized'>
|
7
|
+
<select data-toggle-target='input'>
|
8
|
+
<option value="PN1" data-serialized="N">PN1</option>
|
9
|
+
<option value="PN2" data-serialized="Y">PN2</option>
|
10
|
+
</select>
|
11
|
+
<div data-toggle-target="insertion"></div>
|
12
|
+
<template data-toggle-target="toggleable" data-toggle-value='N'>
|
13
|
+
<input name="quantity">
|
14
|
+
</template>
|
15
|
+
<template data-toggle-target="toggleable" data-toggle-value='Y'>
|
16
|
+
<input name="serial_number">
|
17
|
+
</template>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
Usage with slim and checkbox:
|
21
|
+
|
22
|
+
.site-company-wrapper data-controller='toggle'
|
23
|
+
= address_form.input :company, input_html: { 'data-toggle-target': 'input' }
|
24
|
+
div data-toggle-target='insertion'
|
25
|
+
template data-toggle-target='toggleable' data-toggle-value='true'
|
26
|
+
= address_form.input :company_name
|
27
|
+
*/
|
28
|
+
export default class extends ApplicationController {
|
29
|
+
static targets = ["toggleable", "insertion", "input"]
|
30
|
+
|
31
|
+
connect() {
|
32
|
+
this.boundUpdate = this.update.bind(this)
|
33
|
+
this.inputTarget.addEventListener("change", this.boundUpdate)
|
34
|
+
this.update()
|
35
|
+
}
|
36
|
+
|
37
|
+
disconnect() {
|
38
|
+
this.inputTarget.removeEventListener("change", this.boundUpdate)
|
39
|
+
}
|
40
|
+
|
41
|
+
update(event) {
|
42
|
+
/* FIXME: There should be a more cleaner way of doing this?
|
43
|
+
* Make sure that the toggle happens after the event bubble so any listeners are able to
|
44
|
+
* process before we overwrite the template nodes that are possibly updated and reinsert new nodes.
|
45
|
+
*/
|
46
|
+
setTimeout(()=>{
|
47
|
+
this.toggle(this.currentValue)
|
48
|
+
})
|
49
|
+
}
|
50
|
+
|
51
|
+
toggle(value) {
|
52
|
+
// Update template nodes before we swap
|
53
|
+
this.toggleableTargets.forEach((target) => {
|
54
|
+
target.content.childNodes.forEach(child => {
|
55
|
+
let targetNodeId = child.getAttribute("data-toggleable-node-id")
|
56
|
+
if (!targetNodeId) return true;
|
57
|
+
|
58
|
+
this.insertionTarget.childNodes.forEach(iNode => {
|
59
|
+
if (iNode.getAttribute("data-toggleable-node-id") == targetNodeId) {
|
60
|
+
child.outerHTML = iNode.outerHTML
|
61
|
+
iNode.remove()
|
62
|
+
}
|
63
|
+
})
|
64
|
+
})
|
65
|
+
})
|
66
|
+
|
67
|
+
// Clear the insertion target
|
68
|
+
this.insertionTarget.innerHTML = ""
|
69
|
+
|
70
|
+
// Reinsert elements
|
71
|
+
this.toggleableTargets.forEach((element) => {
|
72
|
+
if (element.getAttribute("data-toggle-value") == value || (element.getAttribute("data-toggle-not-value") != null && element.getAttribute("data-toggle-not-value") != value)) {
|
73
|
+
element.content.childNodes.forEach(node => this.setUniqueId(node))
|
74
|
+
|
75
|
+
let toggleContent = document.importNode(element.content, true)
|
76
|
+
toggleContent.childNodes.forEach((child) => {
|
77
|
+
this.insertionTarget.insertAdjacentHTML("beforeend", child.outerHTML)
|
78
|
+
})
|
79
|
+
}
|
80
|
+
})
|
81
|
+
}
|
82
|
+
|
83
|
+
get currentValue() {
|
84
|
+
if (this.inputTarget.type == "checkbox") {
|
85
|
+
return this.inputTarget.checked ? "true" : "false"
|
86
|
+
} else if (this.inputTarget.tagName == "SELECT" && this.data.get("attr")) {
|
87
|
+
let option = this.inputTarget.options[this.inputTarget.selectedIndex]
|
88
|
+
return option?.getAttribute(this.data.get("attr"))
|
89
|
+
} else {
|
90
|
+
return this.inputTarget.value
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
setUniqueId(node) {
|
95
|
+
if(node.getAttribute("data-toggleable-node-id")) return;
|
96
|
+
const dateString = Date.now().toString(36);
|
97
|
+
const randomness = Math.random().toString(36).substring(2);
|
98
|
+
node.setAttribute("data-toggleable-node-id", dateString + randomness)
|
99
|
+
}
|
100
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
const debounce = (func, wait = 500) => {
|
2
|
+
let timeout
|
3
|
+
return function (...args) {
|
4
|
+
clearTimeout(timeout)
|
5
|
+
timeout = setTimeout(() => {
|
6
|
+
func.apply(this, args)
|
7
|
+
}, wait)
|
8
|
+
}
|
9
|
+
}
|
10
|
+
|
11
|
+
const getInitialTheme = () => {
|
12
|
+
if (typeof window !== "undefined" && window.localStorage) {
|
13
|
+
const storedPrefs = window.localStorage.getItem("color-theme")
|
14
|
+
if (typeof storedPrefs === "string") {
|
15
|
+
return storedPrefs
|
16
|
+
}
|
17
|
+
|
18
|
+
const userMedia = window.matchMedia("(prefers-color-scheme: dark)")
|
19
|
+
if (userMedia.matches) {
|
20
|
+
return "dark"
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
// If you want to use dark theme as the default, return 'dark' instead
|
25
|
+
return "light"
|
26
|
+
}
|
27
|
+
|
28
|
+
const popperSameWidth = {
|
29
|
+
name: "sameWidth",
|
30
|
+
enabled: true,
|
31
|
+
phase: "beforeWrite",
|
32
|
+
requires: ["computeStyles"],
|
33
|
+
fn: ({ state }) => {
|
34
|
+
state.styles.popper.width = `${state.rects.reference.width}px`
|
35
|
+
},
|
36
|
+
effect: ({ state }) => {
|
37
|
+
state.elements.popper.style.width = `${state.elements.reference.offsetWidth}px`
|
38
|
+
},
|
39
|
+
}
|
40
|
+
|
41
|
+
export { debounce, getInitialTheme, popperSameWidth }
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module Satis
|
2
2
|
class UserData < ApplicationRecord
|
3
|
+
# include ArDocStore::Model
|
4
|
+
|
3
5
|
belongs_to :user, optional: true
|
4
6
|
|
5
|
-
validates :key, presence: true, uniqueness: { scope: :user_id, allow_nil: true }
|
7
|
+
validates :key, presence: true, uniqueness: { scope: [:user_id, :type], allow_nil: true }
|
6
8
|
|
7
9
|
def self.keyed(key)
|
8
10
|
find_or_create_by(key: key)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
.grid.grid-cols-4.gap-4
|
2
|
+
.col-span-4
|
3
|
+
h1 Avatars
|
4
|
+
p Allow you to display avatars
|
5
|
+
|
6
|
+
.col-span-4
|
7
|
+
= sts.card(:simplest_case, title: t('.simplest_case')) do |card|
|
8
|
+
p
|
9
|
+
| Avatars will by default show the first two capitalized letters of a name.
|
10
|
+
pre
|
11
|
+
| = sts.avatar name: 'User Name'
|
12
|
+
|
13
|
+
p = sts.avatar name: 'User Name'
|
14
|
+
pre
|
15
|
+
| = sts.avatar name: 'User Test Name'
|
16
|
+
|
17
|
+
p = sts.avatar name: 'User Test Name'
|
18
|
+
|
19
|
+
|
20
|
+
.col-span-4
|
21
|
+
= sts.card(:gravatar, title: t('.gravatar')) do |card|
|
22
|
+
p
|
23
|
+
| Avatars will use gravatar when you provide an email
|
24
|
+
p
|
25
|
+
pre
|
26
|
+
| = sts.avatar name: 'User Name', email: 'test1@example.com'
|
27
|
+
|
28
|
+
p = sts.avatar name: 'User Name', email: 'test1@example.com'
|
29
|
+
|
30
|
+
.col-span-4
|
31
|
+
= sts.card(:active_storage, title: t('.active_storage')) do |card|
|
32
|
+
p
|
33
|
+
| Avatars can also use active-storage attachments.
|
34
|
+
| In the below sample the user object has one-attached avatar
|
35
|
+
p
|
36
|
+
pre
|
37
|
+
| = sts.avatar name: 'User Name', photo: user.avatar
|
38
|
+
|
39
|
+
p = sts.avatar name: 'User Name', email: 'test1@example.com'
|
@@ -0,0 +1,72 @@
|
|
1
|
+
h1 Cards
|
2
|
+
|
3
|
+
p A simple card
|
4
|
+
|
5
|
+
= sts.editor do
|
6
|
+
| = sts.card :your_card, title: '' do |c|
|
7
|
+
| Content here
|
8
|
+
br
|
9
|
+
= sts.card :your_card, title: '' do |c|
|
10
|
+
| Content here
|
11
|
+
|
12
|
+
|
13
|
+
p A simple card
|
14
|
+
|
15
|
+
= sts.editor do
|
16
|
+
| = sts.card :your_card_with_title, title: 'Your profile' do |c|
|
17
|
+
| Content here
|
18
|
+
|
19
|
+
= sts.card :your_card_with_title, title: 'Your profile' do |c|
|
20
|
+
| Content here
|
21
|
+
|
22
|
+
p You can add a description to the card
|
23
|
+
|
24
|
+
pre
|
25
|
+
| = sts.card :your_card_with_title_and_description, title: 'Your profile', description: 'Edit your profile information' do |c|
|
26
|
+
| Content here
|
27
|
+
|
28
|
+
= sts.card :your_card_with_title_and_description, title: 'Your profile', description: 'Edit your profile information' do |c|
|
29
|
+
| Content here
|
30
|
+
|
31
|
+
p You can add buttons for actions on the card
|
32
|
+
|
33
|
+
pre
|
34
|
+
| = sts.card :your_card_with_actions, title: 'Your profile', description: 'Edit your profile information' do |c|
|
35
|
+
- c.with_action
|
36
|
+
button.button Save
|
37
|
+
| Content here
|
38
|
+
|
39
|
+
= sts.card :your_card_with_actions, title: 'Your profile', description: 'Edit your profile information' do |c|
|
40
|
+
- c.with_action
|
41
|
+
button.button Save
|
42
|
+
| Content here
|
43
|
+
|
44
|
+
p An icon can be added before the title
|
45
|
+
|
46
|
+
pre
|
47
|
+
| = sts.card :your_card_with_icon, icon: 'fa fa-truck', title: 'Your profile' do |c|
|
48
|
+
- c.with_action
|
49
|
+
button.button Save
|
50
|
+
| Content here
|
51
|
+
|
52
|
+
= sts.card :your_card_with_icon, icon: 'fa fa-truck', title: 'Your profile' do |c|
|
53
|
+
- c.with_action
|
54
|
+
button.button Save
|
55
|
+
| Content here
|
56
|
+
|
57
|
+
p Cards can have tabs
|
58
|
+
|
59
|
+
pre
|
60
|
+
| = sts.card :your_card_with_tabs, title: 'Your profile' do |c|
|
61
|
+
- c.with_tab :first
|
62
|
+
| Tabs don't have padding by default
|
63
|
+
- c.with_tab :second, padding: true
|
64
|
+
| But padding can be added by adding
|
65
|
+
pre padding: true
|
66
|
+
|
67
|
+
= sts.card :your_card_with_tabs, title: 'Your profile' do |c|
|
68
|
+
- c.with_tab :first
|
69
|
+
| Tabs don't have padding by default
|
70
|
+
- c.with_tab :second, padding: true
|
71
|
+
| But padding can be added by adding
|
72
|
+
pre padding: true
|
@@ -0,0 +1,44 @@
|
|
1
|
+
h1 Editors
|
2
|
+
|
3
|
+
| Editors can be used with or without a form
|
4
|
+
|
5
|
+
p A simple editor (not readonly)
|
6
|
+
|
7
|
+
= sts.editor readonly: false do
|
8
|
+
| = sts.editor readonly: false do
|
9
|
+
| function(event) {
|
10
|
+
console.log(event.target)
|
11
|
+
}
|
12
|
+
br
|
13
|
+
= sts.editor readonly: false do
|
14
|
+
| function(event) {
|
15
|
+
console.log(event.target)
|
16
|
+
}
|
17
|
+
|
18
|
+
p A simple readonly editor. You shouldn't be able to type in the editor.
|
19
|
+
An editor is always read-only if you pass a block, unless you're using a form.
|
20
|
+
|
21
|
+
= sts.editor do
|
22
|
+
| = sts.editor do
|
23
|
+
| function(event) {
|
24
|
+
console.log(event.target)
|
25
|
+
}
|
26
|
+
br
|
27
|
+
= sts.editor do
|
28
|
+
| function(event) {
|
29
|
+
console.log(event.target)
|
30
|
+
}
|
31
|
+
|
32
|
+
|
33
|
+
h2 Form based editors
|
34
|
+
|
35
|
+
= sts.editor do
|
36
|
+
| = sts.form_for(@document, url: documentation_index_path) do |f|
|
37
|
+
.grid.grid-cols-12.gap-4
|
38
|
+
.col-span-12
|
39
|
+
= f.editor :code
|
40
|
+
|
41
|
+
= sts.form_for(@document, url: documentation_index_path) do |f|
|
42
|
+
.grid.grid-cols-12.gap-4
|
43
|
+
.col-span-12
|
44
|
+
= f.editor :code
|
@@ -0,0 +1,109 @@
|
|
1
|
+
h1 Forms
|
2
|
+
p Similarly to for example simple forms Satis allows for rich forms
|
3
|
+
|
4
|
+
pre
|
5
|
+
| = sts.form_for(@user, url: documentation_index_path) do |f|
|
6
|
+
.grid.grid-cols-12.gap-4
|
7
|
+
.col-span-12
|
8
|
+
= f.input :name
|
9
|
+
.col-span-12
|
10
|
+
= f.input :name, collection: ['test', 'test2'], as: :dropdown
|
11
|
+
.col-span-12
|
12
|
+
= f.input :created_at
|
13
|
+
.col-span-12
|
14
|
+
= f.submit
|
15
|
+
|
16
|
+
= sts.form_for(@user, url: documentation_index_path) do |f|
|
17
|
+
.grid.grid-cols-12.gap-4
|
18
|
+
.col-span-12
|
19
|
+
= f.input :name
|
20
|
+
.col-span-12
|
21
|
+
= f.input :name, collection: ['test', 'test2'], as: :dropdown
|
22
|
+
.col-span-12
|
23
|
+
= f.input :created_at
|
24
|
+
.col-span-12
|
25
|
+
= f.submit
|
26
|
+
|
27
|
+
h1 Dropdowns
|
28
|
+
|
29
|
+
h2 Dropdowns can come from local-view data
|
30
|
+
|
31
|
+
pre
|
32
|
+
| = sts.form_for(@user, url: documentation_index_path) do |f|
|
33
|
+
.grid.grid-cols-12.gap-4
|
34
|
+
.col-span-12
|
35
|
+
= f.input :name, collection: ['test', 'test2'], as: :dropdown
|
36
|
+
|
37
|
+
= sts.form_for(@user, url: documentation_index_path) do |f|
|
38
|
+
.grid.grid-cols-12.gap-4
|
39
|
+
.col-span-12
|
40
|
+
= f.input :name, collection: ['test', 'test2'], as: :dropdown, input_html:{ id: "dropdown_local" }
|
41
|
+
|
42
|
+
h2 Dropdowns can come from remote data
|
43
|
+
|
44
|
+
p
|
45
|
+
pre
|
46
|
+
| = sts.form_for(@user, url: documentation_index_path) do |f|
|
47
|
+
.grid.grid-cols-12.gap-4
|
48
|
+
.col-span-12
|
49
|
+
= f.input :name, url: select_documentation_forms_url, as: :dropdown
|
50
|
+
|
51
|
+
p To allow you full control over how the dropdown should look, you will need to implement a bit of view:
|
52
|
+
|
53
|
+
pre
|
54
|
+
| - @users.each do |user|
|
55
|
+
div data-satis-dropdown-item-value=user data-satis-dropdown-item-text=user
|
56
|
+
.cursor-pointer.w-full.border-gray-100.rounded-t.border-b.hover:bg-blue-200
|
57
|
+
.flex.w-full.items-center.p-2.pl-2.border-transparent.border-l-2.hover:border-teal-100
|
58
|
+
.w-full.items-center.flex
|
59
|
+
.mx-2.-mt-1
|
60
|
+
span = user
|
61
|
+
|
62
|
+
|
63
|
+
= sts.form_for(@user, url: documentation_index_path) do |f|
|
64
|
+
.grid.grid-cols-12.gap-4
|
65
|
+
.col-span-12
|
66
|
+
= f.input :name, url: select_documentation_forms_url, as: :dropdown, input_html:{ id: "dropdown_remote" }
|
67
|
+
|
68
|
+
h2 Dropdown search exact match
|
69
|
+
|
70
|
+
pre
|
71
|
+
| = sts.form_for(@user, url: documentation_index_path) do |f|
|
72
|
+
.grid.grid-cols-12.gap-4
|
73
|
+
.col-span-12
|
74
|
+
= f.input :name, collection: ['test', 'test2'], as: :dropdown, needs_exact_match: true
|
75
|
+
|
76
|
+
= sts.form_for(@user, url: documentation_index_path) do |f|
|
77
|
+
.grid.grid-cols-12.gap-4
|
78
|
+
.col-span-12
|
79
|
+
= f.input :name, collection: ['test', 'test2'], as: :dropdown, input_html:{ id: "dropdown_local_exact" }, needs_exact_match: true
|
80
|
+
|
81
|
+
h2 Dropdown with free text & pre selected value
|
82
|
+
|
83
|
+
pre
|
84
|
+
| = sts.form_for(@user, url: documentation_index_path) do |f|
|
85
|
+
.grid.grid-cols-12.gap-4
|
86
|
+
.col-span-12
|
87
|
+
= f.input :name, collection: ['test', 'test2'], as: :dropdown, free_text: true, selected: "test3"
|
88
|
+
|
89
|
+
= sts.form_for(@user, url: documentation_index_path) do |f|
|
90
|
+
.grid.grid-cols-12.gap-4
|
91
|
+
.col-span-12
|
92
|
+
= f.input :name, collection: ['test', 'test2'], as: :dropdown, input_html:{ id: "dropdown_local_free_text" }, free_text: true, selected: "test3"
|
93
|
+
|
94
|
+
h2 Dropdown with multiple selection
|
95
|
+
|
96
|
+
pre
|
97
|
+
| = sts.form_for(@user, url: documentation_index_path) do |f|
|
98
|
+
.grid.grid-cols-12.gap-4
|
99
|
+
.col-span-12
|
100
|
+
= f.input :name, collection: ['test1', 'test2', 'test3', 'test4'], as: :dropdown, input_html:{ multiple: true }
|
101
|
+
|
102
|
+
= sts.form_for(@user, url: documentation_index_path) do |f|
|
103
|
+
.grid.grid-cols-12.gap-4
|
104
|
+
.col-span-12
|
105
|
+
= f.input :name, collection: ['test1', 'test2', 'test3', 'test4'], as: :dropdown, input_html:{ id: "dropdown_local_multiple", multiple: true }
|
106
|
+
|
107
|
+
p
|
108
|
+
br
|
109
|
+
br
|
@@ -0,0 +1,7 @@
|
|
1
|
+
- @users.each do |user|
|
2
|
+
div data-satis-dropdown-item-value=user data-satis-dropdown-item-text=user
|
3
|
+
.cursor-pointer.w-full.border-gray-100.rounded-t.border-b.hover:bg-blue-200
|
4
|
+
.flex.w-full.items-center.p-2.pl-2.border-transparent.border-l-2.hover:border-teal-100
|
5
|
+
.w-full.items-center.flex
|
6
|
+
.mx-2.-mt-1
|
7
|
+
span = user
|
@@ -0,0 +1,31 @@
|
|
1
|
+
h1 Tabs
|
2
|
+
|
3
|
+
p Simple tab
|
4
|
+
|
5
|
+
pre
|
6
|
+
| = sts.tabs do |t|
|
7
|
+
- t.with_tab :first
|
8
|
+
| First content
|
9
|
+
- t.with_tab :second
|
10
|
+
| Second content
|
11
|
+
|
12
|
+
= sts.tabs do |t|
|
13
|
+
- t.with_tab :first
|
14
|
+
| First content
|
15
|
+
- t.with_tab :second
|
16
|
+
| Second content
|
17
|
+
|
18
|
+
p Tab with custom link in navigation
|
19
|
+
|
20
|
+
pre
|
21
|
+
| = sts.tabs(custom_link: link_to(content_tag(:i, nil, class: "fa-thin fa-plus") + " New", '#')) do |t|
|
22
|
+
- t.with_tab :first, icon: 'fal fa-xmark'
|
23
|
+
| First content
|
24
|
+
- t.with_tab :second
|
25
|
+
| Second content
|
26
|
+
|
27
|
+
= sts.tabs(custom_link: link_to(content_tag(:i, nil, class: "fa-thin fa-plus") + " New", '#')) do |t|
|
28
|
+
- t.with_tab :first, icon: 'fal fa-xmark'
|
29
|
+
| First content
|
30
|
+
- t.with_tab :second
|
31
|
+
| Second content
|
@@ -12,11 +12,11 @@
|
|
12
12
|
.col-span-11.fields
|
13
13
|
= yield(nested_form)
|
14
14
|
.col-span-1.flex.justify-center.items-center.association
|
15
|
-
.h-full.w-1.border-r.border-dashed
|
15
|
+
.h-full.w-1.border-r.border-dashed.dark:border-gray-700
|
16
16
|
a.text-primary-600.nested-fields_action href="#" data-action='click->satis-fields-for#addAssociation'
|
17
17
|
i.fal.fa-plus
|
18
18
|
.hidden.col-span-1.flex.justify-center.items-center.association
|
19
|
-
.h-full.w-1.border-r.border-dashed
|
19
|
+
.h-full.w-1.border-r.border-dashed.dark:border-gray-700
|
20
20
|
a.text-primary-600.nested-fields_action href="#" data-action='click->satis-fields-for#removeAssociation'
|
21
21
|
i.fal.fa-trash
|
22
22
|
|
@@ -28,7 +28,7 @@
|
|
28
28
|
.col-span-11
|
29
29
|
= yield(nested_form)
|
30
30
|
.col-span-1.flex.justify-center.items-center
|
31
|
-
.h-full.w-1.border-r.border-dashed
|
31
|
+
.h-full.w-1.border-r.border-dashed.dark:border-gray-700
|
32
32
|
a.text-primary-600.nested-fields_action href="#" data-action='click->satis-fields-for#removeAssociation'
|
33
33
|
i.fal.fa-trash
|
34
34
|
|
data/bin/importmap
ADDED
data/bin/rails
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails gems
|
3
|
+
# installed from the root of your application.
|
4
|
+
|
5
|
+
ENGINE_ROOT = File.expand_path('..', __dir__)
|
6
|
+
ENGINE_PATH = File.expand_path('../lib/satis/engine', __dir__)
|
7
|
+
APP_PATH = File.expand_path('../test/dummy/config/application', __dir__)
|
8
|
+
|
9
|
+
# Set up gems listed in the Gemfile.
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
|
11
|
+
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
12
|
+
|
13
|
+
require 'rails/all'
|
14
|
+
require 'rails/engine/commands'
|
data/config/importmap.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# pin_all_from File.expand_path("../app/javascript", __dir__)
|
2
|
+
|
3
|
+
pin "satis", to: "satis/application.js", preload: false
|
4
|
+
pin "satis/utils", to: "satis/utils.js", preload: false
|
5
|
+
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
|
6
|
+
pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
|
7
|
+
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
|
8
|
+
|
9
|
+
pin_all_from Satis::Engine.root.join("app/javascript/satis/controllers"), under: "satis/controllers", to: "satis/controllers"
|
10
|
+
pin_all_from Satis::Engine.root.join("app/javascript/satis/utility_controllers"), under: "satis/utility_controllers", to: "satis/utility_controllers"
|
11
|
+
|
12
|
+
pin_all_from Satis::Engine.root.join("app/javascript/satis/elements"), under: "satis/elements", to: "satis/elements"
|
13
|
+
pin_all_from Satis::Engine.root.join("app/components/satis"), under: "satis/components", to: "satis"
|
14
|
+
|
15
|
+
pin "tippy.js", preload: false # @6.3.7
|
16
|
+
pin "@popperjs/core", to: 'popper.js.js', preload: false
|
17
|
+
pin "leaflet", to: "leaflet.js", preload: false
|
18
|
+
pin "sortablejs", to: "sortablejs.js", preload: false # @1.15.2
|
19
|
+
pin "@rails/actiontext", to: "@rails--actiontext.js" # @7.1.3
|
20
|
+
pin "trix" # @2.0.10
|
21
|
+
pin "codemirror", to: "codemirror.js", preload: false
|
22
|
+
pin "@codemirror/autocomplete", to: "@codemirror--autocomplete.js" # @6.13.0
|
23
|
+
pin "@codemirror/commands", to: "@codemirror--commands.js", preload: false # @6.3.3
|
24
|
+
pin "@codemirror/language", to: "@codemirror--language.js" # @6.10.1
|
25
|
+
pin "@codemirror/lint", to: "@codemirror--lint.js", preload: false # @6.5.0
|
26
|
+
pin "@codemirror/search", to: "@codemirror--search.js", preload: false # @6.5.6
|
27
|
+
pin "@codemirror/state", to: "@codemirror--state.js" # @6.4.1
|
28
|
+
pin "@codemirror/view", to: "@codemirror--view.js" # @6.24.1
|
29
|
+
pin "@lezer/common", to: "@lezer--common.js" # @1.2.1
|
30
|
+
pin "@lezer/highlight", to: "@lezer--highlight.js" # @1.2.0
|
31
|
+
pin "crelt", to: "crelt.js", preload: false # @1.0.6
|
32
|
+
pin "style-mod" # @4.1.2
|
33
|
+
pin "w3c-keyname" # @2.2.8
|
34
|
+
pin "@codemirror/lang-yaml", to: "@codemirror--lang-yaml.js" # @6.0.0
|
35
|
+
pin "@lezer/lr", to: "@lezer--lr.js" # @1.4.0
|
36
|
+
pin "@lezer/yaml", to: "@lezer--yaml.js" # @1.0.2
|
37
|
+
pin "@codemirror/lang-html", to: "@codemirror--lang-html.js" # @6.4.8
|
38
|
+
pin "@codemirror/lang-css", to: "@codemirror--lang-css.js" # @6.2.1
|
39
|
+
pin "@codemirror/lang-javascript", to: "@codemirror--lang-javascript.js" # @6.2.2
|
40
|
+
pin "@lezer/css", to: "@lezer--css.js" # @1.1.8
|
41
|
+
pin "@lezer/html", to: "@lezer--html.js" # @1.3.9
|
42
|
+
pin "@lezer/javascript", to: "@lezer--javascript.js" # @1.4.13
|
43
|
+
pin "@codemirror/lang-liquid", to: "@codemirror--lang-liquid.js" # @6.2.1
|
44
|
+
pin "@codemirror/lang-json", to: "@codemirror--lang-json.js" # @6.0.1
|
45
|
+
pin "@lezer/json", to: "@lezer--json.js" # @1.0.2
|
46
|
+
pin "@codemirror/lang-markdown", to: "@codemirror--lang-markdown.js" # @6.2.4
|
47
|
+
pin "@lezer/markdown", to: "@lezer--markdown.js" # @1.2.0
|
48
|
+
pin "intl-tel-input", to: "intl-tel-input.js" # @19.5.6
|
49
|
+
pin "intl-tel-input-utils", to: "intl-tel-input-utils.js" # @19.5.6
|
data/config/routes.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
1
|
Satis::Engine.routes.draw do
|
2
2
|
resources :user_data, only: %i[show update]
|
3
|
+
resources :dialogs, only: %[show], constraints: { id: /[A-Za-z0-9\_\-\/]+/ }
|
4
|
+
|
5
|
+
unless Rails.env.production?
|
6
|
+
namespace :documentation do
|
7
|
+
resources :avatars
|
8
|
+
resources :cards
|
9
|
+
resources :editors
|
10
|
+
resources :forms do
|
11
|
+
get "select", on: :collection
|
12
|
+
end
|
13
|
+
resources :tabs
|
14
|
+
end
|
15
|
+
resources :documentation
|
16
|
+
end
|
3
17
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
class ChangeSatisUserData < ActiveRecord::Migration[7.0]
|
2
2
|
disable_ddl_transaction!
|
3
3
|
def change
|
4
|
-
|
5
|
-
|
4
|
+
change_column :satis_user_data, :data, :jsonb, null: true, default: {}
|
5
|
+
change_column :satis_user_data, :user_id, :uuid, null: true, foreign_key: true
|
6
6
|
|
7
7
|
remove_index :satis_user_data, [:key]
|
8
8
|
add_index :satis_user_data, [:user_id, :key], unique: true, algorithm: :concurrently
|