angularjs-rails 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +2 -2
- data/lib/angularjs-rails/version.rb +1 -1
- data/vendor/assets/javascripts/angular-bootstrap-prettify.js +14 -4
- data/vendor/assets/javascripts/angular-bootstrap.js +1 -1
- data/vendor/assets/javascripts/angular-cookies.js +12 -1
- data/vendor/assets/javascripts/angular-loader.js +3 -3
- data/vendor/assets/javascripts/angular-mocks.js +99 -82
- data/vendor/assets/javascripts/angular-resource.js +1 -1
- data/vendor/assets/javascripts/angular-sanitize.js +24 -5
- data/vendor/assets/javascripts/angular-scenario.js +484 -173
- data/vendor/assets/javascripts/angular.js +484 -173
- data/vendor/assets/javascripts/i18n/angular-locale_af-na.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_af-za.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_af.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_am-et.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_am.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-001.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-ae.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-bh.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-dz.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-eg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-iq.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-jo.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-kw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-lb.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-ly.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-ma.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-om.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-qa.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-sa.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-sd.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-sy.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-tn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-ye.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_bg-bg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_bg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_bn-bd.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_bn-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_bn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ca-ad.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ca-es.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ca.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_chr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_cs-cz.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_cs.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_cy.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_da-dk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_da.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-at.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-be.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-ch.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-de.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-li.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-lu.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_el-cy.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_el-gr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_el-polyton.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_el.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-as.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-au.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-bb.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-be.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-bm.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-bw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-bz.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-ca.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-dsrt-us.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-dsrt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-fm.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-gb.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-gu.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-gy.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-hk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-ie.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-iso.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-jm.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-mh.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-mp.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-mt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-mu.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-na.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-nz.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-ph.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-pk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-pr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-pw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-sg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-tc.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-tt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-um.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-us.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-vg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-vi.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-za.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-zw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-zz.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-419.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-ar.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-bo.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-cl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-co.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-cr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-do.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-ea.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-ec.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-es.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-gq.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-gt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-hn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-ic.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-mx.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-ni.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-pa.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-pe.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-pr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-py.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-sv.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-us.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-uy.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-ve.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_et-ee.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_et.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_eu-es.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_eu.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fa-af.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fa-ir.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fa.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fi-fi.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fi.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fil-ph.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fil.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-be.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-bf.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-bi.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-bj.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-bl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-ca.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-cd.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-cf.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-cg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-ch.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-ci.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-cm.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-dj.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-fr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-ga.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-gf.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-gn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-gp.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-gq.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-km.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-lu.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-mc.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-mf.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-mg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-ml.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-mq.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-ne.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-re.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-rw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-sn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-td.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-tg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-yt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gl-es.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gsw-ch.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gsw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gu-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gu.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_haw.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_he-il.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_he.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hi-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hi.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hr-hr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hu-hu.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hu.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_id-id.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_id.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_is-is.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_is.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_it-ch.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_it-it.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_it-sm.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_it.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_iw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ja-jp.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ja.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_kn-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_kn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ko-kr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ko.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ln-cd.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ln-cg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ln.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_lt-lt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_lt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_lv-lv.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_lv.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ml-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ml.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mo.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mr-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ms-bn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ms-my.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ms.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mt-mt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_nl-aw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_nl-be.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_nl-cw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_nl-nl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_nl-sx.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_nl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_no.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_or-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_or.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pl-pl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt-ao.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt-br.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt-gw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt-mz.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt-pt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt-st.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ro-md.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ro-ro.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ro.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ru-md.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ru-ru.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ru-ua.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ru.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sk-sk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sl-si.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sq-al.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sq.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-cyrl-ba.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-cyrl-me.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-cyrl-rs.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-cyrl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-latn-ba.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-latn-me.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-latn-rs.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-latn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-rs.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sv-fi.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sv-se.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sv.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sw-ke.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sw-tz.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ta-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ta-lk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ta.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_te-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_te.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_th-th.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_th.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_tl-ph.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_tl.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_tr-tr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_tr.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_uk-ua.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_uk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ur-in.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ur-pk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ur.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_vi-vn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_vi.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-cn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hans-cn.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hans-hk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hans-mo.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hans-sg.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hans.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hant-hk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hant-mo.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hant-tw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hant.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hk.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-tw.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zu-za.js +98 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zu.js +98 -0
- metadata +294 -9
|
@@ -9405,7 +9405,7 @@ if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
|
|
|
9405
9405
|
})( window );
|
|
9406
9406
|
|
|
9407
9407
|
/**
|
|
9408
|
-
* @license AngularJS v1.0.
|
|
9408
|
+
* @license AngularJS v1.0.8
|
|
9409
9409
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
|
9410
9410
|
* License: MIT
|
|
9411
9411
|
*/
|
|
@@ -9688,7 +9688,7 @@ noop.$inject = [];
|
|
|
9688
9688
|
*
|
|
9689
9689
|
<pre>
|
|
9690
9690
|
function transformer(transformationFn, value) {
|
|
9691
|
-
return (transformationFn || identity)(value);
|
|
9691
|
+
return (transformationFn || angular.identity)(value);
|
|
9692
9692
|
};
|
|
9693
9693
|
</pre>
|
|
9694
9694
|
*/
|
|
@@ -9815,6 +9815,18 @@ function isArray(value) {
|
|
|
9815
9815
|
function isFunction(value){return typeof value == 'function';}
|
|
9816
9816
|
|
|
9817
9817
|
|
|
9818
|
+
/**
|
|
9819
|
+
* Determines if a value is a regular expression object.
|
|
9820
|
+
*
|
|
9821
|
+
* @private
|
|
9822
|
+
* @param {*} value Reference to check.
|
|
9823
|
+
* @returns {boolean} True if `value` is a `RegExp`.
|
|
9824
|
+
*/
|
|
9825
|
+
function isRegExp(value) {
|
|
9826
|
+
return toString.apply(value) == '[object RegExp]';
|
|
9827
|
+
}
|
|
9828
|
+
|
|
9829
|
+
|
|
9818
9830
|
/**
|
|
9819
9831
|
* Checks if `obj` is a window object.
|
|
9820
9832
|
*
|
|
@@ -9842,9 +9854,20 @@ function isBoolean(value) {
|
|
|
9842
9854
|
}
|
|
9843
9855
|
|
|
9844
9856
|
|
|
9845
|
-
|
|
9846
|
-
|
|
9847
|
-
|
|
9857
|
+
var trim = (function() {
|
|
9858
|
+
// native trim is way faster: http://jsperf.com/angular-trim-test
|
|
9859
|
+
// but IE doesn't have it... :-(
|
|
9860
|
+
// TODO: we should move this into IE/ES5 polyfill
|
|
9861
|
+
if (!String.prototype.trim) {
|
|
9862
|
+
return function(value) {
|
|
9863
|
+
return isString(value) ? value.replace(/^\s*/, '').replace(/\s*$/, '') : value;
|
|
9864
|
+
};
|
|
9865
|
+
}
|
|
9866
|
+
return function(value) {
|
|
9867
|
+
return isString(value) ? value.trim() : value;
|
|
9868
|
+
};
|
|
9869
|
+
})();
|
|
9870
|
+
|
|
9848
9871
|
|
|
9849
9872
|
/**
|
|
9850
9873
|
* @ngdoc function
|
|
@@ -9987,6 +10010,8 @@ function copy(source, destination){
|
|
|
9987
10010
|
destination = copy(source, []);
|
|
9988
10011
|
} else if (isDate(source)) {
|
|
9989
10012
|
destination = new Date(source.getTime());
|
|
10013
|
+
} else if (isRegExp(source)) {
|
|
10014
|
+
destination = new RegExp(source.source);
|
|
9990
10015
|
} else if (isObject(source)) {
|
|
9991
10016
|
destination = copy(source, {});
|
|
9992
10017
|
}
|
|
@@ -10034,7 +10059,7 @@ function shallowCopy(src, dst) {
|
|
|
10034
10059
|
* @function
|
|
10035
10060
|
*
|
|
10036
10061
|
* @description
|
|
10037
|
-
* Determines if two objects or two values are equivalent. Supports value types, arrays and
|
|
10062
|
+
* Determines if two objects or two values are equivalent. Supports value types, regular expressions, arrays and
|
|
10038
10063
|
* objects.
|
|
10039
10064
|
*
|
|
10040
10065
|
* Two objects or values are considered equivalent if at least one of the following is true:
|
|
@@ -10042,6 +10067,9 @@ function shallowCopy(src, dst) {
|
|
|
10042
10067
|
* * Both objects or values pass `===` comparison.
|
|
10043
10068
|
* * Both objects or values are of the same type and all of their properties pass `===` comparison.
|
|
10044
10069
|
* * Both values are NaN. (In JavasScript, NaN == NaN => false. But we consider two NaN as equal)
|
|
10070
|
+
* * Both values represent the same regular expression (In JavasScript,
|
|
10071
|
+
* /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
|
|
10072
|
+
* representation matches).
|
|
10045
10073
|
*
|
|
10046
10074
|
* During a property comparision, properties of `function` type and properties with names
|
|
10047
10075
|
* that begin with `$` are ignored.
|
|
@@ -10060,6 +10088,7 @@ function equals(o1, o2) {
|
|
|
10060
10088
|
if (t1 == t2) {
|
|
10061
10089
|
if (t1 == 'object') {
|
|
10062
10090
|
if (isArray(o1)) {
|
|
10091
|
+
if (!isArray(o2)) return false;
|
|
10063
10092
|
if ((length = o1.length) == o2.length) {
|
|
10064
10093
|
for(key=0; key<length; key++) {
|
|
10065
10094
|
if (!equals(o1[key], o2[key])) return false;
|
|
@@ -10068,8 +10097,10 @@ function equals(o1, o2) {
|
|
|
10068
10097
|
}
|
|
10069
10098
|
} else if (isDate(o1)) {
|
|
10070
10099
|
return isDate(o2) && o1.getTime() == o2.getTime();
|
|
10100
|
+
} else if (isRegExp(o1) && isRegExp(o2)) {
|
|
10101
|
+
return o1.toString() == o2.toString();
|
|
10071
10102
|
} else {
|
|
10072
|
-
if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2)) return false;
|
|
10103
|
+
if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || isArray(o2)) return false;
|
|
10073
10104
|
keySet = {};
|
|
10074
10105
|
for(key in o1) {
|
|
10075
10106
|
if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
|
|
@@ -10158,13 +10189,15 @@ function toJsonReplacer(key, value) {
|
|
|
10158
10189
|
* @function
|
|
10159
10190
|
*
|
|
10160
10191
|
* @description
|
|
10161
|
-
* Serializes input into a JSON-formatted string.
|
|
10192
|
+
* Serializes input into a JSON-formatted string. Properties with leading $ characters will be
|
|
10193
|
+
* stripped since angular uses this notation internally.
|
|
10162
10194
|
*
|
|
10163
10195
|
* @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
|
|
10164
10196
|
* @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace.
|
|
10165
|
-
* @returns {string} Jsonified string representing `obj`.
|
|
10197
|
+
* @returns {string|undefined} Jsonified string representing `obj`.
|
|
10166
10198
|
*/
|
|
10167
10199
|
function toJson(obj, pretty) {
|
|
10200
|
+
if (typeof obj === 'undefined') return undefined;
|
|
10168
10201
|
return JSON.stringify(obj, toJsonReplacer, pretty ? ' ' : null);
|
|
10169
10202
|
}
|
|
10170
10203
|
|
|
@@ -10224,6 +10257,23 @@ function startingTag(element) {
|
|
|
10224
10257
|
|
|
10225
10258
|
/////////////////////////////////////////////////
|
|
10226
10259
|
|
|
10260
|
+
/**
|
|
10261
|
+
* Tries to decode the URI component without throwing an exception.
|
|
10262
|
+
*
|
|
10263
|
+
* @private
|
|
10264
|
+
* @param str value potential URI component to check.
|
|
10265
|
+
* @returns {boolean} True if `value` can be decoded
|
|
10266
|
+
* with the decodeURIComponent function.
|
|
10267
|
+
*/
|
|
10268
|
+
function tryDecodeURIComponent(value) {
|
|
10269
|
+
try {
|
|
10270
|
+
return decodeURIComponent(value);
|
|
10271
|
+
} catch(e) {
|
|
10272
|
+
// Ignore any invalid uri component
|
|
10273
|
+
}
|
|
10274
|
+
}
|
|
10275
|
+
|
|
10276
|
+
|
|
10227
10277
|
/**
|
|
10228
10278
|
* Parses an escaped url query string into key-value pairs.
|
|
10229
10279
|
* @returns Object.<(string|boolean)>
|
|
@@ -10231,10 +10281,12 @@ function startingTag(element) {
|
|
|
10231
10281
|
function parseKeyValue(/**string*/keyValue) {
|
|
10232
10282
|
var obj = {}, key_value, key;
|
|
10233
10283
|
forEach((keyValue || "").split('&'), function(keyValue){
|
|
10234
|
-
if (keyValue) {
|
|
10284
|
+
if ( keyValue ) {
|
|
10235
10285
|
key_value = keyValue.split('=');
|
|
10236
|
-
key =
|
|
10237
|
-
|
|
10286
|
+
key = tryDecodeURIComponent(key_value[0]);
|
|
10287
|
+
if ( isDefined(key) ) {
|
|
10288
|
+
obj[key] = isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;
|
|
10289
|
+
}
|
|
10238
10290
|
}
|
|
10239
10291
|
});
|
|
10240
10292
|
return obj;
|
|
@@ -10300,10 +10352,14 @@ function encodeUriQuery(val, pctEncodeSpaces) {
|
|
|
10300
10352
|
* @description
|
|
10301
10353
|
*
|
|
10302
10354
|
* Use this directive to auto-bootstrap an application. Only
|
|
10303
|
-
* one directive can be used per HTML document. The directive
|
|
10355
|
+
* one ngApp directive can be used per HTML document. The directive
|
|
10304
10356
|
* designates the root of the application and is typically placed
|
|
10305
10357
|
* at the root of the page.
|
|
10306
10358
|
*
|
|
10359
|
+
* The first ngApp found in the document will be auto-bootstrapped. To use multiple applications in an
|
|
10360
|
+
* HTML document you must manually bootstrap them using {@link angular.bootstrap}.
|
|
10361
|
+
* Applications cannot be nested.
|
|
10362
|
+
*
|
|
10307
10363
|
* In the example below if the `ngApp` directive would not be placed
|
|
10308
10364
|
* on the `html` element then the document would not be compiled
|
|
10309
10365
|
* and the `{{ 1+2 }}` would not be resolved to `3`.
|
|
@@ -10369,12 +10425,15 @@ function angularInit(element, bootstrap) {
|
|
|
10369
10425
|
*
|
|
10370
10426
|
* See: {@link guide/bootstrap Bootstrap}
|
|
10371
10427
|
*
|
|
10428
|
+
* Note that ngScenario-based end-to-end tests cannot use this function to bootstrap manually.
|
|
10429
|
+
* They must use {@link api/ng.directive:ngApp ngApp}.
|
|
10430
|
+
*
|
|
10372
10431
|
* @param {Element} element DOM element which is the root of angular application.
|
|
10373
10432
|
* @param {Array<String|Function>=} modules an array of module declarations. See: {@link angular.module modules}
|
|
10374
10433
|
* @returns {AUTO.$injector} Returns the newly created injector for this app.
|
|
10375
10434
|
*/
|
|
10376
10435
|
function bootstrap(element, modules) {
|
|
10377
|
-
var
|
|
10436
|
+
var doBootstrap = function() {
|
|
10378
10437
|
element = jqLite(element);
|
|
10379
10438
|
modules = modules || [];
|
|
10380
10439
|
modules.unshift(['$provide', function($provide) {
|
|
@@ -10396,7 +10455,7 @@ function bootstrap(element, modules) {
|
|
|
10396
10455
|
var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
|
|
10397
10456
|
|
|
10398
10457
|
if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
|
|
10399
|
-
return
|
|
10458
|
+
return doBootstrap();
|
|
10400
10459
|
}
|
|
10401
10460
|
|
|
10402
10461
|
window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
|
|
@@ -10404,7 +10463,7 @@ function bootstrap(element, modules) {
|
|
|
10404
10463
|
forEach(extraModules, function(module) {
|
|
10405
10464
|
modules.push(module);
|
|
10406
10465
|
});
|
|
10407
|
-
|
|
10466
|
+
doBootstrap();
|
|
10408
10467
|
};
|
|
10409
10468
|
}
|
|
10410
10469
|
|
|
@@ -10428,9 +10487,10 @@ function bindJQuery() {
|
|
|
10428
10487
|
injector: JQLitePrototype.injector,
|
|
10429
10488
|
inheritedData: JQLitePrototype.inheritedData
|
|
10430
10489
|
});
|
|
10431
|
-
JQLitePatchJQueryRemove(
|
|
10432
|
-
JQLitePatchJQueryRemove('
|
|
10433
|
-
JQLitePatchJQueryRemove('
|
|
10490
|
+
// Method signature: JQLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments)
|
|
10491
|
+
JQLitePatchJQueryRemove('remove', true, true, false);
|
|
10492
|
+
JQLitePatchJQueryRemove('empty', false, false, false);
|
|
10493
|
+
JQLitePatchJQueryRemove('html', false, false, true);
|
|
10434
10494
|
} else {
|
|
10435
10495
|
jqLite = JQLite;
|
|
10436
10496
|
}
|
|
@@ -10457,6 +10517,33 @@ function assertArgFn(arg, name, acceptArrayAnnotation) {
|
|
|
10457
10517
|
return arg;
|
|
10458
10518
|
}
|
|
10459
10519
|
|
|
10520
|
+
/**
|
|
10521
|
+
* Return the value accessible from the object by path. Any undefined traversals are ignored
|
|
10522
|
+
* @param {Object} obj starting object
|
|
10523
|
+
* @param {string} path path to traverse
|
|
10524
|
+
* @param {boolean=true} bindFnToScope
|
|
10525
|
+
* @returns value as accessible by path
|
|
10526
|
+
*/
|
|
10527
|
+
//TODO(misko): this function needs to be removed
|
|
10528
|
+
function getter(obj, path, bindFnToScope) {
|
|
10529
|
+
if (!path) return obj;
|
|
10530
|
+
var keys = path.split('.');
|
|
10531
|
+
var key;
|
|
10532
|
+
var lastInstance = obj;
|
|
10533
|
+
var len = keys.length;
|
|
10534
|
+
|
|
10535
|
+
for (var i = 0; i < len; i++) {
|
|
10536
|
+
key = keys[i];
|
|
10537
|
+
if (obj) {
|
|
10538
|
+
obj = (lastInstance = obj)[key];
|
|
10539
|
+
}
|
|
10540
|
+
}
|
|
10541
|
+
if (!bindFnToScope && isFunction(obj)) {
|
|
10542
|
+
return bind(lastInstance, obj);
|
|
10543
|
+
}
|
|
10544
|
+
return obj;
|
|
10545
|
+
}
|
|
10546
|
+
|
|
10460
10547
|
/**
|
|
10461
10548
|
* @ngdoc interface
|
|
10462
10549
|
* @name angular.Module
|
|
@@ -10487,8 +10574,8 @@ function setupModuleLoader(window) {
|
|
|
10487
10574
|
*
|
|
10488
10575
|
* # Module
|
|
10489
10576
|
*
|
|
10490
|
-
* A module is a
|
|
10491
|
-
* is used to configure the {@link AUTO.$injector $injector}.
|
|
10577
|
+
* A module is a collection of services, directives, filters, and configuration information.
|
|
10578
|
+
* `angular.module` is used to configure the {@link AUTO.$injector $injector}.
|
|
10492
10579
|
*
|
|
10493
10580
|
* <pre>
|
|
10494
10581
|
* // Create a new module
|
|
@@ -10719,11 +10806,11 @@ function setupModuleLoader(window) {
|
|
|
10719
10806
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
|
10720
10807
|
*/
|
|
10721
10808
|
var version = {
|
|
10722
|
-
full: '1.0.
|
|
10809
|
+
full: '1.0.8', // all of these placeholder strings will be replaced by grunt's
|
|
10723
10810
|
major: 1, // package task
|
|
10724
10811
|
minor: 0,
|
|
10725
|
-
dot:
|
|
10726
|
-
codeName: '
|
|
10812
|
+
dot: 8,
|
|
10813
|
+
codeName: 'bubble-burst'
|
|
10727
10814
|
};
|
|
10728
10815
|
|
|
10729
10816
|
|
|
@@ -10792,7 +10879,6 @@ function publishExternalAPI(angular){
|
|
|
10792
10879
|
ngPluralize: ngPluralizeDirective,
|
|
10793
10880
|
ngRepeat: ngRepeatDirective,
|
|
10794
10881
|
ngShow: ngShowDirective,
|
|
10795
|
-
ngSubmit: ngSubmitDirective,
|
|
10796
10882
|
ngStyle: ngStyleDirective,
|
|
10797
10883
|
ngSwitch: ngSwitchDirective,
|
|
10798
10884
|
ngSwitchWhen: ngSwitchWhenDirective,
|
|
@@ -10862,7 +10948,8 @@ function publishExternalAPI(angular){
|
|
|
10862
10948
|
* Note: All element references in Angular are always wrapped with jQuery or jqLite; they are never
|
|
10863
10949
|
* raw DOM references.
|
|
10864
10950
|
*
|
|
10865
|
-
* ## Angular's
|
|
10951
|
+
* ## Angular's jqLite
|
|
10952
|
+
* Angular's lite version of jQuery provides only the following jQuery methods:
|
|
10866
10953
|
*
|
|
10867
10954
|
* - [addClass()](http://api.jquery.com/addClass/)
|
|
10868
10955
|
* - [after()](http://api.jquery.com/after/)
|
|
@@ -10895,8 +10982,14 @@ function publishExternalAPI(angular){
|
|
|
10895
10982
|
* - [val()](http://api.jquery.com/val/)
|
|
10896
10983
|
* - [wrap()](http://api.jquery.com/wrap/)
|
|
10897
10984
|
*
|
|
10898
|
-
* ##
|
|
10985
|
+
* ## jQuery/jqLite Extras
|
|
10986
|
+
* Angular also provides the following additional methods and events to both jQuery and jqLite:
|
|
10899
10987
|
*
|
|
10988
|
+
* ### Events
|
|
10989
|
+
* - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event
|
|
10990
|
+
* on all DOM nodes being removed. This can be used to clean up and 3rd party bindings to the DOM
|
|
10991
|
+
* element before it is removed.
|
|
10992
|
+
* ### Methods
|
|
10900
10993
|
* - `controller(name)` - retrieves the controller of the current element or its parent. By default
|
|
10901
10994
|
* retrieves controller associated with the `ngController` directive. If `name` is provided as
|
|
10902
10995
|
* camelCase directive name, then the controller for this directive will be retrieved (e.g.
|
|
@@ -10943,37 +11036,38 @@ function camelCase(name) {
|
|
|
10943
11036
|
/////////////////////////////////////////////
|
|
10944
11037
|
// jQuery mutation patch
|
|
10945
11038
|
//
|
|
10946
|
-
//
|
|
11039
|
+
// In conjunction with bindJQuery intercepts all jQuery's DOM destruction apis and fires a
|
|
10947
11040
|
// $destroy event on all DOM nodes being removed.
|
|
10948
11041
|
//
|
|
10949
11042
|
/////////////////////////////////////////////
|
|
10950
11043
|
|
|
10951
|
-
function JQLitePatchJQueryRemove(name, dispatchThis) {
|
|
11044
|
+
function JQLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArguments) {
|
|
10952
11045
|
var originalJqFn = jQuery.fn[name];
|
|
10953
11046
|
originalJqFn = originalJqFn.$original || originalJqFn;
|
|
10954
11047
|
removePatch.$original = originalJqFn;
|
|
10955
11048
|
jQuery.fn[name] = removePatch;
|
|
10956
11049
|
|
|
10957
|
-
function removePatch() {
|
|
10958
|
-
var list = [this],
|
|
11050
|
+
function removePatch(param) {
|
|
11051
|
+
var list = filterElems && param ? [this.filter(param)] : [this],
|
|
10959
11052
|
fireEvent = dispatchThis,
|
|
10960
11053
|
set, setIndex, setLength,
|
|
10961
|
-
element, childIndex, childLength, children
|
|
10962
|
-
|
|
10963
|
-
|
|
10964
|
-
|
|
10965
|
-
|
|
10966
|
-
|
|
10967
|
-
|
|
10968
|
-
|
|
10969
|
-
|
|
10970
|
-
|
|
10971
|
-
|
|
10972
|
-
|
|
10973
|
-
|
|
10974
|
-
|
|
10975
|
-
|
|
10976
|
-
|
|
11054
|
+
element, childIndex, childLength, children;
|
|
11055
|
+
|
|
11056
|
+
if (!getterIfNoArguments || param != null) {
|
|
11057
|
+
while(list.length) {
|
|
11058
|
+
set = list.shift();
|
|
11059
|
+
for(setIndex = 0, setLength = set.length; setIndex < setLength; setIndex++) {
|
|
11060
|
+
element = jqLite(set[setIndex]);
|
|
11061
|
+
if (fireEvent) {
|
|
11062
|
+
element.triggerHandler('$destroy');
|
|
11063
|
+
} else {
|
|
11064
|
+
fireEvent = !fireEvent;
|
|
11065
|
+
}
|
|
11066
|
+
for(childIndex = 0, childLength = (children = element.children()).length;
|
|
11067
|
+
childIndex < childLength;
|
|
11068
|
+
childIndex++) {
|
|
11069
|
+
list.push(jQuery(children[childIndex]));
|
|
11070
|
+
}
|
|
10977
11071
|
}
|
|
10978
11072
|
}
|
|
10979
11073
|
}
|
|
@@ -11033,7 +11127,7 @@ function JQLiteUnbind(element, type, fn) {
|
|
|
11033
11127
|
removeEventListenerFn(element, type, events[type]);
|
|
11034
11128
|
delete events[type];
|
|
11035
11129
|
} else {
|
|
11036
|
-
arrayRemove(events[type], fn);
|
|
11130
|
+
arrayRemove(events[type] || [], fn);
|
|
11037
11131
|
}
|
|
11038
11132
|
}
|
|
11039
11133
|
}
|
|
@@ -11307,6 +11401,15 @@ forEach({
|
|
|
11307
11401
|
|
|
11308
11402
|
val: function(element, value) {
|
|
11309
11403
|
if (isUndefined(value)) {
|
|
11404
|
+
if (nodeName_(element) === 'SELECT' && element.multiple) {
|
|
11405
|
+
var result = [];
|
|
11406
|
+
forEach(element.options, function (option) {
|
|
11407
|
+
if (option.selected) {
|
|
11408
|
+
result.push(option.value || option.text);
|
|
11409
|
+
}
|
|
11410
|
+
});
|
|
11411
|
+
return result.length === 0 ? null : result;
|
|
11412
|
+
}
|
|
11310
11413
|
return element.value;
|
|
11311
11414
|
}
|
|
11312
11415
|
element.value = value;
|
|
@@ -11524,12 +11627,7 @@ forEach({
|
|
|
11524
11627
|
if (element.nodeType === 1) {
|
|
11525
11628
|
var index = element.firstChild;
|
|
11526
11629
|
forEach(new JQLite(node), function(child){
|
|
11527
|
-
|
|
11528
|
-
element.insertBefore(child, index);
|
|
11529
|
-
} else {
|
|
11530
|
-
element.appendChild(child);
|
|
11531
|
-
index = child;
|
|
11532
|
-
}
|
|
11630
|
+
element.insertBefore(child, index);
|
|
11533
11631
|
});
|
|
11534
11632
|
}
|
|
11535
11633
|
},
|
|
@@ -12522,7 +12620,8 @@ function Browser(window, document, $log, $sniffer) {
|
|
|
12522
12620
|
//////////////////////////////////////////////////////////////
|
|
12523
12621
|
|
|
12524
12622
|
var lastBrowserUrl = location.href,
|
|
12525
|
-
baseElement = document.find('base')
|
|
12623
|
+
baseElement = document.find('base'),
|
|
12624
|
+
replacedUrl = null;
|
|
12526
12625
|
|
|
12527
12626
|
/**
|
|
12528
12627
|
* @name ng.$browser#url
|
|
@@ -12557,14 +12656,21 @@ function Browser(window, document, $log, $sniffer) {
|
|
|
12557
12656
|
baseElement.attr('href', baseElement.attr('href'));
|
|
12558
12657
|
}
|
|
12559
12658
|
} else {
|
|
12560
|
-
if (replace)
|
|
12561
|
-
|
|
12659
|
+
if (replace) {
|
|
12660
|
+
location.replace(url);
|
|
12661
|
+
replacedUrl = url;
|
|
12662
|
+
} else {
|
|
12663
|
+
location.href = url;
|
|
12664
|
+
replacedUrl = null;
|
|
12665
|
+
}
|
|
12562
12666
|
}
|
|
12563
12667
|
return self;
|
|
12564
12668
|
// getter
|
|
12565
12669
|
} else {
|
|
12566
|
-
// the
|
|
12567
|
-
|
|
12670
|
+
// - the replacedUrl is a workaround for an IE8-9 issue with location.replace method that doesn't update
|
|
12671
|
+
// location.href synchronously
|
|
12672
|
+
// - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172
|
|
12673
|
+
return replacedUrl || location.href.replace(/%27/g,"'");
|
|
12568
12674
|
}
|
|
12569
12675
|
};
|
|
12570
12676
|
|
|
@@ -12771,7 +12877,20 @@ function $BrowserProvider(){
|
|
|
12771
12877
|
* @name ng.$cacheFactory
|
|
12772
12878
|
*
|
|
12773
12879
|
* @description
|
|
12774
|
-
* Factory that constructs cache objects.
|
|
12880
|
+
* Factory that constructs cache objects and gives access to them.
|
|
12881
|
+
*
|
|
12882
|
+
* <pre>
|
|
12883
|
+
*
|
|
12884
|
+
* var cache = $cacheFactory('cacheId');
|
|
12885
|
+
* expect($cacheFactory.get('cacheId')).toBe(cache);
|
|
12886
|
+
* expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();
|
|
12887
|
+
*
|
|
12888
|
+
* cache.put("key", "value");
|
|
12889
|
+
* cache.put("another key", "another value");
|
|
12890
|
+
*
|
|
12891
|
+
* expect(cache.info()).toEqual({id: 'cacheId', size: 2}); // Since we've specified no options on creation
|
|
12892
|
+
*
|
|
12893
|
+
* </pre>
|
|
12775
12894
|
*
|
|
12776
12895
|
*
|
|
12777
12896
|
* @param {string} cacheId Name or id of the newly created cache.
|
|
@@ -12903,6 +13022,16 @@ function $CacheFactoryProvider() {
|
|
|
12903
13022
|
}
|
|
12904
13023
|
|
|
12905
13024
|
|
|
13025
|
+
/**
|
|
13026
|
+
* @ngdoc method
|
|
13027
|
+
* @name ng.$cacheFactory#info
|
|
13028
|
+
* @methodOf ng.$cacheFactory
|
|
13029
|
+
*
|
|
13030
|
+
* @description
|
|
13031
|
+
* Get information about all the of the caches that have been created
|
|
13032
|
+
*
|
|
13033
|
+
* @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`
|
|
13034
|
+
*/
|
|
12906
13035
|
cacheFactory.info = function() {
|
|
12907
13036
|
var info = {};
|
|
12908
13037
|
forEach(caches, function(cache, cacheId) {
|
|
@@ -12912,6 +13041,17 @@ function $CacheFactoryProvider() {
|
|
|
12912
13041
|
};
|
|
12913
13042
|
|
|
12914
13043
|
|
|
13044
|
+
/**
|
|
13045
|
+
* @ngdoc method
|
|
13046
|
+
* @name ng.$cacheFactory#get
|
|
13047
|
+
* @methodOf ng.$cacheFactory
|
|
13048
|
+
*
|
|
13049
|
+
* @description
|
|
13050
|
+
* Get access to a cache object by the `cacheId` used when it was created.
|
|
13051
|
+
*
|
|
13052
|
+
* @param {string} cacheId Name or id of a cache to access.
|
|
13053
|
+
* @returns {object} Cache object identified by the cacheId or undefined if no such cache.
|
|
13054
|
+
*/
|
|
12915
13055
|
cacheFactory.get = function(cacheId) {
|
|
12916
13056
|
return caches[cacheId];
|
|
12917
13057
|
};
|
|
@@ -12926,8 +13066,44 @@ function $CacheFactoryProvider() {
|
|
|
12926
13066
|
* @name ng.$templateCache
|
|
12927
13067
|
*
|
|
12928
13068
|
* @description
|
|
12929
|
-
*
|
|
12930
|
-
*
|
|
13069
|
+
* The first time a template is used, it is loaded in the template cache for quick retrieval. You can
|
|
13070
|
+
* load templates directly into the cache in a `script` tag, or by consuming the `$templateCache`
|
|
13071
|
+
* service directly.
|
|
13072
|
+
*
|
|
13073
|
+
* Adding via the `script` tag:
|
|
13074
|
+
* <pre>
|
|
13075
|
+
* <html ng-app>
|
|
13076
|
+
* <head>
|
|
13077
|
+
* <script type="text/ng-template" id="templateId.html">
|
|
13078
|
+
* This is the content of the template
|
|
13079
|
+
* </script>
|
|
13080
|
+
* </head>
|
|
13081
|
+
* ...
|
|
13082
|
+
* </html>
|
|
13083
|
+
* </pre>
|
|
13084
|
+
*
|
|
13085
|
+
* **Note:** the `script` tag containing the template does not need to be included in the `head` of the document, but
|
|
13086
|
+
* it must be below the `ng-app` definition.
|
|
13087
|
+
*
|
|
13088
|
+
* Adding via the $templateCache service:
|
|
13089
|
+
*
|
|
13090
|
+
* <pre>
|
|
13091
|
+
* var myApp = angular.module('myApp', []);
|
|
13092
|
+
* myApp.run(function($templateCache) {
|
|
13093
|
+
* $templateCache.put('templateId.html', 'This is the content of the template');
|
|
13094
|
+
* });
|
|
13095
|
+
* </pre>
|
|
13096
|
+
*
|
|
13097
|
+
* To retrieve the template later, simply use it in your HTML:
|
|
13098
|
+
* <pre>
|
|
13099
|
+
* <div ng-include=" 'templateId.html' "></div>
|
|
13100
|
+
* </pre>
|
|
13101
|
+
*
|
|
13102
|
+
* or get it via Javascript:
|
|
13103
|
+
* <pre>
|
|
13104
|
+
* $templateCache.get('templateId.html')
|
|
13105
|
+
* </pre>
|
|
13106
|
+
*
|
|
12931
13107
|
* See {@link ng.$cacheFactory $cacheFactory}.
|
|
12932
13108
|
*
|
|
12933
13109
|
*/
|
|
@@ -13103,11 +13279,11 @@ function $CompileProvider($provide) {
|
|
|
13103
13279
|
* @function
|
|
13104
13280
|
*
|
|
13105
13281
|
* @description
|
|
13106
|
-
* Register a new
|
|
13282
|
+
* Register a new directive with the compiler.
|
|
13107
13283
|
*
|
|
13108
13284
|
* @param {string} name Name of the directive in camel-case. (ie <code>ngBind</code> which will match as
|
|
13109
13285
|
* <code>ng-bind</code>).
|
|
13110
|
-
* @param {function} directiveFactory An injectable directive
|
|
13286
|
+
* @param {function|Array} directiveFactory An injectable directive factory function. See {@link guide/directive} for more
|
|
13111
13287
|
* info.
|
|
13112
13288
|
* @returns {ng.$compileProvider} Self for chaining.
|
|
13113
13289
|
*/
|
|
@@ -13230,7 +13406,7 @@ function $CompileProvider($provide) {
|
|
|
13230
13406
|
|
|
13231
13407
|
// href property always returns normalized absolute url, so we can match against that
|
|
13232
13408
|
normalizedVal = urlSanitizationNode.href;
|
|
13233
|
-
if (!normalizedVal.match(urlSanitizationWhitelist)) {
|
|
13409
|
+
if (normalizedVal !== '' && !normalizedVal.match(urlSanitizationWhitelist)) {
|
|
13234
13410
|
this[key] = value = 'unsafe:' + normalizedVal;
|
|
13235
13411
|
}
|
|
13236
13412
|
}
|
|
@@ -13454,7 +13630,7 @@ function $CompileProvider($provide) {
|
|
|
13454
13630
|
for (var attr, name, nName, value, nAttrs = node.attributes,
|
|
13455
13631
|
j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {
|
|
13456
13632
|
attr = nAttrs[j];
|
|
13457
|
-
if (attr.specified) {
|
|
13633
|
+
if (!msie || msie >= 8 || attr.specified) {
|
|
13458
13634
|
name = attr.name;
|
|
13459
13635
|
nName = directiveNormalize(name.toLowerCase());
|
|
13460
13636
|
attrsMap[nName] = name;
|
|
@@ -15833,33 +16009,6 @@ function setter(obj, path, setValue) {
|
|
|
15833
16009
|
return setValue;
|
|
15834
16010
|
}
|
|
15835
16011
|
|
|
15836
|
-
/**
|
|
15837
|
-
* Return the value accesible from the object by path. Any undefined traversals are ignored
|
|
15838
|
-
* @param {Object} obj starting object
|
|
15839
|
-
* @param {string} path path to traverse
|
|
15840
|
-
* @param {boolean=true} bindFnToScope
|
|
15841
|
-
* @returns value as accesbile by path
|
|
15842
|
-
*/
|
|
15843
|
-
//TODO(misko): this function needs to be removed
|
|
15844
|
-
function getter(obj, path, bindFnToScope) {
|
|
15845
|
-
if (!path) return obj;
|
|
15846
|
-
var keys = path.split('.');
|
|
15847
|
-
var key;
|
|
15848
|
-
var lastInstance = obj;
|
|
15849
|
-
var len = keys.length;
|
|
15850
|
-
|
|
15851
|
-
for (var i = 0; i < len; i++) {
|
|
15852
|
-
key = keys[i];
|
|
15853
|
-
if (obj) {
|
|
15854
|
-
obj = (lastInstance = obj)[key];
|
|
15855
|
-
}
|
|
15856
|
-
}
|
|
15857
|
-
if (!bindFnToScope && isFunction(obj)) {
|
|
15858
|
-
return bind(lastInstance, obj);
|
|
15859
|
-
}
|
|
15860
|
-
return obj;
|
|
15861
|
-
}
|
|
15862
|
-
|
|
15863
16012
|
var getterFnCache = {};
|
|
15864
16013
|
|
|
15865
16014
|
/**
|
|
@@ -16121,8 +16270,8 @@ function $ParseProvider() {
|
|
|
16121
16270
|
* **Methods**
|
|
16122
16271
|
*
|
|
16123
16272
|
* - `then(successCallback, errorCallback)` – regardless of when the promise was or will be resolved
|
|
16124
|
-
* or rejected calls one of the success or error callbacks asynchronously as soon as the result
|
|
16125
|
-
* is available. The callbacks are called with a single argument the result or rejection reason.
|
|
16273
|
+
* or rejected, `then` calls one of the success or error callbacks asynchronously as soon as the result
|
|
16274
|
+
* is available. The callbacks are called with a single argument: the result or rejection reason.
|
|
16126
16275
|
*
|
|
16127
16276
|
* This method *returns a new promise* which is resolved or rejected via the return value of the
|
|
16128
16277
|
* `successCallback` or `errorCallback`.
|
|
@@ -16130,7 +16279,7 @@ function $ParseProvider() {
|
|
|
16130
16279
|
*
|
|
16131
16280
|
* # Chaining promises
|
|
16132
16281
|
*
|
|
16133
|
-
* Because calling `then`
|
|
16282
|
+
* Because calling the `then` method of a promise returns a new derived promise, it is easily possible
|
|
16134
16283
|
* to create a chain of promises:
|
|
16135
16284
|
*
|
|
16136
16285
|
* <pre>
|
|
@@ -16138,13 +16287,13 @@ function $ParseProvider() {
|
|
|
16138
16287
|
* return result + 1;
|
|
16139
16288
|
* });
|
|
16140
16289
|
*
|
|
16141
|
-
* // promiseB will be resolved immediately after promiseA is resolved and its value
|
|
16142
|
-
* // the result of promiseA incremented by 1
|
|
16290
|
+
* // promiseB will be resolved immediately after promiseA is resolved and its value
|
|
16291
|
+
* // will be the result of promiseA incremented by 1
|
|
16143
16292
|
* </pre>
|
|
16144
16293
|
*
|
|
16145
16294
|
* It is possible to create chains of any length and since a promise can be resolved with another
|
|
16146
16295
|
* promise (which will defer its resolution further), it is possible to pause/defer resolution of
|
|
16147
|
-
* the promises at any point in the chain. This makes it possible to implement powerful
|
|
16296
|
+
* the promises at any point in the chain. This makes it possible to implement powerful APIs like
|
|
16148
16297
|
* $http's response interceptors.
|
|
16149
16298
|
*
|
|
16150
16299
|
*
|
|
@@ -16251,8 +16400,8 @@ function qFactory(nextTick, exceptionHandler) {
|
|
|
16251
16400
|
try {
|
|
16252
16401
|
result.resolve((callback || defaultCallback)(value));
|
|
16253
16402
|
} catch(e) {
|
|
16254
|
-
exceptionHandler(e);
|
|
16255
16403
|
result.reject(e);
|
|
16404
|
+
exceptionHandler(e);
|
|
16256
16405
|
}
|
|
16257
16406
|
};
|
|
16258
16407
|
|
|
@@ -16260,8 +16409,8 @@ function qFactory(nextTick, exceptionHandler) {
|
|
|
16260
16409
|
try {
|
|
16261
16410
|
result.resolve((errback || defaultErrback)(reason));
|
|
16262
16411
|
} catch(e) {
|
|
16263
|
-
exceptionHandler(e);
|
|
16264
16412
|
result.reject(e);
|
|
16413
|
+
exceptionHandler(e);
|
|
16265
16414
|
}
|
|
16266
16415
|
};
|
|
16267
16416
|
|
|
@@ -16470,8 +16619,8 @@ function $RouteProvider(){
|
|
|
16470
16619
|
* route definition.
|
|
16471
16620
|
*
|
|
16472
16621
|
* `path` can contain named groups starting with a colon (`:name`). All characters up to the
|
|
16473
|
-
* next slash are matched and stored in `$routeParams` under the given `name`
|
|
16474
|
-
*
|
|
16622
|
+
* next slash are matched and stored in `$routeParams` under the given `name` after the route
|
|
16623
|
+
* is resolved.
|
|
16475
16624
|
*
|
|
16476
16625
|
* @param {Object} route Mapping information to be assigned to `$route.current` on route
|
|
16477
16626
|
* match.
|
|
@@ -16496,7 +16645,9 @@ function $RouteProvider(){
|
|
|
16496
16645
|
* - `factory` - `{string|function}`: If `string` then it is an alias for a service.
|
|
16497
16646
|
* Otherwise if function, then it is {@link api/AUTO.$injector#invoke injected}
|
|
16498
16647
|
* and the return value is treated as the dependency. If the result is a promise, it is resolved
|
|
16499
|
-
* before its value is injected into the controller.
|
|
16648
|
+
* before its value is injected into the controller. Be aware that `ngRoute.$routeParams` will
|
|
16649
|
+
* still refer to the previous route within these resolve functions. Use `$route.current.params`
|
|
16650
|
+
* to access the new route parameters, instead.
|
|
16500
16651
|
*
|
|
16501
16652
|
* - `redirectTo` – {(string|function())=} – value to update
|
|
16502
16653
|
* {@link ng.$location $location} path with and trigger route redirection.
|
|
@@ -16931,6 +17082,10 @@ function $RouteProvider(){
|
|
|
16931
17082
|
* The service guarantees that the identity of the `$routeParams` object will remain unchanged
|
|
16932
17083
|
* (but its properties will likely change) even when a route change occurs.
|
|
16933
17084
|
*
|
|
17085
|
+
* Note that the `$routeParams` are only updated *after* a route change completes successfully.
|
|
17086
|
+
* This means that you cannot rely on `$routeParams` being correct in route resolve functions.
|
|
17087
|
+
* Instead you can use `$route.current.params` to access the new route's parameters.
|
|
17088
|
+
*
|
|
16934
17089
|
* @example
|
|
16935
17090
|
* <pre>
|
|
16936
17091
|
* // Given:
|
|
@@ -17338,7 +17493,7 @@ function $RootScopeProvider(){
|
|
|
17338
17493
|
watch = watchers[length];
|
|
17339
17494
|
// Most common watches are on primitives, in which case we can short
|
|
17340
17495
|
// circuit it with === operator, only when === fails do we use .equals
|
|
17341
|
-
if ((value = watch.get(current)) !== (last = watch.last) &&
|
|
17496
|
+
if (watch && (value = watch.get(current)) !== (last = watch.last) &&
|
|
17342
17497
|
!(watch.eq
|
|
17343
17498
|
? equals(value, last)
|
|
17344
17499
|
: (typeof value == 'number' && typeof last == 'number'
|
|
@@ -17391,6 +17546,9 @@ function $RootScopeProvider(){
|
|
|
17391
17546
|
*
|
|
17392
17547
|
* @description
|
|
17393
17548
|
* Broadcasted when a scope and its children are being destroyed.
|
|
17549
|
+
*
|
|
17550
|
+
* Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
|
|
17551
|
+
* clean up DOM bindings before an element is removed from the DOM.
|
|
17394
17552
|
*/
|
|
17395
17553
|
|
|
17396
17554
|
/**
|
|
@@ -17412,6 +17570,9 @@ function $RootScopeProvider(){
|
|
|
17412
17570
|
* Just before a scope is destroyed a `$destroy` event is broadcasted on this scope.
|
|
17413
17571
|
* Application code can register a `$destroy` event handler that will give it chance to
|
|
17414
17572
|
* perform any necessary cleanup.
|
|
17573
|
+
*
|
|
17574
|
+
* Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to
|
|
17575
|
+
* clean up DOM bindings before an element is removed from the DOM.
|
|
17415
17576
|
*/
|
|
17416
17577
|
$destroy: function() {
|
|
17417
17578
|
// we can't destroy the root scope or a scope that has been already destroyed
|
|
@@ -17816,8 +17977,10 @@ function $SnifferProvider() {
|
|
|
17816
17977
|
* it is a global variable. In angular we always refer to it through the
|
|
17817
17978
|
* `$window` service, so it may be overriden, removed or mocked for testing.
|
|
17818
17979
|
*
|
|
17819
|
-
*
|
|
17820
|
-
*
|
|
17980
|
+
* Expressions, like the one defined for the `ngClick` directive in the example
|
|
17981
|
+
* below, are evaluated with respect to the current scope. Therefore, there is
|
|
17982
|
+
* no risk of inadvertently coding in a dependency on a global value in such an
|
|
17983
|
+
* expression.
|
|
17821
17984
|
*
|
|
17822
17985
|
* @example
|
|
17823
17986
|
<doc:example>
|
|
@@ -18137,6 +18300,7 @@ function $HttpProvider() {
|
|
|
18137
18300
|
* return function(promise) {
|
|
18138
18301
|
* return promise.then(function(response) {
|
|
18139
18302
|
* // do something on success
|
|
18303
|
+
* return response;
|
|
18140
18304
|
* }, function(response) {
|
|
18141
18305
|
* // do something on error
|
|
18142
18306
|
* if (canRecover(response)) {
|
|
@@ -18328,17 +18492,40 @@ function $HttpProvider() {
|
|
|
18328
18492
|
|
|
18329
18493
|
var reqTransformFn = config.transformRequest || $config.transformRequest,
|
|
18330
18494
|
respTransformFn = config.transformResponse || $config.transformResponse,
|
|
18331
|
-
|
|
18332
|
-
|
|
18333
|
-
|
|
18334
|
-
|
|
18495
|
+
reqHeaders = extend({}, config.headers),
|
|
18496
|
+
defHeaders = extend(
|
|
18497
|
+
{'X-XSRF-TOKEN': $browser.cookies()['XSRF-TOKEN']},
|
|
18498
|
+
$config.headers.common,
|
|
18499
|
+
$config.headers[lowercase(config.method)]
|
|
18500
|
+
),
|
|
18501
|
+
reqData,
|
|
18502
|
+
defHeaderName, lowercaseDefHeaderName, headerName,
|
|
18335
18503
|
promise;
|
|
18336
18504
|
|
|
18505
|
+
// using for-in instead of forEach to avoid unecessary iteration after header has been found
|
|
18506
|
+
defaultHeadersIteration:
|
|
18507
|
+
for(defHeaderName in defHeaders) {
|
|
18508
|
+
lowercaseDefHeaderName = lowercase(defHeaderName);
|
|
18509
|
+
for(headerName in config.headers) {
|
|
18510
|
+
if (lowercase(headerName) === lowercaseDefHeaderName) {
|
|
18511
|
+
continue defaultHeadersIteration;
|
|
18512
|
+
}
|
|
18513
|
+
}
|
|
18514
|
+
reqHeaders[defHeaderName] = defHeaders[defHeaderName];
|
|
18515
|
+
}
|
|
18516
|
+
|
|
18337
18517
|
// strip content-type if data is undefined
|
|
18338
18518
|
if (isUndefined(config.data)) {
|
|
18339
|
-
|
|
18519
|
+
for(var header in reqHeaders) {
|
|
18520
|
+
if (lowercase(header) === 'content-type') {
|
|
18521
|
+
delete reqHeaders[header];
|
|
18522
|
+
break;
|
|
18523
|
+
}
|
|
18524
|
+
}
|
|
18340
18525
|
}
|
|
18341
18526
|
|
|
18527
|
+
reqData = transformData(config.data, headersGetter(reqHeaders), reqTransformFn);
|
|
18528
|
+
|
|
18342
18529
|
// send request
|
|
18343
18530
|
promise = sendReq(config, reqData, reqHeaders);
|
|
18344
18531
|
|
|
@@ -18881,17 +19068,15 @@ function $TimeoutProvider() {
|
|
|
18881
19068
|
deferred.reject(e);
|
|
18882
19069
|
$exceptionHandler(e);
|
|
18883
19070
|
}
|
|
19071
|
+
finally {
|
|
19072
|
+
delete deferreds[promise.$$timeoutId];
|
|
19073
|
+
}
|
|
18884
19074
|
|
|
18885
19075
|
if (!skipApply) $rootScope.$apply();
|
|
18886
19076
|
}, delay);
|
|
18887
19077
|
|
|
18888
|
-
cleanup = function() {
|
|
18889
|
-
delete deferreds[promise.$$timeoutId];
|
|
18890
|
-
};
|
|
18891
|
-
|
|
18892
19078
|
promise.$$timeoutId = timeoutId;
|
|
18893
19079
|
deferreds[timeoutId] = deferred;
|
|
18894
|
-
promise.then(cleanup, cleanup);
|
|
18895
19080
|
|
|
18896
19081
|
return promise;
|
|
18897
19082
|
}
|
|
@@ -18913,6 +19098,7 @@ function $TimeoutProvider() {
|
|
|
18913
19098
|
timeout.cancel = function(promise) {
|
|
18914
19099
|
if (promise && promise.$$timeoutId in deferreds) {
|
|
18915
19100
|
deferreds[promise.$$timeoutId].reject('canceled');
|
|
19101
|
+
delete deferreds[promise.$$timeoutId];
|
|
18916
19102
|
return $browser.defer.cancel(promise.$$timeoutId);
|
|
18917
19103
|
}
|
|
18918
19104
|
return false;
|
|
@@ -19249,7 +19435,9 @@ function currencyFilter($locale) {
|
|
|
19249
19435
|
* If the input is not a number an empty string is returned.
|
|
19250
19436
|
*
|
|
19251
19437
|
* @param {number|string} number Number to format.
|
|
19252
|
-
* @param {(number|string)=}
|
|
19438
|
+
* @param {(number|string)=} fractionSize Number of decimal places to round the number to.
|
|
19439
|
+
* If this is not provided then the fraction size is computed from the current locale's number
|
|
19440
|
+
* formatting pattern. In the case of the default locale, it will be 3.
|
|
19253
19441
|
* @returns {string} Number rounded to decimalPlaces and places a “,” after each third digit.
|
|
19254
19442
|
*
|
|
19255
19443
|
* @example
|
|
@@ -19356,6 +19544,11 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
|
|
|
19356
19544
|
}
|
|
19357
19545
|
|
|
19358
19546
|
if (fractionSize && fractionSize !== "0") formatedText += decimalSep + fraction.substr(0, fractionSize);
|
|
19547
|
+
} else {
|
|
19548
|
+
|
|
19549
|
+
if (fractionSize > 0 && number > -1 && number < 1) {
|
|
19550
|
+
formatedText = number.toFixed(fractionSize);
|
|
19551
|
+
}
|
|
19359
19552
|
}
|
|
19360
19553
|
|
|
19361
19554
|
parts.push(isNegative ? pattern.negPre : pattern.posPre);
|
|
@@ -19479,7 +19672,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+
|
|
|
19479
19672
|
* * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US locale (e.g. 9/3/10 12:05 pm)
|
|
19480
19673
|
* * `'fullDate'`: equivalent to `'EEEE, MMMM d,y'` for en_US locale
|
|
19481
19674
|
* (e.g. Friday, September 3, 2010)
|
|
19482
|
-
* * `'longDate'`: equivalent to `'MMMM d, y'` for en_US locale (e.g. September 3, 2010
|
|
19675
|
+
* * `'longDate'`: equivalent to `'MMMM d, y'` for en_US locale (e.g. September 3, 2010)
|
|
19483
19676
|
* * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US locale (e.g. Sep 3, 2010)
|
|
19484
19677
|
* * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10)
|
|
19485
19678
|
* * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 pm)
|
|
@@ -19487,7 +19680,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+
|
|
|
19487
19680
|
*
|
|
19488
19681
|
* `format` string can contain literal values. These need to be quoted with single quotes (e.g.
|
|
19489
19682
|
* `"h 'in the morning'"`). In order to output single quote, use two single quotes in a sequence
|
|
19490
|
-
* (e.g. `"h o''clock"`).
|
|
19683
|
+
* (e.g. `"h 'o''clock'"`).
|
|
19491
19684
|
*
|
|
19492
19685
|
* @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
|
|
19493
19686
|
* number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.SSSZ and its
|
|
@@ -19854,8 +20047,10 @@ function orderByFilter($parse){
|
|
|
19854
20047
|
var t1 = typeof v1;
|
|
19855
20048
|
var t2 = typeof v2;
|
|
19856
20049
|
if (t1 == t2) {
|
|
19857
|
-
if (t1 == "string")
|
|
19858
|
-
|
|
20050
|
+
if (t1 == "string") {
|
|
20051
|
+
v1 = v1.toLowerCase();
|
|
20052
|
+
v2 = v2.toLowerCase();
|
|
20053
|
+
}
|
|
19859
20054
|
if (v1 === v2) return 0;
|
|
19860
20055
|
return v1 < v2 ? -1 : 1;
|
|
19861
20056
|
} else {
|
|
@@ -20275,7 +20470,7 @@ function FormController(element, attrs) {
|
|
|
20275
20470
|
errors = form.$error = {};
|
|
20276
20471
|
|
|
20277
20472
|
// init state
|
|
20278
|
-
form.$name = attrs.name;
|
|
20473
|
+
form.$name = attrs.name || attrs.ngForm;
|
|
20279
20474
|
form.$dirty = false;
|
|
20280
20475
|
form.$pristine = true;
|
|
20281
20476
|
form.$valid = true;
|
|
@@ -20295,12 +20490,32 @@ function FormController(element, attrs) {
|
|
|
20295
20490
|
addClass((isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey);
|
|
20296
20491
|
}
|
|
20297
20492
|
|
|
20493
|
+
/**
|
|
20494
|
+
* @ngdoc function
|
|
20495
|
+
* @name ng.directive:form.FormController#$addControl
|
|
20496
|
+
* @methodOf ng.directive:form.FormController
|
|
20497
|
+
*
|
|
20498
|
+
* @description
|
|
20499
|
+
* Register a control with the form.
|
|
20500
|
+
*
|
|
20501
|
+
* Input elements using ngModelController do this automatically when they are linked.
|
|
20502
|
+
*/
|
|
20298
20503
|
form.$addControl = function(control) {
|
|
20299
20504
|
if (control.$name && !form.hasOwnProperty(control.$name)) {
|
|
20300
20505
|
form[control.$name] = control;
|
|
20301
20506
|
}
|
|
20302
20507
|
};
|
|
20303
20508
|
|
|
20509
|
+
/**
|
|
20510
|
+
* @ngdoc function
|
|
20511
|
+
* @name ng.directive:form.FormController#$removeControl
|
|
20512
|
+
* @methodOf ng.directive:form.FormController
|
|
20513
|
+
*
|
|
20514
|
+
* @description
|
|
20515
|
+
* Deregister a control from the form.
|
|
20516
|
+
*
|
|
20517
|
+
* Input elements using ngModelController do this automatically when they are destroyed.
|
|
20518
|
+
*/
|
|
20304
20519
|
form.$removeControl = function(control) {
|
|
20305
20520
|
if (control.$name && form[control.$name] === control) {
|
|
20306
20521
|
delete form[control.$name];
|
|
@@ -20310,6 +20525,16 @@ function FormController(element, attrs) {
|
|
|
20310
20525
|
});
|
|
20311
20526
|
};
|
|
20312
20527
|
|
|
20528
|
+
/**
|
|
20529
|
+
* @ngdoc function
|
|
20530
|
+
* @name ng.directive:form.FormController#$setValidity
|
|
20531
|
+
* @methodOf ng.directive:form.FormController
|
|
20532
|
+
*
|
|
20533
|
+
* @description
|
|
20534
|
+
* Sets the validity of a form control.
|
|
20535
|
+
*
|
|
20536
|
+
* This method will also propagate to parent forms.
|
|
20537
|
+
*/
|
|
20313
20538
|
form.$setValidity = function(validationToken, isValid, control) {
|
|
20314
20539
|
var queue = errors[validationToken];
|
|
20315
20540
|
|
|
@@ -20348,6 +20573,17 @@ function FormController(element, attrs) {
|
|
|
20348
20573
|
}
|
|
20349
20574
|
};
|
|
20350
20575
|
|
|
20576
|
+
/**
|
|
20577
|
+
* @ngdoc function
|
|
20578
|
+
* @name ng.directive:form.FormController#$setDirty
|
|
20579
|
+
* @methodOf ng.directive:form.FormController
|
|
20580
|
+
*
|
|
20581
|
+
* @description
|
|
20582
|
+
* Sets the form to a dirty state.
|
|
20583
|
+
*
|
|
20584
|
+
* This method can be called to add the 'ng-dirty' class and set the form to a dirty
|
|
20585
|
+
* state (ng-dirty class). This method will also propagate to parent forms.
|
|
20586
|
+
*/
|
|
20351
20587
|
form.$setDirty = function() {
|
|
20352
20588
|
element.removeClass(PRISTINE_CLASS).addClass(DIRTY_CLASS);
|
|
20353
20589
|
form.$dirty = true;
|
|
@@ -20524,7 +20760,7 @@ var formDirective = formDirectiveFactory();
|
|
|
20524
20760
|
var ngFormDirective = formDirectiveFactory(true);
|
|
20525
20761
|
|
|
20526
20762
|
var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;
|
|
20527
|
-
var EMAIL_REGEXP = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,
|
|
20763
|
+
var EMAIL_REGEXP = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/;
|
|
20528
20764
|
var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/;
|
|
20529
20765
|
|
|
20530
20766
|
var inputType = {
|
|
@@ -20635,9 +20871,9 @@ var inputType = {
|
|
|
20635
20871
|
<form name="myForm" ng-controller="Ctrl">
|
|
20636
20872
|
Number: <input type="number" name="input" ng-model="value"
|
|
20637
20873
|
min="0" max="99" required>
|
|
20638
|
-
<span class="error" ng-show="myForm.
|
|
20874
|
+
<span class="error" ng-show="myForm.input.$error.required">
|
|
20639
20875
|
Required!</span>
|
|
20640
|
-
<span class="error" ng-show="myForm.
|
|
20876
|
+
<span class="error" ng-show="myForm.input.$error.number">
|
|
20641
20877
|
Not valid number!</span>
|
|
20642
20878
|
<tt>value = {{value}}</tt><br/>
|
|
20643
20879
|
<tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
|
|
@@ -20758,6 +20994,8 @@ var inputType = {
|
|
|
20758
20994
|
* @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the
|
|
20759
20995
|
* RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for
|
|
20760
20996
|
* patterns defined as scope expressions.
|
|
20997
|
+
* @param {string=} ngChange Angular expression to be executed when input changes due to user
|
|
20998
|
+
* interaction with the input element.
|
|
20761
20999
|
*
|
|
20762
21000
|
* @example
|
|
20763
21001
|
<doc:example>
|
|
@@ -21316,12 +21554,25 @@ var VALID_CLASS = 'ng-valid',
|
|
|
21316
21554
|
*
|
|
21317
21555
|
* @property {string} $viewValue Actual string value in the view.
|
|
21318
21556
|
* @property {*} $modelValue The value in the model, that the control is bound to.
|
|
21319
|
-
* @property {Array.<Function>} $parsers
|
|
21320
|
-
|
|
21321
|
-
|
|
21322
|
-
|
|
21323
|
-
|
|
21324
|
-
|
|
21557
|
+
* @property {Array.<Function>} $parsers Array of functions to execute, as a pipeline, whenever
|
|
21558
|
+
the control reads value from the DOM. Each function is called, in turn, passing the value
|
|
21559
|
+
through to the next. Used to sanitize / convert the value as well as validation.
|
|
21560
|
+
|
|
21561
|
+
For validation, the parsers should update the validity state using
|
|
21562
|
+
{@link ng.directive:ngModel.NgModelController#$setValidity $setValidity()},
|
|
21563
|
+
and return `undefined` for invalid values.
|
|
21564
|
+
*
|
|
21565
|
+
* @property {Array.<Function>} $formatters Array of functions to execute, as a pipeline, whenever
|
|
21566
|
+
* the model value changes. Each function is called, in turn, passing the value through to the
|
|
21567
|
+
* next. Used to format / convert values for display in the control and validation.
|
|
21568
|
+
* <pre>
|
|
21569
|
+
* function formatter(value) {
|
|
21570
|
+
* if (value) {
|
|
21571
|
+
* return value.toUpperCase();
|
|
21572
|
+
* }
|
|
21573
|
+
* }
|
|
21574
|
+
* ngModel.$formatters.push(formatter);
|
|
21575
|
+
* </pre>
|
|
21325
21576
|
* @property {Object} $error An bject hash with all errors as keys.
|
|
21326
21577
|
*
|
|
21327
21578
|
* @property {boolean} $pristine True if user has not interacted with the control yet.
|
|
@@ -21336,6 +21587,10 @@ var VALID_CLASS = 'ng-valid',
|
|
|
21336
21587
|
* specifically does not contain any logic which deals with DOM rendering or listening to
|
|
21337
21588
|
* DOM events. The `NgModelController` is meant to be extended by other directives where, the
|
|
21338
21589
|
* directive provides DOM manipulation and the `NgModelController` provides the data-binding.
|
|
21590
|
+
* Note that you cannot use `NgModelController` in a directive with an isolated scope,
|
|
21591
|
+
* as, in that case, the `ng-model` value gets put into the isolated scope and does not get
|
|
21592
|
+
* propogated to the parent scope.
|
|
21593
|
+
*
|
|
21339
21594
|
*
|
|
21340
21595
|
* This example shows how to use `NgModelController` with a custom control to achieve
|
|
21341
21596
|
* data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)
|
|
@@ -21376,7 +21631,13 @@ var VALID_CLASS = 'ng-valid',
|
|
|
21376
21631
|
|
|
21377
21632
|
// Write data to the model
|
|
21378
21633
|
function read() {
|
|
21379
|
-
|
|
21634
|
+
var html = element.html();
|
|
21635
|
+
// When we clear the content editable the browser leaves a <br> behind
|
|
21636
|
+
// If strip-br attribute is provided then we strip this out
|
|
21637
|
+
if( attrs.stripBr && html == '<br>' ) {
|
|
21638
|
+
html = '';
|
|
21639
|
+
}
|
|
21640
|
+
ngModel.$setViewValue(html);
|
|
21380
21641
|
}
|
|
21381
21642
|
}
|
|
21382
21643
|
};
|
|
@@ -21386,6 +21647,7 @@ var VALID_CLASS = 'ng-valid',
|
|
|
21386
21647
|
<form name="myForm">
|
|
21387
21648
|
<div contenteditable
|
|
21388
21649
|
name="myWidget" ng-model="userContent"
|
|
21650
|
+
strip-br="true"
|
|
21389
21651
|
required>Change me!</div>
|
|
21390
21652
|
<span ng-show="myForm.myWidget.$error.required">Required!</span>
|
|
21391
21653
|
<hr>
|
|
@@ -21508,8 +21770,8 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
|
21508
21770
|
* For example {@link ng.directive:input input} or
|
|
21509
21771
|
* {@link ng.directive:select select} directives call it.
|
|
21510
21772
|
*
|
|
21511
|
-
* It internally calls all
|
|
21512
|
-
* calls all registered change listeners.
|
|
21773
|
+
* It internally calls all `$parsers` (including validators) and updates the `$modelValue` and the actual model path.
|
|
21774
|
+
* Lastly it calls all registered change listeners.
|
|
21513
21775
|
*
|
|
21514
21776
|
* @param {string} value Value from the view.
|
|
21515
21777
|
*/
|
|
@@ -21574,7 +21836,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
|
21574
21836
|
* @element input
|
|
21575
21837
|
*
|
|
21576
21838
|
* @description
|
|
21577
|
-
* Is directive that tells Angular to do two-way data binding. It works together with `input`,
|
|
21839
|
+
* Is a directive that tells Angular to do two-way data binding. It works together with `input`,
|
|
21578
21840
|
* `select`, `textarea`. You can easily write your own directives to use `ngModel` as well.
|
|
21579
21841
|
*
|
|
21580
21842
|
* `ngModel` is responsible for:
|
|
@@ -21586,6 +21848,10 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
|
21586
21848
|
* - setting related css class onto the element (`ng-valid`, `ng-invalid`, `ng-dirty`, `ng-pristine`),
|
|
21587
21849
|
* - register the control with parent {@link ng.directive:form form}.
|
|
21588
21850
|
*
|
|
21851
|
+
* Note: `ngModel` will try to bind to the property given by evaluating the expression on the
|
|
21852
|
+
* current scope. If the property doesn't already exist on this scope, it will be created
|
|
21853
|
+
* implicitly and added to the scope.
|
|
21854
|
+
*
|
|
21589
21855
|
* For basic examples, how to use `ngModel`, see:
|
|
21590
21856
|
*
|
|
21591
21857
|
* - {@link ng.directive:input input}
|
|
@@ -21726,8 +21992,9 @@ var requiredDirective = function() {
|
|
|
21726
21992
|
</script>
|
|
21727
21993
|
<form name="myForm" ng-controller="Ctrl">
|
|
21728
21994
|
List: <input name="namesInput" ng-model="names" ng-list required>
|
|
21729
|
-
<span class="error" ng-show="myForm.
|
|
21995
|
+
<span class="error" ng-show="myForm.namesInput.$error.required">
|
|
21730
21996
|
Required!</span>
|
|
21997
|
+
<br>
|
|
21731
21998
|
<tt>names = {{names}}</tt><br/>
|
|
21732
21999
|
<tt>myForm.namesInput.$valid = {{myForm.namesInput.$valid}}</tt><br/>
|
|
21733
22000
|
<tt>myForm.namesInput.$error = {{myForm.namesInput.$error}}</tt><br/>
|
|
@@ -21739,12 +22006,14 @@ var requiredDirective = function() {
|
|
|
21739
22006
|
it('should initialize to model', function() {
|
|
21740
22007
|
expect(binding('names')).toEqual('["igor","misko","vojta"]');
|
|
21741
22008
|
expect(binding('myForm.namesInput.$valid')).toEqual('true');
|
|
22009
|
+
expect(element('span.error').css('display')).toBe('none');
|
|
21742
22010
|
});
|
|
21743
22011
|
|
|
21744
22012
|
it('should be invalid if empty', function() {
|
|
21745
22013
|
input('names').enter('');
|
|
21746
22014
|
expect(binding('names')).toEqual('[]');
|
|
21747
22015
|
expect(binding('myForm.namesInput.$valid')).toEqual('false');
|
|
22016
|
+
expect(element('span.error').css('display')).not().toBe('none');
|
|
21748
22017
|
});
|
|
21749
22018
|
</doc:scenario>
|
|
21750
22019
|
</doc:example>
|
|
@@ -21794,7 +22063,7 @@ var ngValueDirective = function() {
|
|
|
21794
22063
|
} else {
|
|
21795
22064
|
return function(scope, elm, attr) {
|
|
21796
22065
|
scope.$watch(attr.ngValue, function valueWatchAction(value) {
|
|
21797
|
-
attr.$set('value', value
|
|
22066
|
+
attr.$set('value', value);
|
|
21798
22067
|
});
|
|
21799
22068
|
};
|
|
21800
22069
|
}
|
|
@@ -21814,10 +22083,9 @@ var ngValueDirective = function() {
|
|
|
21814
22083
|
* Typically, you don't use `ngBind` directly, but instead you use the double curly markup like
|
|
21815
22084
|
* `{{ expression }}` which is similar but less verbose.
|
|
21816
22085
|
*
|
|
21817
|
-
*
|
|
21818
|
-
*
|
|
21819
|
-
*
|
|
21820
|
-
* bindings invisible to the user while the page is loading.
|
|
22086
|
+
* It is preferrable to use `ngBind` instead of `{{ expression }}` when a template is momentarily
|
|
22087
|
+
* displayed by the browser in its raw state before Angular compiles it. Since `ngBind` is an
|
|
22088
|
+
* element attribute, it makes the bindings invisible to the user while the page is loading.
|
|
21821
22089
|
*
|
|
21822
22090
|
* An alternative solution to this problem would be using the
|
|
21823
22091
|
* {@link ng.directive:ngCloak ngCloak} directive.
|
|
@@ -21863,10 +22131,11 @@ var ngBindDirective = ngDirective(function(scope, element, attr) {
|
|
|
21863
22131
|
*
|
|
21864
22132
|
* @description
|
|
21865
22133
|
* The `ngBindTemplate` directive specifies that the element
|
|
21866
|
-
* text should be replaced with the
|
|
21867
|
-
*
|
|
21868
|
-
*
|
|
21869
|
-
*
|
|
22134
|
+
* text content should be replaced with the interpolation of the template
|
|
22135
|
+
* in the `ngBindTemplate` attribute.
|
|
22136
|
+
* Unlike `ngBind`, the `ngBindTemplate` can contain multiple `{{` `}}`
|
|
22137
|
+
* expressions. This directive is needed since some HTML elements
|
|
22138
|
+
* (such as TITLE and OPTION) cannot contain SPAN elements.
|
|
21870
22139
|
*
|
|
21871
22140
|
* @element ANY
|
|
21872
22141
|
* @param {string} ngBindTemplate template of form
|
|
@@ -22002,8 +22271,8 @@ function classDirective(name, selector) {
|
|
|
22002
22271
|
* @name ng.directive:ngClass
|
|
22003
22272
|
*
|
|
22004
22273
|
* @description
|
|
22005
|
-
* The `ngClass` allows you to set CSS
|
|
22006
|
-
* expression that represents all classes to be added.
|
|
22274
|
+
* The `ngClass` allows you to set CSS classes on HTML an element, dynamically, by databinding
|
|
22275
|
+
* an expression that represents all classes to be added.
|
|
22007
22276
|
*
|
|
22008
22277
|
* The directive won't add duplicate classes if a particular class was already set.
|
|
22009
22278
|
*
|
|
@@ -22013,7 +22282,9 @@ function classDirective(name, selector) {
|
|
|
22013
22282
|
* @element ANY
|
|
22014
22283
|
* @param {expression} ngClass {@link guide/expression Expression} to eval. The result
|
|
22015
22284
|
* of the evaluation can be a string representing space delimited class
|
|
22016
|
-
* names, an array, or a map of class names to boolean values.
|
|
22285
|
+
* names, an array, or a map of class names to boolean values. In the case of a map, the
|
|
22286
|
+
* names of the properties whose values are truthy will be added as css classes to the
|
|
22287
|
+
* element.
|
|
22017
22288
|
*
|
|
22018
22289
|
* @example
|
|
22019
22290
|
<example>
|
|
@@ -22159,7 +22430,7 @@ var ngClassEvenDirective = classDirective('Even', 1);
|
|
|
22159
22430
|
*
|
|
22160
22431
|
* <pre>
|
|
22161
22432
|
* [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
|
|
22162
|
-
* display: none;
|
|
22433
|
+
* display: none !important;
|
|
22163
22434
|
* }
|
|
22164
22435
|
* </pre>
|
|
22165
22436
|
*
|
|
@@ -22227,11 +22498,9 @@ var ngCloakDirective = ngDirective({
|
|
|
22227
22498
|
*
|
|
22228
22499
|
* @example
|
|
22229
22500
|
* Here is a simple form for editing user contact information. Adding, removing, clearing, and
|
|
22230
|
-
* greeting are methods declared on the controller (see source tab). These methods can
|
|
22231
|
-
* easily be called from the angular markup. Notice that
|
|
22232
|
-
*
|
|
22233
|
-
* notice that any changes to the data are automatically reflected in the View without the need
|
|
22234
|
-
* for a manual update.
|
|
22501
|
+
* greeting are methods declared on the $scope by the controller (see source tab). These methods can
|
|
22502
|
+
* easily be called from the angular markup. Notice that any changes to the data are automatically
|
|
22503
|
+
* reflected in the View without the need for a manual update.
|
|
22235
22504
|
<doc:example>
|
|
22236
22505
|
<doc:source>
|
|
22237
22506
|
<script>
|
|
@@ -22382,7 +22651,7 @@ var ngCspDirective = ['$sniffer', function($sniffer) {
|
|
|
22382
22651
|
*/
|
|
22383
22652
|
var ngEventDirectives = {};
|
|
22384
22653
|
forEach(
|
|
22385
|
-
'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave'.split(' '),
|
|
22654
|
+
'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave submit'.split(' '),
|
|
22386
22655
|
function(name) {
|
|
22387
22656
|
var directiveName = directiveNormalize('ng-' + name);
|
|
22388
22657
|
ngEventDirectives[directiveName] = ['$parse', function($parse) {
|
|
@@ -22509,6 +22778,54 @@ forEach(
|
|
|
22509
22778
|
*/
|
|
22510
22779
|
|
|
22511
22780
|
|
|
22781
|
+
/**
|
|
22782
|
+
* @ngdoc directive
|
|
22783
|
+
* @name ng.directive:ngKeydown
|
|
22784
|
+
*
|
|
22785
|
+
* @description
|
|
22786
|
+
* Specify custom behavior on keydown event.
|
|
22787
|
+
*
|
|
22788
|
+
* @element ANY
|
|
22789
|
+
* @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon
|
|
22790
|
+
* keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
|
|
22791
|
+
*
|
|
22792
|
+
* @example
|
|
22793
|
+
* See {@link ng.directive:ngClick ngClick}
|
|
22794
|
+
*/
|
|
22795
|
+
|
|
22796
|
+
|
|
22797
|
+
/**
|
|
22798
|
+
* @ngdoc directive
|
|
22799
|
+
* @name ng.directive:ngKeyup
|
|
22800
|
+
*
|
|
22801
|
+
* @description
|
|
22802
|
+
* Specify custom behavior on keyup event.
|
|
22803
|
+
*
|
|
22804
|
+
* @element ANY
|
|
22805
|
+
* @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon
|
|
22806
|
+
* keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
|
|
22807
|
+
*
|
|
22808
|
+
* @example
|
|
22809
|
+
* See {@link ng.directive:ngClick ngClick}
|
|
22810
|
+
*/
|
|
22811
|
+
|
|
22812
|
+
|
|
22813
|
+
/**
|
|
22814
|
+
* @ngdoc directive
|
|
22815
|
+
* @name ng.directive:ngKeypress
|
|
22816
|
+
*
|
|
22817
|
+
* @description
|
|
22818
|
+
* Specify custom behavior on keypress event.
|
|
22819
|
+
*
|
|
22820
|
+
* @element ANY
|
|
22821
|
+
* @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
|
|
22822
|
+
* keypress. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
|
|
22823
|
+
*
|
|
22824
|
+
* @example
|
|
22825
|
+
* See {@link ng.directive:ngClick ngClick}
|
|
22826
|
+
*/
|
|
22827
|
+
|
|
22828
|
+
|
|
22512
22829
|
/**
|
|
22513
22830
|
* @ngdoc directive
|
|
22514
22831
|
* @name ng.directive:ngSubmit
|
|
@@ -22517,10 +22834,11 @@ forEach(
|
|
|
22517
22834
|
* Enables binding angular expressions to onsubmit events.
|
|
22518
22835
|
*
|
|
22519
22836
|
* Additionally it prevents the default action (which for form means sending the request to the
|
|
22520
|
-
* server and reloading the current page)
|
|
22837
|
+
* server and reloading the current page) **but only if the form does not contain an `action`
|
|
22838
|
+
* attribute**.
|
|
22521
22839
|
*
|
|
22522
22840
|
* @element form
|
|
22523
|
-
* @param {expression} ngSubmit {@link guide/expression Expression} to eval.
|
|
22841
|
+
* @param {expression} ngSubmit {@link guide/expression Expression} to eval. (Event object is available as `$event`)
|
|
22524
22842
|
*
|
|
22525
22843
|
* @example
|
|
22526
22844
|
<doc:example>
|
|
@@ -22560,11 +22878,6 @@ forEach(
|
|
|
22560
22878
|
</doc:scenario>
|
|
22561
22879
|
</doc:example>
|
|
22562
22880
|
*/
|
|
22563
|
-
var ngSubmitDirective = ngDirective(function(scope, element, attrs) {
|
|
22564
|
-
element.bind('submit', function() {
|
|
22565
|
-
scope.$apply(attrs.ngSubmit);
|
|
22566
|
-
});
|
|
22567
|
-
});
|
|
22568
22881
|
|
|
22569
22882
|
/**
|
|
22570
22883
|
* @ngdoc directive
|
|
@@ -22772,7 +23085,7 @@ var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
|
|
|
22772
23085
|
* @description
|
|
22773
23086
|
* # Overview
|
|
22774
23087
|
* `ngPluralize` is a directive that displays messages according to en-US localization rules.
|
|
22775
|
-
* These rules are bundled with angular.js
|
|
23088
|
+
* These rules are bundled with angular.js, but can be overridden
|
|
22776
23089
|
* (see {@link guide/i18n Angular i18n} dev guide). You configure ngPluralize directive
|
|
22777
23090
|
* by specifying the mappings between
|
|
22778
23091
|
* {@link http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
|
|
@@ -22785,8 +23098,8 @@ var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
|
|
|
22785
23098
|
*
|
|
22786
23099
|
* While a pural category may match many numbers (for example, in en-US locale, "other" can match
|
|
22787
23100
|
* any number that is not 1), an explicit number rule can only match one number. For example, the
|
|
22788
|
-
* explicit number rule for "3" matches the number 3.
|
|
22789
|
-
* and explicit number rules throughout
|
|
23101
|
+
* explicit number rule for "3" matches the number 3. There are examples of plural categories
|
|
23102
|
+
* and explicit number rules throughout the rest of this documentation.
|
|
22790
23103
|
*
|
|
22791
23104
|
* # Configuring ngPluralize
|
|
22792
23105
|
* You configure ngPluralize by providing 2 attributes: `count` and `when`.
|
|
@@ -22796,8 +23109,7 @@ var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
|
|
|
22796
23109
|
* Angular expression}; these are evaluated on the current scope for its bound value.
|
|
22797
23110
|
*
|
|
22798
23111
|
* The `when` attribute specifies the mappings between plural categories and the actual
|
|
22799
|
-
* string to be displayed. The value of the attribute should be a JSON object
|
|
22800
|
-
* can interpret it correctly.
|
|
23112
|
+
* string to be displayed. The value of the attribute should be a JSON object.
|
|
22801
23113
|
*
|
|
22802
23114
|
* The following example shows how to configure ngPluralize:
|
|
22803
23115
|
*
|
|
@@ -23421,8 +23733,7 @@ var ngSwitchDefaultDirective = ngDirective({
|
|
|
23421
23733
|
return {
|
|
23422
23734
|
restrict: 'E',
|
|
23423
23735
|
transclude: true,
|
|
23424
|
-
scope: '
|
|
23425
|
-
locals: { title:'bind' },
|
|
23736
|
+
scope: { title:'@' },
|
|
23426
23737
|
template: '<div style="border: 1px solid black;">' +
|
|
23427
23738
|
'<div style="background-color: gray">{{title}}</div>' +
|
|
23428
23739
|
'<div ng-transclude></div>' +
|
|
@@ -23677,8 +23988,8 @@ var scriptDirective = ['$templateCache', function($templateCache) {
|
|
|
23677
23988
|
* Optionally `ngOptions` attribute can be used to dynamically generate a list of `<option>`
|
|
23678
23989
|
* elements for a `<select>` element using an array or an object obtained by evaluating the
|
|
23679
23990
|
* `ngOptions` expression.
|
|
23680
|
-
|
|
23681
|
-
* When an item in the select menu is
|
|
23991
|
+
*
|
|
23992
|
+
* When an item in the `<select>` menu is selected, the value of array element or object property
|
|
23682
23993
|
* represented by the selected option will be bound to the model identified by the `ngModel`
|
|
23683
23994
|
* directive of the parent select element.
|
|
23684
23995
|
*
|
|
@@ -26306,5 +26617,5 @@ if (config.autotest) {
|
|
|
26306
26617
|
}
|
|
26307
26618
|
})(window, document);
|
|
26308
26619
|
|
|
26309
|
-
angular.element(document).find('head').append('<style type="text/css">@charset "UTF-8";\n\n[ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],\n.ng-cloak, .x-ng-cloak {\n display: none;\n}\n\nng\\:form {\n display: block;\n}\n</style>');
|
|
26620
|
+
angular.element(document).find('head').append('<style type="text/css">@charset "UTF-8";\n\n[ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],\n.ng-cloak, .x-ng-cloak {\n display: none !important;\n}\n\nng\\:form {\n display: block;\n}\n</style>');
|
|
26310
26621
|
angular.element(document).find('head').append('<style type="text/css">@charset "UTF-8";\n/* CSS Document */\n\n/** Structure */\nbody {\n font-family: Arial, sans-serif;\n margin: 0;\n font-size: 14px;\n}\n\n#system-error {\n font-size: 1.5em;\n text-align: center;\n}\n\n#json, #xml {\n display: none;\n}\n\n#header {\n position: fixed;\n width: 100%;\n}\n\n#specs {\n padding-top: 50px;\n}\n\n#header .angular {\n font-family: Courier New, monospace;\n font-weight: bold;\n}\n\n#header h1 {\n font-weight: normal;\n float: left;\n font-size: 30px;\n line-height: 30px;\n margin: 0;\n padding: 10px 10px;\n height: 30px;\n}\n\n#application h2,\n#specs h2 {\n margin: 0;\n padding: 0.5em;\n font-size: 1.1em;\n}\n\n#status-legend {\n margin-top: 10px;\n margin-right: 10px;\n}\n\n#header,\n#application,\n.test-info,\n.test-actions li {\n overflow: hidden;\n}\n\n#application {\n margin: 10px;\n}\n\n#application iframe {\n width: 100%;\n height: 758px;\n}\n\n#application .popout {\n float: right;\n}\n\n#application iframe {\n border: none;\n}\n\n.tests li,\n.test-actions li,\n.test-it li,\n.test-it ol,\n.status-display {\n list-style-type: none;\n}\n\n.tests,\n.test-it ol,\n.status-display {\n margin: 0;\n padding: 0;\n}\n\n.test-info {\n margin-left: 1em;\n margin-top: 0.5em;\n border-radius: 8px 0 0 8px;\n -webkit-border-radius: 8px 0 0 8px;\n -moz-border-radius: 8px 0 0 8px;\n cursor: pointer;\n}\n\n.test-info:hover .test-name {\n text-decoration: underline;\n}\n\n.test-info .closed:before {\n content: \'\\25b8\\00A0\';\n}\n\n.test-info .open:before {\n content: \'\\25be\\00A0\';\n font-weight: bold;\n}\n\n.test-it ol {\n margin-left: 2.5em;\n}\n\n.status-display,\n.status-display li {\n float: right;\n}\n\n.status-display li {\n padding: 5px 10px;\n}\n\n.timer-result,\n.test-title {\n display: inline-block;\n margin: 0;\n padding: 4px;\n}\n\n.test-actions .test-title,\n.test-actions .test-result {\n display: table-cell;\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n\n.test-actions {\n display: table;\n}\n\n.test-actions li {\n display: table-row;\n}\n\n.timer-result {\n width: 4em;\n padding: 0 10px;\n text-align: right;\n font-family: monospace;\n}\n\n.test-it pre,\n.test-actions pre {\n clear: left;\n color: black;\n margin-left: 6em;\n}\n\n.test-describe {\n padding-bottom: 0.5em;\n}\n\n.test-describe .test-describe {\n margin: 5px 5px 10px 2em;\n}\n\n.test-actions .status-pending .test-title:before {\n content: \'\\00bb\\00A0\';\n}\n\n.scrollpane {\n max-height: 20em;\n overflow: auto;\n}\n\n/** Colors */\n\n#header {\n background-color: #F2C200;\n}\n\n#specs h2 {\n border-top: 2px solid #BABAD1;\n}\n\n#specs h2,\n#application h2 {\n background-color: #efefef;\n}\n\n#application {\n border: 1px solid #BABAD1;\n}\n\n.test-describe .test-describe {\n border-left: 1px solid #BABAD1;\n border-right: 1px solid #BABAD1;\n border-bottom: 1px solid #BABAD1;\n}\n\n.status-display {\n border: 1px solid #777;\n}\n\n.status-display .status-pending,\n.status-pending .test-info {\n background-color: #F9EEBC;\n}\n\n.status-display .status-success,\n.status-success .test-info {\n background-color: #B1D7A1;\n}\n\n.status-display .status-failure,\n.status-failure .test-info {\n background-color: #FF8286;\n}\n\n.status-display .status-error,\n.status-error .test-info {\n background-color: black;\n color: white;\n}\n\n.test-actions .status-success .test-title {\n color: #30B30A;\n}\n\n.test-actions .status-failure .test-title {\n color: #DF0000;\n}\n\n.test-actions .status-error .test-title {\n color: black;\n}\n\n.test-actions .timer-result {\n color: #888;\n}\n</style>');
|