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,5 @@
|
|
1
|
+
.sts-editor data-controller="satis-editor" data-satis-editor-read-only-value=readonly? data-satis-editor-lang-value=lang
|
2
|
+
- if form
|
3
|
+
= form.hidden(attribute, input_html: { value: value, data: { 'satis-editor-target' => 'input' } })
|
4
|
+
- else
|
5
|
+
input type="hidden" value=value data-satis-editor-target="input"
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Satis
|
4
|
+
module Editor
|
5
|
+
class Component < ApplicationComponent
|
6
|
+
attr_reader :form, :attribute, :options
|
7
|
+
def initialize(form: nil, attribute: nil, **options)
|
8
|
+
@form = form
|
9
|
+
@attribute = attribute
|
10
|
+
@options = options
|
11
|
+
end
|
12
|
+
|
13
|
+
def readonly?
|
14
|
+
(@options[:readonly].is_a?(TrueClass) || @options[:readonly].is_a?(FalseClass)) ? @options[:readonly] : content?
|
15
|
+
end
|
16
|
+
|
17
|
+
def lang
|
18
|
+
# Mode is there for older code, it's deprecated
|
19
|
+
if @options[:lang]
|
20
|
+
@options[:lang]
|
21
|
+
elsif @options[:mode]
|
22
|
+
case @options[:mode]
|
23
|
+
when 'application/yaml'
|
24
|
+
'yaml'
|
25
|
+
when 'application/json'
|
26
|
+
'json'
|
27
|
+
when 'text/x-ruby'
|
28
|
+
''
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def value
|
35
|
+
if content?
|
36
|
+
html_escape_once(content)
|
37
|
+
elsif options[:input_html]&.[](:value)
|
38
|
+
options[:input_html][:value]
|
39
|
+
elsif form
|
40
|
+
form.object.send(attribute)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
import ApplicationController from 'satis/controllers/application_controller'
|
2
|
+
|
3
|
+
import { basicSetup, EditorView } from 'codemirror'
|
4
|
+
import { EditorState, Compartment } from '@codemirror/state'
|
5
|
+
|
6
|
+
import { json } from '@codemirror/lang-json'
|
7
|
+
import { yaml } from '@codemirror/lang-yaml'
|
8
|
+
import { liquid } from '@codemirror/lang-liquid'
|
9
|
+
import { markdown } from '@codemirror/lang-markdown'
|
10
|
+
import { javascript } from '@codemirror/lang-javascript'
|
11
|
+
import { html } from '@codemirror/lang-html'
|
12
|
+
import { css } from '@codemirror/lang-css'
|
13
|
+
import { StateEffect } from '@codemirror/state'
|
14
|
+
|
15
|
+
/***
|
16
|
+
* IDE - Editor controller
|
17
|
+
*
|
18
|
+
* Control codemirror
|
19
|
+
*/
|
20
|
+
export default class EditorComponentController extends ApplicationController {
|
21
|
+
static targets = ['input']
|
22
|
+
static values = {
|
23
|
+
readOnly: { type: Boolean },
|
24
|
+
lang: { type: String },
|
25
|
+
height: { type: String, default: "8rem" },
|
26
|
+
colorScheme: { type: String },
|
27
|
+
colorSchemeDark: { type: String }
|
28
|
+
}
|
29
|
+
|
30
|
+
setTheme (theme) {
|
31
|
+
}
|
32
|
+
|
33
|
+
connect () {
|
34
|
+
super.connect()
|
35
|
+
const self = this
|
36
|
+
|
37
|
+
const fixedHeightEditor = EditorView.theme({
|
38
|
+
'&': { height: this.heightValue, maxHeight: this.heightValue },
|
39
|
+
'.cm-gutter,.cm-content': { minHeight: this.heightValue },
|
40
|
+
'.cm-scroller': { overflow: 'auto' },
|
41
|
+
'&.cm-focused': {
|
42
|
+
outline: 'none',
|
43
|
+
},
|
44
|
+
})
|
45
|
+
|
46
|
+
let language = new Compartment
|
47
|
+
|
48
|
+
this.editor = new EditorView({
|
49
|
+
doc: this.inputTarget.value,
|
50
|
+
extensions: [
|
51
|
+
basicSetup,
|
52
|
+
EditorView.lineWrapping,
|
53
|
+
fixedHeightEditor,
|
54
|
+
EditorState.readOnly.of(this.readOnlyValue),
|
55
|
+
EditorView.updateListener.of((view) => {
|
56
|
+
if (view.docChanged) { this.sync() }
|
57
|
+
})
|
58
|
+
],
|
59
|
+
parent: this.element,
|
60
|
+
})
|
61
|
+
this.editor.dispatch({
|
62
|
+
effects: StateEffect.appendConfig.of(language.of(this._getLanguage(this.langValue || 'html')))
|
63
|
+
})
|
64
|
+
|
65
|
+
const colorSchemeDark = this.colorSchemeDarkValue
|
66
|
+
const colorScheme = this.colorSchemeValue
|
67
|
+
}
|
68
|
+
|
69
|
+
sync () {
|
70
|
+
this.inputTarget.value = this.editor.state.doc.toString()
|
71
|
+
}
|
72
|
+
|
73
|
+
disconnect () {
|
74
|
+
this.editor.destroy()
|
75
|
+
}
|
76
|
+
|
77
|
+
_getLanguage (lang) {
|
78
|
+
const languageMapping = {
|
79
|
+
'yaml': yaml(),
|
80
|
+
'json': json(),
|
81
|
+
'liquid': liquid(),
|
82
|
+
'markdown': markdown(),
|
83
|
+
'javascript': javascript(),
|
84
|
+
'html': html(),
|
85
|
+
'css': css(),
|
86
|
+
}
|
87
|
+
return languageMapping[lang]
|
88
|
+
}
|
89
|
+
|
90
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
- if content.present? || options[:content].present? || options[:show_always]
|
2
|
-
div class=
|
3
|
-
dt.text-xs.uppercase.text-gray-400 = ct(".#{name}",
|
2
|
+
div class=class_name
|
3
|
+
dt.text-xs.uppercase.text-gray-400 = ct(".#{name}", scope: group)
|
4
4
|
dd.text-sm.text-gray-900.dark:text-gray-300
|
5
5
|
- if options[:icon]
|
6
6
|
i.mr-1 class=options[:icon]
|
@@ -28,14 +28,22 @@ module Satis
|
|
28
28
|
@content.to_s.humanize
|
29
29
|
when ActiveSupport::SafeBuffer
|
30
30
|
@content
|
31
|
-
when String
|
32
|
-
@content.humanize
|
33
31
|
when nil
|
34
32
|
@placeholder
|
35
33
|
else
|
36
34
|
@content
|
37
35
|
end
|
38
36
|
end
|
37
|
+
|
38
|
+
def class_name
|
39
|
+
"satis-info-item #{group}-info-item #{css_class_for_name}-info-item #{options[:class]}"
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def css_class_for_name
|
45
|
+
name.to_s.dasherize
|
46
|
+
end
|
39
47
|
end
|
40
48
|
end
|
41
49
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import ApplicationController from "satis/controllers/application_controller"
|
2
|
+
|
3
|
+
export default class InputComponentController extends ApplicationController {
|
4
|
+
static targets = ["input"]
|
5
|
+
static values = {}
|
6
|
+
|
7
|
+
connect() {
|
8
|
+
super.connect()
|
9
|
+
|
10
|
+
if (this.hasInputTarget) {
|
11
|
+
document.addEventListener("wheel", function (event) {
|
12
|
+
if (document.activeElement.type === "number" && document.activeElement.classList.contains("noscroll")) {
|
13
|
+
document.activeElement.blur()
|
14
|
+
}
|
15
|
+
})
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
disconnect() {}
|
20
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
div.satis-input-array data-controller="satis-input-array" data-satis-input-array-input-name-value="#{options[:value_method].present? ? "#{form.object_name}[#{attribute.to_s}][][#{options[:value_method]}]" : "#{form.object_name}[#{attribute.to_s}][]"}"
|
2
|
+
template data-satis-input-array-target="rowTemplate"
|
3
|
+
.flex data-satis-input-array-target="inputRow"
|
4
|
+
div.flex-auto
|
5
|
+
= text_field_tag nil, nil, class: 'form-control mt-1', data: { action: "input->satis-input-array#input" }
|
6
|
+
div.flex-none.shrink-0
|
7
|
+
button.w-10.h-full.items-center.hidden.crossButton data-action="click->satis-input-array#removeRow" tabindex="-1"
|
8
|
+
i.fas.fa-xmark
|
9
|
+
button.w-10.h-full.items-center.plusButton data-action="click->satis-input-array#addRow" tabindex="-1"
|
10
|
+
i.fas.fa-plus
|
11
|
+
|
12
|
+
div data-satis-input-array-target="rowsContainer"
|
13
|
+
- if options[:value_method].present?
|
14
|
+
- options[:collection]&.each do |field|
|
15
|
+
.flex data-satis-input-array-target="inputRow"
|
16
|
+
div.flex-auto
|
17
|
+
= fields_for "#{form.object_name}[#{attribute.to_s}][]", field do | attr_form |
|
18
|
+
= attr_form.text_field options[:value_method], class: 'form-control mt-1', data: { action: "input->satis-input-array#input" }
|
19
|
+
div.flex-none.shrink-0
|
20
|
+
button.w-10.h-full.items-center.crossButton data-action="click->satis-input-array#removeRow" tabindex="-1"
|
21
|
+
i.fas.fa-xmark
|
22
|
+
button.w-10.h-full.items-center.plusButton data-action="click->satis-input-array#addRow" tabindex="-1"
|
23
|
+
i.fas.fa-plus
|
24
|
+
- else
|
25
|
+
- options[:collection]&.each do |field|
|
26
|
+
.flex data-satis-input-array-target="inputRow"
|
27
|
+
div.flex-auto
|
28
|
+
= text_field_tag "#{form.object_name}[#{attribute.to_s}][]", field, class: 'form-control mt-1'
|
29
|
+
div.flex-none.shrink-0
|
30
|
+
button.w-10.h-full.items-center.crossButton data-action="click->satis-input-array#removeRow" tabindex="-1"
|
31
|
+
i.fas.fa-xmark
|
32
|
+
button.w-10.h-full.items-center.plusButton data-action="click->satis-input-array#addRow" tabindex="-1"
|
33
|
+
i.fas.fa-plus
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Satis
|
4
|
+
module InputArray
|
5
|
+
class Component < Satis::ApplicationComponent
|
6
|
+
attr_reader :form, :attribute, :options
|
7
|
+
|
8
|
+
def initialize(form:, attribute:, **options)
|
9
|
+
super
|
10
|
+
|
11
|
+
@form = form
|
12
|
+
@attribute = attribute
|
13
|
+
@options = options
|
14
|
+
options[:input_html] ||= {}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import ApplicationController from "satis/controllers/application_controller"
|
2
|
+
|
3
|
+
export default class InputArrayComponentController extends ApplicationController {
|
4
|
+
static targets = ["rowsContainer", "inputRow", "rowTemplate", "crossButton", "plusButton"]
|
5
|
+
static values = { inputName: String }
|
6
|
+
|
7
|
+
connect() {
|
8
|
+
super.connect()
|
9
|
+
|
10
|
+
this.updateAddRemoveButtons()
|
11
|
+
}
|
12
|
+
|
13
|
+
disconnect() {}
|
14
|
+
|
15
|
+
removeRow(event) {
|
16
|
+
event.preventDefault()
|
17
|
+
event.currentTarget.parentElement.parentElement.remove()
|
18
|
+
|
19
|
+
this.updateAddRemoveButtons()
|
20
|
+
}
|
21
|
+
|
22
|
+
addRow(event) {
|
23
|
+
event.preventDefault()
|
24
|
+
|
25
|
+
const rowTemplate = this.rowTemplateTarget.content.firstElementChild.cloneNode(true)
|
26
|
+
const inputControl = rowTemplate.querySelector("input")
|
27
|
+
inputControl.setAttribute("name", this.inputNameValue)
|
28
|
+
|
29
|
+
this.rowsContainerTarget.appendChild(rowTemplate)
|
30
|
+
|
31
|
+
this.updateAddRemoveButtons()
|
32
|
+
}
|
33
|
+
|
34
|
+
input(event) {
|
35
|
+
if (
|
36
|
+
Array.from(this.rowsContainerTarget.children).indexOf(event.currentTarget.parentElement.parentElement) + 1 ==
|
37
|
+
this.inputRowTargets.length
|
38
|
+
) {
|
39
|
+
this.addRow(event)
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
updateAddRemoveButtons() {
|
44
|
+
this.inputRowTargets.forEach((inputRow, i) => {
|
45
|
+
if (i + 1 == this.inputRowTargets.length) {
|
46
|
+
inputRow.querySelector(".crossButton").classList.add("hidden")
|
47
|
+
inputRow.querySelector(".plusButton").classList.remove("hidden")
|
48
|
+
} else {
|
49
|
+
inputRow.querySelector(".crossButton").classList.remove("hidden")
|
50
|
+
inputRow.querySelector(".plusButton").classList.add("hidden")
|
51
|
+
}
|
52
|
+
})
|
53
|
+
}
|
54
|
+
}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
.
|
1
|
+
.sts-map data-controller="satis-map" data-satis-map-urls-value=@urls data-satis-map-longitude-value=@longitude data-satis-map-latitude-value=@latitude data-satis-map-zoom-level-value=@zoom_level data-satis-map-geo-json-url-value=@geo_json_url
|
2
2
|
.sts-map__map data-satis-map-target="container"
|
@@ -1,8 +1,8 @@
|
|
1
1
|
// map_controller.js
|
2
|
-
import ApplicationController from "
|
2
|
+
import ApplicationController from "satis/controllers/application_controller"
|
3
3
|
import L from "leaflet"
|
4
4
|
|
5
|
-
export default class extends ApplicationController {
|
5
|
+
export default class MapComponentController extends ApplicationController {
|
6
6
|
static targets = ["container"]
|
7
7
|
static values = { urls: String, latitude: Number, longitude: Number, zoomLevel: Number, geoJsonUrl: String }
|
8
8
|
|
@@ -17,16 +17,18 @@ export default class extends ApplicationController {
|
|
17
17
|
|
18
18
|
// this.map.setView() etc... as normal.
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
20
|
+
if(this.geoJsonUrlValue) {
|
21
|
+
// Load layers and setup event handlers, for example:
|
22
|
+
fetch(this.geoJsonUrlValue)
|
23
|
+
.then((response) => response.json())
|
24
|
+
.then((data) => {
|
25
|
+
L.geoJSON(data, {
|
26
|
+
onEachFeature: (feature, layer) => {
|
27
|
+
layer.on("click", () => this.onClick(layer))
|
28
|
+
},
|
29
|
+
}).addTo(this.map)
|
30
|
+
})
|
31
|
+
}
|
30
32
|
}
|
31
33
|
|
32
34
|
disconnect() {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
div.sts-menu data-controller="satis-menu" data-action="#{menu.event}->satis-menu#show
|
1
|
+
div.sts-menu data-controller="satis-menu" data-action="#{menu.event}->satis-menu#show"
|
2
2
|
- if content
|
3
3
|
= content
|
4
4
|
- else
|
@@ -7,7 +7,6 @@ div.sts-menu data-controller="satis-menu" data-action="#{menu.event}->satis-menu
|
|
7
7
|
i class=icon
|
8
8
|
|
9
9
|
- if menu.items.present?
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
- menu_items_class = menu.show_scroll ? 'sts-menu__items hidden max-h-96 overflow-y-auto' : 'sts-menu__items hidden'
|
11
|
+
ul class=menu_items_class data-satis-menu-target="submenu" data-satis-menu-submenu-placement="bottom" data-satis-menu-submenu-strategy="#{strategy}"
|
12
|
+
= render(Satis::MenuItem::Component.with_collection(menu.items))
|
@@ -4,13 +4,18 @@ module Satis
|
|
4
4
|
module Menu
|
5
5
|
class Component < Satis::ApplicationComponent
|
6
6
|
# renders_many :tabs, Tab::Component
|
7
|
-
attr_reader :menu, :icon, :icon_id
|
7
|
+
attr_reader :menu, :icon, :icon_id, :strategy
|
8
8
|
|
9
|
-
def initialize(menu, icon: nil, icon_id: nil)
|
9
|
+
def initialize(menu, icon: nil, icon_id: nil, strategy: "fixed")
|
10
10
|
super
|
11
11
|
@menu = menu
|
12
|
-
@icon = icon ||
|
12
|
+
@icon = icon || "fa-solid fa-ellipsis"
|
13
13
|
@icon_id = icon_id
|
14
|
+
@strategy = strategy
|
15
|
+
end
|
16
|
+
|
17
|
+
def render?
|
18
|
+
menu.items.present?
|
14
19
|
end
|
15
20
|
end
|
16
21
|
end
|
@@ -1,64 +1,186 @@
|
|
1
|
-
import ApplicationController from "
|
2
|
-
|
3
|
-
import { debounce } from "../../../../frontend/utils"
|
4
|
-
import { createPopper } from "@popperjs/core"
|
1
|
+
import ApplicationController from "satis/controllers/application_controller"
|
2
|
+
import {createPopper} from "@popperjs/core"
|
5
3
|
|
6
|
-
|
7
|
-
|
4
|
+
|
5
|
+
export default class MenuComponentController extends ApplicationController {
|
6
|
+
static targets = ["submenu", "toggle", "clear"]
|
8
7
|
|
9
8
|
connect() {
|
10
9
|
super.connect()
|
11
10
|
|
12
11
|
if (this.hasSubmenuTarget) {
|
12
|
+
window.process = {
|
13
|
+
env: {
|
14
|
+
NODE_ENV: "production"
|
15
|
+
}
|
16
|
+
}
|
13
17
|
this.popperInstance = createPopper(this.element, this.submenuTarget, {
|
14
|
-
offset: [-20, 2],
|
15
18
|
placement: this.submenuTarget.getAttribute("data-satis-menu-submenu-placement") || "auto",
|
19
|
+
strategy: this.submenuTarget.getAttribute("data-satis-menu-submenu-strategy") || "fixed",
|
16
20
|
modifiers: [
|
21
|
+
{ name: "offset", options: { offset: [0, 0] } },
|
17
22
|
{
|
18
23
|
name: "flip",
|
19
24
|
enabled: true,
|
20
25
|
options: {
|
21
|
-
|
26
|
+
fallbackPlacements: ["bottom"],
|
27
|
+
boundary: this.element.closest(".table-wrp") || this.element.closest(".sts-card"),
|
22
28
|
},
|
23
29
|
},
|
24
30
|
{
|
25
31
|
name: "preventOverflow",
|
32
|
+
options: {
|
33
|
+
boundary: this.element.closest(".table-wrp") || this.element.closest(".sts-card"),
|
34
|
+
tetherOffset: ({ popper, reference, placement }) => {
|
35
|
+
// always touch full side of the boundary
|
36
|
+
switch (placement) {
|
37
|
+
case 'left':
|
38
|
+
case 'right':
|
39
|
+
return reference.height
|
40
|
+
case 'top':
|
41
|
+
case 'bottom':
|
42
|
+
return reference.width
|
43
|
+
default:
|
44
|
+
return 0;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
},
|
26
48
|
},
|
27
49
|
],
|
28
50
|
})
|
51
|
+
this.popperInstance.state.elements.popper.popperInstance = () => this.popperInstance
|
52
|
+
|
53
|
+
this.mutationObserver = new MutationObserver((mutationsList, observer) => {
|
54
|
+
this.updateBoundary()
|
55
|
+
});
|
56
|
+
this.mutationObserver?.observe(this.popperInstance.state.elements.popper, {
|
57
|
+
childList: true,
|
58
|
+
subtree: true,
|
59
|
+
attributes: true
|
60
|
+
});
|
61
|
+
|
62
|
+
}
|
63
|
+
|
64
|
+
if (this.hasClearTarget) {
|
65
|
+
if (this.clearTarget.id == this.clearTarget.dataset.clear_id) {
|
66
|
+
this.clearTarget.classList.toggle("hidden")
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
this.boundClickOutside = this.clickOutside.bind(this)
|
71
|
+
|
72
|
+
this.boundMouseleave = this.hide.bind(this)
|
73
|
+
this.element.addEventListener("mouseleave", this.boundMouseleave)
|
74
|
+
}
|
75
|
+
|
76
|
+
disconnect() {
|
77
|
+
super.disconnect()
|
78
|
+
if (this.hasSubmenuTarget) {
|
79
|
+
this.popperInstance.destroy()
|
80
|
+
document.removeEventListener("click", this.boundClickOutside)
|
81
|
+
this.element.removeEventListener("mouseleave", this.boundMouseleave)
|
29
82
|
}
|
83
|
+
this.mutationObserver?.disconnect()
|
30
84
|
}
|
31
85
|
|
32
86
|
show(event) {
|
33
|
-
if (this.hasSubmenuTarget && (!this.hasToggleTarget || (this.hasToggleTarget && this.toggledOn))) {
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
87
|
+
if (this.hasSubmenuTarget && !this.submenuTarget.hasAttribute("data-show") && (!this.hasToggleTarget || (this.hasToggleTarget && this.toggledOn))) {
|
88
|
+
this.submenuTarget.classList.remove("hidden")
|
89
|
+
this.submenuTarget.setAttribute("data-show", "")
|
90
|
+
this.popperInstance.update()
|
91
|
+
this.element.querySelectorAll("[data-popper-reference-hidden]").forEach(element => {
|
92
|
+
if (element.hasOwnProperty("popperInstance")) {
|
93
|
+
element.popperInstance().update()
|
94
|
+
}
|
95
|
+
})
|
96
|
+
|
97
|
+
const firstInputElement = this.popperInstance.state.elements.popper.querySelector('form input:not([type="hidden"])')
|
98
|
+
const length = firstInputElement?.value.length;
|
99
|
+
firstInputElement?.setSelectionRange(length, length);
|
100
|
+
firstInputElement?.focus()
|
101
|
+
|
102
|
+
document.addEventListener("click", this.boundClickOutside)
|
103
|
+
}
|
38
104
|
event.stopPropagation()
|
39
105
|
}
|
40
106
|
|
41
107
|
hide(event) {
|
42
|
-
if
|
108
|
+
if(event && event.type === "mouseleave" &&
|
109
|
+
(event.target?.getAttribute("data-act-table-target") === "loadingOverlay" ||
|
110
|
+
event.relatedTarget?.getAttribute("data-act-table-target") === "loadingOverlay")){
|
111
|
+
return
|
112
|
+
}
|
113
|
+
|
114
|
+
if (this.hasSubmenuTarget && this.submenuTarget.hasAttribute("data-show")) {
|
43
115
|
this.submenuTarget.classList.add("hidden")
|
44
116
|
this.submenuTarget.removeAttribute("data-show")
|
117
|
+
|
118
|
+
const boundary = this.element.closest(".table-wrp")
|
119
|
+
if (boundary) {
|
120
|
+
boundary.style.minHeight = null;
|
121
|
+
}
|
122
|
+
|
123
|
+
document.removeEventListener("click", this.boundClickOutside)
|
45
124
|
}
|
46
|
-
event
|
125
|
+
//event?.stopPropagation()
|
47
126
|
}
|
48
127
|
|
49
128
|
toggle(event) {
|
50
129
|
if (this.hasToggleTarget) {
|
51
130
|
this.toggleTarget.classList.toggle("hidden")
|
52
|
-
this.triggerEvent(this.toggleTarget, "toggle", {
|
131
|
+
this.triggerEvent(this.toggleTarget, "toggle", {
|
132
|
+
toggled: !this.toggleTarget.classList.contains("hidden"),
|
133
|
+
id: this.toggleTarget.getAttribute("id"),
|
134
|
+
})
|
53
135
|
if (this.toggleTarget.classList.contains("hidden")) {
|
54
136
|
this.hide(event)
|
55
137
|
} else {
|
56
138
|
this.show(event)
|
57
139
|
}
|
58
140
|
}
|
141
|
+
|
142
|
+
if (this.hasClearTarget) {
|
143
|
+
let elements = document.getElementsByClassName('clear-icon')
|
144
|
+
Array.from(elements).forEach(function (element) {
|
145
|
+
element.classList.add('hidden')
|
146
|
+
});
|
147
|
+
|
148
|
+
if ((event.currentTarget != this.clearTarget && this.clearTarget.classList.contains("hidden")) ||
|
149
|
+
(event.currentTarget == this.clearTarget && !this.clearTarget.classList.contains("hidden"))) {
|
150
|
+
this.clearTarget.classList.toggle("hidden")
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
|
156
|
+
updateBoundary() {
|
157
|
+
const boundary = this.element.closest(".table-wrp")
|
158
|
+
if (!boundary) return
|
159
|
+
const maxHeight = parseInt(window.getComputedStyle(boundary).maxHeight.replace("px", ""))
|
160
|
+
const popperElement = this.popperInstance.state.elements.popper
|
161
|
+
if (!popperElement || popperElement.hasAttribute("data-popper-reference-hidden")) return
|
162
|
+
|
163
|
+
// ensure the boundary fits the popper by changing its min-height
|
164
|
+
const popperHeight = popperElement.scrollHeight
|
165
|
+
const popperTopRelativeToBoundary = popperElement.getBoundingClientRect().top - boundary.getBoundingClientRect().top
|
166
|
+
const scrollTop = popperElement.scrollTop
|
167
|
+
const newHeight = scrollTop + popperTopRelativeToBoundary + popperHeight + 20
|
168
|
+
const minimumHeight = Math.min(newHeight, maxHeight)
|
169
|
+
if (boundary.offsetHeight < minimumHeight) {
|
170
|
+
boundary.style.minHeight = `${minimumHeight}px`
|
171
|
+
setTimeout(() => {
|
172
|
+
boundary.scrollIntoView( { behavior: "instant", block: "nearest", inline: "nearest" })
|
173
|
+
}, 100)
|
174
|
+
}
|
59
175
|
}
|
60
176
|
|
61
177
|
get toggledOn() {
|
62
178
|
return !this.toggleTarget.classList.contains("hidden")
|
63
179
|
}
|
64
|
-
|
180
|
+
|
181
|
+
clickOutside(event) {
|
182
|
+
if (!this.element.contains(event.target)) {
|
183
|
+
this.hide(event)
|
184
|
+
}
|
185
|
+
}
|
186
|
+
}
|
@@ -1,20 +1,25 @@
|
|
1
|
-
li.rounded-sm.px-3.py-1.hover:bg-gray-100.dark:
|
1
|
+
li.rounded-sm.px-3.py-1.hover:bg-gray-100.flex.items-center.dark:bg-gray-900.dark:border-gray-700.dark:hover:bg-gray-700 data-controller="satis-menu" data-action="mouseover->satis-menu#show mouseleave->satis-menu#hide"
|
2
2
|
a.cursor-pointer.py-1.w-full.text-left.flex.items-center.outline-none.focus:outline-none href=item.link *item.link_attributes
|
3
3
|
- if item.type == :custom
|
4
4
|
= render(partial: item.link_attributes[:data][:path], locals: item.link_attributes[:data][:parameters])
|
5
|
-
span.pr-1.flex-shrink-0.w-6.text-gray-500
|
5
|
+
span.pr-1.flex-shrink-0.w-6.text-gray-500.dark:text-gray-300
|
6
6
|
- if item.icon.present?
|
7
|
-
|
8
|
-
|
7
|
+
- if item.icon.respond_to?(:keys)
|
8
|
+
span class=item.icon.keys.first
|
9
|
+
- item.icon[item.icon.keys.first].each do |si|
|
10
|
+
i class=si
|
11
|
+
- else
|
12
|
+
i class=item.icon
|
13
|
+
span.pr-1.flex-1.text-gray-500.dark:text-gray-300
|
9
14
|
- unless item.type == :custom
|
10
15
|
= item.label
|
11
16
|
span.pr-1.flex-shrink-0.w-6
|
12
17
|
- if item.type == :toggle
|
13
18
|
i.fal.fa-check.hidden data-satis-menu-target="toggle" id="#{item.id}"
|
19
|
+
- if item.type == :group
|
20
|
+
a.clear-icon.cursor-pointer.text-gray-400.hidden data-satis-menu-target="clear" data-clear="true" id="#{item.type}_#{item.link_attributes[:data][:view_id]}_#{item.link_attributes[:data][:column]}" data=item.link_attributes[:data]
|
21
|
+
i.fas.fa-xmark
|
14
22
|
|
15
23
|
- if item.menu
|
16
24
|
ul.hidden.bg-white.border.rounded-md.shadow-lg data-satis-menu-target="submenu" data-satis-menu-submenu-placement="left"
|
17
|
-
|
18
|
-
= render(Satis::MenuItem::Component.new(item: sub_item))
|
19
|
-
|
20
|
-
|
25
|
+
= render(Satis::MenuItem::Component.with_collection(item.menu.items))
|