Ninja Forms – The Easy and Powerful Forms Builder - Version 3.5.2

Version Description

(24 March 2021) =

Changes:

  • Removed some legacy settings that were no longer required for new installs.

Bugs:

  • Resolved an issue that was causing errors when Array values were used in API requests.
  • The Ninja Forms block should now fill the entire width of the block editor.
  • Fixed an error that was causing a depreciated method warning when using the classic editor.
  • Forms should now display again in Internet Explorer 11.
  • Resolved an issue that was causing the Ninja Forms dashboard to crash if there was an issue with wp_cron.
  • Fixed some PHP warnings related to our checkbox list field.

=

Download this release

Release Info

Developer krmoorhouse
Plugin Icon 128x128 Ninja Forms – The Easy and Powerful Forms Builder
Version 3.5.2
Comparing to
See all releases

Code changes from version 3.5.1 to 3.5.2

assets/css/builder.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["normalize.scss","header.scss","main.scss","builder.scss","main-fields.scss","main-settings.scss","item-controls.scss","builder-fields.scss","fields-preview/main.scss","fields-preview/label-position/above.scss","fields-preview/label-position/below.scss","fields-preview/label-position/hidden.scss","fields-preview/label-position/left.scss","fields-preview/label-position/right.scss","drawer.scss","drawer-settings.scss","drawer-add.scss","drawer-changes.scss","errors.scss","add-new.scss","toggle.scss","dropdown.scss","tables.scss","scrollbar.scss","drag-drop.scss","loading.scss","tooltip.scss","merge-tags-tooltip.scss","editor.scss","color-picker.scss","media-queries.scss","rtl.scss"],"names":[],"mappings":"AAAA,KACI,gBAAgB,AAChB,WAAW,AACX,WAAW,AACX,MAAO,CACV,AACD,mCACI,qBAAsB,CACzB,AACD,iBACI,QAAS,CA6BZ,AA9BD,2DAIQ,YAAa,CAChB,AALL,yBAOQ,SAAS,AACT,YAAa,CAChB,AATL,oCAYY,cAAe,CAClB,AAbT,8BAiBY,qBAA8B,CACjC,AAlBT,mDAoBY,kBAAmB,CACtB,AArBT,6CA0BgB,iBAAkB,CACrB,AAIb,aACI,iBAAkB,CACrB,AACD,YACI,gBAAgB,AAChB,kBAAkB,AAClB,gBAAgB,AAChB,iBAAiB,AACjB,eAAe,AACf,MAAM,AACN,SAAS,AACT,OAAO,AACP,QAAQ,AACR,iBAAiB,AACjB,oCAAwC,CAC3C,AAED,mCACI,kBAAkB,AAClB,kBAAmB,CACtB,AC5DD,WAEI,aAAa,AACb,2BAA4B,CA4E/B,AA/ED,oBAKQ,6DAAiE,AACjE,WAAW,AACX,WAAW,AACX,YAAY,AAKZ,YAAY,AACZ,0BAA0B,AAC1B,wBAAyB,CAC5B,AAPG,oJATR,oBAUY,gEAAoE,AACpE,yBAA0B,CAKjC,CAAA,AAhBL,cAkBQ,qBAAqB,AACrB,QAAS,CAmCZ,AAtDL,iBAqBY,UAAW,CA2Bd,AAhDT,gCAuBgB,YAAa,CAChB,AAxBb,mBA0BgB,cAAc,AACd,cAAc,AACd,iBAAiB,AACjB,mBAAmB,AACnB,oBAAqB,CAYxB,AA1Cb,0BAgCoB,+BAAgC,CACnC,AAjCjB,2BAmCoB,WAAW,AACX,wBAAyB,CAK5B,AAzCjB,sCAsCwB,qBAAqB,AACrB,gBAAiB,CACpB,AAxCrB,+BA6CoB,aAAc,CACjB,AA9CjB,oBAkDY,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AArDT,8BAwDQ,WAAY,CACf,AAzDL,sBA2DQ,YAAY,AACZ,kBAAkB,AAClB,aAAc,CAIjB,AAjEL,iCA+DY,cAAe,CAClB,AAhET,2BAmEQ,YAAY,AACZ,kBAAkB,AAClB,aAAc,CAIjB,AAzEL,sCAuEY,cAAe,CAClB,AAxET,iBA2EQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAEL,eACI,WAAY,CAMf,AAPD,qBAGQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAEL,mBACI,YAAY,AACZ,SAAU,CAYb,AAdD,sBAIQ,qBAAqB,AACrB,SAAS,AACT,eAAe,AACf,2BACJ,CAAC,AARL,yBAUQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAEL,yCAGQ,WAAY,CACf,AAEL,sBAEQ,aAAc,CACjB,AChHL,SACI,sBAAsB,AAEtB,WAAW,AACX,kBAAkB,AAClB,UAAU,AACV,cAAc,AACd,mBAAmB,AACnB,SAAS,AACT,OAAO,AACP,iCAAiC,AACjC,yBAA0B,CAI7B,AAfD,+BAaQ,WAAY,CACf,AAEL,cACI,WAAW,AACX,0BAA2B,CAC9B,AACD,iCAEI,cAAc,AACd,gBAAgB,AAChB,yBAAA,AAAiB,qBAAjB,AAAiB,iBAAA,AACjB,eAAe,AACf,iBAAkB,CACrB,AACD,2BAGQ,WAAY,CACf,AAJL,mBAMQ,oBAAqB,CACxB,AAPL,sBASQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAGL,oCACI,0BAA6B,CAChC,AAED,2CAGI,kBAAkB,AAClB,MAAM,AACN,WAAW,AACX,YAAa,CAchB,AApBD,mQAUQ,WAAW,AACX,eAAe,AACf,kBAAkB,AAClB,QAAQ,AACR,0BAA2B,CAK9B,AAnBL,uSAgBY,cC9DO,AD+DP,cAAe,CAClB,AAGT,qBACI,OAAO,AACP,gBAAiB,CACpB,AACD,sBACI,QAAQ,AACR,iBAAkB,CACrB,AE3ED,iBACI,cAAe,CAWlB,AAZD,oBAGQ,eAAe,AACf,gBAAiB,CACpB,AALL,mBAOQ,cAAe,CAClB,AARL,mBAUQ,oBAAqB,CACxB,AAGL,gBACI,qBAAqB,AACrB,iBAAiB,AACjB,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,SAAU,CAIb,AAHG,kCACI,SAAU,CACb,AASL,cACI,oBAAqB,CA4BxB,AA7BD,mCAGQ,mBAAmB,AACnB,cAAc,AACd,iBAAiB,AACjB,aAAa,AACb,qBAAqB,AACrB,qEAAuE,CAS1E,AAjBL,sCAUY,gBAAgB,AAChB,eAAgB,CACnB,AAZT,qCAcY,eAAe,AACf,QAAS,CACZ,AAhBT,yCAoBY,gBAAgB,AAChB,4BDpDO,ACqDP,cDrDO,ACsDP,qEAAuE,CAC1E,AAEL,gCACI,SAAU,CACb,AAEL,0CACI,gCAEQ,UAAW,CACd,CAAA,AClET,iBACI,eAAe,AACf,WAAW,AACX,mBAAmB,AACnB,aAAa,AACb,YAAa,CAsBhB,AA3BD,uBAOQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAVL,sBAYQ,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,mBAAmB,AACnB,YAAY,AACZ,YAAY,AACZ,kBAAkB,AAClB,qBAAsB,CACzB,AApBL,6BAuBY,yBFvBU,AEwBV,eAAiB,CACpB,ACzBT,kBACI,YAAY,AACZ,WAAW,AACX,YAAY,AACZ,SAAS,AACT,kBAAkB,AAClB,QAAQ,AACR,UAAW,CAwDd,AA/DD,mCASQ,kBAAkB,AAClB,SAAS,AACT,UAAU,AACV,kBAAkB,AAClB,WAAW,AACX,YAAY,AACZ,kBAAkB,AAClB,QAAQ,AACR,wBAAyB,CA2B5B,AA5CL,qCAmBY,gBAAgB,AAChB,sBAAsB,AACtB,mBAAmB,AACnB,cHrBO,AGsBP,cAAc,AACd,qBAAqB,AACrB,YAAY,AACZ,kBAAkB,AAClB,UAAW,CAMd,AAjCT,2CA6BgB,gBAAgB,AAChB,yBH7BG,AG8BH,aH9BG,CG+BN,AAhCb,uCAmCY,eAAe,AACf,iBAAiB,AACjB,iBAAkB,CACrB,AAtCT,gDAwCY,YAAY,AACZ,mBAAmB,AACnB,YAAa,CAChB,AA3CT,0BA+CY,mBH9CO,AG+CP,UAAW,CACd,AAjDT,2CAmDY,mBAAmB,AACnB,YAAY,AACZ,WAAW,AACX,wBAAyB,CAC5B,AAvDT,wCAyDY,mBAAmB,AACnB,YAAY,AACZ,WAAW,AACX,wBAAyB,CAC5B,AAGT,oCAEQ,WAAY,CACf,AAEL,6BACI,YAAa,CAChB,ACvED,oBACI,wBAAyB,CAC5B,AAED,gBACI,0BAA2B,CAC9B,AAED,sGAGI,WAAW,AACX,eAAe,AACf,mBAAmB,AACnB,sBAAsB,AACtB,aAAa,AACb,SAAS,AACT,aAAc,CACjB,AACD,qCACI,qBAAqB,CACxB,AAMD,yGAKI,aAAa,AACb,iBAAkB,CAIrB,AAED,+EAEI,YAAY,AACZ,UAAW,CACd,AAED,mEACI,2BAA2B,AAC3B,mBAAmB,AACnB,eAAgB,CACnB,AAED,uBACI,SAAS,AACT,oBAAqB,CACxB,AACD,0BACI,oBAAA,AAAa,aAAA,AACb,kBAAmB,CACtB,AACD,2FAEI,aAAa,AACb,eAAe,AACf,gBAAiB,CAKpB,AATD,mGAOQ,cAAe,CAClB,AAGL,eACI,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,WAAW,AACX,eAAe,AACf,mBAAmB,AACnB,kBAAkB,AAClB,iBAAkB,CA6CrB,AArDD,sBAyBQ,mCAAmC,AACnC,aAAc,CAuBjB,AAjDL,wCA4BY,eAAmB,CAoBtB,AAhDT,0CA8BgB,gBAAgB,AAChB,aJrGM,CIyGT,AAnCb,gDAiCoB,iBAAkB,CACrB,AAlCjB,mHAsCgB,YAAa,CAChB,AAvCb,yDAyCgB,cAAe,CAClB,AA1Cb,iEA6CoB,iBACJ,CAAC,AA9CjB,oBAmDQ,eAAmB,CACtB,AAGL,eACI,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,WAAW,AACX,oBAAoB,AACpB,kBAAkB,AAClB,iBAAkB,CAoDrB,AA3DD,iCAUQ,WAAY,CACf,AAXL,+BAaQ,wBAA0B,CAC7B,AAdL,8BAgBQ,kBAAkB,AAClB,mBAAmB,AACnB,kBAAkB,AAClB,YAAY,AACZ,wBAAwB,AACxB,kBAAkB,AAClB,MAAM,AACN,OAAO,AACP,OAAQ,CAEX,AA1BL,wBA4BQ,qBJzJc,AI0Jd,aJ1Jc,CIuLjB,AA1DL,mDAiCgB,uBAAwB,CAC3B,AAlCb,uCAqCY,YAAY,AACZ,mBAAmB,AACnB,0BAA0B,AAC1B,kBAAkB,AAClB,MAAM,AACN,OAAO,AACP,QAAQ,AACR,wBAAyB,CAa5B,AAzDT,oDA8CgB,eAAgB,CACnB,AA/Cb,kDAiDgB,eAAgB,CACnB,AAlDb,yDAoDgB,UAAW,CAId,AAxDb,yEAsDoB,sBAAwB,CAC3B,ACpLjB,kBACI,SAAU,CACb,AAED,oBACI,oBAAuB,CAC1B,AAED,+GAGI,WAAW,AACX,eAAe,AACf,mBAAmB,AACnB,YAAY,AACZ,aAAa,AACb,SAAS,AACT,aAAc,CACjB,AACD,wBACI,SAAU,CACb,AAED,yGAGI,WAAW,AACX,YAAY,AACZ,kBAAkB,AAClB,kBAAkB,AAClB,gBAAgB,AAChB,SAAS,AACT,cAAc,AACd,gBAAiB,AACjB,wBAAyB,CAC5B,AAED,eACI,6BAA6B,AAC7B,4BAA6B,CAahC,AAfD,qBAKQ,iBAAkB,CACrB,AANL,iCASQ,YAAa,CAChB,AAVL,uCAaQ,aAAc,CACjB,AAGL,oCACI,gBAAiB,AACjB,uBAAwB,CAC3B,AAED,+CACI,yBAAyB,AACzB,6BAA6B,AAC7B,6BAA8B,CACjC,AAED,iHAEI,kCAAmC,CACtC,AAED,iLAIQ,iBAAkB,CACrB,AALL,4MAOQ,yBAAyB,AACzB,gBAAgB,AAChB,wBAAA,AAAgB,gBAAA,AAChB,cAAe,CAClB,AAXL,mMAaQ,iBAAkB,CACrB,AAdL,wNAgBQ,cAAc,AACd,kBAAkB,AAClB,eAAe,AACf,iBAAiB,AACjB,SAAS,AACT,eAAe,AACf,aAAa,AACb,YAAY,AACZ,MAAM,AACN,QAAQ,AACR,OAAO,AACP,SAAU,CACb,AA5BL,0OA8BQ,gBAAgB,AAChB,wBAAwB,AACxB,eAAe,AACf,kBAAkB,AAClB,WAAW,AACX,SAAS,AACT,YAAY,AACZ,gBAAiB,CACpB,AAGL,yCACI,eAAgB,CACnB,AAED,4CACI,oBAAqB,CACxB,AACD,mDACI,gBAAgB,AAChB,wBAAwB,AACxB,eAAe,AACf,kBAAkB,AAClB,SAAS,AACT,UAAU,AACV,UAAU,AACV,UAAY,CACf,AAED,qCACI,iBAAkB,CACrB,AACD,uDACI,gBAAgB,AAChB,wBAAwB,AACxB,eAAe,AACf,kBAAkB,AAClB,SAAS,AACT,UAAU,AACV,UAAY,CACf,AAED,kCACI,iBAAkB,CACrB,AACD,6CACI,2BAA8B,CACjC,AACD,oDACI,kBAAkB,AAClB,WAAW,AACX,YAAY,AACZ,WAAW,AACX,kBAAkB,AAClB,SAAS,AACT,QAAQ,AACR,UAAU,AACV,qBAAuB,CAC1B,AC9JD,oDACI,aAAc,CACjB,ACFD,oDACI,oBAAA,AAAa,aAAA,AACb,0BAAA,AAAsB,qBAAA,CAWzB,AAbD,+EAKQ,iBAAA,AAAQ,OAAA,CACX,AANL,qFAQQ,iBAAA,AAAQ,OAAA,CACX,AATL,iFAWQ,iBAAA,AAAQ,OAAA,CACX,ACZL,qDACI,oBAAA,AAAa,aAAA,AACb,0BAAA,AAAsB,qBAAA,CAWzB,AAbD,gFAKQ,YAAa,CAChB,AANL,sFAQQ,iBAAA,AAAQ,OAAA,CACX,AATL,kFAWQ,iBAAA,AAAQ,OAAA,CACX,ACZL,mDACI,oBAAA,AAAa,aAAA,AACb,mBAAA,AAAe,eAAA,AACf,uBAAA,AAAmB,kBAAA,CAyBtB,AA5BD,8EAMQ,iBAAA,AAAQ,QAAA,AACR,UAAU,AACV,iBAAiB,AACjB,gBAAgB,AAChB,mBAAmB,AACnB,oBAAqB,CAKxB,AAhBL,8FAcY,4BAA8B,CACjC,AAfT,gFAmBQ,iBAAA,AAAQ,QAAA,AACR,SAAU,CACb,AArBL,oFAwBQ,iBAAA,AAAQ,QAAA,AACR,WAAW,AACX,eAAgB,CACnB,AAOL,sGAEQ,iBAAA,AAAQ,QAAA,AACR,UAAU,AACV,eAAe,AACf,iBAAiB,AACjB,iBAAkB,CACrB,AAPL,wGAUQ,iBAAA,AAAQ,QAAA,AACR,SAAU,CACb,AAZL,4GAeQ,iBAAA,AAAQ,QAAA,AACR,WAAW,AACX,eAAgB,CACnB,ACpDL,oDACI,oBAAA,AAAa,aAAA,AACb,mBAAA,AAAe,eAAA,AACf,uBAAA,AAAmB,kBAAA,CAkBtB,AArBD,+EAMQ,iBAAA,AAAQ,QAAA,AACR,UAAU,AACV,eAAgB,CACnB,AATL,iFAYQ,iBAAA,AAAQ,QAAA,AACR,SAAU,CACb,AAdL,qFAiBQ,iBAAA,AAAQ,QAAA,AACR,WAAW,AACX,eAAgB,CACnB,AAOL,4EACI,qBAAA,AAAuB,sBAAA,CAwB1B,AAzBD,uGAIQ,iBAAA,AAAQ,QAAA,AACR,WAAW,AACX,gBAAgB,AAChB,iBAAiB,AACjB,eAAgB,CAKnB,AAbL,uHAWY,UAAW,CACd,AAZT,yGAgBQ,iBAAA,AAAQ,QAAA,AACR,UAAW,CACd,AAlBL,6GAqBQ,iBAAA,AAAQ,QAAA,AACR,WAAW,AACX,aAAc,CACjB,ACnDL,WACI,mBAAmB,AACnB,aAAkB,AAClB,UAAU,AACV,kBAAkB,AAClB,MAAM,AACN,SAAS,AACT,cAAc,AACd,gBAAgB,AAChB,aAAa,AACb,4BAA4B,AAC5B,iCAAiC,AAIjC,SAAU,CACb,AAhBD,4BAaQ,UAAW,CACd,AAGL,gCAEQ,UAAU,AACV,yBAA0B,CAI7B,AAPL,2CAKY,YAAa,CAChB,AANT,6BASQ,QAAQ,AACR,yBAA0B,CAiB7B,AA3BL,8CAYY,WAAW,AACX,yBAA0B,CAa7B,AA1BT,2EAgBoB,yBAAyB,AACzB,yBAA0B,CAC7B,AAlBjB,+EAoBoB,YAAa,CAChB,AArBjB,8EAuBoB,cAAe,CAClB,AAxBjB,gIAkCY,YAAY,AACZ,kBAAiB,AACjB,wBAAwB,AACxB,yBAA0B,CAC7B,AAtCT,qEA0CQ,cAAc,AAEd,yBAA0B,CAC7B,AACD,yCA9CJ,iDAiDgB,oBAAqB,AACrB,oBAAqB,CAGxB,CAAA,AArDb,mCAyDQ,UAAU,AACV,2BAA4B,CAC/B,AA3DL,oCA6DQ,aAAc,CACjB,AAEL,2BAEQ,WAAW,AACX,OAAO,AACP,2CAA6C,CAChD,AALL,6BAOQ,cAAc,AACd,2BAA4B,CAC/B,AATL,8BAWQ,YAAY,AACZ,mBAAmB,AACnB,0BAA0B,AAC1B,yBAA0B,CAC7B,AAfL,mCAiBQ,UAAU,AACV,2BAA4B,CAC/B,AAnBL,oCAqBQ,YAAa,CAChB,AAEL,kBACI,mBAAmB,AACnB,cAAe,CAkBlB,AApBD,wBAIQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAPL,qBASQ,WAAW,AACX,WAAW,AACX,eAAe,AACf,gBAAiB,CAIpB,AAhBL,gCAcY,iBAAkB,CACrB,AAfT,6BAkBQ,WAAY,CACf,AAEL,iBACI,yBAAyB,AACzB,yBAAyB,AACzB,kBAAkB,AAClB,cAAc,AACd,eAAe,AACf,gBAAgB,AAChB,YAAkB,CACrB,AACD,gBAEQ,cAAc,AACd,eAAe,AACf,oBAAoB,AACpB,wBAAyB,CAM5B,AAXL,2BAOY,WAAW,AACX,eAAe,AACf,wBAAyB,CAC5B,AAVT,mBAaQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAEL,SACI,UAAW,CA2Bd,AA5BD,oBAGQ,6BAA6B,AAC7B,SAAS,AACT,iBAAkB,CAgBrB,AArBL,gCAOY,yBAA0B,CAC7B,AART,0BAUY,qBAAqB,AACrB,wBAAyB,CAE5B,AAbT,+BAeY,YAAY,AACZ,cAAc,AACd,kBAAkB,AAClB,MAAM,AACN,UAAW,CACd,AApBT,2BAwBY,cAAc,AACd,cAAe,CAClB,AAGT,2BAEI,UAAW,CACd,AACD,aACI,SAAU,CACb,AACD,cACI,YAAa,CAChB,AACD,UACI,WAAW,AACX,aAAc,CACjB,AACD,oCAGI,mBAAmB,AACnB,YAAa,CAChB,AACD,sDAGI,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AACD,kBACI,WAAW,AACX,eAAe,AACf,aAAa,AACb,YAAY,AACZ,gBAAgB,AAChB,qBAAqB,AACrB,kBAAkB,AAClB,eAAe,AACf,SAAS,AACT,OAAQ,CAWX,AArBD,6BAYQ,iBAAiB,AACjB,yBAA0B,CAC7B,AAdL,iCAgBQ,cAAe,CAClB,AAjBL,gCAmBQ,YAAa,CAChB,AAIL,gBACI,mBAAmB,AACnB,kCAAkC,AAClC,YAAY,AACZ,kBAAkB,AAClB,MAAM,AACN,SAAS,AACT,aAAa,AACb,YAAY,AACZ,2BAA4B,CAgC/B,AAzCD,mBAWQ,QAAS,CAcZ,AAzBL,wBAcgB,6BAA6B,AAC7B,cAAc,AACd,cAAc,AACd,kBAAkB,AAClB,oBAAqB,CAKxB,AAvBb,mCAoBoB,cX5PD,AW6PC,iBAAkB,CACrB,AAtBjB,4BA2BQ,mBXnQW,AWoQX,WAAW,AACX,aAAa,AACb,kBAAkB,AAClB,yBAAyB,AACzB,cAAc,CAOjB,AAvCL,qCAmCY,gBAAgB,AAChB,sBAAsB,AACtB,cAAe,CAClB,AAOT,gCAEQ,QAAQ,AACR,2BAA4B,CAC/B,AAJL,2BAMQ,mBAAmB,AACnB,mBAAmB,AACnB,4BAA6B,CAChC,AATL,yBAWQ,YAAY,AACZ,0BAA2B,CAC9B,AAGL,8CAIgB,oBAAqB,CACxB,AALb,0DAOgB,eAAe,AACf,WAAW,AACX,cAAc,AACd,cAAc,AACd,UAAW,CAMd,AAjBb,uEAaoB,cAAc,AACd,qBAAsB,AACtB,iBAAkB,CACrB,AAKjB,8CAGY,mBX9TU,AW+TV,cAAe,CAClB,AAIT,wBACE,YAAa,CAiCd,AAlCD,4BAGI,UAAW,CACZ,AAJH,+BAMI,WAAW,AACX,YAAa,CACd,AARH,wCAUI,eAAe,AACf,gBAAiB,AACjB,iBAAiB,AACjB,kBAAkB,AAClB,iBAAkB,CACnB,AAfH,iCAiBI,eAAgB,CAMjB,AAvBH,uCAmBM,cAAc,AACd,WAAW,AACX,UAAW,CACZ,AAtBL,2CAyBI,WAAY,CACb,AA1BH,2BA4BI,oBAAqB,CAKtB,AAjCH,8BA8BQ,iBAAiB,AACjB,iBAAkB,CACrB,ACpWL,WACI,SAAS,AACT,kBAAkB,AAClB,eAAe,AACf,qBAAqB,AACrB,eAAe,AACf,kBAAkB,AAClB,kBAAkB,AAClB,qBAAqB,AACrB,yBAAyB,AACzB,wBAAA,AAAgB,eAAA,CAmBnB,AA7BD,mBAYQ,mBZXW,AYYX,yBAAyB,AACzB,UAAW,CACd,AAfL,qBAiBQ,gBAAgB,AAChB,yBZjBW,AYkBX,aZlBW,CYmBd,AApBL,oBAsBQ,gBAAgB,AAChB,sBAAsB,AACtB,cAAe,CAClB,AAzBL,mBA2BQ,WAAY,CACf,AAML,2BACI,WAAW,AACX,cAAe,CAClB,AACD,gBACI,mBZtCe,AYuCf,kBAAkB,AAClB,WAAW,AACX,aAAa,AACb,YAAY,AACZ,wBAAwB,AACxB,qBAAqB,AACrB,2BAA4B,CAS/B,AAjBD,2BAUQ,eAAe,AACf,WAAW,AACX,WAAY,CACf,AAbL,sBAeQ,UAAW,CACd,AAGL,0BAEQ,sBAAsB,AACtB,WAAW,AACX,cAAc,AACd,kBAAmB,CACtB,AANL,uBAQQ,iBAAkB,CAMrB,AAdL,6BAUY,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAbT,wBAgBQ,kBAAkB,AAClB,cAAe,CAClB,AAlBL,kFAoBQ,cAAc,AACd,cAAc,AACd,eAAe,AACf,wBAAyB,CAQ5B,AA/BL,8IAyBY,kBAAkB,AAClB,WAAW,AACX,WAAW,AACX,QAAQ,AACR,oBAAqB,CACxB,AA9BT,gGAmCQ,mBAAmB,AACnB,SAAS,AACT,eAAe,AACf,kBAAkB,AAClB,WAAW,AACX,YAAY,AACZ,sBAAuB,CAC1B,AA1CL,0BA4CQ,YAAa,CAChB,AA7CL,kDA+CQ,wBAAA,AAAgB,gBAAA,AAChB,mBAAmB,AACnB,SAAS,AACT,YAAY,AACZ,WAAW,AACX,8BAA+B,AAC/B,gBAAiB,CAOpB,AA5DL,iEAwDgB,gBAAgB,AAChB,yBAA0B,CAC7B,AAIb,8CAEQ,+BAAiC,CACpC,AAHL,mGAKQ,UAAW,CACd,AANL,yEAQQ,mBAAoB,CAoGvB,AA5GL,iGAUY,gBAAiB,CACpB,AAXT,yIAgBoB,mBAAmB,AACnB,WAAY,CAcf,AA/BjB,oUAmBwB,eAAe,AACf,UAAW,CACd,AArBrB,sUAuBwB,SAAU,CACb,AAxBrB,mKA0BwB,eAAgB,CACnB,AA3BrB,qJA6BwB,QAAS,CACZ,AA9BrB,yKAkCwB,eAAe,AACf,oBAAqB,CAIxB,AAvCrB,oYAqC4B,cAAe,CAClB,AAtCzB,mMAgD4B,YAAa,CAChB,AAjDzB,mKAsDwB,mBAAmB,AACnB,iBAAkB,CA2BrB,AAlFrB,wXAyDgC,eAAe,AACf,WAAW,AACX,cAAe,CAClB,AA5D7B,6LA8DgC,SAAU,CACb,AA/D7B,6LAiEgC,SAAU,CACb,AAlE7B,qLAoE4B,SAAS,AACT,aAAa,AACb,kBAAmB,CACtB,AAvEzB,2LAyE4B,WAAW,AACX,kBAAkB,AAClB,WAAW,AACX,OAAQ,CACX,AA7EzB,yLA+E4B,WAAW,AACX,eAAgB,CACnB,AAjFzB,yLAqF4B,oBAAqB,CAkBxB,AAvGzB,iNAuFgC,WAAW,AACX,WAAY,CACf,AAzF7B,mNA2FgC,UAAU,AACV,iBAAiB,AACjB,eAAe,AACf,WAAW,AACX,iBAAiB,AACjB,kBAAmB,CACtB,AAjG7B,mNAmGgC,WAAW,AACX,WAAW,AACX,gBAAiB,CACpB,AAtG7B,0BA8GQ,iBAAkB,CAarB,AA3HL,yDAiHgB,mBAAmB,AACnB,cZxOG,AYyOH,eAAe,AACf,iBAAiB,AACjB,qBAAqB,AACrB,kBAAkB,AAClB,WAAW,AACX,KAAM,CACT,AAzHb,gCA6HQ,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,mBAAmB,AACnB,gBAAgB,AAChB,gBAAgB,AAChB,UAAW,CAoBd,AAvJL,sCAqIY,UAAU,AACV,qBAAqB,AACrB,cAAe,CAelB,AAtJT,2CAyIgB,WAAW,AACX,qBAAqB,AACrB,eAAe,AACf,gCAAiC,CACpC,AA7Ib,yDA+IgB,yBAAyB,AACzB,oBAAqB,CACxB,AAjJb,iDAmJgB,sBAAsB,AACtB,iBAAkB,CACrB,AAIb,mBACI,aAAa,AACb,eAAe,AACf,SAAU,CA2Bb,AA9BD,sBAKQ,mBAAmB,AACnB,+BAA+B,AAC/B,WAAW,AACX,SAAS,AACT,aAAa,AACb,kBAAkB,AAClB,SAAU,CAab,AAxBL,iCAaY,QAAS,CACZ,AAdT,uCAgBY,SAAU,CACb,AAjBT,0CAmBY,aZnSU,CYoSb,AApBT,iCAsBY,iBAAkB,CACrB,AAvBT,yBA0BQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAGL,gBACI,qCAAqC,AACrC,gCAAiC,CACpC,AACD,0BACI,GAAO,sBAAyB,CAAA,AAChC,GAAO,wBAA2B,CAAA,CAAA,ACtTtC,WACI,eAAe,AACf,iBAAkB,CAoBrB,AAtBD,8BAIQ,uBAAuB,AACvB,iBAAiB,AACjB,SAAS,AACT,kBAAiB,AACjB,yBAAyB,AACzB,SAAU,CACb,AAVL,kBAYQ,gBAAgB,AAChB,WAAW,AACX,sBAAwB,AACxB,eAAe,AACf,WAAW,AACX,YAAY,AACZ,kBAAkB,AAClB,QAAQ,AACR,SAAU,CACb,AAEL,UACI,kBAAkB,AAClB,yBAAyB,AAGzB,qBAAqB,AACrB,gBAAiB,CAQpB,AAdD,6BAQQ,mBAAmB,AACnB,YAAY,AACZ,kBAAkB,AAClB,UAAU,AACV,UAAW,CACd,AAEL,oBAEQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AALL,wEAQQ,mBAAmB,AACnB,yBAAyB,AACzB,kBAAkB,AAClB,oBAAoB,AAEpB,gBAAgB,AAChB,YAAY,AACZ,wBAAyB,CAC5B,AAhBL,4BAkBQ,gBAAgB,AAChB,kBAAkB,AAClB,WAAW,AACX,qBAAqB,AACrB,WAAW,AACX,iBAAqB,AACrB,iBAAiB,AACjB,iBAAkB,CAQrB,AAjCL,uCA2BY,eAAe,AACf,qBAAsB,CACzB,AA7BT,gCA+BY,iBAAkB,CACrB,AAIT,SACI,mBAAmB,AACnB,kBAAkB,AAClB,cAAc,AACd,eAAe,AACf,aAAa,AACb,kBAAkB,AAClB,iBAAkB,CAiBrB,AAxBD,gBASQ,mBblFW,AamFX,UAAW,CACd,AAXL,aAaQ,mBAAmB,AACnB,2BAA2B,AAC3B,8BAA8B,AAC9B,YAAY,AACZ,kBAAkB,AAClB,MAAM,AACN,OAAO,AACP,SAAS,AACT,WAAW,AACX,gBAAiB,CACpB,AAEL,mBAEQ,iBAAkB,CAerB,AAjBL,yBAIY,mBAAmB,AACnB,2BAA2B,AAC3B,8BAA8B,AAC9B,gBAAgB,AAChB,sBAAwB,AACxB,YAAY,AACZ,kBAAkB,AAClB,MAAM,AACN,OAAO,AACP,SAAS,AACT,WAAW,AACX,WAAY,CACf,AAGT,0BAEQ,YAAY,AACZ,iBAAiB,AACjB,cAAe,CAKlB,AATL,qCAMY,wBAAkC,AAClC,oBAAqB,CACxB,AART,+CAagB,uBAAuB,AACvB,WAAY,CAKf,AAnBb,qDAgBoB,oBAAoB,AACpB,WAAY,CACf,AAMjB,qCACI,cAAc,AACd,yBAAyB,AACzB,wBAAyB,CAC5B,AAED,sBACI,WAAW,AACX,mBAAmB,AACnB,aAAa,AACb,YAAa,CAChB,ACzJD,uBAGY,4BAA6B,CAChC,AAJT,oCAOgB,UAAY,CACf,AARb,qCAYgB,4BAA8B,CACjC,AAbb,6BAiBgB,yBAA2B,CAC9B,AAIb,kCAGY,eAAe,AACf,YAAY,AACZ,WAAW,AACX,gBAAiB,CACpB,AC7BT,kBACI,UAAU,AACV,eAAe,AACf,gBAAiB,CAIpB,AAPD,oBAKQ,SAAU,CACb,ACNL,YAEI,chBDe,AgBEf,mBAAmB,AACnB,qBAAqB,AACrB,iBAAiB,AACjB,kBAAkB,AAClB,YAAY,AACZ,WAAW,AACX,gBAAgB,AAChB,eAAgB,CAgCnB,AA1CD,kBAYQ,mBhBXW,AgBYX,yBhBZW,AgBaX,mBAAmB,AACnB,WAAW,AACX,YAAY,AACZ,eAAe,AACf,YAAY,AACZ,kBAAkB,AAClB,OAAO,AACP,WAAW,AACX,YAAY,AACZ,iBAAiB,AACjB,gBAAgB,AAChB,2BACJ,CAAC,AA1BL,wDA4BQ,chB3BW,AgB4BX,oGAAsG,CAOzG,AApCL,0EA+BY,gBAAgB,AAChB,chB/BO,AgBgCP,yBAAyB,AACzB,wBAAyB,CAC5B,AAnCT,2BAsCQ,kBAAkB,AAClB,UAAU,AACV,SAAU,CACb,AAEL,qBACI,YAAa,CAChB,AAQD,mBACI,mBhBrDe,AgBsDf,yBhBtDe,AgBuDf,mBAAmB,AACnB,eAAe,AACf,kBAAkB,AAElB,YAAY,AACZ,WAAW,AACX,SAAS,AACT,UAAU,AACV,YAAY,AACZ,WAAW,AACX,yBAAyB,AACzB,UAAW,CAwBd,AAtCD,wBAgBQ,cAAc,AACd,mBAAoB,CACvB,AAlBL,uBAoBQ,WAAW,AACX,eAAe,AACf,eAAe,AACf,iBAAiB,AACjB,qBAAqB,AACrB,wBAAyB,CAC5B,AA1BL,6EA4BQ,gBAAgB,AAChB,chBjFW,AgBkFX,wBAAyB,CAO5B,AArCL,yFAgCY,chBpFO,AgBqFP,qBAAqB,AACrB,yBAAyB,AACzB,wBAAyB,CAC5B,ACzFT,+BACI,YAAa,CAqDhB,AAtDD,qCAGQ,qBAAqB,AACrB,uBAAuB,AACvB,SAAS,AACT,iBAAiB,AACjB,cAAc,AACd,qBAAqB,AACrB,wBAAA,AAAgB,gBAAA,AAChB,kBAAkB,AAClB,WAAW,AACX,YAAY,AACZ,cAAe,CAyBlB,AAtCL,2CAeY,mBAAmB,AACnB,yBAAyB,AACzB,mBAAmB,AACnB,WAAW,AACX,kBAAkB,AAClB,SAAS,AACT,UAAU,AACV,WAAW,AACX,YAAY,AACZ,wBAAyB,CAC5B,AAzBT,4CA2BY,gBAAgB,AAChB,mBAAmB,AACnB,WAAW,AACX,kBAAkB,AAClB,SAAS,AACT,OAAO,AACP,WAAW,AACX,YAAY,AACZ,WAAW,AACX,wBAAyB,CAC5B,AArCT,mDA0CgB,mBjB1CM,AiB2CN,yBjB3CM,AiB4CN,wBAAyB,CAC5B,AA7Cb,oDA+CgB,WAAW,AAEX,UAAU,AACV,wBAAyB,CAC5B,AAKb,SACI,iBAAkB,CAgCrB,AAjCD,8CAIY,iBAAiB,AACjB,oBAAoB,AACpB,kBAAkB,AAClB,SAAS,AACT,UAAW,CAUd,AAlBT,qDAUgB,UAAU,AACV,WAAW,AACX,0BAA2B,CAC9B,AAbb,oDAegB,UAAU,AACV,OAAQ,CACX,AAjBb,6DAsBoB,UAAU,AACV,UAAU,AACV,0BAA2B,CAC9B,AAzBjB,2BA8BQ,6BAA6B,AAC7B,kBAAmB,CACtB,ACxFL,4BAEQ,cAAc,AACd,iBAAkB,CAiCrB,AApCL,mCAMY,uBAAuB,AACvB,SAAS,AACT,eAAe,AACf,sBAAuB,AACvB,sBAAsB,AACtB,kBAAkB,AAClB,WAAW,AACX,0BAA0B,AAC1B,wBAAA,AAAgB,gBAAA,AAChB,SACJ,CAAC,AAhBT,gCAkBY,mBAAmB,AACnB,YAAY,AACZ,kBAAkB,AAClB,WAAW,AACX,WAAW,AACX,SAAU,CACb,AAxBT,sCA0BY,WAAW,AACX,gBAAgB,AAChB,sBAAwB,AACxB,eAAe,AACf,kBAAkB,AAClB,WAAW,AACX,YAAY,AACZ,UAAU,AACV,QAAS,CACZ,AAnCT,mCAuCY,WAAW,AACX,SAAU,CACb,AAzCT,sCA2CY,YAAa,CAChB,AC5CT,oCAEI,yBAAyB,AACzB,UAAW,CAkFd,AArFD,oFAKQ,gCAAgC,AAChC,eAAe,AACf,aAAa,AACb,mBAAmB,AACnB,iBAAkB,CAErB,AAXL,0CAaQ,WAAW,AACX,gBAAgB,AAChB,wBAAyB,CAC5B,AAhBL,0CAkBQ,cAAc,AAEd,iBAAkB,CAIrB,AAxBL,oEAsBY,SAAU,CACb,AAvBT,oEA2BY,aAAc,CAIjB,AA/BT,wEA6BgB,UAAW,CACd,AA9Bb,8GAkCQ,UAAU,AACV,cAAe,CAqBlB,AAxDL,0DA2DY,cnB3DU,AmB4DV,eAAiB,CACpB,AA7DT,wFAkEY,gBAAmB,AACnB,WAAY,CAgBf,AAnFT,4FAqEgB,anBrEM,CmBsET,AAtEb,sPAyEgB,YAAa,CAChB,AA1Eb,0HA4EgB,wBAA0B,CAC7B,AA7Eb,0IAgFoB,iBACJ,CAAC,AAMjB,cACI,qBAAsB,CACzB,AACD,wBAEQ,YAAa,CAChB,AAHL,qBAKQ,gCAAiC,AACjC,cAAc,AACd,2BAA4B,AAC5B,4BAA8B,CACjC,AATL,qBAWQ,cAAe,CAClB,AAZL,oBAcQ,cAAe,CAClB,AAEL,qBAEQ,cAAe,CAClB,AAHL,oCAKQ,QAAS,CACZ,AChHL,cACE,sBAAsB,AACtB,yBAA2B,CAAG,AAC9B,8FAEE,aAAc,CAAG,AACnB,8BACE,mBAAoB,CAAG,AACvB,wDACE,sBAAsB,AACtB,WAAY,CAAG,AACf,wEACE,qBAAsB,CAAG,AAC7B,wDACE,sBAAsB,AACtB,WAAY,CAAG,AACf,wEACE,qBAAsB,CAAG,AAC/B,mCACE,aAAa,AACb,kBAAkB,AAKlB,kBAAkB,AAClB,UAAU,AAIV,4DAA6D,AAC7D,WAAW,AAEX,UAAW,CAAG,AACd,mDACE,kBAAkB,AAElB,sBAAsB,AAItB,kBAAkB,AAIlB,wCAAwC,AACxC,SAAS,AAET,UAAW,CAAG,AAClB,mCACE,aAAa,AACb,kBAAkB,AAKlB,kBAAkB,AAClB,UAAU,AAIV,4DAA6D,AAC7D,UAAU,AAEV,SAAU,CAAG,AACb,mDACE,kBAAkB,AAElB,sBAAsB,AAItB,kBAAkB,AAIlB,wCAAwC,AACxC,QAAQ,AAER,SAAU,CAAG,AACjB,oCACE,mBAAoB,CAAG,AACvB,8DACE,sBAAsB,AACtB,WAAY,CAAG,AACf,8EACE,qBAAsB,CAAG,AAC7B,8DACE,sBAAsB,AACtB,WAAY,CAAG,AACf,8EACE,qBAAsB,CAAG,AAC/B,kFAEE,WAAY,CAAG,AACjB,+CACE,sBAAsB,AACtB,WAAY,CAAG,AACf,+DACE,qBAAsB,CAAG,AAC7B,+CACE,sBAAsB,AACtB,WAAY,CAAG,AACf,+DACE,qBAAsB,CAAG,AAa/B,8CACE,wBAAwB,AACxB,2BAA4B,CAC7B,ACjHD,kEAEQ,qCAA4C,CAC/C,AAGL,qBACI,cAAe,CAClB,AACD,uBACI,UAAW,CACd,AACD,iCAEQ,yBrBrBW,AqBuBX,wBAAyB,CAC5B,AALL,gCAOQ,yBrB3Bc,AqB6Bd,wBAAyB,CAC5B,AAGL,oBACI,sBAAsB,AACtB,qBAAsB,CACzB,AACD,4BACI,uBAAyB,CAC5B,AACD,gCAAkC,iBAAiB,AAAE,kBAAkB,AAAE,wBAA0B,CAAE,AAErG,uBACI,kBAAkB,AAClB,cAAc,AACd,WAAY,CA8Bf,AAjCD,6BAKQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AARL,mDAUQ,kBAAkB,AAClB,WAAY,CACf,AAZL,4GAgBQ,qCAA4C,CAC/C,AAjBL,oCAmBQ,WAAW,AACX,SAAS,AACT,SAAU,CACb,AAtBL,oCAwBQ,WAAW,AACX,SAAS,AACT,SAAU,CACb,AA3BL,oCA6BQ,YAAY,AACZ,UAAU,AACV,SAAU,CACb,AAGL,4BACI,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,WAAW,AACX,eAAe,AACf,mBAAmB,AACnB,iBAAkB,CAyBrB,AAhCD,mCAUQ,yBAAyB,AACzB,cAAc,AACd,eAAiB,CAmBpB,AA/BL,qDAcY,eAAmB,CAgBtB,AA9BT,uDAgBgB,aAAc,CACjB,AAjBb,6IAoBgB,YAAa,CAChB,AArBb,sEAuBgB,cAAe,CAClB,AAxBb,8EA2BoB,iBACJ,CAAC,AAQjB,uCAAyC,WAAW,AAAE,YAAY,AAAE,+BAA+B,AAAE,kBAAkB,AAAE,gBAAiB,CAAI,AAE9I,iFACI,yBAAyB,AACzB,qBAAsB,AACtB,aAAqB,CACxB,AAED,2BACI,qBAAsB,CAMzB,AAPD,iCAGQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAGL,qBAAuB,cAAe,CAAI,AClI1C,YACE,mBAAmB,AACnB,kBAAkB,AAClB,WAAW,AACX,cAAc,AACd,iBAAkB,CAoCnB,AAzCD,eAOI,gBAAgB,AAChB,SAAS,AACT,UAAU,AACV,kBAAkB,AAClB,UAAU,AACV,OAAO,AACP,WAAY,CA2Bb,AAxCH,kBAeM,SAAS,AACT,kBAAkB,AAClB,QAAQ,AACR,OAAO,AACP,QAAQ,AACR,SAAS,AACT,YAAY,AACZ,WAAW,AACX,sBAAsB,AACtB,mBAAmB,AACnB,wBAAwB,AACxB,6BAA8B,CAa/B,AAvCL,gCA4BQ,OAAO,AACP,kBAAmB,CACpB,AA9BP,gCAgCQ,UAAU,AACV,oBAAqB,CACtB,AAlCP,gCAoCQ,UAAU,AACV,oBAAqB,CACtB,AAKP,mBACE,GACE,qBAAqB,AACrB,eAAgB,CAAA,AAElB,IACE,mBAAmB,AACnB,eAAgB,CAAA,AAElB,GACE,qBAAqB,AACrB,eAAgB,CAAA,CAAA,ACtDpB,cACI,YAAa,CAChB,AACD,0BAEQ,WAAW,AACX,gBAAgB,AAChB,oBAAqB,CAMxB,AAVL,qCAMY,eAAe,AACf,YAAY,AACZ,UAAW,CACd,AATT,+BAYQ,yBAAyB,AACzB,yBAAyB,AACzB,kBAAkB,AAClB,oCAA0C,AAC1C,WAAW,AACX,eAAe,AACf,iBAAiB,AACjB,YAAa,CAahB,AAhCL,qCAsBY,WAAW,AACX,kBAAkB,AAClB,WAAW,AACX,aAAa,AACb,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,6BAA8B,CACjC,AClCT,gBACI,iBAAkB,CA4BrB,AA7BD,0DAIQ,kBAAmB,CACtB,AALL,oBAOQ,aAAc,CASjB,AAhBL,oCASY,iBAAkB,CACrB,AAVT,gCAYY,WAAW,AACX,YAAY,AACZ,QAAS,CACZ,AAfT,4BAkBQ,WAAW,AACX,eAAe,AACf,iBAAkB,CACrB,AArBL,iIAyBgB,QAAS,CACZ,AAIb,+BAEQ,SAAS,AACT,UAAW,CACd,AAEL,iCAEQ,SAAS,AACT,UAAW,CACd,AAGL,yGAGY,QAAS,CACZ,AAIT,cACI,2BAA6B,CAChC,AAED,oCAEQ,kBAAkB,AAClB,wBxBzDW,CwBoFd,AA9BL,uCAMY,mBAAmB,AACnB,YAAY,AACZ,cAAe,CAClB,AATT,uCAWY,QAAS,CAkBZ,AA7BT,4CAmBoB,cxBzED,AwB0EC,SAAS,AACT,cAAc,AACd,cAAc,AACd,oBAAqB,CACxB,AAxBjB,gDA2BgB,kBAAmB,CACtB,AA5Bb,wCAiCY,wBxBvFO,CwByFV,AAnCT,+EAuCQ,WAAW,AACX,WAAY,CACf,AAzCL,+EA4CQ,WAAW,AACX,WAAY,CACf,AA9CL,gDAiDY,WAAW,AACX,YAAY,AACZ,kBxBzGO,CwB0GV,AAKT,gBACI,aAAa,AACb,yBAAyB,AACzB,iBAAiB,AACjB,aAAa,AACb,kBAAkB,AAClB,SAAS,AACT,UAAS,AACT,UAAW,CA4Fd,AApGD,qCAWQ,oBAAA,AAAa,aAAA,AACb,sBAAA,AAA8B,6BAAA,CACjC,AAbL,oEAiBQ,WAAW,AACX,eAAe,AACf,sBAAsB,AACtB,aAAa,AACb,eAAgB,CACnB,AAtBL,oCAyBQ,yBAAyB,AACzB,eAAgB,CAkCnB,AA5DL,uCA4BY,QAAS,CA+BZ,AA3DT,0CA8BgB,mBAAmB,AACnB,6BAA6B,AAC7B,eAAe,AACf,eAAe,AACf,SAAS,AACT,yBAA0B,CAuB7B,AA1Db,gDAqCoB,kBAAmB,CACtB,AAtCjB,iDAwCoB,iBAAkB,CACrB,AAzCjB,uDA2CoB,WAAW,AACX,WAAW,AACX,cAAc,AACd,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,qCAAqC,AACrC,6BAA6B,AAC7B,kBAAkB,AAClB,MAAM,AACN,OAAQ,CACX,AAtDjB,gDAwDoB,aAAc,CACjB,AAzDjB,gCA+DQ,oBAAA,AAAY,YAAA,AACZ,gBAAiB,CA6BpB,AA7FL,wCAmEgB,gBAAiB,CACpB,AApEb,yCA0EY,oBAAuB,CAC1B,AA3ET,+CAwEgB,uBAAyB,CAC5B,AAzEb,mCA6EY,QAAS,CACZ,AA9ET,mCAgFY,eAAe,AACf,eAAgB,CAWnB,AA5FT,wCAmFgB,iBAAiB,AACjB,aAAc,CAIjB,AAxFb,8CAsFoB,oDAA0D,CAC7D,AAvFjB,iDA0FgB,aAAc,CACjB,AA3Fb,kCAgGQ,gCAAgC,AAChC,qBAA0B,AAC1B,UAAW,CACd,AAEL,iBACI,kBAAkB,AAClB,YAAa,CAChB,AACD,gCAEQ,WAAW,AACX,eAAe,AACf,MAAM,AAAE,QAAQ,AAAE,SAAS,AAAE,OAAO,AACpC,gCAAqC,AACrC,WAAY,CACf,AAPL,4CASQ,SAAU,CACb,AAGL,gCACI,YAAY,AACZ,SAAU,CACb,AACD,iCACI,YAAY,AACZ,WAAW,AACX,SAAU,CACb,AAED,qBACI,uBAAgC,CACnC,AACD,gEAEI,UAA+B,CAClC,AACD,qCACI,YAAa,CAChB,ACzPD,cACI,sBAAwB,CAC3B,AACD,8BAEQ,kBAAoB,CAmDvB,AArDL,kDAKgB,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AARb,6CAWY,mBAAmB,AACnB,aAAc,CAcjB,AA1BT,+CAcgB,cAAe,CAClB,AAfb,gDAiBgB,qBAAqB,AACrB,eAAgB,CACnB,AAnBb,sDAsBoB,sBAAsB,AACtB,UAAW,CACd,AAxBjB,qCA4BY,YAAa,CAChB,AA7BT,yCA+BY,UAAW,CAId,AAnCT,oDAiCgB,WAAY,CACf,AAlCb,mCAqCY,mBAAmB,AACnB,SAAS,AACT,kBAAkB,AAClB,WAAW,AACX,eAAe,AACf,iBAAiB,AACjB,eAAgB,CASnB,AApDT,4CA6CgB,uBAAuB,AACvB,UAAW,CAKd,AAnDb,wDAgDoB,mBAAmB,AACnB,UAAW,CACd,AAlDjB,0BAuDM,kBAAkB,AAClB,aAAa,AACb,cAAc,AACd,sDAA2D,AAC3D,eAAe,AACf,kBAAkB,AAClB,gBAAmB,AACnB,uBAAuB,AACvB,gBAAgB,AAChB,iBAAiB,AACjB,qBAAqB,AACrB,iBAAiB,AACjB,oBAAoB,AACpB,sBAAsB,AACtB,kBAAkB,AAClB,oBAAoB,AACpB,iBAAiB,AACjB,mBAAmB,AACnB,wBAAwB,AACxB,UAAU,AAEV,eAAgB,CACjB,AA7EL,6BA+EM,yBAAyB,AACzB,UAAW,CACZ,AAjFL,8BAmFM,cAAc,AACd,eAAgB,CACjB,AArFL,gCAuFM,cAAc,AACd,eAAgB,CACjB,AAzFL,iCA2FM,cAAc,AACd,cAAe,CAChB,AA7FL,+BA+FM,cAAc,AACd,gBAAiB,CAClB,AAjGL,gCAmGM,gBAAgB,AAChB,gBAAgB,AAChB,WAAW,AACX,kBAAkB,AAClB,sBAAsB,AACtB,iBAAkB,CACnB,AAzGL,gCA2GM,kBAAkB,AAClB,QAAQ,AACR,SAAS,AACT,yBAAyB,AACzB,kBAAmB,CACpB,AAhHL,6CAkHM,SAAS,AACT,SAAS,AACT,iBAAiB,AACjB,uBAAuB,AACvB,qBAAsB,CACvB,AAvHL,kDAyHM,UAAU,AACV,SAAS,AACT,mBAAmB,AACnB,uBAAuB,AACvB,qBAAsB,CACvB,AA9HL,mDAgIM,SAAS,AACT,SAAS,AACT,mBAAmB,AACnB,uBAAuB,AACvB,qBAAsB,CACvB,AArIL,+CAuIM,QAAQ,AACR,OAAO,AACP,gBAAgB,AAChB,2BAA2B,AAC3B,uBAAwB,CACzB,AA5IL,8CA8IM,QAAQ,AACR,QAAQ,AACR,gBAAgB,AAChB,2BAA2B,AAC3B,sBAAuB,CACxB,AAnJL,gDAqJM,MAAM,AACN,SAAS,AACT,iBAAiB,AACjB,uBAAuB,AACvB,wBAAyB,CAC1B,AA1JL,qDA4JM,MAAM,AACN,UAAU,AACV,gBAAgB,AAChB,uBAAuB,AACvB,wBAAyB,CAC1B,AAjKL,sDAmKM,MAAM,AACN,SAAS,AACT,gBAAgB,AAChB,uBAAuB,AACvB,wBAAyB,CAC1B,AAxKL,gCA0KM,kBAAkB,AAGlB,aAAa,AACb,aAAa,AACb,WAAW,AACX,gBAAgB,AAChB,cAAc,AACd,eAAe,AACf,eAAe,AACf,gBAAgB,AAChB,gBAAgB,AAChB,sBAAsB,AAEd,4BAA4B,AACpC,sBAAsB,AACtB,iCAAoC,AACpC,kBAAkB,AAEV,sCAA0C,CACnD,AA9LL,2CAgMM,QAAQ,AACR,SAAU,CACX,AAlML,yCAoMM,WAAW,AACX,aAAa,AACb,gBAAgB,AAChB,wBAAyB,CAC1B,AAxML,qCA0MM,cAAc,AACd,iBAAiB,AACjB,WAAW,AACX,gBAAmB,AACnB,uBAAuB,AACvB,WAAW,AACX,kBAAmB,CACpB,AAjNL,sFAoNM,cAAc,AACd,qBAAqB,AACrB,wBAAyB,CAC1B,AAvNL,0IA2NM,WAAW,AACX,qBAAqB,AACrB,yBAAyB,AACzB,SAAU,CACX,AA/NL,gJAmOM,UAAW,CACZ,AApOL,oGAuOM,qBAAqB,AACrB,mBAAmB,AACnB,6BAA6B,AAC7B,sBAAsB,AACtB,kEAAmE,CACpE,AA5OL,sCA8OM,aAAc,CACf,AA/OL,yBAiPM,SAAU,CACX,AAlPL,sCAoPM,QAAQ,AACR,SAAU,CACX,AAtPL,qCAwPM,WAAW,AACX,MAAO,CACR,AA1PL,kCA4PM,cAAc,AACd,iBAAiB,AACjB,eAAe,AACf,uBAAuB,AACvB,WAAW,AACX,kBAAmB,CACpB,AAlQL,oCAoQM,eAAe,AACf,MAAM,AACN,QAAQ,AACR,SAAS,AACT,OAAO,AACP,WAAY,CACb,AA1QL,4CA4QM,QAAQ,AACR,SAAU,CACX,AA9QL,uFAiRM,WAAW,AACX,aAAa,AACb,yBAAyB,AACzB,yBAA2B,CAC5B,AArRL,uGAwRM,SAAS,AACT,YAAY,AACZ,iBAAkB,CACnB,AACD,yBA5RJ,8CA8RQ,QAAQ,AACR,SAAU,CACX,AAhSP,mDAkSQ,WAAW,AACX,MAAO,CACR,CAAA,AApSP,gEAuSM,SAAU,CACX,AAxSL,2HA0SM,SAAS,AACT,SAAU,CAKX,AAhTL,0CAkTM,gBAAgB,AAChB,yBAAyB,AACzB,yBAA0B,CAC3B,AACD,yBAtTJ,kDAwTQ,gBAAgB,AAChB,WAAW,AACX,WAAW,AACX,aAAa,AACb,6BAA6B,AAC7B,SAAS,AAED,eAAgB,CACzB,AAhUP,0HAmUQ,yBAA0B,CAC3B,AApUP,uDAsUQ,gBAAiB,CAClB,AAvUP,0HA0UQ,qBAAsB,CACvB,CAAA,AA3UP,+CA8UM,aAAa,AACb,yBAAyB,AACzB,yBAA0B,CAC3B,AAjVL,oEAmVM,gBAAgB,AAChB,2BAA2B,AAC3B,4BAA4B,AAC5B,6BAA6B,AAC7B,2BAA4B,CAC7B,AACD,yBAzVJ,uEA2VQ,UAAW,CACZ,AA5VP,0JA+VQ,WAAW,AACX,4BAA6B,CAC9B,AAjWP,gPAqWQ,WAAW,AACX,wBAAyB,CAC1B,AAvWP,sPA2WQ,WAAW,AACX,4BAA6B,CAC9B,CAAA,AAEH,yBA/WJ,mFAiXQ,oBAAqB,CACtB,AAlXP,2EAoXQ,wBAAyB,CAC1B,AArXP,uEAuXQ,aAAc,CACf,AAxXP,0JA2XQ,WAAW,AACX,4BAA6B,CAC9B,AA7XP,gPAiYQ,WAAW,AACX,wBAAyB,CAC1B,AAnYP,sPAuYQ,WAAW,AACX,4BAA6B,CAC9B,CAAA,ACxYP,8CACI,kBAAkB,AAClB,YAAa,CAChB,AACD,gDACI,sBAAuB,CAC1B,AACD,qBACI,UAAW,CACd,AACD,uCAEI,cAAe,CAClB,AACD,iBACI,SAAS,AACT,gBAAgB,AAChB,eAAe,AACf,YAAY,AACZ,WAAW,AACX,iBAAkB,CACrB,AACD,uBACI,eAAe,AACf,gBAAiB,CACpB,AACD,gCACI,YAAa,CAChB,AACD,uCAEI,oBAAsB,CACzB,AAED,gDACI,YAAa,CAChB,ACvBD,wBACI,GAAO,yB3BjBQ,A2BiBsB,UAAY,CAAA,AACjD,GAAK,yBAAyB,AAAE,aAAe,CAAA,CAAA,AAEnD,iBAEI,4BAA4B,AAC5B,sBAAsB,AACtB,4BAA4B,AAC5B,6BAA8B,CACjC,AACD,0CACI,sBACI,SAAU,CACb,CAAA,AAEL,0CACI,qCAGY,oBAAoB,AACpB,qBAAqB,AACrB,OAAQ,CACX,AAGT,wGAIgB,YAAa,CAChB,CAAA,AAKjB,yCACI,4CAKQ,YAAa,CAChB,AAGL,gBACI,oBAAqB,CACxB,AACD,sBAEQ,eAAe,AACf,2BACJ,CAAC,AAGL,2BACI,eAAe,AACf,oBAAoB,AACpB,YAAY,AACZ,WAAW,AACX,SAAS,AACT,UAAU,AACV,YAAY,AACZ,UAAW,CAgBd,AAxBD,iCAUQ,mB3BnFU,A2BoFV,yB3BpFU,A2BqFV,mBAAmB,AACnB,WAAW,AACX,YAAY,AACZ,eAAe,AACf,YAAY,AACZ,kBAAkB,AAClB,OAAO,AACP,WAAW,AACX,YAAY,AACZ,iBAAiB,AACjB,eAAgB,CACnB,AAGL,2BAEQ,YAAa,CAChB,AAoEL,2BACI,WAAW,AACX,UAAW,CACd,AACD,+BAEQ,WAAW,AACX,SAAU,CACb,AAJL,+BAMQ,WAAW,AACX,SAAU,CACb,AAGL,mBACI,gBAAiB,CACpB,AACD,SACI,SAAU,CACb,AAED,oCAEQ,UAAW,CACd,CAAA,AAGT,0CACI,mCAGY,iBAAiB,AACjB,UAAU,AACV,kBAAkB,AAClB,MAAM,AACN,OAAO,AACP,SAAS,AACT,OAAQ,CAIX,AAbT,2CAWgB,MAAO,CACV,AAKb,iBACI,SAAU,CACb,AAID,sCAEQ,UAAW,CACd,AAKL,sEAEQ,SAAU,CACb,AAEL,kBACI,YAAa,CAChB,CAAA,AAGL,yCACI,sCAGY,iBAAiB,AACjB,UAAU,AACV,kBAAkB,AAClB,MAAM,AACN,OAAO,AACP,SAAS,AACT,OAAQ,CAIX,AAbT,8CAWgB,MAAO,CACV,AAIb,oCACI,YAAa,CAChB,CAAA,AAML,yCACI,yEAGY,aAAc,CACjB,AAMT,YACI,sBAAuB,CAI1B,AALD,2BAGQ,sBAAwB,CAC3B,AAEL,SACI,mBAAoB,CACvB,AACD,WACI,YAAa,CAChB,AAGD,iBACI,WAAW,AACX,cAAe,CAClB,AACD,SACI,QAAS,CACZ,CAAA,AAyBL,yCAKI,2BACI,UAAW,CACd,AAWD,oEAEQ,YAAa,CAChB,AA0CL,mBACI,aAAc,CACjB,AAqBD,SACI,YAAa,CAKhB,AAND,aAGQ,aAAa,AACb,UAAW,CACd,AAEL,yBACI,YAAa,CAChB,CAAA,A3BtWL,qBACI,mBAAmB,AACnB,YAAY,AACZ,kBAAkB,AAClB,MAAM,AACN,OAAO,AACP,OAAQ,CAwDX,AA9DD,+BAQQ,mBAAmB,AACnB,WAAW,AACX,eAAe,AACf,kBAAkB,AAClB,kBAAkB,AAClB,qBAAqB,AACrB,iBAAiB,AACjB,QAAQ,AACR,YAAY,AACZ,UAAW,CACd,AAlBL,8BAoBQ,gEAAkE,AAClE,2BAA2B,AAC3B,2BAAkC,AAClC,4BAA4B,AAC5B,WAAW,AACX,YAAY,AACZ,YAAY,AACZ,YAAY,AACZ,0BAA0B,AAE1B,wBAAyB,CAC5B,AA/BL,oCAiCQ,mBA1FW,AA2FX,yBA3FW,AA4FX,kBAAkB,AAClB,WAAW,AACX,cAAc,AACd,WAAW,AACX,eAAe,AACf,oBAAoB,AACpB,iBAAiB,AACjB,kBAAkB,AAClB,qBAAqB,AACrB,WAAY,CAiBf,AA7DL,0CA8CY,cAAc,AACd,WAAW,AACX,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,qCAAqC,AACrC,gCA7GO,AA8GP,kBAAkB,AAClB,WAAW,AACX,QAAS,CACZ,AAxDT,0CA0DY,gBAAgB,AAChB,aApHO,CAqHV,AAIT,YACI,gBAAiB,AAGjB,SAAY,CACf,AACD,2BAJI,YAAe,AACf,iBAAmB,CAGvB,AASC,eAPG,WAAsB,AACtB,mBAA4B,AAE5B,YAAuB,AACvB,cAAsB,AAEtB,qBAA4B,CAC/B,AAED,eACI,kBAA8B,AAC9B,8BAA0C,AAC1C,UAAyB,AACzB,kBAAyB,AACzB,YAA2B,AAC3B,MAAuB,AACvB,UAAuB,AAEvB,mBAAkC,CACrC,AAED,oDAEI,wBAA6B,AAC7B,eAAiB,CACpB,AAED,wBAEI,uBAA6B,CAChC,A4BhKD,gCAEQ,kBAAmB,CAKtB,AAPL,wCAIY,YAAY,AACZ,MAAO,CACV,AANT,uCAUY,iBAAkB,CAKrB,AAfT,+CAYgB,WAAW,AACX,MAAO,CACV,AAKb,mCAGY,WAAY,CACf,AAJT,oCAMY,WAAW,AACX,MAAO,CACV,AART,qBAYQ,UAAW,CACd,AAbL,oCAkBgB,WAAY,CAQf,AA1Bb,yDAsB4B,iBAAkB,CACrB,AAvBzB,wBA+BQ,WAAW,AACX,SAAU,CAIb,AApCL,4BAkCY,oBAAqB,CACxB,AAnCT,wBAuCQ,UAAW,CACd,AAxCL,qCA0CQ,WAAW,AACX,gBAAiB,CAKpB,AAhDL,iBAmDQ,SAAS,AACT,SAAU,CAOb,AA3DL,uBAuDY,QAAQ,AACR,UAAU,AACV,gBAAiB,CACpB,AA1DT,cA8DQ,QAAQ,AACR,SAAU,CACb,AAhEL,gCAmEY,UAAW,CACd,AApET,qBAuEQ,cAAc,AACd,iBAAkB,CACrB,AAzEL,+DA8EY,WAAW,AACX,MAAO,CACV,AAhFT,gDAmFgB,WAAW,AACX,SAAU,CACb,AArFb,6CAuFgB,WAAW,AACX,SAAU,CACb,AAzFb,gBA8FQ,WAAW,AACX,YAAa,CAIhB,AAnGL,iCAiGY,UAAW,CACd,AAlGT,0BAuGY,WAAY,CAIf,AA3GT,qCAyGgB,gBAAiB,CACpB,AA1Gb,kCA6GY,UAAW,CACd,AA9GT,mCAmHY,wBAAyB,CAC5B,AApHT,uBAsHY,WAAW,AACX,MAAO,CACV,AAxHT,kCA6HY,OAAO,AACP,UAAW,CACd,AA/HT,6CAkIgB,eAAgB,CACnB,AAnIb,gCA0IgB,wBAAyB,CAI5B,AA9Ib,6DA4IoB,eAAgB,CACnB,AA7IjB,kBAoJY,UAAU,AACV,OAAQ,CACX,AAtJT,yDA4JQ,WAAY,CACf","file":"builder.css","sourcesContent":["html {\r\n overflow: hidden;\r\n width: 100%;\r\n float: left;\r\n left: 0;\r\n}\r\n#wp-auth-check-wrap #wp-auth-check {\r\n z-index: 1000000000000;\r\n}\r\n.ninja-forms-app {\r\n height: 0;\r\n #adminmenumain,\r\n #wpfooter {\r\n display: none;\r\n }\r\n #wpwrap {\r\n height: 0;\r\n min-height: 0;\r\n }\r\n #wpcontent {\r\n #wpbody {\r\n font-size: 16px;\r\n }\r\n * {\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n box-sizing: border-box;\r\n }\r\n .wp-editor-tabs button {\r\n box-sizing: initial;\r\n }\r\n }\r\n .grey {\r\n #nf-drawer {\r\n .nf-button {\r\n padding: 15px 30px;\r\n }\r\n }\r\n }\r\n}\r\n.media-modal {\r\n z-index: 100000000;\r\n}\r\n#nf-builder {\r\n background: #fff;\r\n padding: 30px 40px;\r\n overflow: hidden;\r\n padding-top: 80px;\r\n position: fixed;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: 10000000;\r\n box-shadow: 0 5px 15px rgba(0, 0, 0, .7);\r\n}\r\n\r\n.product-content article>*:not(img) {\r\n padding-left: 30px;\r\n padding-right: 30px;\r\n}\r\n","#nf-header {\r\n //background: red;\r\n height: 100px;\r\n transition: margin 0.5s ease;\r\n #nf-logo {\r\n background-image: url( '../img/ninja-forms-app-header-logo.png' );\r\n float: left;\r\n width: 80px;\r\n height: 30px;\r\n @media (min-resolution: 192dpi), (-webkit-min-device-pixel-ratio: 2), (min--moz-device-pixel-ratio: 2), (-o-min-device-pixel-ratio: 2/1), (min-device-pixel-ratio: 2), (min-resolution: 2dppx) {\r\n background-image: url( '../img/ninja-forms-app-header-logo@2x.png' );\r\n background-size: 80px 30px;\r\n }\r\n opacity: 1.0;\r\n filter: alpha(opacity=100);\r\n transition: all 1.0s ease;\r\n }\r\n ul {\r\n display: inline-block;\r\n margin: 0;\r\n li {\r\n float: left;\r\n &.nf-mobile-menu {\r\n display: none;\r\n }\r\n a {\r\n color: #424242;\r\n display: block;\r\n margin: 16px 20px;\r\n padding-bottom: 8px;\r\n text-decoration: none;\r\n &.active {\r\n border-bottom: 2px solid #424242;\r\n }\r\n &.preview {\r\n color: #bbb;\r\n transition: all 1.0s ease;\r\n .dashicons {\r\n display: inline-block;\r\n margin-left: 10px;\r\n }\r\n }\r\n }\r\n &:first-child {\r\n a {\r\n margin-left: 0;\r\n }\r\n }\r\n }\r\n &:after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n input[type=submit] {\r\n float: right;\r\n }\r\n .nf-cancel {\r\n float: right;\r\n margin-right: 60px;\r\n padding: 8px 0;\r\n .dashicons {\r\n font-size: 30px;\r\n }\r\n }\r\n .nf-public-link {\r\n float: right;\r\n margin-right: 30px;\r\n padding: 8px 0;\r\n .dashicons {\r\n font-size: 30px;\r\n }\r\n }\r\n &:after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n}\r\n#nf-app-header {\r\n height: 50px;\r\n &:after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n}\r\n#nf-app-sub-header {\r\n height: 50px;\r\n padding: 0;\r\n h2 {\r\n display: inline-block;\r\n margin: 0;\r\n padding: 10px 0;\r\n transition: all 1.0s ease 0s\r\n }\r\n &:after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n}\r\n.nf-app-buttons {\r\n float: right;\r\n .publish {\r\n float: right;\r\n }\r\n}\r\n#nf-app-form-title {\r\n h2 {\r\n margin: 15px 0;\r\n }\r\n}\r\n","#nf-main {\r\n border: 4px solid #fff;\r\n //padding: 20px 40px 40px;\r\n width: 100%;\r\n position: absolute;\r\n top: 190px;\r\n overflow: auto;\r\n overflow-x: visible;\r\n bottom: 0;\r\n left: 0;\r\n -webkit-overflow-scrolling: touch;\r\n transition: left 0.5s ease;\r\n .nf-field-type-button {\r\n width: 400px;\r\n }\r\n}\r\n.nf-main-test {\r\n width: 100%;\r\n transition: width 0.5s ease;\r\n}\r\n#nf-main-content,\r\n#nf-main-header {\r\n margin: 0 auto;\r\n max-width: 860px;\r\n user-select: none;\r\n padding: 0 80px;\r\n position: relative;\r\n}\r\n#nf-main-header {\r\n //padding: 0 0 20px;\r\n .nf-button {\r\n float: right;\r\n }\r\n h2 {\r\n display: inline-block;\r\n }\r\n &:after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n}\r\n\r\n#the-list tr.flagged th:first-child {\r\n border-left: 5px solid yellow;\r\n}\r\n\r\n#nf-main-gutter-left,\r\n#nf-main-gutter-right {\r\n //background: red;\r\n position: absolute;\r\n top: 0;\r\n width: 80px;\r\n height: 450px;\r\n .fa-chevron-circle-left,\r\n .fa-chevron-circle-right,\r\n .fa-plus-circle {\r\n color: #eee;\r\n font-size: 86px;\r\n position: absolute;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n &:hover {\r\n color: $cta_color;\r\n cursor: pointer;\r\n }\r\n }\r\n}\r\n#nf-main-gutter-left {\r\n left: 0;\r\n padding-left: 6px;\r\n}\r\n#nf-main-gutter-right {\r\n right: 0;\r\n padding-right: 6px;\r\n}\r\n","$accent_color: #84CC1E;\r\n$cta_color: #1EA9EA;\r\n\r\n/*\r\nNormalize WordPress admin for Ninja Forms App\r\n---------------------------------------------*/\r\n\r\n@import \"normalize\";\r\n\r\n/*\r\nHeader and Nav for Ninja Forms App\r\n---------------------------------- */\r\n\r\n@import \"header\";\r\n@import \"main\";\r\n@import \"main-fields\";\r\n@import \"main-settings\";\r\n\r\n/*\r\nForm field placeholders for the fields a user has added to their form\r\n----------------------------------------------------------------------- */\r\n@import \"item-controls\";\r\n@import \"builder-fields\";\r\n@import \"fields-preview/main\";\r\n\r\n/*\r\nAll styles used within the drawer\r\n--------------------------------- */\r\n\r\n@import \"drawer\";\r\n@import \"drawer-settings\";\r\n@import \"drawer-add\";\r\n@import \"drawer-changes\";\r\n@import \"errors\";\r\n/*\r\nVarious custom field styles\r\n--------------------------------- */\r\n\r\n@import \"add-new\";\r\n@import \"toggle\";\r\n@import \"dropdown\";\r\n\r\n/*\r\nAll styles used for displaying table content\r\n-------------------------------------------- */\r\n\r\n@import \"tables\";\r\n\r\n@import \"scrollbar\";\r\n@import \"drag-drop\";\r\n@import \"loading\";\r\n@import \"tooltip\";\r\n@import \"merge-tags-tooltip\";\r\n@import \"editor\";\r\n@import \"color-picker\";\r\n\r\n@import \"media-queries\";\r\n\r\n#nf-app-admin-header {\r\n background: #EBEDEE;\r\n height: 60px;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n .fa-times {\r\n background: #424242;\r\n color: #fff;\r\n font-size: 30px;\r\n position: absolute;\r\n text-align: center;\r\n text-decoration: none;\r\n line-height: 56px;\r\n right: 0;\r\n height: 60px;\r\n width: 60px;\r\n }\r\n #nf-logo {\r\n background-image: url(\"../img/ninja-forms-app-header-logo@2x.png\");\r\n background-size: 130px 50px;\r\n background-position: center bottom;\r\n background-repeat: no-repeat;\r\n float: left;\r\n width: 160px;\r\n height: 60px;\r\n opacity: 1.0;\r\n filter: alpha(opacity=100);\r\n -webkit-transition: all 1.0s ease;\r\n transition: all 1.0s ease;\r\n }\r\n .nf-cta-bubble {\r\n background: $cta_color;\r\n border: 1px solid $cta_color;\r\n border-radius: 6px;\r\n color: #fff;\r\n display: block;\r\n float: left;\r\n font-size: 14px;\r\n margin: 6px 0 0 20px;\r\n padding: 5px 10px;\r\n position: relative;\r\n text-decoration: none;\r\n width: 360px;\r\n &::after {\r\n display: block;\r\n content: \"\";\r\n width: 0;\r\n height: 0;\r\n border-top: 10px solid transparent;\r\n border-bottom: 10px solid transparent;\r\n border-right: 10px solid $cta_color;\r\n position: absolute;\r\n left: -10px;\r\n top: 13px;\r\n }\r\n &:hover {\r\n background: #fff;\r\n color: $cta-color;\r\n }\r\n }\r\n}\r\n\r\n.scrollWrap{\r\n overflow : hidden;\r\n height : 100%;\r\n position : relative;\r\n z-index : 1;\r\n}\r\n.scrollContent{\r\n height : 100%;\r\n width : 100%;\r\n padding : 0 32px 0 0;\r\n position : relative;\r\n right : -18px;\r\n overflow : auto;\r\n -moz-box-sizing : border-box;\r\n box-sizing : border-box;\r\n}\r\n\r\n.fakeScrollBar{\r\n position : absolute;\r\n background : rgba(255,255,255,.5);\r\n width : 9px;\r\n border-radius : 4px;\r\n right : -15px;\r\n top : 0;\r\n z-index : 0;\r\n cursor : -moz-grab;\r\n cursor : -webkit-grab;\r\n}\r\n\r\n.fakeScroll:hover .fakeScrollBar.fakescroll-grabbed{\r\n cursor : -moz-grabbing;\r\n cursor : -webkit-grabbing;\r\n background : #FFF;\r\n}\r\n\r\nbody.fakescroll-grabbed{\r\n cursor : -moz-grabbing;\r\n cursor : -webkit-grabbing;\r\n}\r\n\r\n@import \"rtl\";\r\n\r\n",".nf-fields-empty {\r\n padding: 0 40px;\r\n h3 {\r\n font-size: 30px;\r\n line-height: 32px;\r\n }\r\n p {\r\n font-size: 18px;\r\n }\r\n a {\r\n text-decoration: none;\r\n }\r\n}\r\n\r\n.nf-field-label {\r\n display: inline-block;\r\n margin-left: 16px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n width: 80%;\r\n .nf-drawer-opened & {\r\n width: 60%;\r\n }\r\n}\r\n\r\n.nf-field-wrap {\r\n .fa {\r\n // margin-right: 10px;\r\n // width: 24px;\r\n }\r\n}\r\n.template-box {\r\n text-decoration: none;\r\n .template-box-inside {\r\n background: #EBEDEE;\r\n color: #424242;\r\n min-height: 160px;\r\n padding: 10px;\r\n text-decoration: none;\r\n transition: all 0.2s ease-in-out 0.1s, box-shadow 0.2s ease-in-out 0.1s;\r\n h4 {\r\n margin: 0 0 10px;\r\n min-height: 35px;\r\n }\r\n p {\r\n font-size: 12px;\r\n margin: 0;\r\n }\r\n }\r\n &:hover {\r\n .template-box-inside {\r\n background: #fff;\r\n box-shadow: 0 0 20px $cta_color;\r\n color: $cta_color;\r\n transition: all 0.2s ease-in-out 0.1s, box-shadow 0.2s ease-in-out 0.1s;\r\n }\r\n }\r\n .nf-drawer-opened & {\r\n width: 50%;\r\n }\r\n}\r\n@media only screen and (max-width: 1400px) {\r\n .nf-drawer-opened {\r\n .template-box {\r\n width: 100%;\r\n }\r\n }\r\n}\r\n",".nf-setting-wrap {\r\n cursor: pointer;\r\n float: left;\r\n margin-bottom: 30px;\r\n padding: 0 2%;\r\n width: 33.33%;\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n span {\r\n background: #fff;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n display: table-cell;\r\n height: 85px;\r\n width: 400px;\r\n text-align: center;\r\n vertical-align: middle;\r\n }\r\n &.active {\r\n span {\r\n border: 2px solid $accent_color;\r\n font-weight: bold;\r\n }\r\n }\r\n}\r\n",".nf-item-controls {\r\n height: 30px;\r\n width: 30px;\r\n float: right;\r\n margin: 0;\r\n position: absolute;\r\n top: 9px;\r\n right: 10px;\r\n .nf-item-control {\r\n visibility: hidden;\r\n margin: 0;\r\n opacity: 0;\r\n text-align: center;\r\n width: 40px;\r\n height: 30px;\r\n position: absolute;\r\n right: 0;\r\n transition: all 0.5s ease;\r\n a {\r\n background: #fff;\r\n border: 1px solid #fff;\r\n border-radius: 50px;\r\n color: $cta_color;\r\n display: block;\r\n text-decoration: none;\r\n padding: 3px;\r\n position: relative;\r\n width: 32px;\r\n &:hover {\r\n background: #fff;\r\n border: 1px solid $cta_color;\r\n color: $cta_color;\r\n }\r\n }\r\n .fa {\r\n font-size: 18px;\r\n line-height: 24px;\r\n text-align: center;\r\n }\r\n &.nf-item-edit {\r\n opacity: 100;\r\n visibility: visible;\r\n z-index: auto;\r\n }\r\n }\r\n &:hover {\r\n a {\r\n background: $cta_color;\r\n color: #fff;\r\n }\r\n .nf-item-duplicate {\r\n visibility: visible;\r\n opacity: 100;\r\n right: 80px;\r\n transition: all 0.5s ease;\r\n }\r\n .nf-item-delete {\r\n visibility: visible;\r\n opacity: 100;\r\n right: 40px;\r\n transition: all 0.5s ease;\r\n }\r\n }\r\n}\r\n#nf-table-display {\r\n .nf-item-controls {\r\n float: right;\r\n }\r\n}\r\n.repeater .nf-item-duplicate {\r\n display: none;\r\n}\r\n",".nf-realistic-field {\r\n font-size: 18px!important;\r\n}\r\n\r\n.nf-field-label {\r\n overflow: visible!important;\r\n}\r\n\r\n.nf-realistic-field input[type=\"text\"],\r\n.nf-realistic-field input[type=\"email\"],\r\n.nf-realistic-field select {\r\n width: 100%;\r\n max-width: 100%;\r\n background: #f9f9f9;\r\n height: 50px!important;\r\n padding: 12px;\r\n border: 0;\r\n color: #787878;\r\n}\r\n.nf-realistic-field select[multiple] {\r\n height:auto!important;\r\n}\r\n\r\n.ninja-forms-req-symbol {\r\n color: red;\r\n}\r\n\r\n.nf-realistic-field button,\r\n.nf-realistic-field input[type=\"button\"],\r\n.nf-realistic-field input[type=\"submit\"] {\r\n width: auto;\r\n height: 50px;\r\n padding: 12px;\r\n border-radius: 2px;\r\n background: #333;\r\n border: 0;\r\n color: #f7f7f7;\r\n}\r\n\r\n.nf-realistic-field input[type=\"checkbox\"],\r\n.nf-realistic-field input[type=\"radio\"] {\r\n height: 20px;\r\n width: 20px;\r\n}\r\n\r\n.nf-realistic-field .nf-realistic-field--element input[type=\"radio\"] {\r\n border-width: 2px!important;\r\n background: #f7f7f7;\r\n box-shadow: none;\r\n}\r\n\r\n.nf-realistic-field ul {\r\n margin: 0;\r\n list-style-type: none;\r\n}\r\n.nf-realistic-field ul li {\r\n display: flex;\r\n margin-bottom: 12px;\r\n}\r\n.nf-realistic-field ul li input[type=\"checkbox\"],\r\n.nf-realistic-field ul li input[type=\"radio\"] {\r\n padding: 12px;\r\n margin-top: 4px;\r\n margin-right: 5px;\r\n\r\n & + div { // Faux-label element used in the builder.\r\n margin-top: 6px; // Align the faux-label vertically.\r\n }\r\n}\r\n\r\n.nf-field-wrap {\r\n background: #fff;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n color: #888;\r\n cursor: pointer;\r\n margin-bottom: 20px;\r\n padding: 15px 20px;\r\n position: relative;\r\n transition: border-color .25s;\r\n\r\n &:hover {\r\n border-color: #ccc;\r\n }\r\n\r\n & .nf-item-controls {\r\n display: none;\r\n }\r\n\r\n &:hover .nf-item-controls {\r\n display: block;\r\n }\r\n\r\n &.active {\r\n //background: #fafafa;\r\n border: 2px solid #84CC1E!important;\r\n color: #424242;\r\n .nf-item-controls {\r\n font-weight: normal;\r\n a {\r\n background: #fff;\r\n color: $accent_color;\r\n &:hover {\r\n border-color: #fff;\r\n }\r\n }\r\n .nf-item-delete,\r\n .nf-item-duplicate {\r\n display: none;\r\n }\r\n .nf-item-editing {\r\n display: inline;\r\n }\r\n .nf-item-edit {\r\n .dashicons {\r\n margin-right: 12px\r\n }\r\n }\r\n }\r\n }\r\n &.note {\r\n background: #ffffee;\r\n }\r\n}\r\n\r\n.nf-group-wrap {\r\n background: #fff;\r\n border: 2px solid #ccc;\r\n border-radius: 4px;\r\n color: #888;\r\n margin: 0 -10px 20px;\r\n padding: 15px 30px;\r\n position: relative;\r\n //transition: all 1.0s ease;\r\n .nf-item-controls {\r\n width: 128px;\r\n }\r\n .nf-item-expand {\r\n display: inline !important;\r\n }\r\n .nf-field-wrap {\r\n margin-left: -20px;\r\n margin-right: -20px;\r\n visibility: hidden;\r\n opacity: 0.0;\r\n filter: alpha(opacity=0);\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n //transition: all 1.0s ease;\r\n }\r\n &.expanded {\r\n border-color: $accent_color;\r\n color: $accent_color;\r\n //transition: all 1.0s ease;\r\n .nf-item-expand {\r\n .dashicons {\r\n transform: rotate(90deg);\r\n }\r\n }\r\n .nf-field-wrap {\r\n opacity: 1.0;\r\n visibility: visible;\r\n filter: alpha(opacity=100);\r\n position: relative;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n transition: all 1.0s ease;\r\n &:nth-child(2) {\r\n margin-top: 20px;\r\n }\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n .nf-item-controls {\r\n width: 96px;\r\n .nf-item-expand {\r\n display: none !important;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n",".nf-item-controls {\r\n z-index: 2;\r\n}\r\n\r\n.nf-realistic-field {\r\n color: black !important;\r\n}\r\n\r\n.nf-realistic-field input[type=\"text\"],\r\n.nf-realistic-field input[type=\"tel\"],\r\n.nf-realistic-field input[type=\"email\"] {\r\n width: 100%;\r\n max-width: 100%;\r\n background: #f9f9f9;\r\n height: 50px;\r\n padding: 12px;\r\n border: 0;\r\n color: #787878;\r\n}\r\n.ninja-forms-req-symbol {\r\n color: red;\r\n}\r\n\r\n.nf-realistic-field button,\r\n.nf-realistic-field input[type=\"button\"],\r\n.nf-realistic-field input[type=\"submit\"] {\r\n width: auto;\r\n height: 50px;\r\n padding: 12px 20px;\r\n border-radius: 4px;\r\n background: #333;\r\n border: 0;\r\n color: #f7f7f7;\r\n font-weight: bold;\r\n text-transform: uppercase;\r\n}\r\n\r\n.nf-field-wrap {\r\n border: 1px solid transparent;\r\n transition: border-color .25s;\r\n\r\n &:hover {\r\n border-color: #ccc;\r\n }\r\n\r\n & .nf-item-controls {\r\n display: none;\r\n }\r\n\r\n &:hover .nf-item-controls {\r\n display: block;\r\n }\r\n}\r\n\r\n.nf-realistic-field .nf-field-label {\r\n font-weight: bold;\r\n margin-left: 0!important;\r\n}\r\n\r\n.nf-realistic-field .nf-realistic-field--label {\r\n font-size: 16px!important;\r\n margin-bottom: 10px!important;\r\n text-transform: none!important;\r\n}\r\n\r\n.nf-realistic-field .nf-realistic-field--element input,\r\n.nf-realistic-field .nf-realistic-field--element textarea {\r\n border: 1px solid #c4c4c4!important;\r\n}\r\n\r\n.listselect,\r\n.listcountry,\r\n.liststate {\r\n .nf-realistic-field .nf-realistic-field--label {\r\n margin-bottom: 8px;\r\n }\r\n .nf-realistic-field .nf-realistic-field--element select {\r\n border: 1px solid #c4c4c4;\r\n box-shadow: none;\r\n appearance: none;\r\n margin-top: 7px;\r\n }\r\n .nf-realistic-field .nf-realistic-field--element > div {\r\n position: relative;\r\n }\r\n .nf-realistic-field .nf-realistic-field--element select + div {\r\n display: block;\r\n position: absolute;\r\n font-size: 16px;\r\n line-height: 16px;\r\n margin: 0;\r\n margin-top: 7px;\r\n padding: 16px;\r\n height: 50px;\r\n top: 0;\r\n right: 0;\r\n left: 0;\r\n z-index: 1;\r\n }\r\n .nf-realistic-field .nf-realistic-field--element select + div::after {\r\n content: \"\\f078\";\r\n font-family: FontAwesome;\r\n font-size: 20px;\r\n position: absolute;\r\n right: 10px;\r\n bottom: 0;\r\n height: 50px;\r\n line-height: 50px;\r\n }\r\n}\r\n\r\n.starrating .nf-realistic-field--element {\r\n margin-top: 10px;\r\n}\r\n\r\n.checkbox .nf-realistic-field input:checked {\r\n margin: 4px 5px 1px 0;\r\n}\r\n.checkbox .nf-realistic-field input:checked::before {\r\n content: \"\\f00c\";\r\n font-family: FontAwesome;\r\n font-size: 24px;\r\n position: absolute;\r\n top: 20px;\r\n left: 25px;\r\n z-index: 2;\r\n color: black;\r\n}\r\n\r\n.listcheckbox .nf-realistic-field li {\r\n position: relative;\r\n}\r\n.listcheckbox .nf-realistic-field input:checked::before {\r\n content: \"\\f00c\";\r\n font-family: FontAwesome;\r\n font-size: 24px;\r\n position: absolute;\r\n left: 5px;\r\n z-index: 2;\r\n color: black;\r\n}\r\n\r\n.listradio .nf-realistic-field li {\r\n position: relative;\r\n}\r\n.listradio .nf-realistic-field input:checked {\r\n border-color: black !important;\r\n}\r\n.listradio .nf-realistic-field input:checked::before {\r\n border-radius: 50%;\r\n content: \"\";\r\n height: 10px;\r\n width: 10px;\r\n position: absolute;\r\n left: 1px;\r\n top: 5px;\r\n z-index: 2;\r\n background-color: black;\r\n}\r\n\r\n\r\n@import \"label-position/above\";\r\n@import \"label-position/below\";\r\n@import \"label-position/hidden\";\r\n@import \"label-position/left\";\r\n@import \"label-position/right\";\r\n",".nf-realistic-field.nf-realistic-field--label-above {\r\n display: block;\r\n}",".nf-realistic-field.nf-realistic-field--label-below {\r\n display: flex;\r\n flex-direction: column;\r\n\r\n .nf-realistic-field--label {\r\n order: 5;\r\n }\r\n .nf-realistic-field--description {\r\n order: 4;\r\n }\r\n .nf-realistic-field--element {\r\n order: 3;\r\n }\r\n}",".nf-realistic-field.nf-realistic-field--label-hidden {\r\n display: flex;\r\n flex-direction: column;\r\n\r\n .nf-realistic-field--label {\r\n display: none;\r\n }\r\n .nf-realistic-field--description {\r\n order: 4;\r\n }\r\n .nf-realistic-field--element {\r\n order: 3;\r\n }\r\n}",".nf-realistic-field.nf-realistic-field--label-left {\r\n display: flex;\r\n flex-wrap: wrap;\r\n flex-direction: row;\r\n\r\n .nf-realistic-field--label {\r\n order: 3;\r\n width: 35%;\r\n text-align: right;\r\n padding-top: 5px;\r\n padding-right: 10px;\r\n word-wrap: break-word;\r\n\r\n .nf-field-label {\r\n white-space: normal !important;\r\n }\r\n }\r\n\r\n .nf-realistic-field--element {\r\n order: 4;\r\n width: 65%;\r\n } \r\n\r\n .nf-realistic-field--description {\r\n order: 5;\r\n width: 100%;\r\n margin-left: 35%;\r\n }\r\n}\r\n\r\n/**\r\n * Checkbox\r\n */\r\n\r\n.nf-field-wrap.checkbox .nf-realistic-field.nf-realistic-field--label-left {\r\n .nf-realistic-field--label {\r\n order: 3;\r\n width: 38%;\r\n padding-left: 0;\r\n padding-right: 5%;\r\n text-align: center;\r\n }\r\n\r\n .nf-realistic-field--element {\r\n order: 4;\r\n width: 58%;\r\n } \r\n\r\n .nf-realistic-field--description {\r\n order: 5;\r\n width: 100%;\r\n margin-left: 38%;\r\n }\r\n}",".nf-realistic-field.nf-realistic-field--label-right {\r\n display: flex;\r\n flex-wrap: wrap;\r\n flex-direction: row;\r\n\r\n .nf-realistic-field--label {\r\n order: 4;\r\n width: 35%;\r\n padding-left: 2%;\r\n }\r\n\r\n .nf-realistic-field--element {\r\n order: 3;\r\n width: 65%;\r\n } \r\n\r\n .nf-realistic-field--description {\r\n order: 5;\r\n width: 100%;\r\n margin-left: 35%;\r\n }\r\n}\r\n\r\n/**\r\n * Checkbox\r\n */\r\n\r\n.nf-field-wrap.checkbox .nf-realistic-field.nf-realistic-field--label-right {\r\n align-items: flex-start;\r\n\r\n .nf-realistic-field--label {\r\n order: 4;\r\n width: auto;\r\n padding-left: 2%;\r\n padding-right: 2%;\r\n margin-bottom: 0;\r\n\r\n .nf-field-label {\r\n width: 100%;\r\n }\r\n }\r\n\r\n .nf-realistic-field--element {\r\n order: 3;\r\n width: auto;\r\n } \r\n\r\n .nf-realistic-field--description {\r\n order: 5;\r\n width: auto;\r\n margin-left: 0;\r\n }\r\n}","#nf-drawer {\r\n background: #EBEDEE;\r\n padding: 40px 40px;\r\n width: 50%;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n right: -1400px;\r\n overflow: hidden;\r\n z-index: auto; // Changed from 101 to Auto to fix a bug with the merge tag overlay in Safari.\r\n transition: width 0.75s ease;\r\n -webkit-overflow-scrolling: touch;\r\n &.nf-drawer-expand {\r\n width: 100%;\r\n }\r\n z-index: 2;\r\n}\r\n.nf-drawer-opened {\r\n .nf-main-test {\r\n width: 50%;\r\n transition: all 0.50s ease;\r\n .nf-button {\r\n display: none;\r\n }\r\n }\r\n #nf-drawer {\r\n right: 0;\r\n transition: all 0.50s ease;\r\n &.nf-drawer-expand {\r\n width: 100%;\r\n transition: all 0.50s ease;\r\n .nf-toggle-drawer {\r\n .dashicons {\r\n transform: rotate(180deg);\r\n transition: all 0.50s ease;\r\n }\r\n .nf-expand-off {\r\n display: none;\r\n }\r\n .nf-expand-on {\r\n display: inline;\r\n }\r\n }\r\n }\r\n }\r\n .preview {\r\n opacity: 0.0;\r\n visibility:hidden;\r\n filter: alpha(opacity=0);\r\n transition: all 0.50s ease;\r\n &:hover, &:active, &.active {\r\n opacity: 0.0;\r\n visibility:hidden;\r\n filter: alpha(opacity=0);\r\n transition: all 0.50s ease;\r\n }\r\n }\r\n #nf-main-content,\r\n #nf-main-header {\r\n margin: 0 auto;\r\n //padding-left: 60px;\r\n transition: all 0.50s ease;\r\n }\r\n @media only screen and (min-width: 901px) {\r\n #nf-app-sub-header {\r\n .nf-add-new {\r\n top: 139px !important;\r\n text-indent: -99999px;\r\n &:after {\r\n }\r\n }\r\n }\r\n }\r\n .nf-setting-wrap {\r\n width: 50%;\r\n transition: width 0.50s ease;\r\n }\r\n .nf-toggle-drawer {\r\n display: block;\r\n }\r\n}\r\n.nf-drawer-closed {\r\n #nf-main {\r\n width: 100%;\r\n left: 0;\r\n transition: width 0.50s ease, left 0.50s ease;\r\n }\r\n #nf-drawer {\r\n right: -1400px;\r\n transition: right 0.50s ease;\r\n }\r\n .nf-add-new {\r\n opacity: 1.0;\r\n visibility: visible;\r\n filter: alpha(opacity=100);\r\n transition: all 0.50s ease;\r\n }\r\n .nf-setting-wrap {\r\n width: 33%;\r\n transition: width 0.50s ease;\r\n }\r\n .nf-toggle-drawer {\r\n display: none;\r\n }\r\n}\r\n.nf-drawer-header {\r\n margin-bottom: 20px;\r\n padding: 0 10px;\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n h2 {\r\n color: #666;\r\n float: left;\r\n font-size: 20px;\r\n line-height: 22px;\r\n .dashicons {\r\n margin-right: 10px;\r\n }\r\n }\r\n .nf-button {\r\n float: right;\r\n }\r\n}\r\n.nf-drawer-error {\r\n background-color: #FFBABA;\r\n border: 1px solid #FFBABA;\r\n border-radius: 5px;\r\n color: #D8000C;\r\n font-size: 12px;\r\n margin: 10px 0px;\r\n padding: 10px 10px;\r\n}\r\n.nf-settings {\r\n h3 {\r\n color: #424242;\r\n font-size: 14px;\r\n padding: 10px 10px 0;\r\n text-transform: uppercase;\r\n .dashicons {\r\n color: #bbb;\r\n font-size: 28px;\r\n margin: -4px 10px 0 -30px;\r\n }\r\n }\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n}\r\n.nf-full {\r\n clear: both;\r\n &.toggle-row {\r\n border-bottom: 1px solid #ccc;\r\n margin: 0;\r\n position: relative;\r\n &:first-child {\r\n border-top: 1px solid #ccc;\r\n }\r\n label {\r\n display: inline-block;\r\n padding: 15px 60px 15px 0;\r\n //margin: 15px -40px 12px 0;\r\n }\r\n .nf-toggle {\r\n float: right;\r\n margin: 15px 0;\r\n position: absolute;\r\n top: 0;\r\n right: 10px;\r\n }\r\n }\r\n .nf-select{\r\n select{\r\n display: block;\r\n max-width: 100%;\r\n }\r\n }\r\n}\r\n.nf-one-half,\r\n.nf-one-third {\r\n float: left;\r\n}\r\n.nf-one-half {\r\n width: 50%;\r\n}\r\n.nf-one-third {\r\n width: 33.33%;\r\n}\r\n.nf-first {\r\n clear: both;\r\n margin-left: 0;\r\n}\r\n.nf-full,\r\n.nf-one-half,\r\n.nf-one-third {\r\n margin-bottom: 15px;\r\n padding: 0 2%;\r\n}\r\n.nf-full::after,\r\n.nf-one-half::after,\r\n.nf-one-third::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n}\r\n.nf-toggle-drawer {\r\n color: #aaa;\r\n cursor: pointer;\r\n display: none;\r\n float: right;\r\n margin-top: 40px;\r\n text-decoration: none;\r\n padding: 10px 20px;\r\n position: fixed;\r\n bottom: 0;\r\n right: 0;\r\n .dashicons {\r\n margin-right: 5px;\r\n transition: all 0.50s ease;\r\n }\r\n .nf-expand-off {\r\n display: inline;\r\n }\r\n .nf-expand-on {\r\n display: none;\r\n }\r\n}\r\n\r\n\r\n#nf-menu-drawer {\r\n background: #EBEDEE;\r\n box-shadow: inset 1px 4px 9px -6px;\r\n width: 250px;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n right: -250px;\r\n z-index: 999;\r\n transition: right 0.50s ease;\r\n ul {\r\n margin: 0;\r\n li {\r\n a {\r\n border-bottom: 1px solid #ccc;\r\n color: #424242;\r\n display: block;\r\n padding: 10px 20px;\r\n text-decoration: none;\r\n .dashicons {\r\n color: $cta_color;\r\n margin-right: 15px;\r\n }\r\n }\r\n }\r\n }\r\n .nf-publish {\r\n background: $cta_color;\r\n color: #fff;\r\n padding: 20px;\r\n text-align: center;\r\n text-transform: uppercase;\r\n cursor:pointer;\r\n\r\n &.disabled {\r\n background: #ccc;\r\n border: 1px solid #ccc;\r\n cursor: default;\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n.nf-menu-expand {\r\n #nf-menu-drawer {\r\n right: 0;\r\n transition: right 0.50s ease;\r\n }\r\n #nf-header {\r\n margin-right: 250px;\r\n margin-left: -250px;\r\n transition: margin 0.50s ease;\r\n }\r\n #nf-main {\r\n left: -250px;\r\n transition: left 0.50s ease;\r\n }\r\n}\r\n\r\n.nf-div-table {\r\n .nf-table-row {\r\n &.nf-error {\r\n textarea {\r\n border: 1px solid red;\r\n }\r\n span.nf-option-error {\r\n background: red;\r\n color: #fff;\r\n display: block;\r\n padding: 5px 0;\r\n width: 100%;\r\n div.nf-error {\r\n display: block;\r\n width: 100% !important;\r\n text-align: center;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n.ninja-forms-app {\r\n .jBox-Notice {\r\n .jBox-container {\r\n background: $accent_color;\r\n font-size: 18px;\r\n }\r\n }\r\n}\r\n\r\n.available-action-modal {\r\n padding: 20px;\r\n img {\r\n width: 100%;\r\n }\r\n iframe {\r\n width: 100%;\r\n height: 214px;\r\n }\r\n p:first-of-type {\r\n font-size: 16px;\r\n font-weight: bold;\r\n line-height: 20px;\r\n padding: 16px 40px;\r\n text-align: center;\r\n }\r\n .actions {\r\n margin-top: 30px;\r\n &::after {\r\n display: block;\r\n clear: both;\r\n content: \"\";\r\n }\r\n }\r\n .primary.nf-button {\r\n float: right;\r\n }\r\n ul {\r\n list-style-type: disc;\r\n li {\r\n margin-left: 20px;\r\n padding-left: 10px;\r\n }\r\n }\r\n}",".nf-button {\r\n border: 0;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n display: inline-block;\r\n font-size: 17px;\r\n padding: 10px 30px;\r\n text-align: center;\r\n text-decoration: none;\r\n text-transform: uppercase;\r\n appearance: none;\r\n &.primary {\r\n background: $cta_color;\r\n border: 1px solid #1EA9EA;\r\n color: #fff;\r\n }\r\n &.secondary {\r\n background: #fff;\r\n border: 1px solid $cta_color;\r\n color: $cta_color;\r\n }\r\n &.disabled {\r\n background: #ccc;\r\n border: 1px solid #ccc;\r\n cursor: default;\r\n }\r\n &.publish {\r\n float: right;\r\n }\r\n}\r\n.nf-cancel {\r\n color: #999;\r\n font-size: 15px;\r\n}\r\n.nf-public-link {\r\n color: #999;\r\n font-size: 15px;\r\n}\r\n.nf-mobile-menu {\r\n background: $cta_color;\r\n border-radius: 4px;\r\n color: #fff;\r\n display: none;\r\n float: right;\r\n padding: 5px 7px 5px 5px;\r\n text-decoration: none;\r\n transition: margin 0.5s ease;\r\n .dashicons {\r\n font-size: 30px;\r\n width: 32px;\r\n height: 30px;\r\n }\r\n &:hover {\r\n color: #fff;\r\n }\r\n}\r\n\r\n.ninja-forms-app {\r\n fieldset {\r\n border: 1px solid #ccc;\r\n clear: both;\r\n display: block;\r\n margin-bottom: 20px;\r\n }\r\n label {\r\n position: relative;\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n legend {\r\n margin: 0 3px 10px;\r\n padding: 0 10px;\r\n }\r\n .nf-setting-label, label, legend {\r\n color: #424242;\r\n display: block;\r\n font-size: 13px;\r\n text-transform: uppercase;\r\n .open-media-manager {\r\n position: absolute;\r\n color: #ccc;\r\n right: 15px;\r\n top: 5px;\r\n text-decoration: none;\r\n }\r\n }\r\n input[type=text],\r\n input[type=number],\r\n textarea {\r\n background: #f9f9f9;\r\n border: 0;\r\n margin-top: 7px;\r\n padding: 12px 15px;\r\n width: 100%;\r\n height: 41px;\r\n text-transform: default;\r\n }\r\n textarea {\r\n height: 200px;\r\n }\r\n input[type=checkbox].nf-checkbox {\r\n appearance: none;\r\n background: #f9f9f9;\r\n border: 0;\r\n height: 25px;\r\n width: 25px;\r\n padding: 2px 1px 0px !important;\r\n margin: -3px -5px;\r\n &:checked {\r\n &::before {\r\n content: \"\\f147\";\r\n font: 400 30px/1 dashicons;\r\n }\r\n }\r\n }\r\n}\r\n.ninja-forms-app {\r\n .jBox-wrapper.import-options {\r\n padding: 12px 20px 0px !important;\r\n }\r\n .jBox-wrapper.import-options.jBox-pointerPosition-top.jBox-closeButton-box:before {\r\n right: 10px;\r\n }\r\n .nf-list-options, .nf-listimage-options {\r\n padding-bottom: 20px;\r\n .nf-add-new {\r\n margin-left: 20px;\r\n }\r\n .nf-div-table {\r\n .nf-table-row {\r\n > div {\r\n //border-top: 16px solid red;\r\n display: table-cell;\r\n padding: 5px;\r\n &:nth-child(1), &:nth-child(6) {\r\n padding: 0 15px;\r\n width: 20px;\r\n }\r\n &:nth-child(2), &:nth-child(3) {\r\n width: 45%;\r\n }\r\n &:nth-child(4) {\r\n min-width: 100px;\r\n }\r\n input {\r\n margin: 0;\r\n }\r\n }\r\n &.nf-table-header {\r\n div {\r\n font-size: 12px;\r\n padding: 20px 5px 5px;\r\n &:nth-child(1), &:nth-child(6) {\r\n padding: 0 25px;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n &.calculations {\r\n .nf-div-table {\r\n .nf-table-header{\r\n div{\r\n &:nth-child(4) {\r\n display: none;\r\n }\r\n }\r\n }\r\n .nf-table-row {\r\n div {\r\n vertical-align: top;\r\n position: relative;\r\n &:nth-child(1), &:nth-child(4) {\r\n padding: 0 15px;\r\n width: 20px;\r\n min-width: 20px;\r\n }\r\n &:nth-child(2) {\r\n width: 30%;\r\n }\r\n &:nth-child(3) {\r\n width: 70%;\r\n }\r\n textarea {\r\n margin: 0;\r\n height: 100px;\r\n padding-right: 40px;\r\n }\r\n .merge-tags {\r\n color: #999;\r\n position: absolute;\r\n right: 15px;\r\n top: 5px;\r\n }\r\n .dashicons {\r\n color: #999;\r\n margin-top: 10px;\r\n }\r\n }\r\n .calc-left {\r\n div {\r\n display: inline-block;\r\n &:nth-child(1) {\r\n width: 100%;\r\n padding: 0px;\r\n }\r\n &:nth-child(2) {\r\n width: 60%;\r\n text-align: right;\r\n font-size: 12px;\r\n float: left;\r\n padding-top: 20px;\r\n padding-right: 10px;\r\n }\r\n &:nth-child(3) {\r\n width: 50px;\r\n float: left;\r\n padding-top: 10px;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n .options {\r\n position: relative;\r\n legend {\r\n .nf-open-import-tooltip {\r\n background: #EBEDEE;\r\n color: $cta_color;\r\n font-size: 16px;\r\n padding: 6px 15px;\r\n text-decoration: none;\r\n position: absolute;\r\n right: 15px;\r\n top: 0;\r\n }\r\n }\r\n }\r\n .button-toggle {\r\n text-align: left;\r\n border: #ccc 1px solid;\r\n border-radius: 5px;\r\n background: #f1f1f1;\r\n margin-top: 35px;\r\n padding: 9px 0px;\r\n width: 100%;\r\n label {\r\n width: 48%;\r\n display: inline-block;\r\n margin-left: 1%;\r\n span {\r\n width: 100%;\r\n display: inline-block;\r\n cursor: pointer;\r\n transition: background-color 0.4s;\r\n }\r\n input:checked + span {\r\n background-color: #1ea9ea;\r\n border-color: #1ea9ea;\r\n }\r\n input + span {\r\n background-color: #ccc;\r\n border-color: #ccc;\r\n }\r\n }\r\n }\r\n}\r\n.nf-drawer-buttons {\r\n display: none;\r\n margin: 0 -20px;\r\n padding: 0;\r\n li {\r\n background: #424242;\r\n border-right: 1px solid #f1f1f1;\r\n float: left;\r\n margin: 0;\r\n padding: 15px;\r\n text-align: center;\r\n width: 50%;\r\n &:last-child {\r\n border: 0;\r\n }\r\n &.nf-drawer-delete {\r\n color: red;\r\n }\r\n &.nf-drawer-duplicate {\r\n color: $accent_color;\r\n }\r\n .dashicons {\r\n margin-right: 10px;\r\n }\r\n }\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n}\r\n\r\n.dashicons.spin {\r\n animation: dashicons-spin 1s infinite;\r\n animation-timing-function: linear;\r\n}\r\n@keyframes dashicons-spin {\r\n 0% { transform: rotate( 0deg ); }\r\n 100% { transform: rotate( 360deg ); }\r\n}\r\n\r\n",".nf-search {\r\n display: inline;\r\n position: relative;\r\n input[type=search] {\r\n background: transparent;\r\n box-shadow: 0 0 0;\r\n border: 0;\r\n margin-bottom:3px;\r\n padding: 12px 0 12px 50px;\r\n width: 60%;\r\n }\r\n &::before {\r\n content: \"\\f179\";\r\n color: #aaa;\r\n font-family: \"Dashicons\";\r\n font-size: 30px;\r\n width: 30px;\r\n height: 30px;\r\n position: absolute;\r\n top: 4px;\r\n left: 10px;\r\n }\r\n}\r\n.nf-stage {\r\n position: relative;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n .nf-stage-controls {\r\n background: #F8F8F9;\r\n padding: 5px;\r\n position: absolute;\r\n top: -20px;\r\n right: 10px;\r\n }\r\n}\r\n.nf-reservoir {\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n &.nf-droppable-active,\r\n &.nf-staged-fields-active {\r\n background: #F8F8F9;\r\n border: 4px solid #F8F8F9;\r\n border-radius: 4px;\r\n margin: 30px 2% 20px;\r\n //padding: 10px;\r\n min-height: 52px;\r\n padding: 6px;\r\n transition: all 1.0s ease;\r\n }\r\n .nf-item-dock {\r\n background: #fff;\r\n border-radius: 4px;\r\n color: #999;\r\n display: inline-block;\r\n float: left;\r\n margin: 0 4px 3px 4px;\r\n padding: 5px 10px;\r\n position: relative;\r\n .dashicons {\r\n font-size: 14px;\r\n margin: 2px 0 -4px 5px;\r\n }\r\n .fa {\r\n margin-right: 10px;\r\n }\r\n }\r\n\r\n}\r\n.nf-item {\r\n background: #3B454D;\r\n border-radius: 4px;\r\n color: #EBEDEE;\r\n font-size: 14px;\r\n padding: 10px;\r\n position: relative;\r\n text-align: center;\r\n &.active {\r\n background: $cta_color;\r\n color: #fff;\r\n }\r\n .fa {\r\n background: #30373E;\r\n border-top-left-radius: 4px;\r\n border-bottom-left-radius: 4px;\r\n padding: 9px;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n width: 34px;\r\n line-height: 20px;\r\n }\r\n}\r\n.nf-saved {\r\n .nf-item {\r\n position: relative;\r\n &::after {\r\n background: #30373E;\r\n border-top-left-radius: 4px;\r\n border-bottom-left-radius: 4px;\r\n content: \"\\f155\";\r\n font-family: \"Dashicons\";\r\n padding: 9px;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n width: 16px;\r\n height: 20px;\r\n }\r\n }\r\n}\r\n.nf-action-items {\r\n .nf-item {\r\n height: 50px;\r\n line-height: 30px;\r\n cursor: pointer;\r\n &.nf-has-img {\r\n background-position: center center;\r\n text-indent: -99999px;\r\n }\r\n }\r\n &.available {\r\n .nf-item {\r\n &.nf-has-img {\r\n filter: grayscale(100%);\r\n opacity: 0.6;\r\n &:hover {\r\n filter: grayscale(0);\r\n opacity: 1.0;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.nf-actions-items-available .nf-item {\r\n color: #3B454D;\r\n background-color: #EBEDEE;\r\n border: 1px solid #3B454D;\r\n}\r\n\r\n.nf-field-type-button {\r\n float: left;\r\n margin-bottom: 15px;\r\n padding: 0 2%;\r\n width: 33.33%;\r\n}\r\n","table.nf-changes {\r\n tr {\r\n td {\r\n border-bottom: 1px solid #ccc;\r\n }\r\n &.disabled-row {\r\n td {\r\n color: #bbb;\r\n }\r\n }\r\n &:nth-child(even) {\r\n td {\r\n background: #e5e7e8 !important;\r\n }\r\n }\r\n &:hover {\r\n td {\r\n background: #fff !important;\r\n }\r\n }\r\n }\r\n}\r\n.nf-button {\r\n &.undoChanges {\r\n .dashicons {\r\n font-size: 18px;\r\n height: 18px;\r\n width: 18px;\r\n margin-right: 5px;\r\n }\r\n }\r\n}\r\n",".nf-setting-error {\r\n color: red;\r\n font-size: 14px;\r\n padding: 5px 10px;\r\n a {\r\n color: red;\r\n }\r\n}\r\n",".nf-add-new {\r\n // background: red;\r\n color: $cta_color;\r\n padding: 0 0 0 46px;\r\n text-decoration: none;\r\n line-height: 32px;\r\n position: relative;\r\n height: 32px;\r\n z-index: 98;\r\n text-indent: 0px;\r\n overflow: hidden;\r\n &:after {\r\n background: $cta_color;\r\n border: 2px solid $cta_color;\r\n border-radius: 40px;\r\n color: #fff;\r\n content: \"+\";\r\n font-size: 22px;\r\n padding: 8px;\r\n position: absolute;\r\n left: 0;\r\n width: 12px;\r\n height: 12px;\r\n line-height: 10px;\r\n text-indent: 0px;\r\n transition: all 0.5s ease 0s\r\n }\r\n &:hover, &:active, &.active {\r\n color: $cta_color;\r\n transition: width 0.5s ease 0s,height 0.5s ease 0s, text-indent 0.5s ease,top 0.5s ease,left 0.5s ease;\r\n &:after {\r\n background: #fff;\r\n color: $cta_color;\r\n transform: rotate(180deg);\r\n transition: all 0.5s ease;\r\n }\r\n }\r\n &.nf-open-drawer {\r\n position: absolute;\r\n top: 185px;\r\n left: 40px;\r\n }\r\n}\r\n.nf-add-new.disabled {\r\n display: none;\r\n}\r\n.ninja-forms-app {\r\n &.folded {\r\n .nf-add-new {\r\n }\r\n }\r\n}\r\n\r\n.nf-master-control {\r\n background: $cta_color;\r\n border: 2px solid $cta_color;\r\n border-radius: 40px;\r\n cursor: pointer;\r\n position: absolute;\r\n //text-indent: -9999px;\r\n height: 60px;\r\n width: 60px;\r\n top: auto;\r\n left: auto;\r\n bottom: 20px;\r\n right: 30px;\r\n transition: all 0.5s ease;\r\n z-index: 98;\r\n span {\r\n display: block;\r\n text-indent: -9999px;\r\n }\r\n .fa {\r\n color: #fff;\r\n cursor: pointer;\r\n font-size: 28px;\r\n line-height: 28px;\r\n margin: 15px 0 0 16px;\r\n transition: all 0.5s ease;\r\n }\r\n &:hover, &:active, &.active {\r\n background: #fff;\r\n color: $cta_color;\r\n transition: all 0.5s ease;\r\n .fa {\r\n color: $cta_color;\r\n margin: 12px 0 0 16px;\r\n transform: rotate(180deg);\r\n transition: all 0.5s ease;\r\n }\r\n }\r\n}\r\n","input[type=checkbox].nf-toggle {\r\n display: none;\r\n + label {\r\n text-indent: -99999px;\r\n background: transparent;\r\n border: 0;\r\n box-shadow: 0 0 0;\r\n display: block;\r\n margin: 19px 5px 11px;\r\n appearance: none;\r\n position: relative;\r\n width: 40px;\r\n height: 20px;\r\n cursor: pointer;\r\n &::after {\r\n background: #BCBDBF;\r\n border: 2px solid #BCBDBF;\r\n border-radius: 20px;\r\n content: \"\";\r\n position: absolute;\r\n top: -4px;\r\n left: -4px;\r\n width: 40px;\r\n height: 20px;\r\n transition: all 0.3s ease;\r\n }\r\n &::before {\r\n background: #fff;\r\n border-radius: 20px;\r\n content: \"\";\r\n position: absolute;\r\n top: -1px;\r\n left: 0;\r\n width: 18px;\r\n height: 18px;\r\n z-index: 99;\r\n transition: all 0.3s ease;\r\n }\r\n }\r\n &:checked {\r\n + label {\r\n &::after {\r\n background: $accent_color;\r\n border: 2px solid $accent_color;\r\n transition: all 0.3s ease;\r\n }\r\n &::before {\r\n content: \"\";\r\n //top: 2px;\r\n left: 18px;\r\n transition: all 0.3s ease;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.nf-full {\r\n position: relative;\r\n input[type=checkbox].nf-toggle {\r\n + label {\r\n margin: -18px 0 0;\r\n padding: 12px 0 20px;\r\n position: absolute;\r\n top: 24px;\r\n right: 10px;\r\n &::before {\r\n left: auto;\r\n right: 22px;\r\n transition: right 0.3s ease;\r\n }\r\n &::after {\r\n left: auto;\r\n right: 0;\r\n }\r\n }\r\n &:checked {\r\n + label {\r\n &::before {\r\n left: auto;\r\n right: 4px;\r\n transition: right 0.3s ease;\r\n }\r\n }\r\n }\r\n }\r\n .nf-setting-label {\r\n border-bottom: 1px solid #ccc;\r\n padding: 5px 0 20px;\r\n }\r\n}\r\n",".ninja-forms-app {\r\n .nf-select {\r\n display: block;\r\n position: relative;\r\n select {\r\n //background: #f9f9f9;\r\n background: transparent;\r\n border: 0;\r\n margin-top: 7px;\r\n height: 41px !important;\r\n padding: 0 30px 0 15px;\r\n position: relative;\r\n width: 100%;\r\n text-transform: capitalize;\r\n appearance: none;\r\n z-index: 2\r\n }\r\n div {\r\n background: #f9f9f9;\r\n height: 41px;\r\n position: absolute;\r\n bottom: 1px;\r\n width: 100%;\r\n z-index: 1;\r\n }\r\n div::after {\r\n color: #666;\r\n content: \"\\f347\";\r\n font-family: 'Dashicons';\r\n font-size: 20px;\r\n position: absolute;\r\n width: 30px;\r\n height: 30px;\r\n right: 5px;\r\n bottom: 0;\r\n }\r\n }\r\n div.nf-select {\r\n div {\r\n bottom: 7px;\r\n width: 95%;\r\n }\r\n select {\r\n margin-top: 0;\r\n }\r\n }\r\n}\r\n",".nf-actions-table,\r\n.nf-table-display {\r\n border-collapse: collapse;\r\n width: 100%;\r\n td, th {\r\n border-bottom: 1px solid #ECEDEE;\r\n font-size: 14px;\r\n padding: 15px;\r\n vertical-align: top;\r\n position: relative;\r\n //max-width: 500px;\r\n }\r\n th {\r\n color: #666;\r\n text-align: left;\r\n text-transform: uppercase;\r\n }\r\n td {\r\n color: #676F75;\r\n //white-space:nowrap;\r\n position: relative;\r\n &:nth-child(2) {\r\n width: 90%;\r\n }\r\n }\r\n .deactivated {\r\n td {\r\n color: #BCBDBF;\r\n a {\r\n color: #ddd;\r\n }\r\n }\r\n }\r\n input[type=checkbox].nf-toggle + label {\r\n z-index: 0; // Set to fix a bug with the merge tag box overlay with RTEs.\r\n margin: 2px 0 0;\r\n // &::after {\r\n // border-radius: 20px;\r\n // top: 2px;\r\n // left: -4px;\r\n // width: 30px;\r\n // height: 14px;\r\n // }\r\n // &::before {\r\n // border-radius: 20px;\r\n // top: 4px;\r\n // left: -1px;\r\n // width: 14px;\r\n // height: 14px;\r\n // }\r\n // &:checked {\r\n // &::before {\r\n // top: 7px;\r\n // left: 17px;\r\n // }\r\n // }\r\n }\r\n .active {\r\n td {\r\n color: $accent_color;\r\n font-weight: bold;\r\n }\r\n a {\r\n //color: $accent_color;\r\n }\r\n .nf-item-controls {\r\n font-weight: normal;\r\n float: right;\r\n a {\r\n color: $accent_color;\r\n }\r\n .nf-item-delete,\r\n .nf-item-duplicate {\r\n display: none;\r\n }\r\n .nf-item-editing {\r\n display: inline !important;\r\n }\r\n .nf-item-edit {\r\n .dashicons {\r\n margin-right: 12px\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.ui-droppable {\r\n border: 4px solid #fff;\r\n}\r\n.nf-actions-empty {\r\n thead {\r\n display: none;\r\n }\r\n td {\r\n border: 4px solid #fff !important;\r\n display: block;\r\n padding: 40px 20% !important;\r\n white-space: normal !important;\r\n }\r\n h3 {\r\n font-size: 30px;\r\n }\r\n p {\r\n font-size: 18px;\r\n }\r\n}\r\n.nf-actions-table {\r\n td {\r\n cursor: pointer;\r\n }\r\n .nf-item-controls {\r\n top: 12px;\r\n }\r\n}","/* perfect-scrollbar v0.6.7 */\r\n.ps-container {\r\n -ms-touch-action: none;\r\n overflow: hidden !important; }\r\n .ps-container.ps-active-x > .ps-scrollbar-x-rail,\r\n .ps-container.ps-active-y > .ps-scrollbar-y-rail {\r\n display: block; }\r\n .ps-container.ps-in-scrolling {\r\n pointer-events: none; }\r\n .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {\r\n background-color: #eee;\r\n opacity: 0.9; }\r\n .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {\r\n background-color: #999; }\r\n .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {\r\n background-color: #eee;\r\n opacity: 0.9; }\r\n .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {\r\n background-color: #999; }\r\n .ps-container > .ps-scrollbar-x-rail {\r\n display: none;\r\n position: absolute;\r\n /* please don't change 'position' */\r\n -webkit-border-radius: 4px;\r\n -moz-border-radius: 4px;\r\n -ms-border-radius: 4px;\r\n border-radius: 4px;\r\n opacity: 0;\r\n -webkit-transition: background-color 0.2s linear, opacity 0.2s linear;\r\n -moz-transition: background-color 0.2s linear, opacity 0.2s linear;\r\n -o-transition: background-color 0.2s linear, opacity 0.2s linear;\r\n transition: background-color 0.2s linear, opacity 0.2s linear;\r\n bottom: 3px;\r\n /* there must be 'bottom' for ps-scrollbar-x-rail */\r\n height: 8px; }\r\n .ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x {\r\n position: absolute;\r\n /* please don't change 'position' */\r\n background-color: #aaa;\r\n -webkit-border-radius: 4px;\r\n -moz-border-radius: 4px;\r\n -ms-border-radius: 4px;\r\n border-radius: 4px;\r\n -webkit-transition: background-color 0.2s linear;\r\n -moz-transition: background-color 0.2s linear;\r\n -o-transition: background-color 0.2s linear;\r\n transition: background-color 0.2s linear;\r\n bottom: 0;\r\n /* there must be 'bottom' for ps-scrollbar-x */\r\n height: 8px; }\r\n .ps-container > .ps-scrollbar-y-rail {\r\n display: none;\r\n position: absolute;\r\n /* please don't change 'position' */\r\n -webkit-border-radius: 4px;\r\n -moz-border-radius: 4px;\r\n -ms-border-radius: 4px;\r\n border-radius: 4px;\r\n opacity: 0;\r\n -webkit-transition: background-color 0.2s linear, opacity 0.2s linear;\r\n -moz-transition: background-color 0.2s linear, opacity 0.2s linear;\r\n -o-transition: background-color 0.2s linear, opacity 0.2s linear;\r\n transition: background-color 0.2s linear, opacity 0.2s linear;\r\n right: 3px;\r\n /* there must be 'right' for ps-scrollbar-y-rail */\r\n width: 8px; }\r\n .ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y {\r\n position: absolute;\r\n /* please don't change 'position' */\r\n background-color: #aaa;\r\n -webkit-border-radius: 4px;\r\n -moz-border-radius: 4px;\r\n -ms-border-radius: 4px;\r\n border-radius: 4px;\r\n -webkit-transition: background-color 0.2s linear;\r\n -moz-transition: background-color 0.2s linear;\r\n -o-transition: background-color 0.2s linear;\r\n transition: background-color 0.2s linear;\r\n right: 0;\r\n /* there must be 'right' for ps-scrollbar-y */\r\n width: 8px; }\r\n .ps-container:hover.ps-in-scrolling {\r\n pointer-events: none; }\r\n .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {\r\n background-color: #eee;\r\n opacity: 0.9; }\r\n .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {\r\n background-color: #999; }\r\n .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {\r\n background-color: #eee;\r\n opacity: 0.9; }\r\n .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {\r\n background-color: #999; }\r\n .ps-container:hover > .ps-scrollbar-x-rail,\r\n .ps-container:hover > .ps-scrollbar-y-rail {\r\n opacity: 0.6; }\r\n .ps-container:hover > .ps-scrollbar-x-rail:hover {\r\n background-color: #eee;\r\n opacity: 0.9; }\r\n .ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x {\r\n background-color: #999; }\r\n .ps-container:hover > .ps-scrollbar-y-rail:hover {\r\n background-color: #eee;\r\n opacity: 0.9; }\r\n .ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y {\r\n background-color: #999; }\r\n\r\n/* END DEFAULT PERFECT SCROLLBAR CSS */\r\n\r\n/*\r\n * Custom perfect scrollbar css\r\n */\r\n\r\n#nf-main.ps-container {\r\n overflow:auto !important;\r\n overflow-y:hidden !important;\r\n}\r\n\r\n#nf-drawer.ps-container {\r\n overflow:auto !important;\r\n overflow-y:hidden !important;\r\n}",".ui-sortable-helper {\r\n &.nf-field-wrap\r\n //&.nf-item-dock\r\n {\r\n box-shadow: 3px 3px 5px rgba( 0, 0, 0, 0.4 );\r\n }\r\n}\r\n\r\n.ui-draggable-dragging {\r\n .nf-item {\r\n box-shadow: 3px 3px 5px rgba( 0, 0, 0, 0.4 );\r\n }\r\n}\r\n\r\n.ui-draggable-handle {\r\n cursor: pointer;\r\n}\r\n.ui-draggable-dragging {\r\n z-index: 99;\r\n}\r\n#nf-builder {\r\n .nf-droppable-active {\r\n border: 4px solid $cta_color;\r\n //padding: 6px;\r\n transition: all 1.0s ease;\r\n }\r\n .nf-droppable-hover {\r\n border: 4px solid $accent_color;\r\n //padding: 6px;\r\n transition: all 1.0s ease;\r\n }\r\n}\r\n\r\n.nf-fields-sortable {\r\n border: 4px solid #FFF;\r\n padding: 25px 15px 6px;\r\n}\r\n.nf-fields-sortable .hidden {\r\n display: block !important;\r\n}\r\n.nf-fields-sortable-placeholder { margin-top: -14px; margin-bottom: 6px; border: 4px solid #84CC1E }\r\n\r\n.nf-staged-fields-drag {\r\n position: relative;\r\n display: block;\r\n height: 80px;\r\n &::after {\r\n clear: both;\r\n content: '';\r\n display: block;\r\n }\r\n .nf-staged-fields-drag-wrap {\r\n position: absolute;\r\n width: 500px;\r\n }\r\n #drag-item-1,\r\n #drag-item-2,\r\n #drag-item-3 {\r\n box-shadow: 3px 3px 5px rgba( 0, 0, 0, 0.4 );\r\n }\r\n #drag-item-1 {\r\n bottom: 0px;\r\n left: 0px;\r\n z-index: 3;\r\n }\r\n #drag-item-2 {\r\n bottom: 5px;\r\n left: 5px;\r\n z-index: 2;\r\n }\r\n #drag-item-3 {\r\n bottom: 10px;\r\n left: 10px;\r\n z-index: 1;\r\n }\r\n}\r\n\r\n.nf-staged-fields-drag-wrap {\r\n background: #fff;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n color: #888;\r\n cursor: pointer;\r\n margin-bottom: 20px;\r\n padding: 15px 20px;\r\n &.active {\r\n //background: #fafafa;\r\n border: 2px solid #84CC1E;\r\n color: #424242;\r\n font-weight: bold;\r\n .nf-item-controls {\r\n font-weight: normal;\r\n a {\r\n color: #424242;\r\n }\r\n .nf-item-delete,\r\n .nf-item-duplicate {\r\n display: none;\r\n }\r\n .nf-item-editing {\r\n display: inline;\r\n }\r\n .nf-item-edit {\r\n .dashicons {\r\n margin-right: 12px\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n.nf-staged-fields-sortable-placeholder { float: left; height: 28px; border-right: 8px solid #84CC1E; margin-right: -4px; margin-left: -4px; }\r\n\r\n.nf-list-options-sortable-placeholder, .nf-listimage-options-sortable-placeholder {\r\n border: 4px solid #84CC1E;\r\n height: 8px !important;\r\n margin: -4px 0 -4px 0;\r\n}\r\n\r\n.nf-fields-empty-droppable {\r\n border: 4px solid #FFF;\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n}\r\n\r\n.nf-settings .toggle { cursor: pointer; }\r\n",".nf-loading {\r\n background: #1EA9EA;\r\n border-radius: 4px;\r\n width: 40px;\r\n margin: 0 auto;\r\n position: relative;\r\n ul {\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n position: relative;\r\n top: -10px;\r\n left: 0;\r\n font-size: 0;\r\n li {\r\n height: 0;\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 0;\r\n margin: 0;\r\n height: 10px;\r\n width: 10px;\r\n border: 3px solid #fff;\r\n border-radius: 100%;\r\n transform: transformZ(0);\r\n animation: LOADING 2s infinite;\r\n &:nth-child(1n) {\r\n left: 0;\r\n animation-delay: 0s;\r\n }\r\n &:nth-child(2n) {\r\n left: 15px;\r\n animation-delay: 0.2s;\r\n }\r\n &:nth-child(3n) {\r\n left: 30px;\r\n animation-delay: 0.4s;\r\n }\r\n }\r\n }\r\n}\r\n\r\n@keyframes LOADING {\r\n 0% {\r\n transform: scale(0.5);\r\n background: #fff;\r\n }\r\n 50% {\r\n transform: scale(1);\r\n background: #fff;\r\n }\r\n 100% {\r\n transform: scale(0.5);\r\n background: #fff;\r\n }\r\n}\r\n",".nf-help-text {\r\n display: none;\r\n}\r\n.ninja-forms-app {\r\n .nf-help {\r\n color: #ccc;\r\n margin-left: 5px;\r\n text-decoration: none;\r\n .dashicons {\r\n font-size: 16px;\r\n height: 16px;\r\n width: 16px;\r\n }\r\n }\r\n .qtip-default {\r\n background-color: #424242;\r\n border: 1px solid #424242;\r\n border-radius: 4px;\r\n box-shadow: 0 5px 6px rgba( 0, 0, 0, 0.3 );\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 18px;\r\n padding: 10px;\r\n //position: relative;\r\n &::after {\r\n content: \"\";\r\n position: absolute;\r\n left: 143px;\r\n bottom: -12px;\r\n width: 0;\r\n height: 0;\r\n border-left: 6px solid transparent;\r\n border-right: 6px solid transparent;\r\n border-top: 12px solid #424242;\r\n }\r\n }\r\n}",".has-merge-tags {\r\n position: relative;\r\n input[type=text],\r\n textarea {\r\n padding-right: 40px;\r\n }\r\n &.rte {\r\n display: block;\r\n .wp-editor-tabs {\r\n margin-right: 40px;\r\n }\r\n .merge-tags {\r\n color: #999;\r\n z-index: 100;\r\n top: 26px;\r\n }\r\n }\r\n .merge-tags {\r\n color: #ccc;\r\n pointer: cursor;\r\n position: absolute;\r\n }\r\n .nf-list-options, .nf-listimage-options {\r\n input[type=text] {\r\n + .merge-tags {\r\n top: 12px;\r\n }\r\n }\r\n }\r\n}\r\ndiv.has-merge-tags {\r\n .merge-tags {\r\n top: 16px;\r\n right: 12px;\r\n }\r\n}\r\nlabel.has-merge-tags {\r\n .merge-tags {\r\n top: 33px;\r\n right: 12px;\r\n }\r\n}\r\n\r\n.nf-list-options, .nf-listimage-options {\r\n label.has-merge-tags {\r\n .merge-tags {\r\n top: 12px;\r\n }\r\n }\r\n}\r\n\r\n.jBox-Tooltip {\r\n z-index: 100000000 !important;\r\n}\r\n\r\n.jBox-TooltipBorder {\r\n .jBox-container {\r\n border-radius: 5px;\r\n border: 2px solid $cta_color;\r\n /*background: #EBEDEE;*/\r\n h4 {\r\n background: #f1f1f1;\r\n padding: 5px;\r\n margin: 0 0 5px;\r\n }\r\n ul {\r\n margin: 0;\r\n li {\r\n &:nth-child(even) {\r\n a {\r\n //background: #f1f1f1;\r\n }\r\n }\r\n a {\r\n color: $cta_color;\r\n margin: 0;\r\n padding: 0 5px;\r\n display: block;\r\n text-decoration: none;\r\n }\r\n }\r\n a.active {\r\n background: #f1f1f1;\r\n }\r\n }\r\n }\r\n .jBox-pointer {\r\n &::after {\r\n border: 2px solid $cta_color;\r\n /*background: #EBEDEE;*/\r\n }\r\n }\r\n .jBox-pointer-top,\r\n .jBox-pointer-bottom {\r\n width: 34px;\r\n height: 12px;\r\n }\r\n .jBox-pointer-left,\r\n .jBox-pointer-right {\r\n width: 12px;\r\n height: 34px;\r\n }\r\n &.jBox-closeButton-box {\r\n &::before {\r\n width: 28px;\r\n height: 28px;\r\n background: $cta_color;\r\n }\r\n }\r\n}\r\n\r\n/* MERGE TAG BOX STYLES */\r\n#merge-tags-box {\r\n display: none;\r\n background-color: #DBDDDD;\r\n max-height: 360px;\r\n z-index: 1001;\r\n position: absolute;\r\n top: -1px;\r\n left:12px;\r\n right: 10px;\r\n\r\n .merge-tag-container {\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n\r\n .merge-tag-sections,\r\n .merge-tag-list {\r\n float: left;\r\n font-size: 14px;\r\n background-color: #fff;\r\n height: 300px;\r\n overflow-y: auto;\r\n }\r\n\r\n .merge-tag-sections {\r\n background-color: #DBDDDD;\r\n min-width: 135px;\r\n ul {\r\n margin: 0;\r\n li {\r\n background: #DBDDDD;\r\n border-bottom: 1px solid #fff;\r\n cursor: pointer;\r\n font-size: 14px;\r\n margin: 0;\r\n padding: 8px 26px 8px 16px;\r\n &:hover {\r\n background: #f6f6f6;\r\n }\r\n &.active {\r\n position: relative;\r\n }\r\n &.active::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n width: 0;\r\n height: 0;\r\n border-top: 17px solid transparent;\r\n border-bottom: 17px solid transparent;\r\n border-right: 24px solid #fff;\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n }\r\n &:hover {\r\n color: #1EA9EA;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .merge-tag-list {\r\n flex-grow: 1;\r\n padding-top: 10px;\r\n div {\r\n div {\r\n line-height: 22px;\r\n }\r\n }\r\n &:hover li { // Uses !important to override first-of-type selector.\r\n &:hover {\r\n color: #1EA9EA !important;\r\n }\r\n color: black !important;\r\n }\r\n ul {\r\n margin: 0;\r\n }\r\n li {\r\n cursor: pointer;\r\n margin-bottom: 0;\r\n span {\r\n padding: 4px 16px;\r\n display: block;\r\n small {\r\n font-family: \"Courier New\", Courier, monospace, sans-serif;\r\n }\r\n }\r\n &:first-of-type {\r\n color: #1EA9EA;\r\n }\r\n }\r\n }\r\n\r\n .merge-tag-filter {\r\n border-bottom: 2px solid #DBDDDD;\r\n margin: 3px 10px 10px 10px;\r\n clear: both;\r\n }\r\n}\r\n.merge-tag-focus {\r\n position: relative;\r\n z-index: 1000;\r\n}\r\n.merge-tag-focus-overlay {\r\n &:before {\r\n content: '';\r\n position: fixed;\r\n top: 0; right: 0; bottom: 0; left: 0;\r\n background-color: rgba( 0, 0, 0, .5 );\r\n z-index: 100;\r\n }\r\n &.note-editor:before { // Summernote RTE Support\r\n z-index: 0;\r\n }\r\n}\r\n\r\n#merge-tags-box.one-half--first {\r\n width: 538px;\r\n left: 12px;\r\n}\r\n#merge-tags-box.one-half--second {\r\n width: 538px;\r\n right: 10px;\r\n left: auto;\r\n}\r\n\r\n.setting + .merge-tags {\r\n color: rgba( 204, 204, 204, .3 );\r\n}\r\n.setting:focus + .merge-tags,\r\n.merge-tag-focus-overlay .merge-tags {\r\n color: rgba( 204, 204, 204, 1 );\r\n}\r\n.merge-tag-focus-overlay .merge-tags {\r\n z-index: 1000;\r\n}\r\n",".note-popover {\r\n display: none !important;\r\n}\r\n.ninja-forms-app {\r\n .note-editor {\r\n border: 0 !important;\r\n .note-toolbar {\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n .note-editable {\r\n background: #f9f9f9;\r\n display: block;\r\n p {\r\n font-size: 16px;\r\n }\r\n ul {\r\n list-style-type: disc;\r\n margin-left: 2em;\r\n }\r\n table {\r\n td {\r\n border: 1px solid #ccc;\r\n width: auto;\r\n }\r\n }\r\n }\r\n .modal {\r\n display: none;\r\n }\r\n .btn-group {\r\n float: left;\r\n &.note-tools, {\r\n float: right;\r\n }\r\n }\r\n .btn {\r\n background: #f9f9f9;\r\n border: 0;\r\n border-radius: 4px;\r\n color: #666;\r\n cursor: pointer;\r\n margin-right: 2px;\r\n padding-top: 4px;\r\n &.disabled {\r\n background: transparent;\r\n color: #aaa;\r\n .merge-tags {\r\n background: #f9f9f9;\r\n color: #666;\r\n }\r\n }\r\n }\r\n }\r\n .tooltip {\r\n position: absolute;\r\n z-index: 1070;\r\n display: block;\r\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\r\n font-size: 12px;\r\n font-style: normal;\r\n font-weight: normal;\r\n line-height: 1.42857143;\r\n text-align: left;\r\n text-align: start;\r\n text-decoration: none;\r\n text-shadow: none;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n word-break: normal;\r\n word-spacing: normal;\r\n word-wrap: normal;\r\n white-space: normal;\r\n filter: alpha(opacity=0);\r\n opacity: 0;\r\n\r\n line-break: auto;\r\n }\r\n .tooltip.in {\r\n filter: alpha(opacity=90);\r\n opacity: .9;\r\n }\r\n .tooltip.top {\r\n padding: 5px 0;\r\n margin-top: -3px;\r\n }\r\n .tooltip.right {\r\n padding: 0 5px;\r\n margin-left: 3px;\r\n }\r\n .tooltip.bottom {\r\n padding: 5px 0;\r\n margin-top: 3px;\r\n }\r\n .tooltip.left {\r\n padding: 0 5px;\r\n margin-left: -3px;\r\n }\r\n .tooltip-inner {\r\n max-width: 200px;\r\n padding: 3px 8px;\r\n color: #fff;\r\n text-align: center;\r\n background-color: #000;\r\n border-radius: 4px;\r\n }\r\n .tooltip-arrow {\r\n position: absolute;\r\n width: 0;\r\n height: 0;\r\n border-color: transparent;\r\n border-style: solid;\r\n }\r\n .tooltip.top .tooltip-arrow {\r\n bottom: 0;\r\n left: 50%;\r\n margin-left: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.top-left .tooltip-arrow {\r\n right: 5px;\r\n bottom: 0;\r\n margin-bottom: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.top-right .tooltip-arrow {\r\n bottom: 0;\r\n left: 5px;\r\n margin-bottom: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.right .tooltip-arrow {\r\n top: 50%;\r\n left: 0;\r\n margin-top: -5px;\r\n border-width: 5px 5px 5px 0;\r\n border-right-color: #000;\r\n }\r\n .tooltip.left .tooltip-arrow {\r\n top: 50%;\r\n right: 0;\r\n margin-top: -5px;\r\n border-width: 5px 0 5px 5px;\r\n border-left-color: #000;\r\n }\r\n .tooltip.bottom .tooltip-arrow {\r\n top: 0;\r\n left: 50%;\r\n margin-left: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .tooltip.bottom-left .tooltip-arrow {\r\n top: 0;\r\n right: 5px;\r\n margin-top: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .tooltip.bottom-right .tooltip-arrow {\r\n top: 0;\r\n left: 5px;\r\n margin-top: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .dropdown-menu {\r\n position: absolute;\r\n // top: 100%;\r\n // left: 0;\r\n z-index: 1000;\r\n display: none;\r\n float: left;\r\n min-width: 160px;\r\n padding: 5px 0;\r\n margin: 2px 0 0;\r\n font-size: 14px;\r\n text-align: left;\r\n list-style: none;\r\n background-color: #fff;\r\n -webkit-background-clip: padding-box;\r\n background-clip: padding-box;\r\n border: 1px solid #ccc;\r\n border: 1px solid rgba(0, 0, 0, .15);\r\n border-radius: 4px;\r\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\r\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\r\n }\r\n .dropdown-menu.pull-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropdown-menu .divider {\r\n height: 1px;\r\n margin: 9px 0;\r\n overflow: hidden;\r\n background-color: #e5e5e5;\r\n }\r\n .dropdown-menu > li > a {\r\n display: block;\r\n padding: 3px 20px;\r\n clear: both;\r\n font-weight: normal;\r\n line-height: 1.42857143;\r\n color: #333;\r\n white-space: nowrap;\r\n }\r\n .dropdown-menu > li > a:hover,\r\n .dropdown-menu > li > a:focus {\r\n color: #262626;\r\n text-decoration: none;\r\n background-color: #f5f5f5;\r\n }\r\n .dropdown-menu > .active > a,\r\n .dropdown-menu > .active > a:hover,\r\n .dropdown-menu > .active > a:focus {\r\n color: #fff;\r\n text-decoration: none;\r\n background-color: #337ab7;\r\n outline: 0;\r\n }\r\n .dropdown-menu > .disabled > a,\r\n .dropdown-menu > .disabled > a:hover,\r\n .dropdown-menu > .disabled > a:focus {\r\n color: #777;\r\n }\r\n .dropdown-menu > .disabled > a:hover,\r\n .dropdown-menu > .disabled > a:focus {\r\n text-decoration: none;\r\n cursor: not-allowed;\r\n background-color: transparent;\r\n background-image: none;\r\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\r\n }\r\n .open > .dropdown-menu {\r\n display: block;\r\n }\r\n .open > a {\r\n outline: 0;\r\n }\r\n .dropdown-menu-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropdown-menu-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n .dropdown-header {\r\n display: block;\r\n padding: 3px 20px;\r\n font-size: 12px;\r\n line-height: 1.42857143;\r\n color: #777;\r\n white-space: nowrap;\r\n }\r\n .dropdown-backdrop {\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 990;\r\n }\r\n .pull-right > .dropdown-menu {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropup .caret,\r\n .navbar-fixed-bottom .dropdown .caret {\r\n content: \"\";\r\n border-top: 0;\r\n border-bottom: 4px dashed;\r\n border-bottom: 4px solid \\9;\r\n }\r\n .dropup .dropdown-menu,\r\n .navbar-fixed-bottom .dropdown .dropdown-menu {\r\n top: auto;\r\n bottom: 100%;\r\n margin-bottom: 2px;\r\n }\r\n @media (min-width: 768px) {\r\n .navbar-right .dropdown-menu {\r\n right: 0;\r\n left: auto;\r\n }\r\n .navbar-right .dropdown-menu-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n }\r\n .btn-group-justified > .btn-group .dropdown-menu {\r\n left: auto;\r\n }\r\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\r\n top: auto;\r\n left: auto;\r\n }\r\n .nav-justified > .dropdown .dropdown-menu {\r\n top: auto;\r\n left: auto;\r\n }\r\n .nav-tabs .dropdown-menu {\r\n margin-top: -1px;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-nav .open .dropdown-menu {\r\n position: static;\r\n float: none;\r\n width: auto;\r\n margin-top: 0;\r\n background-color: transparent;\r\n border: 0;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a,\r\n .navbar-nav .open .dropdown-menu .dropdown-header {\r\n padding: 5px 15px 5px 25px;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a {\r\n line-height: 20px;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-nav .open .dropdown-menu > li > a:focus {\r\n background-image: none;\r\n }\r\n }\r\n .navbar-nav > li > .dropdown-menu {\r\n margin-top: 0;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\r\n margin-bottom: 0;\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n border-bottom-right-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\r\n color: #777;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\r\n color: #333;\r\n background-color: transparent;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\r\n color: #555;\r\n background-color: #e7e7e7;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\r\n color: #ccc;\r\n background-color: transparent;\r\n }\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\r\n border-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\r\n background-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\r\n color: #9d9d9d;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\r\n color: #fff;\r\n background-color: transparent;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\r\n color: #fff;\r\n background-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\r\n color: #444;\r\n background-color: transparent;\r\n }\r\n }\r\n}\r\n","/*\r\nWP Color Picker (Iris) Styles\r\n---------------------------------------------*/\r\n\r\n.ninja-forms-app #wpcontent .wp-picker-holder {\r\n position: absolute;\r\n z-index: 9001;\r\n}\r\n.ninja-forms-app #wpcontent .wp-picker-holder * {\r\n box-sizing: content-box;\r\n}\r\n.wp-picker-container {\r\n width: 100%;\r\n}\r\n.wp-color-result,\r\n.wp-picker-input-wrap {\r\n margin-top: 5px;\r\n}\r\n.wp-color-result {\r\n border: 0;\r\n box-shadow: none;\r\n margin: 5px 0 0;\r\n height: 41px;\r\n width: 100%;\r\n padding-left: 60px;\r\n}\r\n.wp-color-result:after {\r\n font-size: 16px;\r\n line-height: 41px;\r\n}\r\n.wp-color-result.wp-picker-open {\r\n display: none;\r\n}\r\n.wp-color-picker,\r\n.wp-picker-input-wrap {\r\n width: 100% !important;\r\n}\r\n\r\n.wp-picker-input-wrap > .button.wp-picker-default {\r\n display: none;\r\n}\r\n","\r\n@-webkit-keyframes color_change {\r\n from { background-color: $cta_color; color: #fff }\r\n to { background-color: #3B454D; color: #A2A5A8 }\r\n}\r\n@-moz-keyframes color_change {\r\n from { background-color: $cta_color; color: #fff }\r\n to { background-color: #3B454D; color: #A2A5A8 }\r\n}\r\n@-ms-keyframes color_change {\r\n from { background-color: $cta_color; color: #fff }\r\n to { background-color: #3B454D; color: #A2A5A8 }\r\n}\r\n@-o-keyframes color_change {\r\n from { background-color: $cta_color; color: #fff }\r\n to { background-color: #3B454D; color: #A2A5A8 }\r\n}\r\n@keyframes color_change {\r\n from { background-color: $cta_color; color: #fff }\r\n to { background-color: #3B454D; color: #A2A5A8 }\r\n}\r\n.nf-item.clicked {\r\n //background: #1EA9EA;\r\n animation-name: color_change;\r\n animation-duration: 2s;\r\n animation-iteration-count: 1;\r\n animation-direction: alternate;\r\n}\r\n@media only screen and (max-width: 1400px) {\r\n .nf-field-type-button {\r\n width: 50%;\r\n }\r\n}\r\n@media only screen and (max-width: 1065px) {\r\n .nf-app-menu {\r\n .preview {\r\n .app-menu-text {\r\n text-indent: -9999px;\r\n display: inline-block;\r\n width: 0;\r\n }\r\n }\r\n }\r\n .nf-drawer-opened {\r\n .nf-actions-table {\r\n th, td {\r\n &:nth-child(3) {\r\n display: none;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n@media only screen and (max-width: 900px) {\r\n #nf-header {\r\n ul {\r\n display: none;\r\n }\r\n .nf-button.primary {\r\n display: none;\r\n }\r\n }\r\n\r\n .nf-mobile-menu {\r\n display: inline-block;\r\n }\r\n #nf-app-sub-header {\r\n h2 {\r\n padding-left: 0;\r\n transition: all 1.0s ease 0s\r\n }\r\n }\r\n\r\n .nf-add-new.nf-open-drawer {\r\n position: fixed;\r\n text-indent: -9999px;\r\n height: 54px;\r\n width: 54px;\r\n top: auto;\r\n left: auto;\r\n bottom: 20px;\r\n right: 20px;\r\n &:after {\r\n background: $accent_color;\r\n border: 2px solid $accent_color;\r\n border-radius: 40px;\r\n color: #fff;\r\n content: \"+\";\r\n font-size: 50px;\r\n padding: 8px;\r\n position: absolute;\r\n left: 0;\r\n width: 28px;\r\n height: 28px;\r\n line-height: 24px;\r\n text-indent: 0px;\r\n }\r\n }\r\n\r\n #nf-main-header {\r\n .nf-button {\r\n display: none;\r\n }\r\n }\r\n // .nf-item-controls {\r\n // li {\r\n // margin: -4px 15px 0;\r\n // height: 26px;\r\n // a {\r\n // width: 30px;\r\n // height: 30px;\r\n // &:hover {\r\n // .nf-tooltip {\r\n // top: -45px;\r\n // visibility:visible;\r\n // opacity: 1.0;\r\n // filter: alpha(opacity=100);\r\n // transition: all 1.0s ease;\r\n // transition-delay: 1.4s;\r\n // }\r\n // }\r\n // .dashicons {\r\n // font-size: 26px;\r\n // padding-top: 1px;\r\n // }\r\n // }\r\n // &.nf-item-duplicate {\r\n // .nf-tooltip {\r\n // left: -32px;\r\n // &:after {\r\n // left: 36px;\r\n // }\r\n // }\r\n // }\r\n // &.nf-item-edit {\r\n // .nf-tooltip {\r\n // left: -16px;\r\n // &:after {\r\n // left: 20px;\r\n // }\r\n // }\r\n // }\r\n // &.nf-item-delete {\r\n // margin-top: -4px;\r\n // }\r\n // &.nf-item-expand {\r\n // display: none;\r\n // .dashicons {\r\n // transform: rotate(-90deg);\r\n // }\r\n // }\r\n // .nf-item-editing {\r\n // display: none;\r\n // }\r\n // }\r\n // &.nf-editing {\r\n // font-weight: normal;\r\n // a {\r\n // color: #424242;\r\n // }\r\n // .nf-item-delete,\r\n // .nf-item-duplicate {\r\n // display: none;\r\n // }\r\n // .nf-item-editing {\r\n // display: inline;\r\n // line-height: 26px;\r\n // }\r\n // }\r\n // }\r\n .nf-one-half, .nf-one-third {\r\n float: none;\r\n width: 100%;\r\n }\r\n .nf-drawer-expand {\r\n .nf-one-half {\r\n float: left;\r\n width: 50%;\r\n }\r\n .nf-on-third {\r\n float: left;\r\n width: 33%;\r\n }\r\n }\r\n\r\n #nf-app-form-title {\r\n margin-top: -55px;\r\n }\r\n #nf-main {\r\n top: 120px;\r\n }\r\n\r\n #nf-table-display {\r\n .nf-item-controls {\r\n width: auto;\r\n }\r\n }\r\n}\r\n@media only screen and (max-width: 1023px) {\r\n .ninja-forms-app {\r\n &.folded {\r\n #wpcontent {\r\n margin-left: 36px;\r\n padding: 0;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n #wpbody {\r\n left: 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .nf-setting-wrap {\r\n width: 50%;\r\n }\r\n #nf-drawer {\r\n width: 100%;\r\n }\r\n .nf-drawer-opened {\r\n #nf-main {\r\n width: 100%;\r\n }\r\n .nf-setting-wrap {\r\n width: 50%;\r\n }\r\n }\r\n .nf-drawer-closed {\r\n .nf-setting-wrap {\r\n width: 50%;\r\n }\r\n }\r\n .nf-toggle-drawer {\r\n display: none;\r\n }\r\n\r\n}\r\n@media only screen and (max-width: 960px) {\r\n .ninja-forms-app {\r\n &.auto-fold {\r\n #wpcontent {\r\n margin-left: 36px;\r\n padding: 0;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n #wpbody {\r\n left: 0;\r\n }\r\n }\r\n }\r\n }\r\n .nf-drawer-opened .nf-toggle-drawer {\r\n display: none;\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n@media only screen and (max-width: 782px) {\r\n .ninja-forms-app {\r\n &.folded, &.auto-fold {\r\n #wpcontent {\r\n margin-left: 0;\r\n }\r\n }\r\n }\r\n // .nf-item-controls {\r\n // top: 15px;\r\n // }\r\n #nf-builder {\r\n padding: 80px 20px 10px;\r\n .nf-cta-bubble {\r\n display: none !important;\r\n }\r\n }\r\n #nf-main {\r\n padding: 20px 0 80px;\r\n }\r\n #nf-drawer {\r\n padding: 20px;\r\n }\r\n\r\n\r\n #nf-main-content {\r\n width: 100%;\r\n max-width: 100%;\r\n }\r\n #nf-main {\r\n border: 0;\r\n }\r\n // .nf-field-wrap {\r\n // border: 0;\r\n // border-top: 8px solid #f1f1f1;\r\n // border-radius: 0;\r\n // margin: 0;\r\n // padding: 20px;\r\n // &:first-child {\r\n // border-top: 8px solid #fff;\r\n // }\r\n // }\r\n // .nf-fields-sortable-placeholder { margin-top: 0; margin-bottom: 0; border: 4px solid #84CC1E }\r\n // .nf-fields-sortable-placeholder + .nf-field-wrap {\r\n // border: 0;\r\n // }\r\n // .nf-fields-sortable {\r\n // border: 0;\r\n // padding: 0;\r\n // }\r\n // .nf-field-wrap.ui-sortable-helper {\r\n // background: transparent;\r\n // border: 2px solid $accent_color;\r\n // }\r\n\r\n}\r\n@media only screen and (max-width: 660px) {\r\n\r\n #nf-builder {\r\n //margin-top: 46px;\r\n }\r\n .nf-one-half, .nf-one-third {\r\n width: 100%;\r\n }\r\n // .nf-field-wrap {\r\n // border: 0;\r\n // border-bottom: 1px solid #ccc;\r\n // border-radius: 0;\r\n // margin: 0;\r\n // padding: 20px;\r\n // &:first-child {\r\n // border-top: 1px solid #ccc;\r\n // }\r\n // }\r\n .nf-actions-table {\r\n td:nth-child(3),th:nth-child(3) {\r\n display: none;\r\n }\r\n }\r\n // display: block;\r\n // table, thead, tbody, th, td, tr {\r\n // display: block;\r\n // }\r\n // thead tr {\r\n // position: absolute;\r\n // top: -9999px;\r\n // left: -9999px;\r\n // }\r\n // tr { border: 1px solid #ccc; }\r\n // td {\r\n // /* Behave like a \"row\" */\r\n // border: none;\r\n // border-bottom: 1px solid #eee;\r\n // position: relative;\r\n // padding-left: 50%;\r\n // text-align: right;\r\n // width: auto !important;\r\n // &::before {\r\n // /* Now like a table header */\r\n // line-height: 36px;\r\n // position: absolute;\r\n // /* Top/left values mimic padding */\r\n // top: 6px;\r\n // left: 6px;\r\n // width: 45%;\r\n // padding-right: 10px;\r\n // text-align: left;\r\n // white-space: nowrap;\r\n // }\r\n // &:last-child {\r\n // height: 50px;\r\n // }\r\n // }\r\n // td:nth-of-type(1):before { content: \"\"; }\r\n // td:nth-of-type(2):before { content: \"Name\"; }\r\n // td:nth-of-type(3):before { content: \"Type\"; }\r\n // td:nth-of-type(4):before { content: \"Actions\"; }\r\n // }\r\n\r\n .nf-drawer-buttons {\r\n display: block;\r\n }\r\n // .nf-drawer-header {\r\n // background: #fff;\r\n // margin: -20px -20px 20px;\r\n // //padding: 0;\r\n // h2 {\r\n // font-size: 16px;\r\n // line-height: 46px;\r\n // margin: 0;\r\n // .dashicons {\r\n // background: #fff;\r\n // font-size: 30px;\r\n // padding-top: 7px;\r\n // width: 45px;\r\n // height: 45px;\r\n // }\r\n // }\r\n // .nf-button {\r\n // border-radius: 0;\r\n // }\r\n // }\r\n .nf-item {\r\n padding: 15px;\r\n .fa {\r\n padding: 14px;\r\n width: 48px;\r\n }\r\n }\r\n .nf-saved .nf-item::after {\r\n padding: 14px;\r\n }\r\n}\r\n\r\n@media only screen and (max-width: 600px) {\r\n // #nf-builder {\r\n // margin-top: 46px;\r\n // }\r\n\r\n\r\n}\r\n",".rtl.ninja-forms-app {\r\n #wpcontent {\r\n margin-right: 140px;\r\n #wpbody {\r\n right: 160px;\r\n left: 0;\r\n }\r\n }\r\n &.folded {\r\n #wpcontent {\r\n margin-right: 16px;\r\n #wpbody {\r\n right: 36px;\r\n left: 0;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.rtl {\r\n #nf-app-admin-header {\r\n #nf-logo {\r\n float: right;\r\n }\r\n .fa-times {\r\n right: auto;\r\n left: 0;\r\n }\r\n }\r\n\r\n .nf-app-buttons {\r\n float: left;\r\n }\r\n\r\n #nf-app-header {\r\n .nf-app-menu {\r\n li {\r\n float: right;\r\n a {\r\n &.preview {\r\n .dashicons {\r\n margin-right: 10px;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n .nf-master-control {\r\n right: auto;\r\n left: 30px;\r\n .fa {\r\n margin: 15px 16px 0 0;\r\n }\r\n }\r\n\r\n input[type=submit] {\r\n float: left;\r\n }\r\n .nf-cancel {\r\n float: left;\r\n margin-left: 20px;\r\n }\r\n .nf-public-link {\r\n float: left;\r\n margin-left: 20px;\r\n }\r\n\r\n .nf-add-new {\r\n margin: 0;\r\n padding: 0;\r\n //padding: 0 46px 0 0;\r\n &:after {\r\n right: 0;\r\n left: auto;\r\n line-height: 14px;\r\n }\r\n }\r\n\r\n #nf-main {\r\n right: 0;\r\n left: auto;\r\n }\r\n #nf-main-header {\r\n .nf-button {\r\n float: left;\r\n }\r\n }\r\n .nf-field-label {\r\n margin-left: 0;\r\n margin-right: 16px;\r\n }\r\n .nf-item-controls {\r\n right: auto;\r\n left: 0;\r\n .nf-item-control {\r\n right: auto;\r\n left: 0;\r\n }\r\n &:hover {\r\n .nf-item-duplicate {\r\n right: auto;\r\n left: 80px;\r\n }\r\n .nf-item-delete {\r\n right: auto;\r\n left: 40px;\r\n }\r\n }\r\n }\r\n\r\n #nf-drawer {\r\n right: auto;\r\n left: -1400px;\r\n &.nf-drawer-expand {\r\n width: 100%;\r\n }\r\n }\r\n\r\n .nf-drawer-header {\r\n h2 {\r\n float: right;\r\n .dashicons {\r\n margin-left: 10px;\r\n }\r\n }\r\n .nf-button {\r\n float: left;\r\n }\r\n }\r\n\r\n .nf-search {\r\n input[type=search] {\r\n padding: 12px 50px 12px 0;\r\n }\r\n &::before {\r\n right: 10px;\r\n left: 0;\r\n }\r\n }\r\n\r\n .nf-drawer-opened {\r\n #nf-drawer {\r\n left: 0;\r\n right: auto;\r\n }\r\n #nf-app-sub-header {\r\n h2 {\r\n padding-right: 0;\r\n }\r\n }\r\n }\r\n\r\n .nf-settings {\r\n h3 {\r\n .dashicons {\r\n margin: -4px -30px 0 10px;\r\n &.dashicons-arrow-right::before {\r\n content: \"\\f141\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n .nf-item {\r\n .fa {\r\n left: auto;\r\n right: 0;\r\n }\r\n }\r\n\r\n .nf-one-half,\r\n .nf-one-third,\r\n .nf-one-fourth {\r\n float: right;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["normalize.scss","header.scss","main.scss","builder.scss","main-fields.scss","main-settings.scss","item-controls.scss","builder-fields.scss","fields-preview/main.scss","fields-preview/label-position/above.scss","fields-preview/label-position/below.scss","fields-preview/label-position/hidden.scss","fields-preview/label-position/left.scss","fields-preview/label-position/right.scss","drawer.scss","drawer-settings.scss","drawer-add.scss","drawer-changes.scss","errors.scss","add-new.scss","toggle.scss","dropdown.scss","tables.scss","scrollbar.scss","drag-drop.scss","loading.scss","tooltip.scss","merge-tags-tooltip.scss","editor.scss","color-picker.scss","media-queries.scss","rtl.scss"],"names":[],"mappings":"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","file":"builder.css","sourcesContent":["html {\n overflow: hidden;\n width: 100%;\n float: left;\n left: 0;\n}\n#wp-auth-check-wrap #wp-auth-check {\n z-index: 1000000000000;\n}\n.ninja-forms-app {\n height: 0;\n #adminmenumain,\n #wpfooter {\n display: none;\n }\n #wpwrap {\n height: 0;\n min-height: 0;\n }\n #wpcontent {\n #wpbody {\n font-size: 16px;\n }\n * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n }\n .wp-editor-tabs button {\n box-sizing: initial;\n }\n }\n .grey {\n #nf-drawer {\n .nf-button {\n padding: 15px 30px;\n }\n }\n }\n}\n.media-modal {\n z-index: 100000000;\n}\n#nf-builder {\n background: #fff;\n padding: 30px 40px;\n overflow: hidden;\n padding-top: 80px;\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000000;\n box-shadow: 0 5px 15px rgba(0, 0, 0, .7);\n}\n\n.product-content article>*:not(img) {\n padding-left: 30px;\n padding-right: 30px;\n}\n","#nf-header {\n //background: red;\n height: 100px;\n transition: margin 0.5s ease;\n #nf-logo {\n background-image: url( '../img/ninja-forms-app-header-logo.png' );\n float: left;\n width: 80px;\n height: 30px;\n @media (min-resolution: 192dpi), (-webkit-min-device-pixel-ratio: 2), (min--moz-device-pixel-ratio: 2), (-o-min-device-pixel-ratio: 2/1), (min-device-pixel-ratio: 2), (min-resolution: 2dppx) {\n background-image: url( '../img/ninja-forms-app-header-logo@2x.png' );\n background-size: 80px 30px;\n }\n opacity: 1.0;\n filter: alpha(opacity=100);\n transition: all 1.0s ease;\n }\n ul {\n display: inline-block;\n margin: 0;\n li {\n float: left;\n &.nf-mobile-menu {\n display: none;\n }\n a {\n color: #424242;\n display: block;\n margin: 16px 20px;\n padding-bottom: 8px;\n text-decoration: none;\n &.active {\n border-bottom: 2px solid #424242;\n }\n &.preview {\n color: #bbb;\n transition: all 1.0s ease;\n .dashicons {\n display: inline-block;\n margin-left: 10px;\n }\n }\n }\n &:first-child {\n a {\n margin-left: 0;\n }\n }\n }\n &:after {\n clear: both;\n content: \"\";\n display: block;\n }\n }\n input[type=submit] {\n float: right;\n }\n .nf-cancel {\n float: right;\n margin-right: 60px;\n padding: 8px 0;\n .dashicons {\n font-size: 30px;\n }\n }\n .nf-public-link {\n float: right;\n margin-right: 30px;\n padding: 8px 0;\n .dashicons {\n font-size: 30px;\n }\n }\n &:after {\n clear: both;\n content: \"\";\n display: block;\n }\n}\n#nf-app-header {\n height: 50px;\n &:after {\n clear: both;\n content: \"\";\n display: block;\n }\n}\n#nf-app-sub-header {\n height: 50px;\n padding: 0;\n h2 {\n display: inline-block;\n margin: 0;\n padding: 10px 0;\n transition: all 1.0s ease 0s\n }\n &:after {\n clear: both;\n content: \"\";\n display: block;\n }\n}\n.nf-app-buttons {\n float: right;\n .publish {\n float: right;\n }\n}\n#nf-app-form-title {\n h2 {\n margin: 15px 0;\n }\n}\n","#nf-main {\n border: 4px solid #fff;\n //padding: 20px 40px 40px;\n width: 100%;\n position: absolute;\n top: 190px;\n overflow: auto;\n overflow-x: visible;\n bottom: 0;\n left: 0;\n -webkit-overflow-scrolling: touch;\n transition: left 0.5s ease;\n .nf-field-type-button {\n width: 400px;\n }\n}\n.nf-main-test {\n width: 100%;\n transition: width 0.5s ease;\n}\n#nf-main-content,\n#nf-main-header {\n margin: 0 auto;\n max-width: 860px;\n user-select: none;\n padding: 0 80px;\n position: relative;\n}\n#nf-main-header {\n //padding: 0 0 20px;\n .nf-button {\n float: right;\n }\n h2 {\n display: inline-block;\n }\n &:after {\n clear: both;\n content: \"\";\n display: block;\n }\n}\n\n#the-list tr.flagged th:first-child {\n border-left: 5px solid yellow;\n}\n\n#nf-main-gutter-left,\n#nf-main-gutter-right {\n //background: red;\n position: absolute;\n top: 0;\n width: 80px;\n height: 450px;\n .fa-chevron-circle-left,\n .fa-chevron-circle-right,\n .fa-plus-circle {\n color: #eee;\n font-size: 86px;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n &:hover {\n color: $cta_color;\n cursor: pointer;\n }\n }\n}\n#nf-main-gutter-left {\n left: 0;\n padding-left: 6px;\n}\n#nf-main-gutter-right {\n right: 0;\n padding-right: 6px;\n}\n","$accent_color: #84CC1E;\n$cta_color: #1EA9EA;\n\n/*\nNormalize WordPress admin for Ninja Forms App\n---------------------------------------------*/\n\n@import \"normalize\";\n\n/*\nHeader and Nav for Ninja Forms App\n---------------------------------- */\n\n@import \"header\";\n@import \"main\";\n@import \"main-fields\";\n@import \"main-settings\";\n\n/*\nForm field placeholders for the fields a user has added to their form\n----------------------------------------------------------------------- */\n@import \"item-controls\";\n@import \"builder-fields\";\n@import \"fields-preview/main\";\n\n/*\nAll styles used within the drawer\n--------------------------------- */\n\n@import \"drawer\";\n@import \"drawer-settings\";\n@import \"drawer-add\";\n@import \"drawer-changes\";\n@import \"errors\";\n/*\nVarious custom field styles\n--------------------------------- */\n\n@import \"add-new\";\n@import \"toggle\";\n@import \"dropdown\";\n\n/*\nAll styles used for displaying table content\n-------------------------------------------- */\n\n@import \"tables\";\n\n@import \"scrollbar\";\n@import \"drag-drop\";\n@import \"loading\";\n@import \"tooltip\";\n@import \"merge-tags-tooltip\";\n@import \"editor\";\n@import \"color-picker\";\n\n@import \"media-queries\";\n\n#nf-app-admin-header {\n background: #EBEDEE;\n height: 60px;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n .fa-times {\n background: #424242;\n color: #fff;\n font-size: 30px;\n position: absolute;\n text-align: center;\n text-decoration: none;\n line-height: 56px;\n right: 0;\n height: 60px;\n width: 60px;\n }\n #nf-logo {\n background-image: url(\"../img/ninja-forms-app-header-logo@2x.png\");\n background-size: 130px 50px;\n background-position: center bottom;\n background-repeat: no-repeat;\n float: left;\n width: 160px;\n height: 60px;\n opacity: 1.0;\n filter: alpha(opacity=100);\n -webkit-transition: all 1.0s ease;\n transition: all 1.0s ease;\n }\n .nf-cta-bubble {\n background: $cta_color;\n border: 1px solid $cta_color;\n border-radius: 6px;\n color: #fff;\n display: block;\n float: left;\n font-size: 14px;\n margin: 6px 0 0 20px;\n padding: 5px 10px;\n position: relative;\n text-decoration: none;\n width: 360px;\n &::after {\n display: block;\n content: \"\";\n width: 0;\n height: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid $cta_color;\n position: absolute;\n left: -10px;\n top: 13px;\n }\n &:hover {\n background: #fff;\n color: $cta-color;\n }\n }\n}\n\n.scrollWrap{\n overflow : hidden;\n height : 100%;\n position : relative;\n z-index : 1;\n}\n.scrollContent{\n height : 100%;\n width : 100%;\n padding : 0 32px 0 0;\n position : relative;\n right : -18px;\n overflow : auto;\n -moz-box-sizing : border-box;\n box-sizing : border-box;\n}\n\n.fakeScrollBar{\n position : absolute;\n background : rgba(255,255,255,.5);\n width : 9px;\n border-radius : 4px;\n right : -15px;\n top : 0;\n z-index : 0;\n cursor : -moz-grab;\n cursor : -webkit-grab;\n}\n\n.fakeScroll:hover .fakeScrollBar.fakescroll-grabbed{\n cursor : -moz-grabbing;\n cursor : -webkit-grabbing;\n background : #FFF;\n}\n\nbody.fakescroll-grabbed{\n cursor : -moz-grabbing;\n cursor : -webkit-grabbing;\n}\n\n@import \"rtl\";\n\n",".nf-fields-empty {\n padding: 0 40px;\n h3 {\n font-size: 30px;\n line-height: 32px;\n }\n p {\n font-size: 18px;\n }\n a {\n text-decoration: none;\n }\n}\n\n.nf-field-label {\n display: inline-block;\n margin-left: 16px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 80%;\n .nf-drawer-opened & {\n width: 60%;\n }\n}\n\n.nf-field-wrap {\n .fa {\n // margin-right: 10px;\n // width: 24px;\n }\n}\n.template-box {\n text-decoration: none;\n .template-box-inside {\n background: #EBEDEE;\n color: #424242;\n min-height: 160px;\n padding: 10px;\n text-decoration: none;\n transition: all 0.2s ease-in-out 0.1s, box-shadow 0.2s ease-in-out 0.1s;\n h4 {\n margin: 0 0 10px;\n min-height: 35px;\n }\n p {\n font-size: 12px;\n margin: 0;\n }\n }\n &:hover {\n .template-box-inside {\n background: #fff;\n box-shadow: 0 0 20px $cta_color;\n color: $cta_color;\n transition: all 0.2s ease-in-out 0.1s, box-shadow 0.2s ease-in-out 0.1s;\n }\n }\n .nf-drawer-opened & {\n width: 50%;\n }\n}\n@media only screen and (max-width: 1400px) {\n .nf-drawer-opened {\n .template-box {\n width: 100%;\n }\n }\n}\n",".nf-setting-wrap {\n cursor: pointer;\n float: left;\n margin-bottom: 30px;\n padding: 0 2%;\n width: 33.33%;\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n span {\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 4px;\n display: table-cell;\n height: 85px;\n width: 400px;\n text-align: center;\n vertical-align: middle;\n }\n &.active {\n span {\n border: 2px solid $accent_color;\n font-weight: bold;\n }\n }\n}\n",".nf-item-controls {\n height: 30px;\n width: 30px;\n float: right;\n margin: 0;\n position: absolute;\n top: 9px;\n right: 10px;\n .nf-item-control {\n visibility: hidden;\n margin: 0;\n opacity: 0;\n text-align: center;\n width: 40px;\n height: 30px;\n position: absolute;\n right: 0;\n transition: all 0.5s ease;\n a {\n background: #fff;\n border: 1px solid #fff;\n border-radius: 50px;\n color: $cta_color;\n display: block;\n text-decoration: none;\n padding: 3px;\n position: relative;\n width: 32px;\n &:hover {\n background: #fff;\n border: 1px solid $cta_color;\n color: $cta_color;\n }\n }\n .fa {\n font-size: 18px;\n line-height: 24px;\n text-align: center;\n }\n &.nf-item-edit {\n opacity: 100;\n visibility: visible;\n z-index: auto;\n }\n }\n &:hover {\n a {\n background: $cta_color;\n color: #fff;\n }\n .nf-item-duplicate {\n visibility: visible;\n opacity: 100;\n right: 80px;\n transition: all 0.5s ease;\n }\n .nf-item-delete {\n visibility: visible;\n opacity: 100;\n right: 40px;\n transition: all 0.5s ease;\n }\n }\n}\n#nf-table-display {\n .nf-item-controls {\n float: right;\n }\n}\n.repeater .nf-item-duplicate {\n display: none;\n}\n",".nf-realistic-field {\n font-size: 18px!important;\n}\n\n.nf-field-label {\n overflow: visible!important;\n}\n\n.nf-realistic-field input[type=\"text\"],\n.nf-realistic-field input[type=\"email\"],\n.nf-realistic-field select {\n width: 100%;\n max-width: 100%;\n background: #f9f9f9;\n height: 50px!important;\n padding: 12px;\n border: 0;\n color: #787878;\n}\n.nf-realistic-field select[multiple] {\n height:auto!important;\n}\n\n.ninja-forms-req-symbol {\n color: red;\n}\n\n.nf-realistic-field button,\n.nf-realistic-field input[type=\"button\"],\n.nf-realistic-field input[type=\"submit\"] {\n width: auto;\n height: 50px;\n padding: 12px;\n border-radius: 2px;\n background: #333;\n border: 0;\n color: #f7f7f7;\n}\n\n.nf-realistic-field input[type=\"checkbox\"],\n.nf-realistic-field input[type=\"radio\"] {\n height: 20px;\n width: 20px;\n}\n\n.nf-realistic-field .nf-realistic-field--element input[type=\"radio\"] {\n border-width: 2px!important;\n background: #f7f7f7;\n box-shadow: none;\n}\n\n.nf-realistic-field ul {\n margin: 0;\n list-style-type: none;\n}\n.nf-realistic-field ul li {\n display: flex;\n margin-bottom: 12px;\n}\n.nf-realistic-field ul li input[type=\"checkbox\"],\n.nf-realistic-field ul li input[type=\"radio\"] {\n padding: 12px;\n margin-top: 4px;\n margin-right: 5px;\n\n & + div { // Faux-label element used in the builder.\n margin-top: 6px; // Align the faux-label vertically.\n }\n}\n\n.nf-field-wrap {\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 4px;\n color: #888;\n cursor: pointer;\n margin-bottom: 20px;\n padding: 15px 20px;\n position: relative;\n transition: border-color .25s;\n\n &:hover {\n border-color: #ccc;\n }\n\n & .nf-item-controls {\n display: none;\n }\n\n &:hover .nf-item-controls {\n display: block;\n }\n\n &.active {\n //background: #fafafa;\n border: 2px solid #84CC1E!important;\n color: #424242;\n .nf-item-controls {\n font-weight: normal;\n a {\n background: #fff;\n color: $accent_color;\n &:hover {\n border-color: #fff;\n }\n }\n .nf-item-delete,\n .nf-item-duplicate {\n display: none;\n }\n .nf-item-editing {\n display: inline;\n }\n .nf-item-edit {\n .dashicons {\n margin-right: 12px\n }\n }\n }\n }\n &.note {\n background: #ffffee;\n }\n}\n\n.nf-group-wrap {\n background: #fff;\n border: 2px solid #ccc;\n border-radius: 4px;\n color: #888;\n margin: 0 -10px 20px;\n padding: 15px 30px;\n position: relative;\n //transition: all 1.0s ease;\n .nf-item-controls {\n width: 128px;\n }\n .nf-item-expand {\n display: inline !important;\n }\n .nf-field-wrap {\n margin-left: -20px;\n margin-right: -20px;\n visibility: hidden;\n opacity: 0.0;\n filter: alpha(opacity=0);\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n //transition: all 1.0s ease;\n }\n &.expanded {\n border-color: $accent_color;\n color: $accent_color;\n //transition: all 1.0s ease;\n .nf-item-expand {\n .dashicons {\n transform: rotate(90deg);\n }\n }\n .nf-field-wrap {\n opacity: 1.0;\n visibility: visible;\n filter: alpha(opacity=100);\n position: relative;\n top: 0;\n left: 0;\n right: 0;\n transition: all 1.0s ease;\n &:nth-child(2) {\n margin-top: 20px;\n }\n &:last-child {\n margin-bottom: 0;\n }\n .nf-item-controls {\n width: 96px;\n .nf-item-expand {\n display: none !important;\n }\n }\n }\n }\n}\n",".nf-item-controls {\n z-index: 2;\n}\n\n.nf-realistic-field {\n color: black !important;\n}\n\n.nf-realistic-field input[type=\"text\"],\n.nf-realistic-field input[type=\"tel\"],\n.nf-realistic-field input[type=\"email\"] {\n width: 100%;\n max-width: 100%;\n background: #f9f9f9;\n height: 50px;\n padding: 12px;\n border: 0;\n color: #787878;\n}\n.ninja-forms-req-symbol {\n color: red;\n}\n\n.nf-realistic-field button,\n.nf-realistic-field input[type=\"button\"],\n.nf-realistic-field input[type=\"submit\"] {\n width: auto;\n height: 50px;\n padding: 12px 20px;\n border-radius: 4px;\n background: #333;\n border: 0;\n color: #f7f7f7;\n font-weight: bold;\n text-transform: uppercase;\n}\n\n.nf-field-wrap {\n border: 1px solid transparent;\n transition: border-color .25s;\n\n &:hover {\n border-color: #ccc;\n }\n\n & .nf-item-controls {\n display: none;\n }\n\n &:hover .nf-item-controls {\n display: block;\n }\n}\n\n.nf-realistic-field .nf-field-label {\n font-weight: bold;\n margin-left: 0!important;\n}\n\n.nf-realistic-field .nf-realistic-field--label {\n font-size: 16px!important;\n margin-bottom: 10px!important;\n text-transform: none!important;\n}\n\n.nf-realistic-field .nf-realistic-field--element input,\n.nf-realistic-field .nf-realistic-field--element textarea {\n border: 1px solid #c4c4c4!important;\n}\n\n.listselect,\n.listcountry,\n.liststate {\n .nf-realistic-field .nf-realistic-field--label {\n margin-bottom: 8px;\n }\n .nf-realistic-field .nf-realistic-field--element select {\n border: 1px solid #c4c4c4;\n box-shadow: none;\n appearance: none;\n margin-top: 7px;\n }\n .nf-realistic-field .nf-realistic-field--element > div {\n position: relative;\n }\n .nf-realistic-field .nf-realistic-field--element select + div {\n display: block;\n position: absolute;\n font-size: 16px;\n line-height: 16px;\n margin: 0;\n margin-top: 7px;\n padding: 16px;\n height: 50px;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n }\n .nf-realistic-field .nf-realistic-field--element select + div::after {\n content: \"\\f078\";\n font-family: FontAwesome;\n font-size: 20px;\n position: absolute;\n right: 10px;\n bottom: 0;\n height: 50px;\n line-height: 50px;\n }\n}\n\n.starrating .nf-realistic-field--element {\n margin-top: 10px;\n}\n\n.checkbox .nf-realistic-field input:checked {\n margin: 4px 5px 1px 0;\n}\n.checkbox .nf-realistic-field input:checked::before {\n content: \"\\f00c\";\n font-family: FontAwesome;\n font-size: 24px;\n position: absolute;\n top: 20px;\n left: 25px;\n z-index: 2;\n color: black;\n}\n\n.listcheckbox .nf-realistic-field li {\n position: relative;\n}\n.listcheckbox .nf-realistic-field input:checked::before {\n content: \"\\f00c\";\n font-family: FontAwesome;\n font-size: 24px;\n position: absolute;\n left: 5px;\n z-index: 2;\n color: black;\n}\n\n.listradio .nf-realistic-field li {\n position: relative;\n}\n.listradio .nf-realistic-field input:checked {\n border-color: black !important;\n}\n.listradio .nf-realistic-field input:checked::before {\n border-radius: 50%;\n content: \"\";\n height: 10px;\n width: 10px;\n position: absolute;\n left: 1px;\n top: 5px;\n z-index: 2;\n background-color: black;\n}\n\n\n@import \"label-position/above\";\n@import \"label-position/below\";\n@import \"label-position/hidden\";\n@import \"label-position/left\";\n@import \"label-position/right\";\n",".nf-realistic-field.nf-realistic-field--label-above {\n display: block;\n}",".nf-realistic-field.nf-realistic-field--label-below {\n display: flex;\n flex-direction: column;\n\n .nf-realistic-field--label {\n order: 5;\n }\n .nf-realistic-field--description {\n order: 4;\n }\n .nf-realistic-field--element {\n order: 3;\n }\n}",".nf-realistic-field.nf-realistic-field--label-hidden {\n display: flex;\n flex-direction: column;\n\n .nf-realistic-field--label {\n display: none;\n }\n .nf-realistic-field--description {\n order: 4;\n }\n .nf-realistic-field--element {\n order: 3;\n }\n}",".nf-realistic-field.nf-realistic-field--label-left {\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n\n .nf-realistic-field--label {\n order: 3;\n width: 35%;\n text-align: right;\n padding-top: 5px;\n padding-right: 10px;\n word-wrap: break-word;\n\n .nf-field-label {\n white-space: normal !important;\n }\n }\n\n .nf-realistic-field--element {\n order: 4;\n width: 65%;\n } \n\n .nf-realistic-field--description {\n order: 5;\n width: 100%;\n margin-left: 35%;\n }\n}\n\n/**\n * Checkbox\n */\n\n.nf-field-wrap.checkbox .nf-realistic-field.nf-realistic-field--label-left {\n .nf-realistic-field--label {\n order: 3;\n width: 38%;\n padding-left: 0;\n padding-right: 5%;\n text-align: center;\n }\n\n .nf-realistic-field--element {\n order: 4;\n width: 58%;\n } \n\n .nf-realistic-field--description {\n order: 5;\n width: 100%;\n margin-left: 38%;\n }\n}",".nf-realistic-field.nf-realistic-field--label-right {\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n\n .nf-realistic-field--label {\n order: 4;\n width: 35%;\n padding-left: 2%;\n }\n\n .nf-realistic-field--element {\n order: 3;\n width: 65%;\n } \n\n .nf-realistic-field--description {\n order: 5;\n width: 100%;\n margin-left: 35%;\n }\n}\n\n/**\n * Checkbox\n */\n\n.nf-field-wrap.checkbox .nf-realistic-field.nf-realistic-field--label-right {\n align-items: flex-start;\n\n .nf-realistic-field--label {\n order: 4;\n width: auto;\n padding-left: 2%;\n padding-right: 2%;\n margin-bottom: 0;\n\n .nf-field-label {\n width: 100%;\n }\n }\n\n .nf-realistic-field--element {\n order: 3;\n width: auto;\n } \n\n .nf-realistic-field--description {\n order: 5;\n width: auto;\n margin-left: 0;\n }\n}","#nf-drawer {\n background: #EBEDEE;\n padding: 40px 40px;\n width: 50%;\n position: absolute;\n top: 0;\n bottom: 0;\n right: -1400px;\n overflow: hidden;\n z-index: auto; // Changed from 101 to Auto to fix a bug with the merge tag overlay in Safari.\n transition: width 0.75s ease;\n -webkit-overflow-scrolling: touch;\n &.nf-drawer-expand {\n width: 100%;\n }\n z-index: 2;\n}\n.nf-drawer-opened {\n .nf-main-test {\n width: 50%;\n transition: all 0.50s ease;\n .nf-button {\n display: none;\n }\n }\n #nf-drawer {\n right: 0;\n transition: all 0.50s ease;\n &.nf-drawer-expand {\n width: 100%;\n transition: all 0.50s ease;\n .nf-toggle-drawer {\n .dashicons {\n transform: rotate(180deg);\n transition: all 0.50s ease;\n }\n .nf-expand-off {\n display: none;\n }\n .nf-expand-on {\n display: inline;\n }\n }\n }\n }\n .preview {\n opacity: 0.0;\n visibility:hidden;\n filter: alpha(opacity=0);\n transition: all 0.50s ease;\n &:hover, &:active, &.active {\n opacity: 0.0;\n visibility:hidden;\n filter: alpha(opacity=0);\n transition: all 0.50s ease;\n }\n }\n #nf-main-content,\n #nf-main-header {\n margin: 0 auto;\n //padding-left: 60px;\n transition: all 0.50s ease;\n }\n @media only screen and (min-width: 901px) {\n #nf-app-sub-header {\n .nf-add-new {\n top: 139px !important;\n text-indent: -99999px;\n &:after {\n }\n }\n }\n }\n .nf-setting-wrap {\n width: 50%;\n transition: width 0.50s ease;\n }\n .nf-toggle-drawer {\n display: block;\n }\n}\n.nf-drawer-closed {\n #nf-main {\n width: 100%;\n left: 0;\n transition: width 0.50s ease, left 0.50s ease;\n }\n #nf-drawer {\n right: -1400px;\n transition: right 0.50s ease;\n }\n .nf-add-new {\n opacity: 1.0;\n visibility: visible;\n filter: alpha(opacity=100);\n transition: all 0.50s ease;\n }\n .nf-setting-wrap {\n width: 33%;\n transition: width 0.50s ease;\n }\n .nf-toggle-drawer {\n display: none;\n }\n}\n.nf-drawer-header {\n margin-bottom: 20px;\n padding: 0 10px;\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n h2 {\n color: #666;\n float: left;\n font-size: 20px;\n line-height: 22px;\n .dashicons {\n margin-right: 10px;\n }\n }\n .nf-button {\n float: right;\n }\n}\n.nf-drawer-error {\n background-color: #FFBABA;\n border: 1px solid #FFBABA;\n border-radius: 5px;\n color: #D8000C;\n font-size: 12px;\n margin: 10px 0px;\n padding: 10px 10px;\n}\n.nf-settings {\n h3 {\n color: #424242;\n font-size: 14px;\n padding: 10px 10px 0;\n text-transform: uppercase;\n .dashicons {\n color: #bbb;\n font-size: 28px;\n margin: -4px 10px 0 -30px;\n }\n }\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n}\n.nf-full {\n clear: both;\n &.toggle-row {\n border-bottom: 1px solid #ccc;\n margin: 0;\n position: relative;\n &:first-child {\n border-top: 1px solid #ccc;\n }\n label {\n display: inline-block;\n padding: 15px 60px 15px 0;\n //margin: 15px -40px 12px 0;\n }\n .nf-toggle {\n float: right;\n margin: 15px 0;\n position: absolute;\n top: 0;\n right: 10px;\n }\n }\n .nf-select{\n select{\n display: block;\n max-width: 100%;\n }\n }\n}\n.nf-one-half,\n.nf-one-third {\n float: left;\n}\n.nf-one-half {\n width: 50%;\n}\n.nf-one-third {\n width: 33.33%;\n}\n.nf-first {\n clear: both;\n margin-left: 0;\n}\n.nf-full,\n.nf-one-half,\n.nf-one-third {\n margin-bottom: 15px;\n padding: 0 2%;\n}\n.nf-full::after,\n.nf-one-half::after,\n.nf-one-third::after {\n clear: both;\n content: \"\";\n display: block;\n}\n.nf-toggle-drawer {\n color: #aaa;\n cursor: pointer;\n display: none;\n float: right;\n margin-top: 40px;\n text-decoration: none;\n padding: 10px 20px;\n position: fixed;\n bottom: 0;\n right: 0;\n .dashicons {\n margin-right: 5px;\n transition: all 0.50s ease;\n }\n .nf-expand-off {\n display: inline;\n }\n .nf-expand-on {\n display: none;\n }\n}\n\n\n#nf-menu-drawer {\n background: #EBEDEE;\n box-shadow: inset 1px 4px 9px -6px;\n width: 250px;\n position: absolute;\n top: 0;\n bottom: 0;\n right: -250px;\n z-index: 999;\n transition: right 0.50s ease;\n ul {\n margin: 0;\n li {\n a {\n border-bottom: 1px solid #ccc;\n color: #424242;\n display: block;\n padding: 10px 20px;\n text-decoration: none;\n .dashicons {\n color: $cta_color;\n margin-right: 15px;\n }\n }\n }\n }\n .nf-publish {\n background: $cta_color;\n color: #fff;\n padding: 20px;\n text-align: center;\n text-transform: uppercase;\n cursor:pointer;\n\n &.disabled {\n background: #ccc;\n border: 1px solid #ccc;\n cursor: default;\n }\n }\n\n}\n\n\n\n.nf-menu-expand {\n #nf-menu-drawer {\n right: 0;\n transition: right 0.50s ease;\n }\n #nf-header {\n margin-right: 250px;\n margin-left: -250px;\n transition: margin 0.50s ease;\n }\n #nf-main {\n left: -250px;\n transition: left 0.50s ease;\n }\n}\n\n.nf-div-table {\n .nf-table-row {\n &.nf-error {\n textarea {\n border: 1px solid red;\n }\n span.nf-option-error {\n background: red;\n color: #fff;\n display: block;\n padding: 5px 0;\n width: 100%;\n div.nf-error {\n display: block;\n width: 100% !important;\n text-align: center;\n }\n }\n }\n }\n}\n.ninja-forms-app {\n .jBox-Notice {\n .jBox-container {\n background: $accent_color;\n font-size: 18px;\n }\n }\n}\n\n.available-action-modal {\n padding: 20px;\n img {\n width: 100%;\n }\n iframe {\n width: 100%;\n height: 214px;\n }\n p:first-of-type {\n font-size: 16px;\n font-weight: bold;\n line-height: 20px;\n padding: 16px 40px;\n text-align: center;\n }\n .actions {\n margin-top: 30px;\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n }\n .primary.nf-button {\n float: right;\n }\n ul {\n list-style-type: disc;\n li {\n margin-left: 20px;\n padding-left: 10px;\n }\n }\n}",".nf-button {\n border: 0;\n border-radius: 4px;\n cursor: pointer;\n display: inline-block;\n font-size: 17px;\n padding: 10px 30px;\n text-align: center;\n text-decoration: none;\n text-transform: uppercase;\n appearance: none;\n &.primary {\n background: $cta_color;\n border: 1px solid #1EA9EA;\n color: #fff;\n }\n &.secondary {\n background: #fff;\n border: 1px solid $cta_color;\n color: $cta_color;\n }\n &.disabled {\n background: #ccc;\n border: 1px solid #ccc;\n cursor: default;\n }\n &.publish {\n float: right;\n }\n}\n.nf-cancel {\n color: #999;\n font-size: 15px;\n}\n.nf-public-link {\n color: #999;\n font-size: 15px;\n}\n.nf-mobile-menu {\n background: $cta_color;\n border-radius: 4px;\n color: #fff;\n display: none;\n float: right;\n padding: 5px 7px 5px 5px;\n text-decoration: none;\n transition: margin 0.5s ease;\n .dashicons {\n font-size: 30px;\n width: 32px;\n height: 30px;\n }\n &:hover {\n color: #fff;\n }\n}\n\n.ninja-forms-app {\n fieldset {\n border: 1px solid #ccc;\n clear: both;\n display: block;\n margin-bottom: 20px;\n }\n label {\n position: relative;\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n }\n legend {\n margin: 0 3px 10px;\n padding: 0 10px;\n }\n .nf-setting-label, label, legend {\n color: #424242;\n display: block;\n font-size: 13px;\n text-transform: uppercase;\n .open-media-manager {\n position: absolute;\n color: #ccc;\n right: 15px;\n top: 5px;\n text-decoration: none;\n }\n }\n input[type=text],\n input[type=number],\n textarea {\n background: #f9f9f9;\n border: 0;\n margin-top: 7px;\n padding: 12px 15px;\n width: 100%;\n height: 41px;\n text-transform: default;\n }\n textarea {\n height: 200px;\n }\n input[type=checkbox].nf-checkbox {\n appearance: none;\n background: #f9f9f9;\n border: 0;\n height: 25px;\n width: 25px;\n padding: 2px 1px 0px !important;\n margin: -3px -5px;\n &:checked {\n &::before {\n content: \"\\f147\";\n font: 400 30px/1 dashicons;\n }\n }\n }\n}\n.ninja-forms-app {\n .jBox-wrapper.import-options {\n padding: 12px 20px 0px !important;\n }\n .jBox-wrapper.import-options.jBox-pointerPosition-top.jBox-closeButton-box:before {\n right: 10px;\n }\n .nf-list-options, .nf-listimage-options {\n padding-bottom: 20px;\n .nf-add-new {\n margin-left: 20px;\n }\n .nf-div-table {\n .nf-table-row {\n > div {\n //border-top: 16px solid red;\n display: table-cell;\n padding: 5px;\n &:nth-child(1), &:nth-child(6) {\n padding: 0 15px;\n width: 20px;\n }\n &:nth-child(2), &:nth-child(3) {\n width: 45%;\n }\n &:nth-child(4) {\n min-width: 100px;\n }\n input {\n margin: 0;\n }\n }\n &.nf-table-header {\n div {\n font-size: 12px;\n padding: 20px 5px 5px;\n &:nth-child(1), &:nth-child(6) {\n padding: 0 25px;\n }\n }\n }\n }\n }\n &.calculations {\n .nf-div-table {\n .nf-table-header{\n div{\n &:nth-child(4) {\n display: none;\n }\n }\n }\n .nf-table-row {\n div {\n vertical-align: top;\n position: relative;\n &:nth-child(1), &:nth-child(4) {\n padding: 0 15px;\n width: 20px;\n min-width: 20px;\n }\n &:nth-child(2) {\n width: 30%;\n }\n &:nth-child(3) {\n width: 70%;\n }\n textarea {\n margin: 0;\n height: 100px;\n padding-right: 40px;\n }\n .merge-tags {\n color: #999;\n position: absolute;\n right: 15px;\n top: 5px;\n }\n .dashicons {\n color: #999;\n margin-top: 10px;\n }\n }\n .calc-left {\n div {\n display: inline-block;\n &:nth-child(1) {\n width: 100%;\n padding: 0px;\n }\n &:nth-child(2) {\n width: 60%;\n text-align: right;\n font-size: 12px;\n float: left;\n padding-top: 20px;\n padding-right: 10px;\n }\n &:nth-child(3) {\n width: 50px;\n float: left;\n padding-top: 10px;\n }\n }\n }\n }\n }\n }\n }\n .options {\n position: relative;\n legend {\n .nf-open-import-tooltip {\n background: #EBEDEE;\n color: $cta_color;\n font-size: 16px;\n padding: 6px 15px;\n text-decoration: none;\n position: absolute;\n right: 15px;\n top: 0;\n }\n }\n }\n .button-toggle {\n text-align: left;\n border: #ccc 1px solid;\n border-radius: 5px;\n background: #f1f1f1;\n margin-top: 35px;\n padding: 9px 0px;\n width: 100%;\n label {\n width: 48%;\n display: inline-block;\n margin-left: 1%;\n span {\n width: 100%;\n display: inline-block;\n cursor: pointer;\n transition: background-color 0.4s;\n }\n input:checked + span {\n background-color: #1ea9ea;\n border-color: #1ea9ea;\n }\n input + span {\n background-color: #ccc;\n border-color: #ccc;\n }\n }\n }\n}\n.nf-drawer-buttons {\n display: none;\n margin: 0 -20px;\n padding: 0;\n li {\n background: #424242;\n border-right: 1px solid #f1f1f1;\n float: left;\n margin: 0;\n padding: 15px;\n text-align: center;\n width: 50%;\n &:last-child {\n border: 0;\n }\n &.nf-drawer-delete {\n color: red;\n }\n &.nf-drawer-duplicate {\n color: $accent_color;\n }\n .dashicons {\n margin-right: 10px;\n }\n }\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n}\n\n.dashicons.spin {\n animation: dashicons-spin 1s infinite;\n animation-timing-function: linear;\n}\n@keyframes dashicons-spin {\n 0% { transform: rotate( 0deg ); }\n 100% { transform: rotate( 360deg ); }\n}\n\n",".nf-search {\n display: inline;\n position: relative;\n input[type=search] {\n background: transparent;\n box-shadow: 0 0 0;\n border: 0;\n margin-bottom:3px;\n padding: 12px 0 12px 50px;\n width: 60%;\n }\n &::before {\n content: \"\\f179\";\n color: #aaa;\n font-family: \"Dashicons\";\n font-size: 30px;\n width: 30px;\n height: 30px;\n position: absolute;\n top: 4px;\n left: 10px;\n }\n}\n.nf-stage {\n position: relative;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n .nf-stage-controls {\n background: #F8F8F9;\n padding: 5px;\n position: absolute;\n top: -20px;\n right: 10px;\n }\n}\n.nf-reservoir {\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n &.nf-droppable-active,\n &.nf-staged-fields-active {\n background: #F8F8F9;\n border: 4px solid #F8F8F9;\n border-radius: 4px;\n margin: 30px 2% 20px;\n //padding: 10px;\n min-height: 52px;\n padding: 6px;\n transition: all 1.0s ease;\n }\n .nf-item-dock {\n background: #fff;\n border-radius: 4px;\n color: #999;\n display: inline-block;\n float: left;\n margin: 0 4px 3px 4px;\n padding: 5px 10px;\n position: relative;\n .dashicons {\n font-size: 14px;\n margin: 2px 0 -4px 5px;\n }\n .fa {\n margin-right: 10px;\n }\n }\n\n}\n.nf-item {\n background: #3B454D;\n border-radius: 4px;\n color: #EBEDEE;\n font-size: 14px;\n padding: 10px;\n position: relative;\n text-align: center;\n &.active {\n background: $cta_color;\n color: #fff;\n }\n .fa {\n background: #30373E;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n padding: 9px;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 34px;\n line-height: 20px;\n }\n}\n.nf-saved {\n .nf-item {\n position: relative;\n &::after {\n background: #30373E;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n content: \"\\f155\";\n font-family: \"Dashicons\";\n padding: 9px;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 16px;\n height: 20px;\n }\n }\n}\n.nf-action-items {\n .nf-item {\n height: 50px;\n line-height: 30px;\n cursor: pointer;\n &.nf-has-img {\n background-position: center center;\n text-indent: -99999px;\n }\n }\n &.available {\n .nf-item {\n &.nf-has-img {\n filter: grayscale(100%);\n opacity: 0.6;\n &:hover {\n filter: grayscale(0);\n opacity: 1.0;\n }\n }\n }\n }\n}\n\n.nf-actions-items-available .nf-item {\n color: #3B454D;\n background-color: #EBEDEE;\n border: 1px solid #3B454D;\n}\n\n.nf-field-type-button {\n float: left;\n margin-bottom: 15px;\n padding: 0 2%;\n width: 33.33%;\n}\n","table.nf-changes {\n tr {\n td {\n border-bottom: 1px solid #ccc;\n }\n &.disabled-row {\n td {\n color: #bbb;\n }\n }\n &:nth-child(even) {\n td {\n background: #e5e7e8 !important;\n }\n }\n &:hover {\n td {\n background: #fff !important;\n }\n }\n }\n}\n.nf-button {\n &.undoChanges {\n .dashicons {\n font-size: 18px;\n height: 18px;\n width: 18px;\n margin-right: 5px;\n }\n }\n}\n",".nf-setting-error {\n color: red;\n font-size: 14px;\n padding: 5px 10px;\n a {\n color: red;\n }\n}\n",".nf-add-new {\n // background: red;\n color: $cta_color;\n padding: 0 0 0 46px;\n text-decoration: none;\n line-height: 32px;\n position: relative;\n height: 32px;\n z-index: 98;\n text-indent: 0px;\n overflow: hidden;\n &:after {\n background: $cta_color;\n border: 2px solid $cta_color;\n border-radius: 40px;\n color: #fff;\n content: \"+\";\n font-size: 22px;\n padding: 8px;\n position: absolute;\n left: 0;\n width: 12px;\n height: 12px;\n line-height: 10px;\n text-indent: 0px;\n transition: all 0.5s ease 0s\n }\n &:hover, &:active, &.active {\n color: $cta_color;\n transition: width 0.5s ease 0s,height 0.5s ease 0s, text-indent 0.5s ease,top 0.5s ease,left 0.5s ease;\n &:after {\n background: #fff;\n color: $cta_color;\n transform: rotate(180deg);\n transition: all 0.5s ease;\n }\n }\n &.nf-open-drawer {\n position: absolute;\n top: 185px;\n left: 40px;\n }\n}\n.nf-add-new.disabled {\n display: none;\n}\n.ninja-forms-app {\n &.folded {\n .nf-add-new {\n }\n }\n}\n\n.nf-master-control {\n background: $cta_color;\n border: 2px solid $cta_color;\n border-radius: 40px;\n cursor: pointer;\n position: absolute;\n //text-indent: -9999px;\n height: 60px;\n width: 60px;\n top: auto;\n left: auto;\n bottom: 20px;\n right: 30px;\n transition: all 0.5s ease;\n z-index: 98;\n span {\n display: block;\n text-indent: -9999px;\n }\n .fa {\n color: #fff;\n cursor: pointer;\n font-size: 28px;\n line-height: 28px;\n margin: 15px 0 0 16px;\n transition: all 0.5s ease;\n }\n &:hover, &:active, &.active {\n background: #fff;\n color: $cta_color;\n transition: all 0.5s ease;\n .fa {\n color: $cta_color;\n margin: 12px 0 0 16px;\n transform: rotate(180deg);\n transition: all 0.5s ease;\n }\n }\n}\n","input[type=checkbox].nf-toggle {\n display: none;\n + label {\n text-indent: -99999px;\n background: transparent;\n border: 0;\n box-shadow: 0 0 0;\n display: block;\n margin: 19px 5px 11px;\n appearance: none;\n position: relative;\n width: 40px;\n height: 20px;\n cursor: pointer;\n &::after {\n background: #BCBDBF;\n border: 2px solid #BCBDBF;\n border-radius: 20px;\n content: \"\";\n position: absolute;\n top: -4px;\n left: -4px;\n width: 40px;\n height: 20px;\n transition: all 0.3s ease;\n }\n &::before {\n background: #fff;\n border-radius: 20px;\n content: \"\";\n position: absolute;\n top: -1px;\n left: 0;\n width: 18px;\n height: 18px;\n z-index: 99;\n transition: all 0.3s ease;\n }\n }\n &:checked {\n + label {\n &::after {\n background: $accent_color;\n border: 2px solid $accent_color;\n transition: all 0.3s ease;\n }\n &::before {\n content: \"\";\n //top: 2px;\n left: 18px;\n transition: all 0.3s ease;\n }\n }\n }\n}\n\n.nf-full {\n position: relative;\n input[type=checkbox].nf-toggle {\n + label {\n margin: -18px 0 0;\n padding: 12px 0 20px;\n position: absolute;\n top: 24px;\n right: 10px;\n &::before {\n left: auto;\n right: 22px;\n transition: right 0.3s ease;\n }\n &::after {\n left: auto;\n right: 0;\n }\n }\n &:checked {\n + label {\n &::before {\n left: auto;\n right: 4px;\n transition: right 0.3s ease;\n }\n }\n }\n }\n .nf-setting-label {\n border-bottom: 1px solid #ccc;\n padding: 5px 0 20px;\n }\n}\n",".ninja-forms-app {\n .nf-select {\n display: block;\n position: relative;\n select {\n //background: #f9f9f9;\n background: transparent;\n border: 0;\n margin-top: 7px;\n height: 41px !important;\n padding: 0 30px 0 15px;\n position: relative;\n width: 100%;\n text-transform: capitalize;\n appearance: none;\n z-index: 2\n }\n div {\n background: #f9f9f9;\n height: 41px;\n position: absolute;\n bottom: 1px;\n width: 100%;\n z-index: 1;\n }\n div::after {\n color: #666;\n content: \"\\f347\";\n font-family: 'Dashicons';\n font-size: 20px;\n position: absolute;\n width: 30px;\n height: 30px;\n right: 5px;\n bottom: 0;\n }\n }\n div.nf-select {\n div {\n bottom: 7px;\n width: 95%;\n }\n select {\n margin-top: 0;\n }\n }\n}\n",".nf-actions-table,\n.nf-table-display {\n border-collapse: collapse;\n width: 100%;\n td, th {\n border-bottom: 1px solid #ECEDEE;\n font-size: 14px;\n padding: 15px;\n vertical-align: top;\n position: relative;\n //max-width: 500px;\n }\n th {\n color: #666;\n text-align: left;\n text-transform: uppercase;\n }\n td {\n color: #676F75;\n //white-space:nowrap;\n position: relative;\n &:nth-child(2) {\n width: 90%;\n }\n }\n .deactivated {\n td {\n color: #BCBDBF;\n a {\n color: #ddd;\n }\n }\n }\n input[type=checkbox].nf-toggle + label {\n z-index: 0; // Set to fix a bug with the merge tag box overlay with RTEs.\n margin: 2px 0 0;\n // &::after {\n // border-radius: 20px;\n // top: 2px;\n // left: -4px;\n // width: 30px;\n // height: 14px;\n // }\n // &::before {\n // border-radius: 20px;\n // top: 4px;\n // left: -1px;\n // width: 14px;\n // height: 14px;\n // }\n // &:checked {\n // &::before {\n // top: 7px;\n // left: 17px;\n // }\n // }\n }\n .active {\n td {\n color: $accent_color;\n font-weight: bold;\n }\n a {\n //color: $accent_color;\n }\n .nf-item-controls {\n font-weight: normal;\n float: right;\n a {\n color: $accent_color;\n }\n .nf-item-delete,\n .nf-item-duplicate {\n display: none;\n }\n .nf-item-editing {\n display: inline !important;\n }\n .nf-item-edit {\n .dashicons {\n margin-right: 12px\n }\n }\n }\n }\n}\n\n.ui-droppable {\n border: 4px solid #fff;\n}\n.nf-actions-empty {\n thead {\n display: none;\n }\n td {\n border: 4px solid #fff !important;\n display: block;\n padding: 40px 20% !important;\n white-space: normal !important;\n }\n h3 {\n font-size: 30px;\n }\n p {\n font-size: 18px;\n }\n}\n.nf-actions-table {\n td {\n cursor: pointer;\n }\n .nf-item-controls {\n top: 12px;\n }\n}","/* perfect-scrollbar v0.6.7 */\n.ps-container {\n -ms-touch-action: none;\n overflow: hidden !important; }\n .ps-container.ps-active-x > .ps-scrollbar-x-rail,\n .ps-container.ps-active-y > .ps-scrollbar-y-rail {\n display: block; }\n .ps-container.ps-in-scrolling {\n pointer-events: none; }\n .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {\n background-color: #eee;\n opacity: 0.9; }\n .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {\n background-color: #999; }\n .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {\n background-color: #eee;\n opacity: 0.9; }\n .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {\n background-color: #999; }\n .ps-container > .ps-scrollbar-x-rail {\n display: none;\n position: absolute;\n /* please don't change 'position' */\n -webkit-border-radius: 4px;\n -moz-border-radius: 4px;\n -ms-border-radius: 4px;\n border-radius: 4px;\n opacity: 0;\n -webkit-transition: background-color 0.2s linear, opacity 0.2s linear;\n -moz-transition: background-color 0.2s linear, opacity 0.2s linear;\n -o-transition: background-color 0.2s linear, opacity 0.2s linear;\n transition: background-color 0.2s linear, opacity 0.2s linear;\n bottom: 3px;\n /* there must be 'bottom' for ps-scrollbar-x-rail */\n height: 8px; }\n .ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x {\n position: absolute;\n /* please don't change 'position' */\n background-color: #aaa;\n -webkit-border-radius: 4px;\n -moz-border-radius: 4px;\n -ms-border-radius: 4px;\n border-radius: 4px;\n -webkit-transition: background-color 0.2s linear;\n -moz-transition: background-color 0.2s linear;\n -o-transition: background-color 0.2s linear;\n transition: background-color 0.2s linear;\n bottom: 0;\n /* there must be 'bottom' for ps-scrollbar-x */\n height: 8px; }\n .ps-container > .ps-scrollbar-y-rail {\n display: none;\n position: absolute;\n /* please don't change 'position' */\n -webkit-border-radius: 4px;\n -moz-border-radius: 4px;\n -ms-border-radius: 4px;\n border-radius: 4px;\n opacity: 0;\n -webkit-transition: background-color 0.2s linear, opacity 0.2s linear;\n -moz-transition: background-color 0.2s linear, opacity 0.2s linear;\n -o-transition: background-color 0.2s linear, opacity 0.2s linear;\n transition: background-color 0.2s linear, opacity 0.2s linear;\n right: 3px;\n /* there must be 'right' for ps-scrollbar-y-rail */\n width: 8px; }\n .ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y {\n position: absolute;\n /* please don't change 'position' */\n background-color: #aaa;\n -webkit-border-radius: 4px;\n -moz-border-radius: 4px;\n -ms-border-radius: 4px;\n border-radius: 4px;\n -webkit-transition: background-color 0.2s linear;\n -moz-transition: background-color 0.2s linear;\n -o-transition: background-color 0.2s linear;\n transition: background-color 0.2s linear;\n right: 0;\n /* there must be 'right' for ps-scrollbar-y */\n width: 8px; }\n .ps-container:hover.ps-in-scrolling {\n pointer-events: none; }\n .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail {\n background-color: #eee;\n opacity: 0.9; }\n .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x {\n background-color: #999; }\n .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {\n background-color: #eee;\n opacity: 0.9; }\n .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y {\n background-color: #999; }\n .ps-container:hover > .ps-scrollbar-x-rail,\n .ps-container:hover > .ps-scrollbar-y-rail {\n opacity: 0.6; }\n .ps-container:hover > .ps-scrollbar-x-rail:hover {\n background-color: #eee;\n opacity: 0.9; }\n .ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x {\n background-color: #999; }\n .ps-container:hover > .ps-scrollbar-y-rail:hover {\n background-color: #eee;\n opacity: 0.9; }\n .ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y {\n background-color: #999; }\n\n/* END DEFAULT PERFECT SCROLLBAR CSS */\n\n/*\n * Custom perfect scrollbar css\n */\n\n#nf-main.ps-container {\n overflow:auto !important;\n overflow-y:hidden !important;\n}\n\n#nf-drawer.ps-container {\n overflow:auto !important;\n overflow-y:hidden !important;\n}",".ui-sortable-helper {\n &.nf-field-wrap\n //&.nf-item-dock\n {\n box-shadow: 3px 3px 5px rgba( 0, 0, 0, 0.4 );\n }\n}\n\n.ui-draggable-dragging {\n .nf-item {\n box-shadow: 3px 3px 5px rgba( 0, 0, 0, 0.4 );\n }\n}\n\n.ui-draggable-handle {\n cursor: pointer;\n}\n.ui-draggable-dragging {\n z-index: 99;\n}\n#nf-builder {\n .nf-droppable-active {\n border: 4px solid $cta_color;\n //padding: 6px;\n transition: all 1.0s ease;\n }\n .nf-droppable-hover {\n border: 4px solid $accent_color;\n //padding: 6px;\n transition: all 1.0s ease;\n }\n}\n\n.nf-fields-sortable {\n border: 4px solid #FFF;\n padding: 25px 15px 6px;\n}\n.nf-fields-sortable .hidden {\n display: block !important;\n}\n.nf-fields-sortable-placeholder { margin-top: -14px; margin-bottom: 6px; border: 4px solid #84CC1E }\n\n.nf-staged-fields-drag {\n position: relative;\n display: block;\n height: 80px;\n &::after {\n clear: both;\n content: '';\n display: block;\n }\n .nf-staged-fields-drag-wrap {\n position: absolute;\n width: 500px;\n }\n #drag-item-1,\n #drag-item-2,\n #drag-item-3 {\n box-shadow: 3px 3px 5px rgba( 0, 0, 0, 0.4 );\n }\n #drag-item-1 {\n bottom: 0px;\n left: 0px;\n z-index: 3;\n }\n #drag-item-2 {\n bottom: 5px;\n left: 5px;\n z-index: 2;\n }\n #drag-item-3 {\n bottom: 10px;\n left: 10px;\n z-index: 1;\n }\n}\n\n.nf-staged-fields-drag-wrap {\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 4px;\n color: #888;\n cursor: pointer;\n margin-bottom: 20px;\n padding: 15px 20px;\n &.active {\n //background: #fafafa;\n border: 2px solid #84CC1E;\n color: #424242;\n font-weight: bold;\n .nf-item-controls {\n font-weight: normal;\n a {\n color: #424242;\n }\n .nf-item-delete,\n .nf-item-duplicate {\n display: none;\n }\n .nf-item-editing {\n display: inline;\n }\n .nf-item-edit {\n .dashicons {\n margin-right: 12px\n }\n }\n }\n }\n}\n\n\n\n.nf-staged-fields-sortable-placeholder { float: left; height: 28px; border-right: 8px solid #84CC1E; margin-right: -4px; margin-left: -4px; }\n\n.nf-list-options-sortable-placeholder, .nf-listimage-options-sortable-placeholder {\n border: 4px solid #84CC1E;\n height: 8px !important;\n margin: -4px 0 -4px 0;\n}\n\n.nf-fields-empty-droppable {\n border: 4px solid #FFF;\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n}\n\n.nf-settings .toggle { cursor: pointer; }\n",".nf-loading {\n background: #1EA9EA;\n border-radius: 4px;\n width: 40px;\n margin: 0 auto;\n position: relative;\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n position: relative;\n top: -10px;\n left: 0;\n font-size: 0;\n li {\n height: 0;\n position: absolute;\n top: 50%;\n left: 0;\n width: 0;\n margin: 0;\n height: 10px;\n width: 10px;\n border: 3px solid #fff;\n border-radius: 100%;\n transform: transformZ(0);\n animation: LOADING 2s infinite;\n &:nth-child(1n) {\n left: 0;\n animation-delay: 0s;\n }\n &:nth-child(2n) {\n left: 15px;\n animation-delay: 0.2s;\n }\n &:nth-child(3n) {\n left: 30px;\n animation-delay: 0.4s;\n }\n }\n }\n}\n\n@keyframes LOADING {\n 0% {\n transform: scale(0.5);\n background: #fff;\n }\n 50% {\n transform: scale(1);\n background: #fff;\n }\n 100% {\n transform: scale(0.5);\n background: #fff;\n }\n}\n",".nf-help-text {\n display: none;\n}\n.ninja-forms-app {\n .nf-help {\n color: #ccc;\n margin-left: 5px;\n text-decoration: none;\n .dashicons {\n font-size: 16px;\n height: 16px;\n width: 16px;\n }\n }\n .qtip-default {\n background-color: #424242;\n border: 1px solid #424242;\n border-radius: 4px;\n box-shadow: 0 5px 6px rgba( 0, 0, 0, 0.3 );\n color: #fff;\n font-size: 14px;\n line-height: 18px;\n padding: 10px;\n //position: relative;\n &::after {\n content: \"\";\n position: absolute;\n left: 143px;\n bottom: -12px;\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 12px solid #424242;\n }\n }\n}",".has-merge-tags {\n position: relative;\n input[type=text],\n textarea {\n padding-right: 40px;\n }\n &.rte {\n display: block;\n .wp-editor-tabs {\n margin-right: 40px;\n }\n .merge-tags {\n color: #999;\n z-index: 100;\n top: 26px;\n }\n }\n .merge-tags {\n color: #ccc;\n pointer: cursor;\n position: absolute;\n }\n .nf-list-options, .nf-listimage-options {\n input[type=text] {\n + .merge-tags {\n top: 12px;\n }\n }\n }\n}\ndiv.has-merge-tags {\n .merge-tags {\n top: 16px;\n right: 12px;\n }\n}\nlabel.has-merge-tags {\n .merge-tags {\n top: 33px;\n right: 12px;\n }\n}\n\n.nf-list-options, .nf-listimage-options {\n label.has-merge-tags {\n .merge-tags {\n top: 12px;\n }\n }\n}\n\n.jBox-Tooltip {\n z-index: 100000000 !important;\n}\n\n.jBox-TooltipBorder {\n .jBox-container {\n border-radius: 5px;\n border: 2px solid $cta_color;\n /*background: #EBEDEE;*/\n h4 {\n background: #f1f1f1;\n padding: 5px;\n margin: 0 0 5px;\n }\n ul {\n margin: 0;\n li {\n &:nth-child(even) {\n a {\n //background: #f1f1f1;\n }\n }\n a {\n color: $cta_color;\n margin: 0;\n padding: 0 5px;\n display: block;\n text-decoration: none;\n }\n }\n a.active {\n background: #f1f1f1;\n }\n }\n }\n .jBox-pointer {\n &::after {\n border: 2px solid $cta_color;\n /*background: #EBEDEE;*/\n }\n }\n .jBox-pointer-top,\n .jBox-pointer-bottom {\n width: 34px;\n height: 12px;\n }\n .jBox-pointer-left,\n .jBox-pointer-right {\n width: 12px;\n height: 34px;\n }\n &.jBox-closeButton-box {\n &::before {\n width: 28px;\n height: 28px;\n background: $cta_color;\n }\n }\n}\n\n/* MERGE TAG BOX STYLES */\n#merge-tags-box {\n display: none;\n background-color: #DBDDDD;\n max-height: 360px;\n z-index: 1001;\n position: absolute;\n top: -1px;\n left:12px;\n right: 10px;\n\n .merge-tag-container {\n display: flex;\n justify-content: space-between;\n }\n\n .merge-tag-sections,\n .merge-tag-list {\n float: left;\n font-size: 14px;\n background-color: #fff;\n height: 300px;\n overflow-y: auto;\n }\n\n .merge-tag-sections {\n background-color: #DBDDDD;\n min-width: 135px;\n ul {\n margin: 0;\n li {\n background: #DBDDDD;\n border-bottom: 1px solid #fff;\n cursor: pointer;\n font-size: 14px;\n margin: 0;\n padding: 8px 26px 8px 16px;\n &:hover {\n background: #f6f6f6;\n }\n &.active {\n position: relative;\n }\n &.active::after {\n clear: both;\n content: \"\";\n display: block;\n width: 0;\n height: 0;\n border-top: 17px solid transparent;\n border-bottom: 17px solid transparent;\n border-right: 24px solid #fff;\n position: absolute;\n top: 0;\n right: 0;\n }\n &:hover {\n color: #1EA9EA;\n }\n }\n }\n }\n\n .merge-tag-list {\n flex-grow: 1;\n padding-top: 10px;\n div {\n div {\n line-height: 22px;\n }\n }\n &:hover li { // Uses !important to override first-of-type selector.\n &:hover {\n color: #1EA9EA !important;\n }\n color: black !important;\n }\n ul {\n margin: 0;\n }\n li {\n cursor: pointer;\n margin-bottom: 0;\n span {\n padding: 4px 16px;\n display: block;\n small {\n font-family: \"Courier New\", Courier, monospace, sans-serif;\n }\n }\n &:first-of-type {\n color: #1EA9EA;\n }\n }\n }\n\n .merge-tag-filter {\n border-bottom: 2px solid #DBDDDD;\n margin: 3px 10px 10px 10px;\n clear: both;\n }\n}\n.merge-tag-focus {\n position: relative;\n z-index: 1000;\n}\n.merge-tag-focus-overlay {\n &:before {\n content: '';\n position: fixed;\n top: 0; right: 0; bottom: 0; left: 0;\n background-color: rgba( 0, 0, 0, .5 );\n z-index: 100;\n }\n &.note-editor:before { // Summernote RTE Support\n z-index: 0;\n }\n}\n\n#merge-tags-box.one-half--first {\n width: 538px;\n left: 12px;\n}\n#merge-tags-box.one-half--second {\n width: 538px;\n right: 10px;\n left: auto;\n}\n\n.setting + .merge-tags {\n color: rgba( 204, 204, 204, .3 );\n}\n.setting:focus + .merge-tags,\n.merge-tag-focus-overlay .merge-tags {\n color: rgba( 204, 204, 204, 1 );\n}\n.merge-tag-focus-overlay .merge-tags {\n z-index: 1000;\n}\n",".note-popover {\n display: none !important;\n}\n.ninja-forms-app {\n .note-editor {\n border: 0 !important;\n .note-toolbar {\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n }\n .note-editable {\n background: #f9f9f9;\n display: block;\n p {\n font-size: 16px;\n }\n ul {\n list-style-type: disc;\n margin-left: 2em;\n }\n table {\n td {\n border: 1px solid #ccc;\n width: auto;\n }\n }\n }\n .modal {\n display: none;\n }\n .btn-group {\n float: left;\n &.note-tools, {\n float: right;\n }\n }\n .btn {\n background: #f9f9f9;\n border: 0;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n margin-right: 2px;\n padding-top: 4px;\n &.disabled {\n background: transparent;\n color: #aaa;\n .merge-tags {\n background: #f9f9f9;\n color: #666;\n }\n }\n }\n }\n .tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n filter: alpha(opacity=0);\n opacity: 0;\n\n line-break: auto;\n }\n .tooltip.in {\n filter: alpha(opacity=90);\n opacity: .9;\n }\n .tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n }\n .tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n }\n .tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n }\n .tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n }\n .tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n }\n .tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n .tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n }\n .tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n }\n .tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .dropdown-menu {\n position: absolute;\n // top: 100%;\n // left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n }\n .dropdown-menu.pull-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n }\n .dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n }\n .dropdown-menu > li > a:hover,\n .dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n }\n .dropdown-menu > .active > a,\n .dropdown-menu > .active > a:hover,\n .dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n }\n .dropdown-menu > .disabled > a,\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n color: #777;\n }\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n }\n .open > .dropdown-menu {\n display: block;\n }\n .open > a {\n outline: 0;\n }\n .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n .dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n }\n .dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n }\n .pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n }\n .dropup .caret,\n .navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n }\n .dropup .dropdown-menu,\n .navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n }\n .btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n }\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n .nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n .nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n }\n .navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n @media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n }\n @media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n }\n}\n","/*\nWP Color Picker (Iris) Styles\n---------------------------------------------*/\n\n.ninja-forms-app #wpcontent .wp-picker-holder {\n position: absolute;\n z-index: 9001;\n}\n.ninja-forms-app #wpcontent .wp-picker-holder * {\n box-sizing: content-box;\n}\n.wp-picker-container {\n width: 100%;\n}\n.wp-color-result,\n.wp-picker-input-wrap {\n margin-top: 5px;\n}\n.wp-color-result {\n border: 0;\n box-shadow: none;\n margin: 5px 0 0;\n height: 41px;\n width: 100%;\n padding-left: 60px;\n}\n.wp-color-result:after {\n font-size: 16px;\n line-height: 41px;\n}\n.wp-color-result.wp-picker-open {\n display: none;\n}\n.wp-color-picker,\n.wp-picker-input-wrap {\n width: 100% !important;\n}\n\n.wp-picker-input-wrap > .button.wp-picker-default {\n display: none;\n}\n","\n@-webkit-keyframes color_change {\n from { background-color: $cta_color; color: #fff }\n to { background-color: #3B454D; color: #A2A5A8 }\n}\n@-moz-keyframes color_change {\n from { background-color: $cta_color; color: #fff }\n to { background-color: #3B454D; color: #A2A5A8 }\n}\n@-ms-keyframes color_change {\n from { background-color: $cta_color; color: #fff }\n to { background-color: #3B454D; color: #A2A5A8 }\n}\n@-o-keyframes color_change {\n from { background-color: $cta_color; color: #fff }\n to { background-color: #3B454D; color: #A2A5A8 }\n}\n@keyframes color_change {\n from { background-color: $cta_color; color: #fff }\n to { background-color: #3B454D; color: #A2A5A8 }\n}\n.nf-item.clicked {\n //background: #1EA9EA;\n animation-name: color_change;\n animation-duration: 2s;\n animation-iteration-count: 1;\n animation-direction: alternate;\n}\n@media only screen and (max-width: 1400px) {\n .nf-field-type-button {\n width: 50%;\n }\n}\n@media only screen and (max-width: 1065px) {\n .nf-app-menu {\n .preview {\n .app-menu-text {\n text-indent: -9999px;\n display: inline-block;\n width: 0;\n }\n }\n }\n .nf-drawer-opened {\n .nf-actions-table {\n th, td {\n &:nth-child(3) {\n display: none;\n }\n }\n }\n }\n}\n@media only screen and (max-width: 900px) {\n #nf-header {\n ul {\n display: none;\n }\n .nf-button.primary {\n display: none;\n }\n }\n\n .nf-mobile-menu {\n display: inline-block;\n }\n #nf-app-sub-header {\n h2 {\n padding-left: 0;\n transition: all 1.0s ease 0s\n }\n }\n\n .nf-add-new.nf-open-drawer {\n position: fixed;\n text-indent: -9999px;\n height: 54px;\n width: 54px;\n top: auto;\n left: auto;\n bottom: 20px;\n right: 20px;\n &:after {\n background: $accent_color;\n border: 2px solid $accent_color;\n border-radius: 40px;\n color: #fff;\n content: \"+\";\n font-size: 50px;\n padding: 8px;\n position: absolute;\n left: 0;\n width: 28px;\n height: 28px;\n line-height: 24px;\n text-indent: 0px;\n }\n }\n\n #nf-main-header {\n .nf-button {\n display: none;\n }\n }\n // .nf-item-controls {\n // li {\n // margin: -4px 15px 0;\n // height: 26px;\n // a {\n // width: 30px;\n // height: 30px;\n // &:hover {\n // .nf-tooltip {\n // top: -45px;\n // visibility:visible;\n // opacity: 1.0;\n // filter: alpha(opacity=100);\n // transition: all 1.0s ease;\n // transition-delay: 1.4s;\n // }\n // }\n // .dashicons {\n // font-size: 26px;\n // padding-top: 1px;\n // }\n // }\n // &.nf-item-duplicate {\n // .nf-tooltip {\n // left: -32px;\n // &:after {\n // left: 36px;\n // }\n // }\n // }\n // &.nf-item-edit {\n // .nf-tooltip {\n // left: -16px;\n // &:after {\n // left: 20px;\n // }\n // }\n // }\n // &.nf-item-delete {\n // margin-top: -4px;\n // }\n // &.nf-item-expand {\n // display: none;\n // .dashicons {\n // transform: rotate(-90deg);\n // }\n // }\n // .nf-item-editing {\n // display: none;\n // }\n // }\n // &.nf-editing {\n // font-weight: normal;\n // a {\n // color: #424242;\n // }\n // .nf-item-delete,\n // .nf-item-duplicate {\n // display: none;\n // }\n // .nf-item-editing {\n // display: inline;\n // line-height: 26px;\n // }\n // }\n // }\n .nf-one-half, .nf-one-third {\n float: none;\n width: 100%;\n }\n .nf-drawer-expand {\n .nf-one-half {\n float: left;\n width: 50%;\n }\n .nf-on-third {\n float: left;\n width: 33%;\n }\n }\n\n #nf-app-form-title {\n margin-top: -55px;\n }\n #nf-main {\n top: 120px;\n }\n\n #nf-table-display {\n .nf-item-controls {\n width: auto;\n }\n }\n}\n@media only screen and (max-width: 1023px) {\n .ninja-forms-app {\n &.folded {\n #wpcontent {\n margin-left: 36px;\n padding: 0;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n #wpbody {\n left: 0;\n }\n }\n }\n }\n\n .nf-setting-wrap {\n width: 50%;\n }\n #nf-drawer {\n width: 100%;\n }\n .nf-drawer-opened {\n #nf-main {\n width: 100%;\n }\n .nf-setting-wrap {\n width: 50%;\n }\n }\n .nf-drawer-closed {\n .nf-setting-wrap {\n width: 50%;\n }\n }\n .nf-toggle-drawer {\n display: none;\n }\n\n}\n@media only screen and (max-width: 960px) {\n .ninja-forms-app {\n &.auto-fold {\n #wpcontent {\n margin-left: 36px;\n padding: 0;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n #wpbody {\n left: 0;\n }\n }\n }\n }\n .nf-drawer-opened .nf-toggle-drawer {\n display: none;\n }\n\n\n\n}\n\n@media only screen and (max-width: 782px) {\n .ninja-forms-app {\n &.folded, &.auto-fold {\n #wpcontent {\n margin-left: 0;\n }\n }\n }\n // .nf-item-controls {\n // top: 15px;\n // }\n #nf-builder {\n padding: 80px 20px 10px;\n .nf-cta-bubble {\n display: none !important;\n }\n }\n #nf-main {\n padding: 20px 0 80px;\n }\n #nf-drawer {\n padding: 20px;\n }\n\n\n #nf-main-content {\n width: 100%;\n max-width: 100%;\n }\n #nf-main {\n border: 0;\n }\n // .nf-field-wrap {\n // border: 0;\n // border-top: 8px solid #f1f1f1;\n // border-radius: 0;\n // margin: 0;\n // padding: 20px;\n // &:first-child {\n // border-top: 8px solid #fff;\n // }\n // }\n // .nf-fields-sortable-placeholder { margin-top: 0; margin-bottom: 0; border: 4px solid #84CC1E }\n // .nf-fields-sortable-placeholder + .nf-field-wrap {\n // border: 0;\n // }\n // .nf-fields-sortable {\n // border: 0;\n // padding: 0;\n // }\n // .nf-field-wrap.ui-sortable-helper {\n // background: transparent;\n // border: 2px solid $accent_color;\n // }\n\n}\n@media only screen and (max-width: 660px) {\n\n #nf-builder {\n //margin-top: 46px;\n }\n .nf-one-half, .nf-one-third {\n width: 100%;\n }\n // .nf-field-wrap {\n // border: 0;\n // border-bottom: 1px solid #ccc;\n // border-radius: 0;\n // margin: 0;\n // padding: 20px;\n // &:first-child {\n // border-top: 1px solid #ccc;\n // }\n // }\n .nf-actions-table {\n td:nth-child(3),th:nth-child(3) {\n display: none;\n }\n }\n // display: block;\n // table, thead, tbody, th, td, tr {\n // display: block;\n // }\n // thead tr {\n // position: absolute;\n // top: -9999px;\n // left: -9999px;\n // }\n // tr { border: 1px solid #ccc; }\n // td {\n // /* Behave like a \"row\" */\n // border: none;\n // border-bottom: 1px solid #eee;\n // position: relative;\n // padding-left: 50%;\n // text-align: right;\n // width: auto !important;\n // &::before {\n // /* Now like a table header */\n // line-height: 36px;\n // position: absolute;\n // /* Top/left values mimic padding */\n // top: 6px;\n // left: 6px;\n // width: 45%;\n // padding-right: 10px;\n // text-align: left;\n // white-space: nowrap;\n // }\n // &:last-child {\n // height: 50px;\n // }\n // }\n // td:nth-of-type(1):before { content: \"\"; }\n // td:nth-of-type(2):before { content: \"Name\"; }\n // td:nth-of-type(3):before { content: \"Type\"; }\n // td:nth-of-type(4):before { content: \"Actions\"; }\n // }\n\n .nf-drawer-buttons {\n display: block;\n }\n // .nf-drawer-header {\n // background: #fff;\n // margin: -20px -20px 20px;\n // //padding: 0;\n // h2 {\n // font-size: 16px;\n // line-height: 46px;\n // margin: 0;\n // .dashicons {\n // background: #fff;\n // font-size: 30px;\n // padding-top: 7px;\n // width: 45px;\n // height: 45px;\n // }\n // }\n // .nf-button {\n // border-radius: 0;\n // }\n // }\n .nf-item {\n padding: 15px;\n .fa {\n padding: 14px;\n width: 48px;\n }\n }\n .nf-saved .nf-item::after {\n padding: 14px;\n }\n}\n\n@media only screen and (max-width: 600px) {\n // #nf-builder {\n // margin-top: 46px;\n // }\n\n\n}\n",".rtl.ninja-forms-app {\n #wpcontent {\n margin-right: 140px;\n #wpbody {\n right: 160px;\n left: 0;\n }\n }\n &.folded {\n #wpcontent {\n margin-right: 16px;\n #wpbody {\n right: 36px;\n left: 0;\n }\n }\n }\n}\n\n.rtl {\n #nf-app-admin-header {\n #nf-logo {\n float: right;\n }\n .fa-times {\n right: auto;\n left: 0;\n }\n }\n\n .nf-app-buttons {\n float: left;\n }\n\n #nf-app-header {\n .nf-app-menu {\n li {\n float: right;\n a {\n &.preview {\n .dashicons {\n margin-right: 10px;\n }\n }\n }\n }\n }\n }\n\n .nf-master-control {\n right: auto;\n left: 30px;\n .fa {\n margin: 15px 16px 0 0;\n }\n }\n\n input[type=submit] {\n float: left;\n }\n .nf-cancel {\n float: left;\n margin-left: 20px;\n }\n .nf-public-link {\n float: left;\n margin-left: 20px;\n }\n\n .nf-add-new {\n margin: 0;\n padding: 0;\n //padding: 0 46px 0 0;\n &:after {\n right: 0;\n left: auto;\n line-height: 14px;\n }\n }\n\n #nf-main {\n right: 0;\n left: auto;\n }\n #nf-main-header {\n .nf-button {\n float: left;\n }\n }\n .nf-field-label {\n margin-left: 0;\n margin-right: 16px;\n }\n .nf-item-controls {\n right: auto;\n left: 0;\n .nf-item-control {\n right: auto;\n left: 0;\n }\n &:hover {\n .nf-item-duplicate {\n right: auto;\n left: 80px;\n }\n .nf-item-delete {\n right: auto;\n left: 40px;\n }\n }\n }\n\n #nf-drawer {\n right: auto;\n left: -1400px;\n &.nf-drawer-expand {\n width: 100%;\n }\n }\n\n .nf-drawer-header {\n h2 {\n float: right;\n .dashicons {\n margin-left: 10px;\n }\n }\n .nf-button {\n float: left;\n }\n }\n\n .nf-search {\n input[type=search] {\n padding: 12px 50px 12px 0;\n }\n &::before {\n right: 10px;\n left: 0;\n }\n }\n\n .nf-drawer-opened {\n #nf-drawer {\n left: 0;\n right: auto;\n }\n #nf-app-sub-header {\n h2 {\n padding-right: 0;\n }\n }\n }\n\n .nf-settings {\n h3 {\n .dashicons {\n margin: -4px -30px 0 10px;\n &.dashicons-arrow-right::before {\n content: \"\\f141\";\n }\n }\n }\n }\n\n .nf-item {\n .fa {\n left: auto;\n right: 0;\n }\n }\n\n .nf-one-half,\n .nf-one-third,\n .nf-one-fourth {\n float: right;\n }\n}\n"]}
assets/css/dashboard.min.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["dashboard.scss","notices/oauth.scss","sections/widgets.scss","sections/services.scss","sections/promotions.scss","widgets/forms.scss"],"names":[],"mappings":"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","file":"dashboard.min.css","sourcesContent":["html {\r\n overflow: auto!important; /* Override normalize.scss */\r\n}\r\n\r\n::-webkit-scrollbar {\r\n display: none;\r\n}\r\n\r\n.ninja-forms-app {\r\n\r\n}\r\n\r\na {\r\n color: #1EA9EA;\r\n text-decoration: none;\r\n outline: none !important;\r\n border: 0;\r\n}\r\na:focus {\r\n outline: none !important;\r\n box-shadow: unset; // Override WP focus state.\r\n}\r\n\r\n#wpwrap,\r\n#wpcontent {\r\n background-color: #fff;\r\n}\r\n\r\n#wpcontent {\r\n padding: 0;\r\n\r\n .wrap {\r\n margin: 0;\r\n }\r\n}\r\n\r\n/** Hide anything that isn't our page wrap, ie Admin Notices */\r\n#wpbody-content > div:not(.wrap) {\r\n display: none;\r\n}\r\n\r\n@mixin wrap {\r\n width: 100%;\r\n max-width: 50rem;\r\n margin: auto;\r\n}\r\n\r\n#ninja-forms-dashboard {\r\n\r\n box-sizing: border-box;\r\n\r\n .nf-widget {\r\n background-color: #fff;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n margin-bottom: 20px;\r\n }\r\n\r\n header {\r\n\r\n &.topbar {\r\n background-color: #EBEDEE;\r\n }\r\n\r\n .app-title {\r\n @include wrap;\r\n background-image: url(\"../img/nf-logo-dashboard.png\");\r\n background-size: 315px 48px;\r\n background-position: left bottom;\r\n background-repeat: no-repeat;\r\n height: 52px;\r\n margin-bottom: 40px;\r\n //padding: 10px;\r\n strong {\r\n display: block;\r\n text-indent: -9999px;\r\n }\r\n }\r\n }\r\n\r\n nav {\r\n @include wrap;\r\n margin-bottom: 40px;\r\n\r\n ul {\r\n display: flex;\r\n margin: 0;\r\n\r\n li {\r\n\r\n a {\r\n color: #424242;\r\n cursor: pointer;\r\n font-size: 16px;\r\n margin: 0 16px 10px 16px;\r\n margin-bottom: 10px;\r\n padding: 16px 0 8px;\r\n\r\n &.active {\r\n border-bottom: 2px solid #424242;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n main {\r\n @include wrap;\r\n }\r\n\r\n .form-row-actions {\r\n\r\n display: none;\r\n\r\n li {\r\n font-size: 12px;\r\n }\r\n\r\n }\r\n .nf-table-display {\r\n\r\n td {\r\n white-space:nowrap;\r\n }\r\n\r\n td:nth-child(1) {\r\n width: 100%;\r\n }\r\n\r\n td:nth-child(2),\r\n td:nth-child(3) {\r\n width: 250px;\r\n }\r\n\r\n .title {\r\n display: block;\r\n max-width: 24rem;\r\n overflow: hidden;\r\n }\r\n\r\n }\r\n\r\n tr.show-actions {\r\n\r\n .title {\r\n display: block;\r\n margin-bottom: 30px;\r\n }\r\n\r\n .form-row-actions {\r\n\r\n display: flex;\r\n background: #ECEDEE;\r\n position: absolute;\r\n padding-top: 6px;\r\n bottom: 0;\r\n z-index: 1;\r\n margin: 0;\r\n\r\n li {\r\n padding: 0 10px;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n .nf-search {\r\n\r\n border-bottom: 1px solid #ECEDEE;\r\n\r\n &::before {\r\n top: 16px;\r\n }\r\n\r\n input[type=search] {\r\n width: auto;\r\n }\r\n\r\n }\r\n\r\n .nf-item-controls .nf-item-control a {\r\n margin-left: 20px;\r\n width: 24px;\r\n cursor: pointer;\r\n }\r\n}\r\n\r\n/*\r\nNotices\r\n---------------------------------------------*/\r\n\r\n@import 'notices/oauth';\r\n\r\n/*\r\nSections\r\n---------------------------------------------*/\r\n\r\n@import 'sections/widgets';\r\n@import 'sections/services';\r\n@import 'sections/apps';\r\n@import 'sections/memberships';\r\n@import 'sections/promotions';\r\n\r\n/*\r\nWidgets\r\n---------------------------------------------*/\r\n\r\n@import 'widgets/forms';\r\n\r\n/*\r\njBox\r\n---------------------------------------------*/\r\n\r\n.jBox-Modal {\r\n\r\n background-color: white;\r\n\r\n .jBox-title {\r\n padding-top: 10px;\r\n padding-bottom: 10px;\r\n font-size: 150%;\r\n font-weight: bold;\r\n text-align: center;\r\n width: 100%;\r\n }\r\n .jBox-content {\r\n padding: 10px;\r\n width: 100%;\r\n }\r\n\r\n .buttons {\r\n &::after {\r\n clear: none;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n}\r\n\r\n/*\r\nLoading Spinner\r\n---------------------------------------------*/\r\n\r\n.nf-loading-spinner {\r\n width: 40px;\r\n height: 40px;\r\n margin: 15px auto;\r\n background-color: rgba(208,208,208,.5);\r\n\r\n border-radius: 100%;\r\n animation: nf-scaleout 1.0s infinite ease-in-out;\r\n}\r\n\r\n@-webkit-keyframes nf-scaleout {\r\n 0% { transform: scale(0) }\r\n 100% {\r\n transform: scale(1.0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes nf-scaleout {\r\n 0% {\r\n transform: scale(0);\r\n } 100% {\r\n transform: scale(1.0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n.apps-container {\r\n display: flex;\r\n justify-content: space-between;\r\n flex-flow: row wrap;\r\n padding: 10px;\r\n\r\n .nf-box {\r\n background: #fff;\r\n flex-basis: 48%;\r\n }\r\n\r\n .nf-box-inside {\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n padding: 10px;\r\n }\r\n\r\n .nf-extend {\r\n float: left;\r\n margin: 0 0 20px 0;\r\n width: 300px;\r\n position: relative;\r\n }\r\n .nf-extend img {\r\n margin-bottom: 10px;\r\n max-width: 100%;\r\n height: auto;\r\n }\r\n\r\n .nf-extend h2 {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n }\r\n\r\n .nf-extend-content p {\r\n min-height: 100px;\r\n }\r\n\r\n .nf-extend-buttons {\r\n\r\n &::after {\r\n\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n\r\n }\r\n\r\n }\r\n\r\n .nf-extend .nf-button {\r\n float: right;\r\n }\r\n\r\n .nf-extend .nf-doc-button {\r\n float: left;\r\n }\r\n\r\n}\r\n\r\n/*\r\nPromotions\r\n---------------------------------------------*/\r\n\r\n.promotion--wrapper {\r\n > div {\r\n a {\r\n position: relative;\r\n display: block;\r\n background: #f1f1f1;\r\n padding: 16px 80px;\r\n text-align: center;\r\n border-radius: 4px;\r\n font-size: 16px;\r\n color: #ef4748 !important;\r\n overflow: hidden;\r\n line-height: 24px;\r\n > .cta {\r\n font-size: 22px;\r\n }\r\n > .dashicons, .dashicons-before::before {\r\n position: absolute;\r\n left: 0;\r\n top: -20px;\r\n font-size: 90px;\r\n transform: rotate(20deg);\r\n }\r\n }\r\n }\r\n}\r\n\r\n.promotion--wrapper {\r\n > div {\r\n a.nf-remove-promo-styling { \r\n padding: 0;\r\n height: 83px;\r\n }\r\n }\r\n}","@keyframes nf-connected {\r\n 0% {\r\n box-shadow: 0 0 2px rgba(255, 255, 255, 0),\r\n inset 0 0 2px rgba(255, 255, 255, 0);\r\n }\r\n 50% {\r\n box-shadow: 0 0 2px #84cc1e,\r\n inset 100vw 0 2px rgba(255, 255, 255, .2);\r\n }\r\n 100% {\r\n box-shadow: 0 0 2px rgba(255, 255, 255, 0),\r\n inset 100vw 0 2px rgba(255, 255, 255, 0);\r\n }\r\n}\r\n\r\n.nf-notices--oauth {\r\n margin-top: -40px; // Account for the bottom margin on the topbar.\r\n padding-bottom: 20px; // Increase hover target, while maintaining whitespace.\r\n text-align:center;\r\n}\r\n\r\n.nf-oauth--checking {\r\n padding: 5px;\r\n}\r\n\r\n.nf-oauth--connect {\r\n display:block;\r\n background-color:#1EA9EA;\r\n color:white;\r\n padding: 5px;\r\n text-decoration:none;\r\n}\r\n\r\n.nf-oauth--connected {\r\n color: transparent;\r\n padding: 0;\r\n line-height: .5;\r\n transition: all .4s;\r\n background-color:#84CC1E;\r\n}\r\n.nf-oauth--connected:not(:hover) {\r\n animation: nf-connected 8s ease infinite;\r\n animation-delay: 2s;\r\n}\r\n.nf-notices--oauth:hover .nf-oauth--connected {\r\n color:white;\r\n line-height: 2;\r\n padding: 5px;\r\n}\r\n",".widget {\r\n background-color: #fff;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n margin-bottom: 20px;\r\n padding: 20px;\r\n\r\n header {\r\n margin-bottom: 20px;\r\n }\r\n\r\n}\r\n\r\n.widget-memberships {\r\n border: 0;\r\n padding: 0;\r\n}\r\n.pricing-container {\r\n display: flex;\r\n justify-content: space-between;\r\n flex-wrap: wrap;\r\n\r\n .pricing-block {\r\n width: 30%;\r\n\r\n &.highlight {\r\n background-color: #f1f1f1;\r\n }\r\n\r\n }\r\n\r\n .pricing-header {\r\n\r\n text-align: center;\r\n\r\n & > div {\r\n margin-bottom: 10px;\r\n }\r\n\r\n .pricing-title {\r\n font-size: 24px;\r\n margin-bottom: 16px;\r\n }\r\n\r\n .pricing-price {\r\n font-size: 24px;\r\n font-weight: bold;\r\n padding: 5px 0;\r\n }\r\n\r\n }\r\n\r\n .pricing-body {\r\n\r\n & > div {\r\n padding: 10px 0;\r\n position: relative;\r\n }\r\n\r\n span {\r\n display: block;\r\n margin-left: 40px;\r\n }\r\n\r\n ul {\r\n list-style: disc;\r\n margin-left: 20px;\r\n padding-left: 20px;\r\n }\r\n\r\n hr {\r\n margin-top: 10px;\r\n margin-bottom: 10px;\r\n border: 0;\r\n border-top: 1px solid #424242;\r\n }\r\n\r\n .fa {\r\n //color: #86CA32;\r\n color: #aaa;\r\n font-size: 24px;\r\n position: absolute;\r\n left: 0;\r\n }\r\n\r\n .pricing-body-title {\r\n font-weight: bold;\r\n text-transform: uppercase;\r\n }\r\n\r\n }\r\n\r\n}\r\n \r\n\r\n.widget-plan-notice {\r\n\r\n text-align: center;\r\n\r\n .widget-title {\r\n font-size: 32px;\r\n font-weight: bold;\r\n margin: 0 0 10px 0;\r\n text-align: center;\r\n }\r\n\r\n .nf-button {\r\n margin-bottom: 20px;\r\n }\r\n\r\n}\r\n","@keyframes nf-service-installing {\r\n 100% {\r\n transform:rotate(360deg);\r\n }\r\n}\r\n\r\n.dashicons-update-spin {\r\n animation: nf-service-installing 1s linear infinite;\r\n}\r\n\r\n.services {\r\n .nf-extend.full {\r\n flex-basis: 100%;\r\n }\r\n .nf-extend-buttons a {\r\n margin-top: 20px;\r\n }\r\n .nf-extend-buttons .nf-button {\r\n margin-top: auto; // Reset from anchor.\r\n margin-bottom: 10px; // Account for toggle.\r\n }\r\n}\r\n\r\n.jBox-Confirm-button {\r\n height: auto !important;\r\n font-size: 17px !important;\r\n padding: 10px 30px !important;\r\n}\r\n.jBox-Confirm-button-submit {\r\n background: #1ea9ea !important;\r\n border: 1px solid #fff !important;\r\n color: #fff !important;\r\n}\r\n.jBox-Confirm-button-cancel {\r\n background: #fff !important;\r\n border: 1px solid #1ea9ea !important;\r\n color: #1ea9ea !important;\r\n}\r\n",".promotion--wrapper {\r\n width: 100%;\r\n max-width: 50rem;\r\n margin: auto;\r\n margin-bottom: 20px; // Maintain whitespace.\r\n}\r\n\r\n.promotion--wrapper a:focus {\r\n box-shadow: unset; // Override WP focus state.\r\n}\r\n","th {\r\n font-weight: bold;\r\n}\r\n\r\n.widget-forms {\r\n .sortable {\r\n cursor: pointer;\r\n font-weight: bold;\r\n margin-left: -5px;\r\n &:hover {\r\n &:after {\r\n content: '\\f0dc';\r\n }\r\n }\r\n &:after {\r\n font-family: 'FontAwesome';\r\n margin-left: 5px;\r\n position: absolute;\r\n }\r\n &.sorted-asc:after {\r\n content: \"\\f0de\";\r\n }\r\n &.sorted-desc:after {\r\n content: \"\\f0dd\";\r\n }\r\n }\r\n header {\r\n display: flex;\r\n div {\r\n flex: 1;\r\n }\r\n div:first-of-type {\r\n flex: 2;\r\n }\r\n }\r\n\r\n .action {\r\n display: flex;\r\n }\r\n\r\n .form-row-actions a {\r\n cursor: pointer;\r\n\r\n &.delete {\r\n color: #FF4136;\r\n }\r\n }\r\n\r\n > div > main.content {\r\n /*max-height: 400px;*/\r\n }\r\n}\r\n\r\n.forms-collection {\r\n & > div {\r\n padding: 10px;\r\n }\r\n & > div:nth-child(odd){\r\n background-color: #EBEDEE;\r\n }\r\n .deleting {\r\n color: #FF4136;\r\n background-color: #ECEDEE;\r\n a {\r\n color: #FF4136;\r\n }\r\n footer {\r\n display: none;\r\n }\r\n }\r\n main {\r\n display: flex;\r\n div {\r\n flex: 1;\r\n }\r\n div:first-of-type {\r\n flex: 2;\r\n }\r\n }\r\n footer ul {\r\n margin: 0;\r\n padding-top: 20px;\r\n display: flex;\r\n li {\r\n a.delete {\r\n color: red;\r\n }\r\n &:after {\r\n content: ' |';\r\n margin: auto 5px;\r\n }\r\n &:last-child:after {\r\n content: '';\r\n }\r\n }\r\n }\r\n}\r\n\r\n.nf-template-grid {\r\n .section-head {\r\n font-size: 36px;\r\n font-weight: bold;\r\n width: 75%;\r\n display: block;\r\n border-bottom: 1px solid #ccc;\r\n padding-bottom: 15px;\r\n margin: 60px 0px 25px 10px;\r\n }\r\n\r\n .template-list {\r\n display: flex;\r\n justify-content: space-between;\r\n flex-wrap: wrap;\r\n\r\n & > div {\r\n display: flex;\r\n width: 50%;\r\n }\r\n\r\n .template {\r\n display: grid;\r\n width: 100%;\r\n a {\r\n color: #424242;\r\n display: block;\r\n margin: 5px;\r\n padding: 30px;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n min-height: 80px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background: #1EA9EA;\r\n color: #fff;\r\n }\r\n\r\n .title {\r\n display: block;\r\n font-size: 20px;\r\n margin-bottom: 10px\r\n }\r\n }\r\n }\r\n\r\n .ad {\r\n a {\r\n border-color: #EBEDEE;\r\n }\r\n }\r\n\r\n .default {\r\n a {\r\n background: #EBEDEE;\r\n border-color: #EBEDEE;\r\n }\r\n }\r\n }\r\n}\r\n\r\ntable .forms-table-row li {\r\n display: inline-block;\r\n}\r\n\r\n.modal-template {\r\n padding: 20px;\r\n img {\r\n width: 100%;\r\n }\r\n iframe {\r\n width: 100%;\r\n height: 214px;\r\n }\r\n p:first-of-type {\r\n font-size: 16px;\r\n font-weight: bold;\r\n line-height: 20px;\r\n padding: 16px 40px;\r\n text-align: center;\r\n }\r\n .actions {\r\n margin-top: 30px;\r\n &::after {\r\n display: block;\r\n clear: both;\r\n content: \"\";\r\n }\r\n }\r\n .primary.nf-button {\r\n float: right;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["dashboard.scss","notices/oauth.scss","sections/widgets.scss","sections/services.scss","sections/promotions.scss","widgets/forms.scss"],"names":[],"mappings":"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","file":"dashboard.min.css","sourcesContent":["html {\n overflow: auto!important; /* Override normalize.scss */\n}\n\n::-webkit-scrollbar {\n display: none;\n}\n\n.ninja-forms-app {\n\n}\n\na {\n color: #1EA9EA;\n text-decoration: none;\n outline: none !important;\n border: 0;\n}\na:focus {\n outline: none !important;\n box-shadow: unset; // Override WP focus state.\n}\n\n#wpwrap,\n#wpcontent {\n background-color: #fff;\n}\n\n#wpcontent {\n padding: 0;\n\n .wrap {\n margin: 0;\n }\n}\n\n/** Hide anything that isn't our page wrap, ie Admin Notices */\n#wpbody-content > div:not(.wrap) {\n display: none;\n}\n\n@mixin wrap {\n width: 100%;\n max-width: 50rem;\n margin: auto;\n}\n\n#ninja-forms-dashboard {\n\n box-sizing: border-box;\n\n .nf-widget {\n background-color: #fff;\n border: 1px solid #ccc;\n border-radius: 4px;\n margin-bottom: 20px;\n }\n\n header {\n\n &.topbar {\n background-color: #EBEDEE;\n }\n\n .app-title {\n @include wrap;\n background-image: url(\"../img/nf-logo-dashboard.png\");\n background-size: 315px 48px;\n background-position: left bottom;\n background-repeat: no-repeat;\n height: 52px;\n margin-bottom: 40px;\n //padding: 10px;\n strong {\n display: block;\n text-indent: -9999px;\n }\n }\n }\n\n nav {\n @include wrap;\n margin-bottom: 40px;\n\n ul {\n display: flex;\n margin: 0;\n\n li {\n\n a {\n color: #424242;\n cursor: pointer;\n font-size: 16px;\n margin: 0 16px 10px 16px;\n margin-bottom: 10px;\n padding: 16px 0 8px;\n\n &.active {\n border-bottom: 2px solid #424242;\n }\n }\n }\n }\n }\n\n\n main {\n @include wrap;\n }\n\n .form-row-actions {\n\n display: none;\n\n li {\n font-size: 12px;\n }\n\n }\n .nf-table-display {\n\n td {\n white-space:nowrap;\n }\n\n td:nth-child(1) {\n width: 100%;\n }\n\n td:nth-child(2),\n td:nth-child(3) {\n width: 250px;\n }\n\n .title {\n display: block;\n max-width: 24rem;\n overflow: hidden;\n }\n\n }\n\n tr.show-actions {\n\n .title {\n display: block;\n margin-bottom: 30px;\n }\n\n .form-row-actions {\n\n display: flex;\n background: #ECEDEE;\n position: absolute;\n padding-top: 6px;\n bottom: 0;\n z-index: 1;\n margin: 0;\n\n li {\n padding: 0 10px;\n }\n\n }\n\n }\n\n .nf-search {\n\n border-bottom: 1px solid #ECEDEE;\n\n &::before {\n top: 16px;\n }\n\n input[type=search] {\n width: auto;\n }\n\n }\n\n .nf-item-controls .nf-item-control a {\n margin-left: 20px;\n width: 24px;\n cursor: pointer;\n }\n}\n\n/*\nNotices\n---------------------------------------------*/\n\n@import 'notices/oauth';\n\n/*\nSections\n---------------------------------------------*/\n\n@import 'sections/widgets';\n@import 'sections/services';\n@import 'sections/apps';\n@import 'sections/memberships';\n@import 'sections/promotions';\n\n/*\nWidgets\n---------------------------------------------*/\n\n@import 'widgets/forms';\n\n/*\njBox\n---------------------------------------------*/\n\n.jBox-Modal {\n\n background-color: white;\n\n .jBox-title {\n padding-top: 10px;\n padding-bottom: 10px;\n font-size: 150%;\n font-weight: bold;\n text-align: center;\n width: 100%;\n }\n .jBox-content {\n padding: 10px;\n width: 100%;\n }\n\n .buttons {\n &::after {\n clear: none;\n content: \"\";\n display: block;\n }\n }\n}\n\n/*\nLoading Spinner\n---------------------------------------------*/\n\n.nf-loading-spinner {\n width: 40px;\n height: 40px;\n margin: 15px auto;\n background-color: rgba(208,208,208,.5);\n\n border-radius: 100%;\n animation: nf-scaleout 1.0s infinite ease-in-out;\n}\n\n@-webkit-keyframes nf-scaleout {\n 0% { transform: scale(0) }\n 100% {\n transform: scale(1.0);\n opacity: 0;\n }\n}\n\n@keyframes nf-scaleout {\n 0% {\n transform: scale(0);\n } 100% {\n transform: scale(1.0);\n opacity: 0;\n }\n}\n\n.apps-container {\n display: flex;\n justify-content: space-between;\n flex-flow: row wrap;\n padding: 10px;\n\n .nf-box {\n background: #fff;\n flex-basis: 48%;\n }\n\n .nf-box-inside {\n border: 1px solid #ccc;\n border-radius: 4px;\n padding: 10px;\n }\n\n .nf-extend {\n float: left;\n margin: 0 0 20px 0;\n width: 300px;\n position: relative;\n }\n .nf-extend img {\n margin-bottom: 10px;\n max-width: 100%;\n height: auto;\n }\n\n .nf-extend h2 {\n white-space: nowrap;\n overflow: hidden;\n }\n\n .nf-extend-content p {\n min-height: 100px;\n }\n\n .nf-extend-buttons {\n\n &::after {\n\n clear: both;\n content: \"\";\n display: block;\n\n }\n\n }\n\n .nf-extend .nf-button {\n float: right;\n }\n\n .nf-extend .nf-doc-button {\n float: left;\n }\n\n}\n\n/*\nPromotions\n---------------------------------------------*/\n\n.promotion--wrapper {\n > div {\n a {\n position: relative;\n display: block;\n background: #f1f1f1;\n padding: 16px 80px;\n text-align: center;\n border-radius: 4px;\n font-size: 16px;\n color: #ef4748 !important;\n overflow: hidden;\n line-height: 24px;\n > .cta {\n font-size: 22px;\n }\n > .dashicons, .dashicons-before::before {\n position: absolute;\n left: 0;\n top: -20px;\n font-size: 90px;\n transform: rotate(20deg);\n }\n }\n }\n}\n\n.promotion--wrapper {\n > div {\n a.nf-remove-promo-styling { \n padding: 0;\n height: 83px;\n }\n }\n}","@keyframes nf-connected {\n 0% {\n box-shadow: 0 0 2px rgba(255, 255, 255, 0),\n inset 0 0 2px rgba(255, 255, 255, 0);\n }\n 50% {\n box-shadow: 0 0 2px #84cc1e,\n inset 100vw 0 2px rgba(255, 255, 255, .2);\n }\n 100% {\n box-shadow: 0 0 2px rgba(255, 255, 255, 0),\n inset 100vw 0 2px rgba(255, 255, 255, 0);\n }\n}\n\n.nf-notices--oauth {\n margin-top: -40px; // Account for the bottom margin on the topbar.\n padding-bottom: 20px; // Increase hover target, while maintaining whitespace.\n text-align:center;\n}\n\n.nf-oauth--checking {\n padding: 5px;\n}\n\n.nf-oauth--connect {\n display:block;\n background-color:#1EA9EA;\n color:white;\n padding: 5px;\n text-decoration:none;\n}\n\n.nf-oauth--connected {\n color: transparent;\n padding: 0;\n line-height: .5;\n transition: all .4s;\n background-color:#84CC1E;\n}\n.nf-oauth--connected:not(:hover) {\n animation: nf-connected 8s ease infinite;\n animation-delay: 2s;\n}\n.nf-notices--oauth:hover .nf-oauth--connected {\n color:white;\n line-height: 2;\n padding: 5px;\n}\n",".widget {\n background-color: #fff;\n border: 1px solid #ccc;\n border-radius: 4px;\n margin-bottom: 20px;\n padding: 20px;\n\n header {\n margin-bottom: 20px;\n }\n\n}\n\n.widget-memberships {\n border: 0;\n padding: 0;\n}\n.pricing-container {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n\n .pricing-block {\n width: 30%;\n\n &.highlight {\n background-color: #f1f1f1;\n }\n\n }\n\n .pricing-header {\n\n text-align: center;\n\n & > div {\n margin-bottom: 10px;\n }\n\n .pricing-title {\n font-size: 24px;\n margin-bottom: 16px;\n }\n\n .pricing-price {\n font-size: 24px;\n font-weight: bold;\n padding: 5px 0;\n }\n\n }\n\n .pricing-body {\n\n & > div {\n padding: 10px 0;\n position: relative;\n }\n\n span {\n display: block;\n margin-left: 40px;\n }\n\n ul {\n list-style: disc;\n margin-left: 20px;\n padding-left: 20px;\n }\n\n hr {\n margin-top: 10px;\n margin-bottom: 10px;\n border: 0;\n border-top: 1px solid #424242;\n }\n\n .fa {\n //color: #86CA32;\n color: #aaa;\n font-size: 24px;\n position: absolute;\n left: 0;\n }\n\n .pricing-body-title {\n font-weight: bold;\n text-transform: uppercase;\n }\n\n }\n\n}\n \n\n.widget-plan-notice {\n\n text-align: center;\n\n .widget-title {\n font-size: 32px;\n font-weight: bold;\n margin: 0 0 10px 0;\n text-align: center;\n }\n\n .nf-button {\n margin-bottom: 20px;\n }\n\n}\n","@keyframes nf-service-installing {\n 100% {\n transform:rotate(360deg);\n }\n}\n\n.dashicons-update-spin {\n animation: nf-service-installing 1s linear infinite;\n}\n\n.services {\n .nf-extend.full {\n flex-basis: 100%;\n }\n .nf-extend-buttons a {\n margin-top: 20px;\n }\n .nf-extend-buttons .nf-button {\n margin-top: auto; // Reset from anchor.\n margin-bottom: 10px; // Account for toggle.\n }\n}\n\n.jBox-Confirm-button {\n height: auto !important;\n font-size: 17px !important;\n padding: 10px 30px !important;\n}\n.jBox-Confirm-button-submit {\n background: #1ea9ea !important;\n border: 1px solid #fff !important;\n color: #fff !important;\n}\n.jBox-Confirm-button-cancel {\n background: #fff !important;\n border: 1px solid #1ea9ea !important;\n color: #1ea9ea !important;\n}\n",".promotion--wrapper {\n width: 100%;\n max-width: 50rem;\n margin: auto;\n margin-bottom: 20px; // Maintain whitespace.\n}\n\n.promotion--wrapper a:focus {\n box-shadow: unset; // Override WP focus state.\n}\n","th {\n font-weight: bold;\n}\n\n.widget-forms {\n .sortable {\n cursor: pointer;\n font-weight: bold;\n margin-left: -5px;\n &:hover {\n &:after {\n content: '\\f0dc';\n }\n }\n &:after {\n font-family: 'FontAwesome';\n margin-left: 5px;\n position: absolute;\n }\n &.sorted-asc:after {\n content: \"\\f0de\";\n }\n &.sorted-desc:after {\n content: \"\\f0dd\";\n }\n }\n header {\n display: flex;\n div {\n flex: 1;\n }\n div:first-of-type {\n flex: 2;\n }\n }\n\n .action {\n display: flex;\n }\n\n .form-row-actions a {\n cursor: pointer;\n\n &.delete {\n color: #FF4136;\n }\n }\n\n > div > main.content {\n /*max-height: 400px;*/\n }\n}\n\n.forms-collection {\n & > div {\n padding: 10px;\n }\n & > div:nth-child(odd){\n background-color: #EBEDEE;\n }\n .deleting {\n color: #FF4136;\n background-color: #ECEDEE;\n a {\n color: #FF4136;\n }\n footer {\n display: none;\n }\n }\n main {\n display: flex;\n div {\n flex: 1;\n }\n div:first-of-type {\n flex: 2;\n }\n }\n footer ul {\n margin: 0;\n padding-top: 20px;\n display: flex;\n li {\n a.delete {\n color: red;\n }\n &:after {\n content: ' |';\n margin: auto 5px;\n }\n &:last-child:after {\n content: '';\n }\n }\n }\n}\n\n.nf-template-grid {\n .section-head {\n font-size: 36px;\n font-weight: bold;\n width: 75%;\n display: block;\n border-bottom: 1px solid #ccc;\n padding-bottom: 15px;\n margin: 60px 0px 25px 10px;\n }\n\n .template-list {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n\n & > div {\n display: flex;\n width: 50%;\n }\n\n .template {\n display: grid;\n width: 100%;\n a {\n color: #424242;\n display: block;\n margin: 5px;\n padding: 30px;\n border: 1px solid #ccc;\n border-radius: 4px;\n min-height: 80px;\n cursor: pointer;\n\n &:hover {\n background: #1EA9EA;\n color: #fff;\n }\n\n .title {\n display: block;\n font-size: 20px;\n margin-bottom: 10px\n }\n }\n }\n\n .ad {\n a {\n border-color: #EBEDEE;\n }\n }\n\n .default {\n a {\n background: #EBEDEE;\n border-color: #EBEDEE;\n }\n }\n }\n}\n\ntable .forms-table-row li {\n display: inline-block;\n}\n\n.modal-template {\n padding: 20px;\n img {\n width: 100%;\n }\n iframe {\n width: 100%;\n height: 214px;\n }\n p:first-of-type {\n font-size: 16px;\n font-weight: bold;\n line-height: 20px;\n padding: 16px 40px;\n text-align: center;\n }\n .actions {\n margin-top: 30px;\n &::after {\n display: block;\n clear: both;\n content: \"\";\n }\n }\n .primary.nf-button {\n float: right;\n }\n}\n"]}
assets/css/display-opinions-dark.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["st-defaults.scss","editor.scss","st-loading.scss","st-label-positions.scss","repeater-field.scss","op-spacing.scss","op-select.scss","op-checkbox.scss","op-radio.scss","op-toggle.scss","op-icons.scss","op-color.scss","display-opinions-dark.scss","op-variables-dark.scss","st-media-queries.scss"],"names":[],"mappings":"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iBAAiB,AACjB,kBAAmB,CACtB,AClJT,oEDqJgB,YAAa,CAChB,ACtJb,iCD+JI,iBAAiB,AACjB,gBAAgB,AAChB,4BAA4B,AAC5B,kBAAkB,AAClB,SAAU,CAYb,AC/KD,uCDqKQ,gBAAgB,AAChB,wBAAwB,AACxB,eAAe,AACf,kBAAkB,AAClB,MAAM,AACN,UAAU,AACV,YAAY,AACZ,iBAAiB,AACjB,SAAU,CACb,AC9KL,iCDkLI,qBAAqB,AACrB,cAAc,AACd,wBAAyB,CAC5B,ACrLD,6CDyLQ,mBEhN4B,AFiN5B,aC7LM,CD8LT,AC3LL,mBD+LI,aCjMY,CDkMf,ACtLD,qJD9BQ,mBC2BM,AD1BN,yBEJ4B,AFK5B,gBAAgB,AAChB,gBAAgB,AAChB,cEN0B,AFO1B,kBAAmB,CAStB,ACgBL,uKDvBY,mBEP4B,AFQ5B,qBEPoC,AFSpC,cER4B,AFS5B,aAAa,AACb,kBAAmB,CACtB,ACiBT,wHDZQ,eCUI,ADTJ,SAAS,AACT,cCOM,ADNN,kBAAmB,CAMtB,ACGL,0IDPY,mBE1BwB,AF2BxB,cE1BsB,AF2BtB,kBAAmB,CACtB,ACIT,kDDDQ,aE/B0B,CFsC7B,ACNL,wDDCY,uBAAuB,AACvB,SAAS,AACT,gBAAgB,AAChB,YAAa,CAChB,ACLT,oCDYY,cE5CsB,AF6CtB,kBAAmB,CACtB,ACdT,uFDoBgB,6BAAwC,AACxC,+BAAsC,AACtC,kBAAmB,CACtB,ACvBb,sDDgCgB,mBCnCF,ADoCE,yBElEoB,AFmEpB,kBAAmB,CACtB,ACnCb,uEDsCoB,iBCxCR,ADyCQ,kBAAmB,CACtB,ACxCjB,wED0CoB,cC5CR,CD6CK,AC3CjB,wNDuDgB,mBC1DF,AD2DE,qBEzFoB,AF0FpB,kBAAmB,CACtB,AC1Db,4ND4DgB,cC/DF,ADgEE,UAAU,AACV,kBAAmB,CACtB,AC/Db,4RDmEoB,qBE5F2B,AF6F3B,kBAAmB,CACtB,ACrEjB,gSDuEoB,UCzER,AD0EQ,YAAY,AACZ,kBAAmB,CACtB,AC1EjB,kBDiFI,iBAAkB,CA+BrB,AChHD,qCDmFQ,+BAAgC,AAChC,kBAAmB,CACtB,ACrFL,qDDwFY,m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","file":"display-opinions-dark.css","sourcesContent":["/*\r\n * Ninja Forms - Form Display Structure\r\n */\r\n\r\n.ninja-forms-form-wrap *,\r\n.ninja-forms-form-wrap *:after,\r\n.ninja-forms-form-wrap *:before {\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n -ms-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n\r\n.nf-response-msg {\r\n display: none;\r\n}\r\n\r\n.nf-field-container,\r\n#ninja_forms_required_items {\r\n clear: both;\r\n position: relative;\r\n margin-bottom: 25px;\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n &.hidden-container,\r\n &.hr-container {\r\n margin: 0;\r\n height: auto;\r\n .nf-field-label {\r\n display: none;\r\n }\r\n }\r\n &.html-container {\r\n .nf-field-label {\r\n display: none;\r\n }\r\n }\r\n}\r\n\r\n.nf-field-label {\r\n label {\r\n font-weight: bold;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n}\r\n.nf-field-element {\r\n position: relative;\r\n input,\r\n select,\r\n textarea {\r\n margin: 0;\r\n width: auto;\r\n height: auto;\r\n vertical-align: inherit;\r\n }\r\n textarea {\r\n height: 200px;\r\n }\r\n}\r\n.nf-field-description {\r\n p:last-child {\r\n margin: 0;\r\n }\r\n}\r\n.nf-help {\r\n background: url( '../img/help-info.png' ) no-repeat;\r\n display: inline-block;\r\n width: 16px;\r\n height: 16px;\r\n}\r\n\r\n.nf-input-limit {\r\n font-size: 12px;\r\n margin-top: 5px;\r\n}\r\n.nf-static {\r\n padding: 0 10px;\r\n}\r\n.nf-after-field {\r\n .nf-error-msg {\r\n margin-right: 10px;\r\n //text-align: right;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nCHECKBOX FIELD\r\n----------------------------------*/\r\n\r\n\r\n\r\n/* ---------------------------------\r\nRADIO & CHECKBOX LISTS\r\n----------------------------------*/\r\n\r\n.list-radio-wrap,\r\n.list-checkbox-wrap,\r\n.list-image-wrap {\r\n .nf-field-element {\r\n ul, li {\r\n list-style: none !important;\r\n margin: 0 !important;\r\n padding: 0 !important;\r\n input {\r\n margin-right: 5px;\r\n }\r\n }\r\n li {\r\n padding-left: 10px;\r\n margin: 0 0 5px !important;\r\n text-indent: initial !important;\r\n label {\r\n //display: inline;\r\n display: block;\r\n float: initial;\r\n //margin: 0;\r\n width: auto;\r\n margin-left: 1.5em;\r\n }\r\n input {\r\n width: auto !important;\r\n float: left;\r\n margin-top: .25em;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.listimage-wrap {\r\n li {\r\n width: 100%;\r\n height: 100%;\r\n display: inline-grid;\r\n label {\r\n padding: 5px;\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: transparent;\r\n &.nf-checked-label {\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: #007acc;\r\n transition: all .5s;\r\n }\r\n img {\r\n display: block;\r\n }\r\n }\r\n input {\r\n display: none;\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nPRODUCT FIELD\r\n----------------------------------*/\r\n.product-wrap {\r\n > div {\r\n input {\r\n width: 80px !important;\r\n }\r\n .nf-product-field {\r\n span {\r\n padding: 0 5px;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nSTAR RATING\r\n----------------------------------*/\r\n.starrating-wrap .star {\r\n border-bottom: 0;\r\n}\r\n\r\n/* ---------------------------------\r\nHONEYPOT\r\n----------------------------------*/\r\n\r\n.nf-form-hp {\r\n position: absolute;\r\n visibility: hidden;\r\n}\r\n\r\n/* ---------------------------------\r\nSELECT LIST\r\n----------------------------------*/\r\n.list-select-wrap {\r\n div div {\r\n display: none;\r\n }\r\n}\r\n\r\n\r\n/* ---------------------------------\r\nCOLORS\r\nAs minimal as possible\r\n----------------------------------*/\r\n.ninja-forms-req-symbol,\r\n.nf-error-msg {\r\n color: #E80000;\r\n}\r\n.nf-error {\r\n .ninja-forms-field {\r\n border: 1px solid #E80000;\r\n }\r\n &.listimage-wrap {\r\n .nf-field-element {\r\n ul {\r\n border: 1px solid #E80000;\r\n }\r\n }\r\n }\r\n}\r\n.nf-field-submit-error {\r\n padding: 15px;\r\n}\r\n\r\n.ninja-forms-noscript-message {\r\n background: #f1f1f1;\r\n border: 4px dashed #ccc;\r\n color: #333;\r\n display: block;\r\n font-size: 20px;\r\n margin: 20px 0;\r\n padding: 40px;\r\n text-align: center;\r\n}\r\n\r\n/* ---------------------------------\r\nHELPER CLASSES\r\n----------------------------------*/\r\n.two-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 50%\r\n }\r\n }\r\n}\r\n.three-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 33.33%\r\n }\r\n }\r\n}\r\n.four-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 25%\r\n }\r\n }\r\n}\r\n.five-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 20%\r\n }\r\n }\r\n}\r\n.six-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 16.66%\r\n }\r\n }\r\n}\r\n\r\n\r\nbody {\r\n .pika-label {\r\n background: transparent;\r\n }\r\n}\r\n\r\n/* Column Classes\r\n Link: http://twitter.github.io/bootstrap/assets/css/bootstrap-responsive.css\r\n--------------------------------------------- */\r\n.nf-form-cont {\r\n .five-sixths,\r\n .four-sixths,\r\n .one-fourth,\r\n .one-half,\r\n .one-sixth,\r\n .one-third,\r\n .three-fourths,\r\n .three-sixths,\r\n .two-fourths,\r\n .two-sixths,\r\n .two-thirds {\r\n clear: initial;\r\n float: left;\r\n margin-left: 2.564102564102564%;\r\n .inside {\r\n padding: 20px;\r\n }\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n\r\n .one-half,\r\n .three-sixths,\r\n .two-fourths {\r\n width: 48.717948717948715%;\r\n }\r\n\r\n .one-third,\r\n .two-sixths {\r\n width: 31.623931623931625%;\r\n }\r\n\r\n .four-sixths,\r\n .two-thirds {\r\n width: 65.81196581196582%;\r\n }\r\n\r\n .one-fourth {\r\n width: 23.076923076923077%;\r\n }\r\n\r\n .three-fourths {\r\n width: 74.35897435897436%;\r\n }\r\n\r\n .one-sixth {\r\n width: 14.52991452991453%;\r\n }\r\n\r\n .five-sixths {\r\n width: 82.90598290598291%;\r\n }\r\n\r\n .first {\r\n clear: both;\r\n margin-left: 0;\r\n }\r\n}\r\n",".note-popover {\r\n display: none !important;\r\n}\r\n.nf-form-wrap {\r\n .note-editor {\r\n border: 0 !important;\r\n .note-toolbar {\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n .note-editable {\r\n background: #f9f9f9;\r\n border: 1px solid #f1f1f1;\r\n display: block;\r\n p {\r\n font-size: 16px;\r\n }\r\n ul {\r\n list-style-type: disc;\r\n margin-left: 2em;\r\n }\r\n table {\r\n td {\r\n border: 1px solid #ccc;\r\n width: auto;\r\n }\r\n }\r\n }\r\n .modal {\r\n display: none;\r\n }\r\n .btn-group {\r\n float: left;\r\n &.note-tools {\r\n float: right;\r\n }\r\n }\r\n .btn {\r\n background: #f9f9f9;\r\n border: 0;\r\n border-radius: 4px;\r\n color: #666;\r\n cursor: pointer;\r\n margin-right: 2px;\r\n padding-top: 4px;\r\n &.disabled {\r\n background: transparent;\r\n color: #aaa;\r\n .merge-tags {\r\n background: #f9f9f9;\r\n color: #666;\r\n }\r\n }\r\n }\r\n button[type=button] {\r\n padding: 4px;\r\n width: auto;\r\n height: auto;\r\n }\r\n .dropdown-toggle {\r\n position: relative;\r\n display: inline-block;\r\n top: 0;\r\n &::after {\r\n content: \"\";\r\n width: 0;\r\n }\r\n }\r\n }\r\n .tooltip {\r\n position: absolute;\r\n z-index: 1070;\r\n display: block;\r\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\r\n font-size: 12px;\r\n font-style: normal;\r\n font-weight: normal;\r\n line-height: 1.42857143;\r\n text-align: left;\r\n text-align: start;\r\n text-decoration: none;\r\n text-shadow: none;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n word-break: normal;\r\n word-spacing: normal;\r\n word-wrap: normal;\r\n white-space: normal;\r\n filter: alpha(opacity=0);\r\n opacity: 0;\r\n\r\n line-break: auto;\r\n }\r\n .tooltip.in {\r\n filter: alpha(opacity=90);\r\n opacity: .9;\r\n }\r\n .tooltip.top {\r\n padding: 5px 0;\r\n margin-top: -3px;\r\n }\r\n .tooltip.right {\r\n padding: 0 5px;\r\n margin-left: 3px;\r\n }\r\n .tooltip.bottom {\r\n padding: 5px 0;\r\n margin-top: 3px;\r\n }\r\n .tooltip.left {\r\n padding: 0 5px;\r\n margin-left: -3px;\r\n }\r\n .tooltip-inner {\r\n max-width: 200px;\r\n padding: 3px 8px;\r\n color: #fff;\r\n text-align: center;\r\n background-color: #000;\r\n border-radius: 4px;\r\n }\r\n .tooltip-arrow {\r\n position: absolute;\r\n width: 0;\r\n height: 0;\r\n border-color: transparent;\r\n border-style: solid;\r\n }\r\n .tooltip.top .tooltip-arrow {\r\n bottom: 0;\r\n left: 50%;\r\n margin-left: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.top-left .tooltip-arrow {\r\n right: 5px;\r\n bottom: 0;\r\n margin-bottom: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.top-right .tooltip-arrow {\r\n bottom: 0;\r\n left: 5px;\r\n margin-bottom: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.right .tooltip-arrow {\r\n top: 50%;\r\n left: 0;\r\n margin-top: -5px;\r\n border-width: 5px 5px 5px 0;\r\n border-right-color: #000;\r\n }\r\n .tooltip.left .tooltip-arrow {\r\n top: 50%;\r\n right: 0;\r\n margin-top: -5px;\r\n border-width: 5px 0 5px 5px;\r\n border-left-color: #000;\r\n }\r\n .tooltip.bottom .tooltip-arrow {\r\n top: 0;\r\n left: 50%;\r\n margin-left: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .tooltip.bottom-left .tooltip-arrow {\r\n top: 0;\r\n right: 5px;\r\n margin-top: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .tooltip.bottom-right .tooltip-arrow {\r\n top: 0;\r\n left: 5px;\r\n margin-top: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .dropdown-menu {\r\n position: absolute;\r\n // top: 100%;\r\n // left: 0;\r\n z-index: 1000;\r\n display: none;\r\n float: left;\r\n min-width: 160px;\r\n padding: 5px 0;\r\n margin: 2px 0 0;\r\n font-size: 14px;\r\n text-align: left;\r\n list-style: none;\r\n background-color: #fff;\r\n -webkit-background-clip: padding-box;\r\n background-clip: padding-box;\r\n border: 1px solid #ccc;\r\n border: 1px solid rgba(0, 0, 0, .15);\r\n border-radius: 4px;\r\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\r\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\r\n }\r\n .dropdown-menu.pull-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropdown-menu .divider {\r\n height: 1px;\r\n margin: 9px 0;\r\n overflow: hidden;\r\n background-color: #e5e5e5;\r\n }\r\n .dropdown-menu > li > a {\r\n display: block;\r\n padding: 3px 20px;\r\n clear: both;\r\n font-weight: normal;\r\n line-height: 1.42857143;\r\n color: #333;\r\n white-space: nowrap;\r\n }\r\n .dropdown-menu > li > a:hover,\r\n .dropdown-menu > li > a:focus {\r\n color: #262626;\r\n text-decoration: none;\r\n background-color: #f5f5f5;\r\n }\r\n .dropdown-menu > .active > a,\r\n .dropdown-menu > .active > a:hover,\r\n .dropdown-menu > .active > a:focus {\r\n color: #fff;\r\n text-decoration: none;\r\n background-color: #337ab7;\r\n outline: 0;\r\n }\r\n .dropdown-menu > .disabled > a,\r\n .dropdown-menu > .disabled > a:hover,\r\n .dropdown-menu > .disabled > a:focus {\r\n color: #777;\r\n }\r\n .dropdown-menu > .disabled > a:hover,\r\n .dropdown-menu > .disabled > a:focus {\r\n text-decoration: none;\r\n cursor: not-allowed;\r\n background-color: transparent;\r\n background-image: none;\r\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\r\n }\r\n .open > .dropdown-menu {\r\n display: block;\r\n }\r\n .open > a {\r\n outline: 0;\r\n }\r\n .dropdown-menu-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropdown-menu-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n .dropdown-header {\r\n display: block;\r\n padding: 3px 20px;\r\n font-size: 12px;\r\n line-height: 1.42857143;\r\n color: #777;\r\n white-space: nowrap;\r\n }\r\n .dropdown-backdrop {\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 990;\r\n }\r\n .pull-right > .dropdown-menu {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropup .caret,\r\n .navbar-fixed-bottom .dropdown .caret {\r\n content: \"\";\r\n border-top: 0;\r\n border-bottom: 4px dashed;\r\n border-bottom: 4px solid \\9;\r\n }\r\n .dropup .dropdown-menu,\r\n .navbar-fixed-bottom .dropdown .dropdown-menu {\r\n top: auto;\r\n bottom: 100%;\r\n margin-bottom: 2px;\r\n }\r\n @media (min-width: 768px) {\r\n .navbar-right .dropdown-menu {\r\n right: 0;\r\n left: auto;\r\n }\r\n .navbar-right .dropdown-menu-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n }\r\n .btn-group-justified > .btn-group .dropdown-menu {\r\n left: auto;\r\n }\r\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\r\n top: auto;\r\n left: auto;\r\n }\r\n .nav-justified > .dropdown .dropdown-menu {\r\n top: auto;\r\n left: auto;\r\n }\r\n .nav-tabs .dropdown-menu {\r\n margin-top: -1px;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-nav .open .dropdown-menu {\r\n position: static;\r\n float: none;\r\n width: auto;\r\n margin-top: 0;\r\n background-color: transparent;\r\n border: 0;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a,\r\n .navbar-nav .open .dropdown-menu .dropdown-header {\r\n padding: 5px 15px 5px 25px;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a {\r\n line-height: 20px;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-nav .open .dropdown-menu > li > a:focus {\r\n background-image: none;\r\n }\r\n }\r\n .navbar-nav > li > .dropdown-menu {\r\n margin-top: 0;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\r\n margin-bottom: 0;\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n border-bottom-right-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\r\n color: #777;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\r\n color: #333;\r\n background-color: transparent;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\r\n color: #555;\r\n background-color: #e7e7e7;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\r\n color: #ccc;\r\n background-color: transparent;\r\n }\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\r\n border-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\r\n background-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\r\n color: #9d9d9d;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\r\n color: #fff;\r\n background-color: transparent;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\r\n color: #fff;\r\n background-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\r\n color: #444;\r\n background-color: transparent;\r\n }\r\n }\r\n}\r\n",".nf-loading-spinner {\r\n width: 40px;\r\n height: 40px;\r\n margin: 100px auto;\r\n background-color: rgba(208,208,208,.5);\r\n\r\n border-radius: 100%;\r\n animation: nf-scaleout 1.0s infinite ease-in-out;\r\n}\r\n\r\n@-webkit-keyframes nf-scaleout {\r\n 0% { transform: scale(0) }\r\n 100% {\r\n transform: scale(1.0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes nf-scaleout {\r\n 0% {\r\n transform: scale(0);\r\n } 100% {\r\n transform: scale(1.0);\r\n opacity: 0;\r\n }\r\n}","/* ---------------------------------\r\nSTANDARDIZE ALL FIELDS\r\n----------------------------------*/\r\n.field-wrap {\r\n display: flex;\r\n //flex-wrap:wrap;\r\n > label {\r\n display: block;\r\n }\r\n > div input,\r\n textarea,\r\n select,\r\n .pikaday__container,\r\n .pikaday__display {\r\n width: 100%;\r\n }\r\n > div input[type=\"checkbox\"] {\r\n width: auto;\r\n }\r\n input[type=\"submit\"],\r\n input[type=\"button\"],\r\n button {\r\n width: auto;\r\n }\r\n .nf-product-field {\r\n // .nf-element {\r\n // width: 100%;\r\n // }\r\n }\r\n}\r\n\r\n.nf-field-label {\r\n order: 5;\r\n}\r\n.nf-field-description {\r\n width: 100%;\r\n order: 10;\r\n}\r\n.nf-field-element {\r\n order: 15;\r\n}\r\n\r\n\r\n/* ---------------------------------\r\nLABEL ABOVE\r\n----------------------------------*/\r\n.label-above {\r\n .nf-field-label {\r\n margin-bottom: 10px;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL BELOW\r\n----------------------------------*/\r\n.label-below {\r\n .nf-field-label {\r\n margin-top: 10px;\r\n order: 15;\r\n }\r\n .nf-field-element {\r\n order: 5;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL HIDDEN\r\n----------------------------------*/\r\n.label-hidden {\r\n .field-wrap {\r\n flex-wrap: wrap;\r\n }\r\n .nf-field-label {\r\n height: 0;\r\n margin: 0 !important;\r\n width: 100%;\r\n visibility: hidden;\r\n }\r\n .nf-field-description {\r\n width: 100%;\r\n order: 20;\r\n }\r\n .nf-field-element {\r\n width: 100%;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL LEFT\r\n----------------------------------*/\r\n.label-left {\r\n .field-wrap {\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n }\r\n .nf-field-label {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding-right: 2%;\r\n text-align: right;\r\n width: 35%;\r\n order: 5;\r\n label {\r\n width: 100%;\r\n }\r\n }\r\n .nf-field-description {\r\n margin-left: 35%;\r\n }\r\n .nf-field-element {\r\n display: inline-block;\r\n width: 65%;\r\n order: 10;\r\n }\r\n .nf-after-field {\r\n margin-left: 36.5%;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL RIGHT\r\n----------------------------------*/\r\n.label-right {\r\n .field-wrap {\r\n flex-direction: row;\r\n }\r\n .nf-field-label {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding-left: 2%;\r\n width: 35%;\r\n order: 10;\r\n }\r\n .nf-field-description {\r\n margin-right: 35%;\r\n order: 15;\r\n }\r\n .nf-field-element {\r\n display: inline-block;\r\n width: 65%;\r\n order: 5;\r\n }\r\n .checkbox-wrap {\r\n .nf-field-label {\r\n width: auto;\r\n }\r\n .nf-field-element {\r\n width: 20px;\r\n }\r\n }\r\n .nf-after-field {\r\n width: 65%;\r\n }\r\n}\r\n/* ---------------------------------\r\nADJUST SOME LABEL ABOVE & BELOW ISSUES\r\n----------------------------------*/\r\n.label-below,\r\n.label-above {\r\n .field-wrap {\r\n flex-direction: column;\r\n flex-flow: wrap;\r\n }\r\n .nf-field-element {\r\n margin: 0;\r\n width: 100%;\r\n }\r\n .checkbox-wrap {\r\n .nf-field-label {\r\n //margin: 0;\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nADJUST SOME LABEL LEFT & RIGHT ISSUES\r\n----------------------------------*/\r\n.label-left,\r\n.label-right {\r\n .textarea-wrap,\r\n .listradio-wrap,\r\n .listcheckbox-wrap {\r\n .nf-field-label {\r\n align-items: flex-start;\r\n }\r\n }\r\n .textarea-wrap {\r\n .nf-field-label {\r\n margin-top: 5px;\r\n }\r\n }\r\n .html-wrap,\r\n .hr-wrap {\r\n display: block;\r\n .nf-field-element {\r\n display: block;\r\n margin: 0;\r\n width: 100%;\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nFIELD DESCRIPTION POSITIONS\r\n----------------------------------*/\r\n",".nf-repeater-fieldsets{\r\n fieldset {\r\n margin-bottom: 1em;\r\n }\r\n}\r\n\r\n.nf-remove-fieldset {\r\n color: red;\r\n font-size: 1.5em;\r\n background-color: transparent;\r\n border: thin solid red;\r\n padding: 0.1em 0.4em;\r\n float: right;\r\n margin-top: -1em;\r\n}",".nf-help {\r\n background: none;\r\n}\r\n.nf-field-description {\r\n font-size: 14px;\r\n}\r\n.nf-form-content {\r\n padding: 5px;\r\n max-width: 1000px;\r\n margin: 0 auto;\r\n label {\r\n font-size: 18px;\r\n line-height: 20px;\r\n }\r\n .ninja-forms-field,\r\n .listselect-wrap .nf-field-element div {\r\n font-size: 16px;\r\n margin: 0;\r\n padding: 12px;\r\n }\r\n input.ninja-forms-field,\r\n select.ninja-forms-field:not([multiple]),\r\n .listselect-wrap .nf-field-element div {\r\n height: 50px;\r\n }\r\n textarea.ninja-forms-field {\r\n height: 200px;\r\n }\r\n hr.ninja-forms-field {\r\n padding: 0;\r\n }\r\n input[type=\"radio\"].ninja-forms-field,\r\n input[type=\"checkbox\"].ninja-forms-field {\r\n height: auto;\r\n }\r\n .listradio-wrap,\r\n .listcheckbox-wrap {\r\n li {\r\n margin-bottom: 12px !important;\r\n line-height: 0;\r\n }\r\n }\r\n .nf-product-field {\r\n &.ninja-forms-field {\r\n // background: transparent;\r\n // border: 0;\r\n // padding: 0;\r\n }\r\n span {\r\n padding-right: 16px;\r\n }\r\n .nf-field-qty {\r\n font-size: 16px;\r\n padding: 5px;\r\n width: 80px !important;\r\n }\r\n }\r\n .listselect-wrap,\r\n .liststate-wrap,\r\n .listcountry-wrap {\r\n select {\r\n //height: 50px;\r\n }\r\n }\r\n .nf-static {\r\n background: transparent;\r\n border: 0;\r\n font-weight: bold;\r\n padding: 0;\r\n }\r\n .label-above,\r\n .label-below,\r\n .label-hidden {\r\n .nf-field-label {\r\n margin-bottom: 10px;\r\n padding: 0;\r\n }\r\n }\r\n .label-below {\r\n .nf-field-label {\r\n margin-bottom: 0;\r\n margin-top: 10px;\r\n }\r\n }\r\n .label-right {\r\n .nf-field-label {\r\n margin: 0;\r\n }\r\n > input,\r\n textarea,\r\n select,\r\n .nf-product-field,\r\n .starrating,\r\n .nf-static,\r\n .pikaday__container {\r\n // margin-right: 1%;\r\n }\r\n > input[type=radio],\r\n input[type=checkbox] {\r\n margin-right: 1%;\r\n }\r\n ul {\r\n margin-right: 1%;\r\n }\r\n }\r\n .label-left {\r\n // > label {\r\n // margin: 0;\r\n // }\r\n // > input,\r\n // textarea,\r\n // select,\r\n // .pikaday__container {\r\n // // margin-left: 1%;\r\n // }\r\n // > input[type=radio],\r\n // input[type=checkbox] {\r\n // margin-left: 1%;\r\n // }\r\n // ul {\r\n // margin-left: 15px;\r\n // }\r\n }\r\n}\r\n","\r\n.nf-form-content {\r\n .list-select-wrap > div {\r\n position: relative;\r\n div {\r\n display: block;\r\n position: absolute;\r\n font-size: 16px;\r\n line-height: 16px;\r\n margin: 0;\r\n padding: 16px;\r\n height: 50px;\r\n top: 0;\r\n right: 0;\r\n left: 0;\r\n z-index: 1;\r\n &::after {\r\n content: \"\\f078\";\r\n font-family: FontAwesome;\r\n font-size: 20px;\r\n //font-weight: bold;\r\n //transform: rotate(90deg);\r\n position: absolute;\r\n right: 10px;\r\n bottom: 0;\r\n height: 50px;\r\n line-height: 50px;\r\n }\r\n }\r\n &.label-right {\r\n div {\r\n width: 59%;\r\n // &::after {\r\n // right: 20px;\r\n // }\r\n }\r\n }\r\n &.label-below {\r\n div {\r\n top: 0;\r\n bottom: auto;\r\n }\r\n }\r\n &.label-left {\r\n div {\r\n width: 59%;\r\n left: 40.5%;\r\n right: 40px;\r\n }\r\n }\r\n select {\r\n background: transparent;\r\n border: 0;\r\n appearance: none;\r\n position: relative;\r\n z-index: 2;\r\n }\r\n }\r\n .listmultiselect-wrap {\r\n select {\r\n appearance: normal;\r\n }\r\n }\r\n}\r\n",".checkbox-wrap,\r\n.listcheckbox-wrap {\r\n .nf-field-label,\r\n .nf-field-element {\r\n label {\r\n position: relative;\r\n margin-left: 30px;\r\n &::after {\r\n border: 1px solid;\r\n content: \"\";\r\n width: 18px;\r\n height: 18px;\r\n position: absolute;\r\n left: -28px;\r\n bottom: 0;\r\n }\r\n &::before {\r\n content: \"\\f00c\";\r\n font-family: FontAwesome;\r\n font-size: 24px;\r\n position: absolute;\r\n bottom: 0;\r\n opacity: 0;\r\n z-index: 2;\r\n }\r\n }\r\n }\r\n}\r\n.checkbox-container {\r\n .nf-field-element {\r\n input {\r\n display: none;\r\n }\r\n }\r\n &.label-above,\r\n &.label-below {\r\n // .nf-field-element {\r\n // input {\r\n // display: none;\r\n // }\r\n // }\r\n }\r\n &.label-above {\r\n label {\r\n height: 50px;\r\n margin: 0;\r\n display: block;\r\n &::before {\r\n left: -2px;\r\n bottom: -16px;\r\n }\r\n &::after {\r\n left: 0;\r\n bottom: -16px;\r\n }\r\n }\r\n }\r\n &.label-below {\r\n label {\r\n margin: 0;\r\n display: block;\r\n margin-top: 20px;\r\n &::before {\r\n left: -2px;\r\n bottom: auto;\r\n top: -27px;\r\n }\r\n &::after {\r\n left: 0;\r\n bottom: auto;\r\n top: -25px;\r\n }\r\n }\r\n }\r\n &.label-left {\r\n .nf-field-label {\r\n width: 38%;\r\n padding-right: 5%;\r\n }\r\n .nf-field-element {\r\n width: 58%;\r\n }\r\n label {\r\n margin: 0;\r\n display: block;\r\n &::before {\r\n left: auto;\r\n top: -2px;\r\n right: -36px;\r\n }\r\n &::after {\r\n left: auto;\r\n top: 0;\r\n right: -31px;\r\n }\r\n }\r\n }\r\n &.label-right {\r\n .nf-field-label {\r\n padding: 0;\r\n order: 10;\r\n }\r\n .nf-field-element {\r\n order: 5;\r\n display: none;\r\n }\r\n label {\r\n margin: 0 0 0 30px;\r\n display: block;\r\n &::before {\r\n left: -30px;\r\n top: 0;\r\n }\r\n &::after {\r\n left: -28px;\r\n top: 0;\r\n }\r\n }\r\n .field-wrap {\r\n display: flex;\r\n > div {\r\n width: 100%;\r\n }\r\n }\r\n label {\r\n &::after {\r\n // Commenting this line out to deal with checkbox list issues.\r\n // Leaving it in place because it may need to be re-visited in the future.\r\n //top: 2px !important;\r\n }\r\n }\r\n }\r\n &.label-hidden {\r\n label {\r\n height: 0;\r\n margin: 0;\r\n display: block;\r\n &::after {\r\n left: 0;\r\n bottom: 0;\r\n visibility: visible;\r\n }\r\n &.nf-checked-label {\r\n &::before {\r\n left: -2px;\r\n bottom: 0;\r\n visibility: visible;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n.listcheckbox-container {\r\n .nf-field-label {\r\n label {\r\n &::after {\r\n background: transparent !important;\r\n border: 0;\r\n }\r\n }\r\n }\r\n .nf-field-element {\r\n input {\r\n display: none;\r\n }\r\n label {\r\n margin-left: 30px !important;\r\n &::before {\r\n top: 1px;\r\n left: -30px;\r\n bottom: auto;\r\n }\r\n &::after {\r\n top: 3px;\r\n bottom: auto;\r\n }\r\n }\r\n }\r\n &.label-above,\r\n &.label-below,\r\n &.label-right {\r\n .nf-field-label {\r\n label {\r\n margin: 0;\r\n &::before {\r\n left: -30px;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n",".listradio-wrap {\r\n .nf-field-element {\r\n label {\r\n position: relative;\r\n margin-left: 30px !important;\r\n &::after {\r\n border-radius: 50%;\r\n content: \"\";\r\n width: 18px;\r\n height: 18px;\r\n position: absolute;\r\n left: -30px;\r\n bottom: 1px;\r\n top: .05em;\r\n }\r\n &.nf-checked-label {\r\n &::before {\r\n border-radius: 50%;\r\n content: \"\";\r\n height: 10px;\r\n width: 10px;\r\n position: absolute;\r\n left: -26px;\r\n bottom: 5px;\r\n z-index: 2;\r\n top: .25em;\r\n }\r\n }\r\n }\r\n input {\r\n display: none;\r\n }\r\n }\r\n}\r\n","input[type=checkbox].nf-toggle {\r\n background: transparent;\r\n border: 0;\r\n box-shadow: 0 0 0;\r\n margin: 10px;\r\n height: 18px;\r\n appearance: none;\r\n position: relative;\r\n cursor: pointer;\r\n &::after {\r\n background: #BCBDBF;\r\n border: 2px solid #BCBDBF;\r\n border-radius: 20px;\r\n content: \"\";\r\n position: absolute;\r\n top: -4px;\r\n left: -4px;\r\n width: 46px;\r\n height: 24px;\r\n transition: all 0.3s ease;\r\n }\r\n &::before {\r\n background: #fff;\r\n border-radius: 20px;\r\n content: \"\";\r\n position: absolute;\r\n top: -1px;\r\n left: 0;\r\n width: 18px;\r\n height: 18px;\r\n z-index: 99;\r\n transition: all 0.3s ease;\r\n }\r\n &:checked {\r\n &::after {\r\n background: lightgreen;\r\n border: 2px solid lightgreen;\r\n transition: all 0.3s ease;\r\n }\r\n &::before {\r\n top: -1px;\r\n left: 20px;\r\n transition: all 0.3s ease;\r\n }\r\n }\r\n .label-right & {\r\n padding: 0 50px 0 0;\r\n }\r\n .label-left & {\r\n padding: 0;\r\n margin-left: 22px;\r\n margin-top: 20px;\r\n }\r\n}\r\n",".nf-icons {\r\n .nf-field-element {\r\n position: relative;\r\n &::before {\r\n //border: 1px;\r\n font-family: FontAwesome;\r\n font-size: 20px;\r\n position: absolute;\r\n left: 1px;\r\n bottom: 1px;\r\n height: 48px;\r\n width: 50px;\r\n line-height: 50px;\r\n text-align: center;\r\n z-index: 1;\r\n }\r\n }\r\n .date-wrap,\r\n .number-wrap,\r\n .quantity-wrap,\r\n .email-wrap,\r\n .phone-wrap,\r\n .firstname-wrap,\r\n .lastname-wrap,\r\n .address-wrap,\r\n .city-wrap,\r\n .state-wrap,\r\n .zip-wrap,\r\n .creditcardfullname-wrap,\r\n .creditcardnumber-wrap,\r\n .creditcardcvc-wrap,\r\n .creditcardexpiration-wrap,\r\n .creditcardzip-wrap {\r\n .nf-field-element {\r\n input {\r\n padding-left: 60px;\r\n }\r\n }\r\n }\r\n &.right {\r\n .nf-field-element {\r\n &::before {\r\n left: auto;\r\n right: 1px;\r\n }\r\n }\r\n .date-wrap,\r\n .number-wrap,\r\n .quantity-wrap,\r\n .email-wrap,\r\n .phone-wrap,\r\n .firstname-wrap,\r\n .lastname-wrap,\r\n .address-wrap,\r\n .city-wrap,\r\n .state-wrap,\r\n .zip-wrap,\r\n .creditcardfullname-wrap,\r\n .creditcardnumber-wrap,\r\n .creditcardcvc-wrap,\r\n .creditcardexpiration-wrap,\r\n .creditcardzip-wrap {\r\n > div {\r\n input {\r\n padding-left: 12px;\r\n padding-right: 60px;\r\n }\r\n }\r\n }\r\n }\r\n .date-wrap .nf-field-element::before {\r\n content: \"\\f073\";\r\n }\r\n .number-wrap .nf-field-element::before,\r\n .quantity-wrap > div::before {\r\n content: \"\\f292\";\r\n }\r\n .email-wrap .nf-field-element::before {\r\n content: \"\\f0e0\";\r\n }\r\n .phone-wrap .nf-field-element::before {\r\n content: \"\\f095\";\r\n }\r\n .firstname-wrap .nf-field-element::before,\r\n .lastname-wrap .nf-field-element::before {\r\n content: \"\\f007\";\r\n }\r\n .address-wrap .nf-field-element::before,\r\n .city-wrap .nf-field-element::before,\r\n .state-wrap .nf-field-element::before,\r\n .zip-wrap .nf-field-element::before {\r\n content: \"\\f041\";\r\n }\r\n .creditcardfullname-wrap .nf-field-element::before,\r\n .creditcardnumber-wrap .nf-field-element::before,\r\n .creditcardcvc-wrap .nf-field-element::before,\r\n .creditcardexpiration-wrap .nf-field-element::before,\r\n .creditcardzip-wrap .nf-field-element::before {\r\n content: \"\\f283\";\r\n }\r\n}\r\n",".nf-form-content {\r\n input:not([type='button']),\r\n textarea,\r\n .list-select-wrap .nf-field-element > div {\r\n background: $field-background;\r\n border: 1px solid $field-border;\r\n border-radius: 0;\r\n box-shadow: none;\r\n color: $field-font;\r\n transition: all .5s;\r\n &:focus {\r\n background: $focus-background;\r\n border-color: $focus-border;\r\n //box-shadow: -3px 3px 10px #ccc;\r\n color: $focus-font;\r\n outline: none;\r\n transition: all .5s;\r\n }\r\n }\r\n input[type=\"submit\"],\r\n input[type=\"button\"],\r\n button {\r\n background: $accent;\r\n border: 0;\r\n color: $field-background;\r\n transition: all .5s;\r\n &:hover {\r\n background: $field-border;\r\n color: $field-font;\r\n transition: all .5s;\r\n }\r\n }\r\n select.ninja-forms-field {\r\n color: $field-font;\r\n &:focus {\r\n background: transparent;\r\n border: 0;\r\n box-shadow: none;\r\n outline: none;\r\n }\r\n }\r\n}\r\n\r\n.list-select-wrap {\r\n div {\r\n &::after {\r\n color: $field-font;\r\n transition: all .5s;\r\n }\r\n }\r\n select {\r\n &:active,\r\n &:focus {\r\n + div {\r\n background: $focus-background !important;\r\n border-color: $focus-border !important;\r\n transition: all .5s;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.listradio-wrap {\r\n .nf-field-element {\r\n label {\r\n &::after {\r\n background: $field-background;\r\n border: 2px solid $field-border;\r\n transition: all .5s;\r\n }\r\n &.nf-checked-label {\r\n &::after {\r\n border-color: $selected-font;\r\n transition: all .5s;\r\n }\r\n &::before {\r\n background: $selected-font;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.checkbox-wrap,\r\n.listcheckbox-wrap {\r\n .nf-field-label,\r\n .nf-field-element {\r\n label {\r\n &::after {\r\n background: $field-background;\r\n border-color: $field-border;\r\n transition: all .5s;\r\n }\r\n &::before {\r\n color: $field-background;\r\n opacity: 0;\r\n transition: all .5s;\r\n }\r\n &.nf-checked-label {\r\n &::after {\r\n //background: $accent;\r\n border-color: $selected-border;\r\n transition: all .5s;\r\n }\r\n &::before {\r\n color: $selected-font;\r\n opacity: 100;\r\n transition: all .5s;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.nf-error {\r\n position: relative;\r\n .ninja-forms-field {\r\n border-color: #E80000 !important;\r\n transition: all .5s;\r\n }\r\n &.field-wrap {\r\n .nf-field-element::after {\r\n background: #E80000;\r\n color: #fff;\r\n font-family: FontAwesome;\r\n font-size: 20px;\r\n content: \"\\f12a\";\r\n position: absolute;\r\n top: 1px;\r\n right: 1px;\r\n bottom: 1px;\r\n height: 48px;\r\n width: 50px;\r\n line-height: 50px;\r\n text-align: center;\r\n transition: all .5s;\r\n }\r\n &.checkbox-wrap {\r\n .nf-field-element::after {\r\n display: none;\r\n }\r\n }\r\n }\r\n .nf-error-msg {\r\n color: #E80000;\r\n }\r\n}\r\n.checkbox-container {\r\n .nf-after-field .nf-error-msg {\r\n //text-align: left;\r\n }\r\n}\r\n.nf-pass {\r\n position: relative;\r\n .ninja-forms-field {\r\n border-color: green !important;\r\n transition: all .5s;\r\n }\r\n &.field-wrap {\r\n .nf-field-element::after {\r\n color: green;\r\n font-family: FontAwesome;\r\n font-size: 30px;\r\n content: \"\\f058\";\r\n position: absolute;\r\n top: 0;\r\n right: 16px;\r\n height: 50px;\r\n line-height: 50px;\r\n transition: all .5s;\r\n }\r\n &.checkbox-wrap {\r\n .nf-field-element::after {\r\n display: none;\r\n }\r\n }\r\n }\r\n // &.field-wrap::before {\r\n // border-color: green !important;\r\n // }\r\n}\r\n\r\n.nf-field-submit-error {\r\n border: 1px solid;\r\n margin: 10px 0px;\r\n padding: 15px 15px 15px 50px;\r\n position: relative;\r\n z-index: 1;\r\n &::after {\r\n content: \"\\f06a\";\r\n font-family: FontAwesome;\r\n font-size: 24px;\r\n position: absolute;\r\n top: 0;\r\n left: 15px;\r\n height: 50px;\r\n line-height: 50px;\r\n z-index: 2;\r\n }\r\n}\r\n\r\n.nf-field-submit-error {\r\n border-color: #D8000C;\r\n color: #D8000C;\r\n background-color: #FFBABA;\r\n}\r\n\r\n.nf-icons {\r\n .nf-field-element::before {\r\n background: $field-border;\r\n color: $field-background;\r\n }\r\n}\r\n\r\n.nf-help {\r\n color: $selected-font;\r\n}\r\n","@import \"display-structure\";\r\n\r\n@import \"op-spacing\";\r\n//@import \"op-columns\";\r\n@import \"op-select\";\r\n@import \"op-checkbox\";\r\n@import \"op-radio\";\r\n@import \"op-toggle\";\r\n@import \"op-icons\";\r\n\r\n/* ---------------------------------\r\nDEFAULT DARK COLORS\r\n----------------------------------*/\r\n$base: #222;\r\n$accent: #fff;\r\n@import \"op-variables-dark\";\r\n@import \"op-color\";\r\n\r\n/* ---------------------------------\r\nDARK COLORS - nf-brown\r\n----------------------------------*/\r\n$base: #3e2b13;\r\n$accent: #ea981b;\r\n@import \"op-variables-dark\";\r\n.nf-brown {\r\n @import \"op-color\";\r\n}\r\n\r\n/* ---------------------------------\r\nDARK COLORS - nf-red\r\n----------------------------------*/\r\n$base: #350000;\r\n$accent: red;\r\n@import \"op-variables-dark\";\r\n.nf-red {\r\n @import \"op-color\";\r\n}\r\n/* ---------------------------------\r\nDARK COLORS - nf-blue\r\n----------------------------------*/\r\n$base: #001C33;\r\n$accent: #00AEFF;\r\n@import \"op-variables-dark\";\r\n.nf-blue {\r\n @import \"op-color\";\r\n}\r\n\r\n@import \"st-media-queries\";\r\n","$field-background: $base;\r\n$field-border: lighten( $base, 10% );\r\n$field-font: lighten( $base, 40% );\r\n\r\n$focus-background: lighten( $base, 10% );\r\n$focus-border: lighten( $focus-background, 10% );\r\n$focus-font: lighten( $field-font, 10% );\r\n\r\n$selected-background: darken( $base, 10% );\r\n$selected-border: lighten( $field-border, 10% );\r\n$selected-font: $accent;\r\n","@media only screen and (max-width: 800px) {\r\n .nf-field-container {\r\n .nf-field-label {\r\n margin-bottom: 10px !important;\r\n padding: 0;\r\n width: 100%;\r\n order: 5;\r\n label {\r\n text-align: left;\r\n }\r\n }\r\n .nf-field-description {\r\n margin: 0;\r\n width: 100%;\r\n order: 10;\r\n }\r\n .nf-field-element {\r\n width: 100%;\r\n order: 15;\r\n }\r\n .checkbox-wrap {\r\n .nf-field-label {\r\n width: auto;\r\n label {\r\n position: relative;\r\n margin-left: 30px;\r\n &::after {\r\n left: -28px;\r\n bottom: 0;\r\n }\r\n &::before {\r\n left: -30px;\r\n bottom: 0;\r\n }\r\n }\r\n }\r\n .nf-field-element {\r\n width: 20px;\r\n }\r\n }\r\n }\r\n .nf-form-cont {\r\n .five-sixths,\r\n .four-sixths,\r\n .one-fourth,\r\n .one-half,\r\n .one-sixth,\r\n .one-third,\r\n .three-fourths,\r\n .three-sixths,\r\n .two-fourths,\r\n .two-sixths,\r\n .two-thirds {\r\n clear: both;\r\n float: none;\r\n margin: 0;\r\n width: 100%;\r\n .inside {\r\n padding: 0;\r\n }\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["st-defaults.scss","editor.scss","st-loading.scss","st-label-positions.scss","repeater-field.scss","op-spacing.scss","op-select.scss","op-checkbox.scss","op-radio.scss","op-toggle.scss","op-icons.scss","op-color.scss","display-opinions-dark.scss","op-variables-dark.scss","st-media-queries.scss"],"names":[],"mappings":"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iBAAiB,AACjB,kBAAmB,CACtB,AClJT,oEDqJgB,YAAa,CAChB,ACtJb,iCD+JI,iBAAiB,AACjB,gBAAgB,AAChB,4BAA4B,AAC5B,kBAAkB,AAClB,SAAU,CAYb,AC/KD,uCDqKQ,gBAAgB,AAChB,wBAAwB,AACxB,eAAe,AACf,kBAAkB,AAClB,MAAM,AACN,UAAU,AACV,YAAY,AACZ,iBAAiB,AACjB,SAAU,CACb,AC9KL,iCDkLI,qBAAqB,AACrB,cAAc,AACd,wBAAyB,CAC5B,ACrLD,6CDyLQ,mBEhN4B,AFiN5B,aC7LM,CD8LT,AC3LL,mBD+LI,aCjMY,CDkMf,ACtLD,qJD9BQ,mBC2BM,AD1BN,yBEJ4B,AFK5B,gBAAgB,AAChB,gBAAgB,AAChB,cEN0B,AFO1B,kBAAmB,CAStB,ACgBL,uKDvBY,mBEP4B,AFQ5B,qBEPoC,AFSpC,cER4B,AFS5B,aAAa,AACb,kBAAmB,CACtB,ACiBT,wHDZQ,eCUI,ADTJ,SAAS,AACT,cCOM,ADNN,kBAAmB,CAMtB,ACGL,0IDPY,mBE1BwB,AF2BxB,cE1BsB,AF2BtB,kBAAmB,CACtB,ACIT,kDDDQ,aE/B0B,CFsC7B,ACNL,wDDCY,uBAAuB,AACvB,SAAS,AACT,gBAAgB,AAChB,YAAa,CAChB,ACLT,oCDYY,cE5CsB,AF6CtB,kBAAmB,CACtB,ACdT,uFDoBgB,6BAAwC,AACxC,+BAAsC,AACtC,kBAAmB,CACtB,ACvBb,sDDgCgB,mBCnCF,ADoCE,yBElEoB,AFmEpB,kBAAmB,CACtB,ACnCb,uEDsCoB,iBCxCR,ADyCQ,kBAAmB,CACtB,ACxCjB,wED0CoB,cC5CR,CD6CK,AC3CjB,wNDuDgB,mBC1DF,AD2DE,qBEzFoB,AF0FpB,kBAAmB,CACtB,AC1Db,4ND4DgB,cC/DF,ADgEE,UAAU,AACV,kBAAmB,CACtB,AC/Db,4RDmEoB,qBE5F2B,AF6F3B,kBAAmB,CACtB,ACrEjB,gSDuEoB,UCzER,AD0EQ,YAAY,AACZ,kBAAmB,CACtB,AC1EjB,kBDiFI,iBAAkB,CA+BrB,AChHD,qCDmFQ,+BAAgC,AAChC,kBAAmB,CACtB,ACrFL,qDDwFY,m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","file":"display-opinions-dark.css","sourcesContent":["/*\n * Ninja Forms - Form Display Structure\n */\n\n.ninja-forms-form-wrap *,\n.ninja-forms-form-wrap *:after,\n.ninja-forms-form-wrap *:before {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.nf-response-msg {\n display: none;\n}\n\n.nf-field-container,\n#ninja_forms_required_items {\n clear: both;\n position: relative;\n margin-bottom: 25px;\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n &.hidden-container,\n &.hr-container {\n margin: 0;\n height: auto;\n .nf-field-label {\n display: none;\n }\n }\n &.html-container {\n .nf-field-label {\n display: none;\n }\n }\n}\n\n.nf-field-label {\n label {\n font-weight: bold;\n margin: 0;\n padding: 0;\n }\n}\n.nf-field-element {\n position: relative;\n input,\n select,\n textarea {\n margin: 0;\n width: auto;\n height: auto;\n vertical-align: inherit;\n }\n textarea {\n height: 200px;\n }\n}\n.nf-field-description {\n p:last-child {\n margin: 0;\n }\n}\n.nf-help {\n background: url( '../img/help-info.png' ) no-repeat;\n display: inline-block;\n width: 16px;\n height: 16px;\n}\n\n.nf-input-limit {\n font-size: 12px;\n margin-top: 5px;\n}\n.nf-static {\n padding: 0 10px;\n}\n.nf-after-field {\n .nf-error-msg {\n margin-right: 10px;\n //text-align: right;\n }\n}\n\n/* ---------------------------------\nCHECKBOX FIELD\n----------------------------------*/\n\n\n\n/* ---------------------------------\nRADIO & CHECKBOX LISTS\n----------------------------------*/\n\n.list-radio-wrap,\n.list-checkbox-wrap,\n.list-image-wrap {\n .nf-field-element {\n ul, li {\n list-style: none !important;\n margin: 0 !important;\n padding: 0 !important;\n input {\n margin-right: 5px;\n }\n }\n li {\n padding-left: 10px;\n margin: 0 0 5px !important;\n text-indent: initial !important;\n label {\n //display: inline;\n display: block;\n float: initial;\n //margin: 0;\n width: auto;\n margin-left: 1.5em;\n }\n input {\n width: auto !important;\n float: left;\n margin-top: .25em;\n }\n }\n }\n}\n\n.listimage-wrap {\n li {\n width: 100%;\n height: 100%;\n display: inline-grid;\n label {\n padding: 5px;\n border-width: 2px;\n border-style: solid;\n border-color: transparent;\n &.nf-checked-label {\n border-width: 2px;\n border-style: solid;\n border-color: #007acc;\n transition: all .5s;\n }\n img {\n display: block;\n }\n }\n input {\n display: none;\n }\n }\n}\n\n/* ---------------------------------\nPRODUCT FIELD\n----------------------------------*/\n.product-wrap {\n > div {\n input {\n width: 80px !important;\n }\n .nf-product-field {\n span {\n padding: 0 5px;\n }\n }\n }\n}\n\n/* ---------------------------------\nSTAR RATING\n----------------------------------*/\n.starrating-wrap .star {\n border-bottom: 0;\n}\n\n/* ---------------------------------\nHONEYPOT\n----------------------------------*/\n\n.nf-form-hp {\n position: absolute;\n visibility: hidden;\n}\n\n/* ---------------------------------\nSELECT LIST\n----------------------------------*/\n.list-select-wrap {\n div div {\n display: none;\n }\n}\n\n\n/* ---------------------------------\nCOLORS\nAs minimal as possible\n----------------------------------*/\n.ninja-forms-req-symbol,\n.nf-error-msg {\n color: #E80000;\n}\n.nf-error {\n .ninja-forms-field {\n border: 1px solid #E80000;\n }\n &.listimage-wrap {\n .nf-field-element {\n ul {\n border: 1px solid #E80000;\n }\n }\n }\n}\n.nf-field-submit-error {\n padding: 15px;\n}\n\n.ninja-forms-noscript-message {\n background: #f1f1f1;\n border: 4px dashed #ccc;\n color: #333;\n display: block;\n font-size: 20px;\n margin: 20px 0;\n padding: 40px;\n text-align: center;\n}\n\n/* ---------------------------------\nHELPER CLASSES\n----------------------------------*/\n.two-col-list {\n ul {\n li {\n float: left;\n width: 50%\n }\n }\n}\n.three-col-list {\n ul {\n li {\n float: left;\n width: 33.33%\n }\n }\n}\n.four-col-list {\n ul {\n li {\n float: left;\n width: 25%\n }\n }\n}\n.five-col-list {\n ul {\n li {\n float: left;\n width: 20%\n }\n }\n}\n.six-col-list {\n ul {\n li {\n float: left;\n width: 16.66%\n }\n }\n}\n\n\nbody {\n .pika-label {\n background: transparent;\n }\n}\n\n/* Column Classes\n Link: http://twitter.github.io/bootstrap/assets/css/bootstrap-responsive.css\n--------------------------------------------- */\n.nf-form-cont {\n .five-sixths,\n .four-sixths,\n .one-fourth,\n .one-half,\n .one-sixth,\n .one-third,\n .three-fourths,\n .three-sixths,\n .two-fourths,\n .two-sixths,\n .two-thirds {\n clear: initial;\n float: left;\n margin-left: 2.564102564102564%;\n .inside {\n padding: 20px;\n }\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n }\n\n .one-half,\n .three-sixths,\n .two-fourths {\n width: 48.717948717948715%;\n }\n\n .one-third,\n .two-sixths {\n width: 31.623931623931625%;\n }\n\n .four-sixths,\n .two-thirds {\n width: 65.81196581196582%;\n }\n\n .one-fourth {\n width: 23.076923076923077%;\n }\n\n .three-fourths {\n width: 74.35897435897436%;\n }\n\n .one-sixth {\n width: 14.52991452991453%;\n }\n\n .five-sixths {\n width: 82.90598290598291%;\n }\n\n .first {\n clear: both;\n margin-left: 0;\n }\n}\n",".note-popover {\n display: none !important;\n}\n.nf-form-wrap {\n .note-editor {\n border: 0 !important;\n .note-toolbar {\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n }\n .note-editable {\n background: #f9f9f9;\n border: 1px solid #f1f1f1;\n display: block;\n p {\n font-size: 16px;\n }\n ul {\n list-style-type: disc;\n margin-left: 2em;\n }\n table {\n td {\n border: 1px solid #ccc;\n width: auto;\n }\n }\n }\n .modal {\n display: none;\n }\n .btn-group {\n float: left;\n &.note-tools {\n float: right;\n }\n }\n .btn {\n background: #f9f9f9;\n border: 0;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n margin-right: 2px;\n padding-top: 4px;\n &.disabled {\n background: transparent;\n color: #aaa;\n .merge-tags {\n background: #f9f9f9;\n color: #666;\n }\n }\n }\n button[type=button] {\n padding: 4px;\n width: auto;\n height: auto;\n }\n .dropdown-toggle {\n position: relative;\n display: inline-block;\n top: 0;\n &::after {\n content: \"\";\n width: 0;\n }\n }\n }\n .tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n filter: alpha(opacity=0);\n opacity: 0;\n\n line-break: auto;\n }\n .tooltip.in {\n filter: alpha(opacity=90);\n opacity: .9;\n }\n .tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n }\n .tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n }\n .tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n }\n .tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n }\n .tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n }\n .tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n .tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n }\n .tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n }\n .tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .dropdown-menu {\n position: absolute;\n // top: 100%;\n // left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n }\n .dropdown-menu.pull-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n }\n .dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n }\n .dropdown-menu > li > a:hover,\n .dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n }\n .dropdown-menu > .active > a,\n .dropdown-menu > .active > a:hover,\n .dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n }\n .dropdown-menu > .disabled > a,\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n color: #777;\n }\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n }\n .open > .dropdown-menu {\n display: block;\n }\n .open > a {\n outline: 0;\n }\n .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n .dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n }\n .dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n }\n .pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n }\n .dropup .caret,\n .navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n }\n .dropup .dropdown-menu,\n .navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n }\n .btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n }\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n .nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n .nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n }\n .navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n @media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n }\n @media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n }\n}\n",".nf-loading-spinner {\n width: 40px;\n height: 40px;\n margin: 100px auto;\n background-color: rgba(208,208,208,.5);\n\n border-radius: 100%;\n animation: nf-scaleout 1.0s infinite ease-in-out;\n}\n\n@-webkit-keyframes nf-scaleout {\n 0% { transform: scale(0) }\n 100% {\n transform: scale(1.0);\n opacity: 0;\n }\n}\n\n@keyframes nf-scaleout {\n 0% {\n transform: scale(0);\n } 100% {\n transform: scale(1.0);\n opacity: 0;\n }\n}","/* ---------------------------------\nSTANDARDIZE ALL FIELDS\n----------------------------------*/\n.field-wrap {\n display: flex;\n //flex-wrap:wrap;\n > label {\n display: block;\n }\n > div input,\n textarea,\n select,\n .pikaday__container,\n .pikaday__display {\n width: 100%;\n }\n > div input[type=\"checkbox\"] {\n width: auto;\n }\n input[type=\"submit\"],\n input[type=\"button\"],\n button {\n width: auto;\n }\n .nf-product-field {\n // .nf-element {\n // width: 100%;\n // }\n }\n}\n\n.nf-field-label {\n order: 5;\n}\n.nf-field-description {\n width: 100%;\n order: 10;\n}\n.nf-field-element {\n order: 15;\n}\n\n\n/* ---------------------------------\nLABEL ABOVE\n----------------------------------*/\n.label-above {\n .nf-field-label {\n margin-bottom: 10px;\n }\n}\n\n/* ---------------------------------\nLABEL BELOW\n----------------------------------*/\n.label-below {\n .nf-field-label {\n margin-top: 10px;\n order: 15;\n }\n .nf-field-element {\n order: 5;\n }\n}\n\n/* ---------------------------------\nLABEL HIDDEN\n----------------------------------*/\n.label-hidden {\n .field-wrap {\n flex-wrap: wrap;\n }\n .nf-field-label {\n height: 0;\n margin: 0 !important;\n width: 100%;\n visibility: hidden;\n }\n .nf-field-description {\n width: 100%;\n order: 20;\n }\n .nf-field-element {\n width: 100%;\n }\n}\n\n/* ---------------------------------\nLABEL LEFT\n----------------------------------*/\n.label-left {\n .field-wrap {\n flex-direction: row;\n flex-wrap: wrap;\n }\n .nf-field-label {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding-right: 2%;\n text-align: right;\n width: 35%;\n order: 5;\n label {\n width: 100%;\n }\n }\n .nf-field-description {\n margin-left: 35%;\n }\n .nf-field-element {\n display: inline-block;\n width: 65%;\n order: 10;\n }\n .nf-after-field {\n margin-left: 36.5%;\n }\n}\n\n/* ---------------------------------\nLABEL RIGHT\n----------------------------------*/\n.label-right {\n .field-wrap {\n flex-direction: row;\n }\n .nf-field-label {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding-left: 2%;\n width: 35%;\n order: 10;\n }\n .nf-field-description {\n margin-right: 35%;\n order: 15;\n }\n .nf-field-element {\n display: inline-block;\n width: 65%;\n order: 5;\n }\n .checkbox-wrap {\n .nf-field-label {\n width: auto;\n }\n .nf-field-element {\n width: 20px;\n }\n }\n .nf-after-field {\n width: 65%;\n }\n}\n/* ---------------------------------\nADJUST SOME LABEL ABOVE & BELOW ISSUES\n----------------------------------*/\n.label-below,\n.label-above {\n .field-wrap {\n flex-direction: column;\n flex-flow: wrap;\n }\n .nf-field-element {\n margin: 0;\n width: 100%;\n }\n .checkbox-wrap {\n .nf-field-label {\n //margin: 0;\n }\n }\n}\n\n/* ---------------------------------\nADJUST SOME LABEL LEFT & RIGHT ISSUES\n----------------------------------*/\n.label-left,\n.label-right {\n .textarea-wrap,\n .listradio-wrap,\n .listcheckbox-wrap {\n .nf-field-label {\n align-items: flex-start;\n }\n }\n .textarea-wrap {\n .nf-field-label {\n margin-top: 5px;\n }\n }\n .html-wrap,\n .hr-wrap {\n display: block;\n .nf-field-element {\n display: block;\n margin: 0;\n width: 100%;\n }\n }\n}\n\n/* ---------------------------------\nFIELD DESCRIPTION POSITIONS\n----------------------------------*/\n",".nf-repeater-fieldsets{\n fieldset {\n margin-bottom: 1em;\n }\n}\n\n.nf-remove-fieldset {\n color: red;\n font-size: 1.5em;\n background-color: transparent;\n border: thin solid red;\n padding: 0.1em 0.4em;\n float: right;\n margin-top: -1em;\n}",".nf-help {\n background: none;\n}\n.nf-field-description {\n font-size: 14px;\n}\n.nf-form-content {\n padding: 5px;\n max-width: 1000px;\n margin: 0 auto;\n label {\n font-size: 18px;\n line-height: 20px;\n }\n .ninja-forms-field,\n .listselect-wrap .nf-field-element div {\n font-size: 16px;\n margin: 0;\n padding: 12px;\n }\n input.ninja-forms-field,\n select.ninja-forms-field:not([multiple]),\n .listselect-wrap .nf-field-element div {\n height: 50px;\n }\n textarea.ninja-forms-field {\n height: 200px;\n }\n hr.ninja-forms-field {\n padding: 0;\n }\n input[type=\"radio\"].ninja-forms-field,\n input[type=\"checkbox\"].ninja-forms-field {\n height: auto;\n }\n .listradio-wrap,\n .listcheckbox-wrap {\n li {\n margin-bottom: 12px !important;\n line-height: 0;\n }\n }\n .nf-product-field {\n &.ninja-forms-field {\n // background: transparent;\n // border: 0;\n // padding: 0;\n }\n span {\n padding-right: 16px;\n }\n .nf-field-qty {\n font-size: 16px;\n padding: 5px;\n width: 80px !important;\n }\n }\n .listselect-wrap,\n .liststate-wrap,\n .listcountry-wrap {\n select {\n //height: 50px;\n }\n }\n .nf-static {\n background: transparent;\n border: 0;\n font-weight: bold;\n padding: 0;\n }\n .label-above,\n .label-below,\n .label-hidden {\n .nf-field-label {\n margin-bottom: 10px;\n padding: 0;\n }\n }\n .label-below {\n .nf-field-label {\n margin-bottom: 0;\n margin-top: 10px;\n }\n }\n .label-right {\n .nf-field-label {\n margin: 0;\n }\n > input,\n textarea,\n select,\n .nf-product-field,\n .starrating,\n .nf-static,\n .pikaday__container {\n // margin-right: 1%;\n }\n > input[type=radio],\n input[type=checkbox] {\n margin-right: 1%;\n }\n ul {\n margin-right: 1%;\n }\n }\n .label-left {\n // > label {\n // margin: 0;\n // }\n // > input,\n // textarea,\n // select,\n // .pikaday__container {\n // // margin-left: 1%;\n // }\n // > input[type=radio],\n // input[type=checkbox] {\n // margin-left: 1%;\n // }\n // ul {\n // margin-left: 15px;\n // }\n }\n}\n","\n.nf-form-content {\n .list-select-wrap > div {\n position: relative;\n div {\n display: block;\n position: absolute;\n font-size: 16px;\n line-height: 16px;\n margin: 0;\n padding: 16px;\n height: 50px;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n &::after {\n content: \"\\f078\";\n font-family: FontAwesome;\n font-size: 20px;\n //font-weight: bold;\n //transform: rotate(90deg);\n position: absolute;\n right: 10px;\n bottom: 0;\n height: 50px;\n line-height: 50px;\n }\n }\n &.label-right {\n div {\n width: 59%;\n // &::after {\n // right: 20px;\n // }\n }\n }\n &.label-below {\n div {\n top: 0;\n bottom: auto;\n }\n }\n &.label-left {\n div {\n width: 59%;\n left: 40.5%;\n right: 40px;\n }\n }\n select {\n background: transparent;\n border: 0;\n appearance: none;\n position: relative;\n z-index: 2;\n }\n }\n .listmultiselect-wrap {\n select {\n appearance: normal;\n }\n }\n}\n",".checkbox-wrap,\n.listcheckbox-wrap {\n .nf-field-label,\n .nf-field-element {\n label {\n position: relative;\n margin-left: 30px;\n &::after {\n border: 1px solid;\n content: \"\";\n width: 18px;\n height: 18px;\n position: absolute;\n left: -28px;\n bottom: 0;\n }\n &::before {\n content: \"\\f00c\";\n font-family: FontAwesome;\n font-size: 24px;\n position: absolute;\n bottom: 0;\n opacity: 0;\n z-index: 2;\n }\n }\n }\n}\n.checkbox-container {\n .nf-field-element {\n input {\n display: none;\n }\n }\n &.label-above,\n &.label-below {\n // .nf-field-element {\n // input {\n // display: none;\n // }\n // }\n }\n &.label-above {\n label {\n height: 50px;\n margin: 0;\n display: block;\n &::before {\n left: -2px;\n bottom: -16px;\n }\n &::after {\n left: 0;\n bottom: -16px;\n }\n }\n }\n &.label-below {\n label {\n margin: 0;\n display: block;\n margin-top: 20px;\n &::before {\n left: -2px;\n bottom: auto;\n top: -27px;\n }\n &::after {\n left: 0;\n bottom: auto;\n top: -25px;\n }\n }\n }\n &.label-left {\n .nf-field-label {\n width: 38%;\n padding-right: 5%;\n }\n .nf-field-element {\n width: 58%;\n }\n label {\n margin: 0;\n display: block;\n &::before {\n left: auto;\n top: -2px;\n right: -36px;\n }\n &::after {\n left: auto;\n top: 0;\n right: -31px;\n }\n }\n }\n &.label-right {\n .nf-field-label {\n padding: 0;\n order: 10;\n }\n .nf-field-element {\n order: 5;\n display: none;\n }\n label {\n margin: 0 0 0 30px;\n display: block;\n &::before {\n left: -30px;\n top: 0;\n }\n &::after {\n left: -28px;\n top: 0;\n }\n }\n .field-wrap {\n display: flex;\n > div {\n width: 100%;\n }\n }\n label {\n &::after {\n // Commenting this line out to deal with checkbox list issues.\n // Leaving it in place because it may need to be re-visited in the future.\n //top: 2px !important;\n }\n }\n }\n &.label-hidden {\n label {\n height: 0;\n margin: 0;\n display: block;\n &::after {\n left: 0;\n bottom: 0;\n visibility: visible;\n }\n &.nf-checked-label {\n &::before {\n left: -2px;\n bottom: 0;\n visibility: visible;\n }\n }\n }\n }\n}\n.listcheckbox-container {\n .nf-field-label {\n label {\n &::after {\n background: transparent !important;\n border: 0;\n }\n }\n }\n .nf-field-element {\n input {\n display: none;\n }\n label {\n margin-left: 30px !important;\n &::before {\n top: 1px;\n left: -30px;\n bottom: auto;\n }\n &::after {\n top: 3px;\n bottom: auto;\n }\n }\n }\n &.label-above,\n &.label-below,\n &.label-right {\n .nf-field-label {\n label {\n margin: 0;\n &::before {\n left: -30px;\n }\n }\n }\n }\n}\n",".listradio-wrap {\n .nf-field-element {\n label {\n position: relative;\n margin-left: 30px !important;\n &::after {\n border-radius: 50%;\n content: \"\";\n width: 18px;\n height: 18px;\n position: absolute;\n left: -30px;\n bottom: 1px;\n top: .05em;\n }\n &.nf-checked-label {\n &::before {\n border-radius: 50%;\n content: \"\";\n height: 10px;\n width: 10px;\n position: absolute;\n left: -26px;\n bottom: 5px;\n z-index: 2;\n top: .25em;\n }\n }\n }\n input {\n display: none;\n }\n }\n}\n","input[type=checkbox].nf-toggle {\n background: transparent;\n border: 0;\n box-shadow: 0 0 0;\n margin: 10px;\n height: 18px;\n appearance: none;\n position: relative;\n cursor: pointer;\n &::after {\n background: #BCBDBF;\n border: 2px solid #BCBDBF;\n border-radius: 20px;\n content: \"\";\n position: absolute;\n top: -4px;\n left: -4px;\n width: 46px;\n height: 24px;\n transition: all 0.3s ease;\n }\n &::before {\n background: #fff;\n border-radius: 20px;\n content: \"\";\n position: absolute;\n top: -1px;\n left: 0;\n width: 18px;\n height: 18px;\n z-index: 99;\n transition: all 0.3s ease;\n }\n &:checked {\n &::after {\n background: lightgreen;\n border: 2px solid lightgreen;\n transition: all 0.3s ease;\n }\n &::before {\n top: -1px;\n left: 20px;\n transition: all 0.3s ease;\n }\n }\n .label-right & {\n padding: 0 50px 0 0;\n }\n .label-left & {\n padding: 0;\n margin-left: 22px;\n margin-top: 20px;\n }\n}\n",".nf-icons {\n .nf-field-element {\n position: relative;\n &::before {\n //border: 1px;\n font-family: FontAwesome;\n font-size: 20px;\n position: absolute;\n left: 1px;\n bottom: 1px;\n height: 48px;\n width: 50px;\n line-height: 50px;\n text-align: center;\n z-index: 1;\n }\n }\n .date-wrap,\n .number-wrap,\n .quantity-wrap,\n .email-wrap,\n .phone-wrap,\n .firstname-wrap,\n .lastname-wrap,\n .address-wrap,\n .city-wrap,\n .state-wrap,\n .zip-wrap,\n .creditcardfullname-wrap,\n .creditcardnumber-wrap,\n .creditcardcvc-wrap,\n .creditcardexpiration-wrap,\n .creditcardzip-wrap {\n .nf-field-element {\n input {\n padding-left: 60px;\n }\n }\n }\n &.right {\n .nf-field-element {\n &::before {\n left: auto;\n right: 1px;\n }\n }\n .date-wrap,\n .number-wrap,\n .quantity-wrap,\n .email-wrap,\n .phone-wrap,\n .firstname-wrap,\n .lastname-wrap,\n .address-wrap,\n .city-wrap,\n .state-wrap,\n .zip-wrap,\n .creditcardfullname-wrap,\n .creditcardnumber-wrap,\n .creditcardcvc-wrap,\n .creditcardexpiration-wrap,\n .creditcardzip-wrap {\n > div {\n input {\n padding-left: 12px;\n padding-right: 60px;\n }\n }\n }\n }\n .date-wrap .nf-field-element::before {\n content: \"\\f073\";\n }\n .number-wrap .nf-field-element::before,\n .quantity-wrap > div::before {\n content: \"\\f292\";\n }\n .email-wrap .nf-field-element::before {\n content: \"\\f0e0\";\n }\n .phone-wrap .nf-field-element::before {\n content: \"\\f095\";\n }\n .firstname-wrap .nf-field-element::before,\n .lastname-wrap .nf-field-element::before {\n content: \"\\f007\";\n }\n .address-wrap .nf-field-element::before,\n .city-wrap .nf-field-element::before,\n .state-wrap .nf-field-element::before,\n .zip-wrap .nf-field-element::before {\n content: \"\\f041\";\n }\n .creditcardfullname-wrap .nf-field-element::before,\n .creditcardnumber-wrap .nf-field-element::before,\n .creditcardcvc-wrap .nf-field-element::before,\n .creditcardexpiration-wrap .nf-field-element::before,\n .creditcardzip-wrap .nf-field-element::before {\n content: \"\\f283\";\n }\n}\n",".nf-form-content {\n input:not([type='button']),\n textarea,\n .list-select-wrap .nf-field-element > div {\n background: $field-background;\n border: 1px solid $field-border;\n border-radius: 0;\n box-shadow: none;\n color: $field-font;\n transition: all .5s;\n &:focus {\n background: $focus-background;\n border-color: $focus-border;\n //box-shadow: -3px 3px 10px #ccc;\n color: $focus-font;\n outline: none;\n transition: all .5s;\n }\n }\n input[type=\"submit\"],\n input[type=\"button\"],\n button {\n background: $accent;\n border: 0;\n color: $field-background;\n transition: all .5s;\n &:hover {\n background: $field-border;\n color: $field-font;\n transition: all .5s;\n }\n }\n select.ninja-forms-field {\n color: $field-font;\n &:focus {\n background: transparent;\n border: 0;\n box-shadow: none;\n outline: none;\n }\n }\n}\n\n.list-select-wrap {\n div {\n &::after {\n color: $field-font;\n transition: all .5s;\n }\n }\n select {\n &:active,\n &:focus {\n + div {\n background: $focus-background !important;\n border-color: $focus-border !important;\n transition: all .5s;\n }\n }\n }\n}\n\n.listradio-wrap {\n .nf-field-element {\n label {\n &::after {\n background: $field-background;\n border: 2px solid $field-border;\n transition: all .5s;\n }\n &.nf-checked-label {\n &::after {\n border-color: $selected-font;\n transition: all .5s;\n }\n &::before {\n background: $selected-font;\n }\n }\n }\n }\n}\n\n.checkbox-wrap,\n.listcheckbox-wrap {\n .nf-field-label,\n .nf-field-element {\n label {\n &::after {\n background: $field-background;\n border-color: $field-border;\n transition: all .5s;\n }\n &::before {\n color: $field-background;\n opacity: 0;\n transition: all .5s;\n }\n &.nf-checked-label {\n &::after {\n //background: $accent;\n border-color: $selected-border;\n transition: all .5s;\n }\n &::before {\n color: $selected-font;\n opacity: 100;\n transition: all .5s;\n }\n }\n }\n }\n}\n\n.nf-error {\n position: relative;\n .ninja-forms-field {\n border-color: #E80000 !important;\n transition: all .5s;\n }\n &.field-wrap {\n .nf-field-element::after {\n background: #E80000;\n color: #fff;\n font-family: FontAwesome;\n font-size: 20px;\n content: \"\\f12a\";\n position: absolute;\n top: 1px;\n right: 1px;\n bottom: 1px;\n height: 48px;\n width: 50px;\n line-height: 50px;\n text-align: center;\n transition: all .5s;\n }\n &.checkbox-wrap {\n .nf-field-element::after {\n display: none;\n }\n }\n }\n .nf-error-msg {\n color: #E80000;\n }\n}\n.checkbox-container {\n .nf-after-field .nf-error-msg {\n //text-align: left;\n }\n}\n.nf-pass {\n position: relative;\n .ninja-forms-field {\n border-color: green !important;\n transition: all .5s;\n }\n &.field-wrap {\n .nf-field-element::after {\n color: green;\n font-family: FontAwesome;\n font-size: 30px;\n content: \"\\f058\";\n position: absolute;\n top: 0;\n right: 16px;\n height: 50px;\n line-height: 50px;\n transition: all .5s;\n }\n &.checkbox-wrap {\n .nf-field-element::after {\n display: none;\n }\n }\n }\n // &.field-wrap::before {\n // border-color: green !important;\n // }\n}\n\n.nf-field-submit-error {\n border: 1px solid;\n margin: 10px 0px;\n padding: 15px 15px 15px 50px;\n position: relative;\n z-index: 1;\n &::after {\n content: \"\\f06a\";\n font-family: FontAwesome;\n font-size: 24px;\n position: absolute;\n top: 0;\n left: 15px;\n height: 50px;\n line-height: 50px;\n z-index: 2;\n }\n}\n\n.nf-field-submit-error {\n border-color: #D8000C;\n color: #D8000C;\n background-color: #FFBABA;\n}\n\n.nf-icons {\n .nf-field-element::before {\n background: $field-border;\n color: $field-background;\n }\n}\n\n.nf-help {\n color: $selected-font;\n}\n","@import \"display-structure\";\n\n@import \"op-spacing\";\n//@import \"op-columns\";\n@import \"op-select\";\n@import \"op-checkbox\";\n@import \"op-radio\";\n@import \"op-toggle\";\n@import \"op-icons\";\n\n/* ---------------------------------\nDEFAULT DARK COLORS\n----------------------------------*/\n$base: #222;\n$accent: #fff;\n@import \"op-variables-dark\";\n@import \"op-color\";\n\n/* ---------------------------------\nDARK COLORS - nf-brown\n----------------------------------*/\n$base: #3e2b13;\n$accent: #ea981b;\n@import \"op-variables-dark\";\n.nf-brown {\n @import \"op-color\";\n}\n\n/* ---------------------------------\nDARK COLORS - nf-red\n----------------------------------*/\n$base: #350000;\n$accent: red;\n@import \"op-variables-dark\";\n.nf-red {\n @import \"op-color\";\n}\n/* ---------------------------------\nDARK COLORS - nf-blue\n----------------------------------*/\n$base: #001C33;\n$accent: #00AEFF;\n@import \"op-variables-dark\";\n.nf-blue {\n @import \"op-color\";\n}\n\n@import \"st-media-queries\";\n","$field-background: $base;\n$field-border: lighten( $base, 10% );\n$field-font: lighten( $base, 40% );\n\n$focus-background: lighten( $base, 10% );\n$focus-border: lighten( $focus-background, 10% );\n$focus-font: lighten( $field-font, 10% );\n\n$selected-background: darken( $base, 10% );\n$selected-border: lighten( $field-border, 10% );\n$selected-font: $accent;\n","@media only screen and (max-width: 800px) {\n .nf-field-container {\n .nf-field-label {\n margin-bottom: 10px !important;\n padding: 0;\n width: 100%;\n order: 5;\n label {\n text-align: left;\n }\n }\n .nf-field-description {\n margin: 0;\n width: 100%;\n order: 10;\n }\n .nf-field-element {\n width: 100%;\n order: 15;\n }\n .checkbox-wrap {\n .nf-field-label {\n width: auto;\n label {\n position: relative;\n margin-left: 30px;\n &::after {\n left: -28px;\n bottom: 0;\n }\n &::before {\n left: -30px;\n bottom: 0;\n }\n }\n }\n .nf-field-element {\n width: 20px;\n }\n }\n }\n .nf-form-cont {\n .five-sixths,\n .four-sixths,\n .one-fourth,\n .one-half,\n .one-sixth,\n .one-third,\n .three-fourths,\n .three-sixths,\n .two-fourths,\n .two-sixths,\n .two-thirds {\n clear: both;\n float: none;\n margin: 0;\n width: 100%;\n .inside {\n padding: 0;\n }\n }\n }\n}\n"]}
assets/css/display-opinions-light.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["st-defaults.scss","editor.scss","st-loading.scss","st-label-positions.scss","repeater-field.scss","op-spacing.scss","op-select.scss","op-checkbox.scss","op-radio.scss","op-toggle.scss","op-icons.scss","op-color.scss","display-opinions-light.scss","op-variables-light.scss","st-media-queries.scss"],"names":[],"mappings":"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iBAAiB,AACjB,kBAAmB,CACtB,AClJT,oEDqJgB,YAAa,CAChB,ACtJb,iCD+JI,iBAAiB,AACjB,gBAAgB,AAChB,4BAA4B,AAC5B,kBAAkB,AAClB,SAAU,CAYb,AC/KD,uCDqKQ,gBAAgB,AAChB,wBAAwB,AACxB,eAAe,AACf,kBAAkB,AAClB,MAAM,AACN,UAAU,AACV,YAAY,AACZ,iBAAiB,AACjB,SAAU,CACb,AC9KL,iCDkLI,qBAAqB,AACrB,cAAc,AACd,wBAAyB,CAC5B,ACrLD,6CDyLQ,mBEhN2B,AFiN3B,aC7LM,CD8LT,AC3LL,mBD+LI,aCjMY,CDkMf,ACtLD,qJD9BQ,mBC2BM,AD1BN,yBEJ2B,AFK3B,gBAAgB,AAChB,gBAAgB,AAChB,cENyB,AFOzB,kBAAmB,CAStB,ACgBL,uKDvBY,gBEP4B,AFQ5B,qBEP+B,AFS/B,cER4B,AFS5B,aAAa,AACb,kBAAmB,CACtB,ACiBT,wHDZQ,mBCUQ,ADTR,SAAS,AACT,cCOM,ADNN,kBAAmB,CAMtB,ACGL,0IDPY,mBE1BuB,AF2BvB,cE1BqB,AF2BrB,kBAAmB,CACtB,ACIT,kDDDQ,aE/ByB,CFsC5B,ACNL,wDDCY,uBAAuB,AACvB,SAAS,AACT,gBAAgB,AAChB,YAAa,CAChB,ACLT,oCDYY,cE5CqB,AF6CrB,kBAAmB,CACtB,ACdT,uFDoBgB,0BAAwC,AACxC,+BAAsC,AACtC,kBAAmB,CACtB,ACvBb,sDDgCgB,mBCnCF,ADoCE,yBElEmB,AFmEnB,kBAAmB,CACtB,ACnCb,uEDsCoB,qBCxCJ,ADyCI,kBAAmB,CACtB,ACxCjB,wED0CoB,kBC5CJ,CD6CC,AC3CjB,wNDuDgB,mBC1DF,AD2DE,qBEzFmB,AF0FnB,kBAAmB,CACtB,AC1Db,4ND4DgB,cC/DF,ADgEE,UAAU,AACV,kBAAmB,CACtB,AC/Db,4RDmEoB,qBE5FyB,AF6FzB,kBAAmB,CACtB,ACrEjB,gSDuEoB,cCzEJ,AD0EI,YAAY,AACZ,kBAAmB,CACtB,AC1EjB,kBDiFI,iBAAkB,CA+BrB,AChHD,qCDmFQ,+BAAgC,AAChC,kBAAmB,CACtB,ACrFL,qDDwFY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","file":"display-opinions-light.css","sourcesContent":["/*\r\n * Ninja Forms - Form Display Structure\r\n */\r\n\r\n.ninja-forms-form-wrap *,\r\n.ninja-forms-form-wrap *:after,\r\n.ninja-forms-form-wrap *:before {\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n -ms-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n\r\n.nf-response-msg {\r\n display: none;\r\n}\r\n\r\n.nf-field-container,\r\n#ninja_forms_required_items {\r\n clear: both;\r\n position: relative;\r\n margin-bottom: 25px;\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n &.hidden-container,\r\n &.hr-container {\r\n margin: 0;\r\n height: auto;\r\n .nf-field-label {\r\n display: none;\r\n }\r\n }\r\n &.html-container {\r\n .nf-field-label {\r\n display: none;\r\n }\r\n }\r\n}\r\n\r\n.nf-field-label {\r\n label {\r\n font-weight: bold;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n}\r\n.nf-field-element {\r\n position: relative;\r\n input,\r\n select,\r\n textarea {\r\n margin: 0;\r\n width: auto;\r\n height: auto;\r\n vertical-align: inherit;\r\n }\r\n textarea {\r\n height: 200px;\r\n }\r\n}\r\n.nf-field-description {\r\n p:last-child {\r\n margin: 0;\r\n }\r\n}\r\n.nf-help {\r\n background: url( '../img/help-info.png' ) no-repeat;\r\n display: inline-block;\r\n width: 16px;\r\n height: 16px;\r\n}\r\n\r\n.nf-input-limit {\r\n font-size: 12px;\r\n margin-top: 5px;\r\n}\r\n.nf-static {\r\n padding: 0 10px;\r\n}\r\n.nf-after-field {\r\n .nf-error-msg {\r\n margin-right: 10px;\r\n //text-align: right;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nCHECKBOX FIELD\r\n----------------------------------*/\r\n\r\n\r\n\r\n/* ---------------------------------\r\nRADIO & CHECKBOX LISTS\r\n----------------------------------*/\r\n\r\n.list-radio-wrap,\r\n.list-checkbox-wrap,\r\n.list-image-wrap {\r\n .nf-field-element {\r\n ul, li {\r\n list-style: none !important;\r\n margin: 0 !important;\r\n padding: 0 !important;\r\n input {\r\n margin-right: 5px;\r\n }\r\n }\r\n li {\r\n padding-left: 10px;\r\n margin: 0 0 5px !important;\r\n text-indent: initial !important;\r\n label {\r\n //display: inline;\r\n display: block;\r\n float: initial;\r\n //margin: 0;\r\n width: auto;\r\n margin-left: 1.5em;\r\n }\r\n input {\r\n width: auto !important;\r\n float: left;\r\n margin-top: .25em;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.listimage-wrap {\r\n li {\r\n width: 100%;\r\n height: 100%;\r\n display: inline-grid;\r\n label {\r\n padding: 5px;\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: transparent;\r\n &.nf-checked-label {\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: #007acc;\r\n transition: all .5s;\r\n }\r\n img {\r\n display: block;\r\n }\r\n }\r\n input {\r\n display: none;\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nPRODUCT FIELD\r\n----------------------------------*/\r\n.product-wrap {\r\n > div {\r\n input {\r\n width: 80px !important;\r\n }\r\n .nf-product-field {\r\n span {\r\n padding: 0 5px;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nSTAR RATING\r\n----------------------------------*/\r\n.starrating-wrap .star {\r\n border-bottom: 0;\r\n}\r\n\r\n/* ---------------------------------\r\nHONEYPOT\r\n----------------------------------*/\r\n\r\n.nf-form-hp {\r\n position: absolute;\r\n visibility: hidden;\r\n}\r\n\r\n/* ---------------------------------\r\nSELECT LIST\r\n----------------------------------*/\r\n.list-select-wrap {\r\n div div {\r\n display: none;\r\n }\r\n}\r\n\r\n\r\n/* ---------------------------------\r\nCOLORS\r\nAs minimal as possible\r\n----------------------------------*/\r\n.ninja-forms-req-symbol,\r\n.nf-error-msg {\r\n color: #E80000;\r\n}\r\n.nf-error {\r\n .ninja-forms-field {\r\n border: 1px solid #E80000;\r\n }\r\n &.listimage-wrap {\r\n .nf-field-element {\r\n ul {\r\n border: 1px solid #E80000;\r\n }\r\n }\r\n }\r\n}\r\n.nf-field-submit-error {\r\n padding: 15px;\r\n}\r\n\r\n.ninja-forms-noscript-message {\r\n background: #f1f1f1;\r\n border: 4px dashed #ccc;\r\n color: #333;\r\n display: block;\r\n font-size: 20px;\r\n margin: 20px 0;\r\n padding: 40px;\r\n text-align: center;\r\n}\r\n\r\n/* ---------------------------------\r\nHELPER CLASSES\r\n----------------------------------*/\r\n.two-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 50%\r\n }\r\n }\r\n}\r\n.three-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 33.33%\r\n }\r\n }\r\n}\r\n.four-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 25%\r\n }\r\n }\r\n}\r\n.five-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 20%\r\n }\r\n }\r\n}\r\n.six-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 16.66%\r\n }\r\n }\r\n}\r\n\r\n\r\nbody {\r\n .pika-label {\r\n background: transparent;\r\n }\r\n}\r\n\r\n/* Column Classes\r\n Link: http://twitter.github.io/bootstrap/assets/css/bootstrap-responsive.css\r\n--------------------------------------------- */\r\n.nf-form-cont {\r\n .five-sixths,\r\n .four-sixths,\r\n .one-fourth,\r\n .one-half,\r\n .one-sixth,\r\n .one-third,\r\n .three-fourths,\r\n .three-sixths,\r\n .two-fourths,\r\n .two-sixths,\r\n .two-thirds {\r\n clear: initial;\r\n float: left;\r\n margin-left: 2.564102564102564%;\r\n .inside {\r\n padding: 20px;\r\n }\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n\r\n .one-half,\r\n .three-sixths,\r\n .two-fourths {\r\n width: 48.717948717948715%;\r\n }\r\n\r\n .one-third,\r\n .two-sixths {\r\n width: 31.623931623931625%;\r\n }\r\n\r\n .four-sixths,\r\n .two-thirds {\r\n width: 65.81196581196582%;\r\n }\r\n\r\n .one-fourth {\r\n width: 23.076923076923077%;\r\n }\r\n\r\n .three-fourths {\r\n width: 74.35897435897436%;\r\n }\r\n\r\n .one-sixth {\r\n width: 14.52991452991453%;\r\n }\r\n\r\n .five-sixths {\r\n width: 82.90598290598291%;\r\n }\r\n\r\n .first {\r\n clear: both;\r\n margin-left: 0;\r\n }\r\n}\r\n",".note-popover {\r\n display: none !important;\r\n}\r\n.nf-form-wrap {\r\n .note-editor {\r\n border: 0 !important;\r\n .note-toolbar {\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n .note-editable {\r\n background: #f9f9f9;\r\n border: 1px solid #f1f1f1;\r\n display: block;\r\n p {\r\n font-size: 16px;\r\n }\r\n ul {\r\n list-style-type: disc;\r\n margin-left: 2em;\r\n }\r\n table {\r\n td {\r\n border: 1px solid #ccc;\r\n width: auto;\r\n }\r\n }\r\n }\r\n .modal {\r\n display: none;\r\n }\r\n .btn-group {\r\n float: left;\r\n &.note-tools {\r\n float: right;\r\n }\r\n }\r\n .btn {\r\n background: #f9f9f9;\r\n border: 0;\r\n border-radius: 4px;\r\n color: #666;\r\n cursor: pointer;\r\n margin-right: 2px;\r\n padding-top: 4px;\r\n &.disabled {\r\n background: transparent;\r\n color: #aaa;\r\n .merge-tags {\r\n background: #f9f9f9;\r\n color: #666;\r\n }\r\n }\r\n }\r\n button[type=button] {\r\n padding: 4px;\r\n width: auto;\r\n height: auto;\r\n }\r\n .dropdown-toggle {\r\n position: relative;\r\n display: inline-block;\r\n top: 0;\r\n &::after {\r\n content: \"\";\r\n width: 0;\r\n }\r\n }\r\n }\r\n .tooltip {\r\n position: absolute;\r\n z-index: 1070;\r\n display: block;\r\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\r\n font-size: 12px;\r\n font-style: normal;\r\n font-weight: normal;\r\n line-height: 1.42857143;\r\n text-align: left;\r\n text-align: start;\r\n text-decoration: none;\r\n text-shadow: none;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n word-break: normal;\r\n word-spacing: normal;\r\n word-wrap: normal;\r\n white-space: normal;\r\n filter: alpha(opacity=0);\r\n opacity: 0;\r\n\r\n line-break: auto;\r\n }\r\n .tooltip.in {\r\n filter: alpha(opacity=90);\r\n opacity: .9;\r\n }\r\n .tooltip.top {\r\n padding: 5px 0;\r\n margin-top: -3px;\r\n }\r\n .tooltip.right {\r\n padding: 0 5px;\r\n margin-left: 3px;\r\n }\r\n .tooltip.bottom {\r\n padding: 5px 0;\r\n margin-top: 3px;\r\n }\r\n .tooltip.left {\r\n padding: 0 5px;\r\n margin-left: -3px;\r\n }\r\n .tooltip-inner {\r\n max-width: 200px;\r\n padding: 3px 8px;\r\n color: #fff;\r\n text-align: center;\r\n background-color: #000;\r\n border-radius: 4px;\r\n }\r\n .tooltip-arrow {\r\n position: absolute;\r\n width: 0;\r\n height: 0;\r\n border-color: transparent;\r\n border-style: solid;\r\n }\r\n .tooltip.top .tooltip-arrow {\r\n bottom: 0;\r\n left: 50%;\r\n margin-left: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.top-left .tooltip-arrow {\r\n right: 5px;\r\n bottom: 0;\r\n margin-bottom: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.top-right .tooltip-arrow {\r\n bottom: 0;\r\n left: 5px;\r\n margin-bottom: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.right .tooltip-arrow {\r\n top: 50%;\r\n left: 0;\r\n margin-top: -5px;\r\n border-width: 5px 5px 5px 0;\r\n border-right-color: #000;\r\n }\r\n .tooltip.left .tooltip-arrow {\r\n top: 50%;\r\n right: 0;\r\n margin-top: -5px;\r\n border-width: 5px 0 5px 5px;\r\n border-left-color: #000;\r\n }\r\n .tooltip.bottom .tooltip-arrow {\r\n top: 0;\r\n left: 50%;\r\n margin-left: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .tooltip.bottom-left .tooltip-arrow {\r\n top: 0;\r\n right: 5px;\r\n margin-top: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .tooltip.bottom-right .tooltip-arrow {\r\n top: 0;\r\n left: 5px;\r\n margin-top: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .dropdown-menu {\r\n position: absolute;\r\n // top: 100%;\r\n // left: 0;\r\n z-index: 1000;\r\n display: none;\r\n float: left;\r\n min-width: 160px;\r\n padding: 5px 0;\r\n margin: 2px 0 0;\r\n font-size: 14px;\r\n text-align: left;\r\n list-style: none;\r\n background-color: #fff;\r\n -webkit-background-clip: padding-box;\r\n background-clip: padding-box;\r\n border: 1px solid #ccc;\r\n border: 1px solid rgba(0, 0, 0, .15);\r\n border-radius: 4px;\r\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\r\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\r\n }\r\n .dropdown-menu.pull-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropdown-menu .divider {\r\n height: 1px;\r\n margin: 9px 0;\r\n overflow: hidden;\r\n background-color: #e5e5e5;\r\n }\r\n .dropdown-menu > li > a {\r\n display: block;\r\n padding: 3px 20px;\r\n clear: both;\r\n font-weight: normal;\r\n line-height: 1.42857143;\r\n color: #333;\r\n white-space: nowrap;\r\n }\r\n .dropdown-menu > li > a:hover,\r\n .dropdown-menu > li > a:focus {\r\n color: #262626;\r\n text-decoration: none;\r\n background-color: #f5f5f5;\r\n }\r\n .dropdown-menu > .active > a,\r\n .dropdown-menu > .active > a:hover,\r\n .dropdown-menu > .active > a:focus {\r\n color: #fff;\r\n text-decoration: none;\r\n background-color: #337ab7;\r\n outline: 0;\r\n }\r\n .dropdown-menu > .disabled > a,\r\n .dropdown-menu > .disabled > a:hover,\r\n .dropdown-menu > .disabled > a:focus {\r\n color: #777;\r\n }\r\n .dropdown-menu > .disabled > a:hover,\r\n .dropdown-menu > .disabled > a:focus {\r\n text-decoration: none;\r\n cursor: not-allowed;\r\n background-color: transparent;\r\n background-image: none;\r\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\r\n }\r\n .open > .dropdown-menu {\r\n display: block;\r\n }\r\n .open > a {\r\n outline: 0;\r\n }\r\n .dropdown-menu-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropdown-menu-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n .dropdown-header {\r\n display: block;\r\n padding: 3px 20px;\r\n font-size: 12px;\r\n line-height: 1.42857143;\r\n color: #777;\r\n white-space: nowrap;\r\n }\r\n .dropdown-backdrop {\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 990;\r\n }\r\n .pull-right > .dropdown-menu {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropup .caret,\r\n .navbar-fixed-bottom .dropdown .caret {\r\n content: \"\";\r\n border-top: 0;\r\n border-bottom: 4px dashed;\r\n border-bottom: 4px solid \\9;\r\n }\r\n .dropup .dropdown-menu,\r\n .navbar-fixed-bottom .dropdown .dropdown-menu {\r\n top: auto;\r\n bottom: 100%;\r\n margin-bottom: 2px;\r\n }\r\n @media (min-width: 768px) {\r\n .navbar-right .dropdown-menu {\r\n right: 0;\r\n left: auto;\r\n }\r\n .navbar-right .dropdown-menu-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n }\r\n .btn-group-justified > .btn-group .dropdown-menu {\r\n left: auto;\r\n }\r\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\r\n top: auto;\r\n left: auto;\r\n }\r\n .nav-justified > .dropdown .dropdown-menu {\r\n top: auto;\r\n left: auto;\r\n }\r\n .nav-tabs .dropdown-menu {\r\n margin-top: -1px;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-nav .open .dropdown-menu {\r\n position: static;\r\n float: none;\r\n width: auto;\r\n margin-top: 0;\r\n background-color: transparent;\r\n border: 0;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a,\r\n .navbar-nav .open .dropdown-menu .dropdown-header {\r\n padding: 5px 15px 5px 25px;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a {\r\n line-height: 20px;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-nav .open .dropdown-menu > li > a:focus {\r\n background-image: none;\r\n }\r\n }\r\n .navbar-nav > li > .dropdown-menu {\r\n margin-top: 0;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\r\n margin-bottom: 0;\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n border-bottom-right-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\r\n color: #777;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\r\n color: #333;\r\n background-color: transparent;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\r\n color: #555;\r\n background-color: #e7e7e7;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\r\n color: #ccc;\r\n background-color: transparent;\r\n }\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\r\n border-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\r\n background-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\r\n color: #9d9d9d;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\r\n color: #fff;\r\n background-color: transparent;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\r\n color: #fff;\r\n background-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\r\n color: #444;\r\n background-color: transparent;\r\n }\r\n }\r\n}\r\n",".nf-loading-spinner {\r\n width: 40px;\r\n height: 40px;\r\n margin: 100px auto;\r\n background-color: rgba(208,208,208,.5);\r\n\r\n border-radius: 100%;\r\n animation: nf-scaleout 1.0s infinite ease-in-out;\r\n}\r\n\r\n@-webkit-keyframes nf-scaleout {\r\n 0% { transform: scale(0) }\r\n 100% {\r\n transform: scale(1.0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes nf-scaleout {\r\n 0% {\r\n transform: scale(0);\r\n } 100% {\r\n transform: scale(1.0);\r\n opacity: 0;\r\n }\r\n}","/* ---------------------------------\r\nSTANDARDIZE ALL FIELDS\r\n----------------------------------*/\r\n.field-wrap {\r\n display: flex;\r\n //flex-wrap:wrap;\r\n > label {\r\n display: block;\r\n }\r\n > div input,\r\n textarea,\r\n select,\r\n .pikaday__container,\r\n .pikaday__display {\r\n width: 100%;\r\n }\r\n > div input[type=\"checkbox\"] {\r\n width: auto;\r\n }\r\n input[type=\"submit\"],\r\n input[type=\"button\"],\r\n button {\r\n width: auto;\r\n }\r\n .nf-product-field {\r\n // .nf-element {\r\n // width: 100%;\r\n // }\r\n }\r\n}\r\n\r\n.nf-field-label {\r\n order: 5;\r\n}\r\n.nf-field-description {\r\n width: 100%;\r\n order: 10;\r\n}\r\n.nf-field-element {\r\n order: 15;\r\n}\r\n\r\n\r\n/* ---------------------------------\r\nLABEL ABOVE\r\n----------------------------------*/\r\n.label-above {\r\n .nf-field-label {\r\n margin-bottom: 10px;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL BELOW\r\n----------------------------------*/\r\n.label-below {\r\n .nf-field-label {\r\n margin-top: 10px;\r\n order: 15;\r\n }\r\n .nf-field-element {\r\n order: 5;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL HIDDEN\r\n----------------------------------*/\r\n.label-hidden {\r\n .field-wrap {\r\n flex-wrap: wrap;\r\n }\r\n .nf-field-label {\r\n height: 0;\r\n margin: 0 !important;\r\n width: 100%;\r\n visibility: hidden;\r\n }\r\n .nf-field-description {\r\n width: 100%;\r\n order: 20;\r\n }\r\n .nf-field-element {\r\n width: 100%;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL LEFT\r\n----------------------------------*/\r\n.label-left {\r\n .field-wrap {\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n }\r\n .nf-field-label {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding-right: 2%;\r\n text-align: right;\r\n width: 35%;\r\n order: 5;\r\n label {\r\n width: 100%;\r\n }\r\n }\r\n .nf-field-description {\r\n margin-left: 35%;\r\n }\r\n .nf-field-element {\r\n display: inline-block;\r\n width: 65%;\r\n order: 10;\r\n }\r\n .nf-after-field {\r\n margin-left: 36.5%;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL RIGHT\r\n----------------------------------*/\r\n.label-right {\r\n .field-wrap {\r\n flex-direction: row;\r\n }\r\n .nf-field-label {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding-left: 2%;\r\n width: 35%;\r\n order: 10;\r\n }\r\n .nf-field-description {\r\n margin-right: 35%;\r\n order: 15;\r\n }\r\n .nf-field-element {\r\n display: inline-block;\r\n width: 65%;\r\n order: 5;\r\n }\r\n .checkbox-wrap {\r\n .nf-field-label {\r\n width: auto;\r\n }\r\n .nf-field-element {\r\n width: 20px;\r\n }\r\n }\r\n .nf-after-field {\r\n width: 65%;\r\n }\r\n}\r\n/* ---------------------------------\r\nADJUST SOME LABEL ABOVE & BELOW ISSUES\r\n----------------------------------*/\r\n.label-below,\r\n.label-above {\r\n .field-wrap {\r\n flex-direction: column;\r\n flex-flow: wrap;\r\n }\r\n .nf-field-element {\r\n margin: 0;\r\n width: 100%;\r\n }\r\n .checkbox-wrap {\r\n .nf-field-label {\r\n //margin: 0;\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nADJUST SOME LABEL LEFT & RIGHT ISSUES\r\n----------------------------------*/\r\n.label-left,\r\n.label-right {\r\n .textarea-wrap,\r\n .listradio-wrap,\r\n .listcheckbox-wrap {\r\n .nf-field-label {\r\n align-items: flex-start;\r\n }\r\n }\r\n .textarea-wrap {\r\n .nf-field-label {\r\n margin-top: 5px;\r\n }\r\n }\r\n .html-wrap,\r\n .hr-wrap {\r\n display: block;\r\n .nf-field-element {\r\n display: block;\r\n margin: 0;\r\n width: 100%;\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nFIELD DESCRIPTION POSITIONS\r\n----------------------------------*/\r\n",".nf-repeater-fieldsets{\r\n fieldset {\r\n margin-bottom: 1em;\r\n }\r\n}\r\n\r\n.nf-remove-fieldset {\r\n color: red;\r\n font-size: 1.5em;\r\n background-color: transparent;\r\n border: thin solid red;\r\n padding: 0.1em 0.4em;\r\n float: right;\r\n margin-top: -1em;\r\n}",".nf-help {\r\n background: none;\r\n}\r\n.nf-field-description {\r\n font-size: 14px;\r\n}\r\n.nf-form-content {\r\n padding: 5px;\r\n max-width: 1000px;\r\n margin: 0 auto;\r\n label {\r\n font-size: 18px;\r\n line-height: 20px;\r\n }\r\n .ninja-forms-field,\r\n .listselect-wrap .nf-field-element div {\r\n font-size: 16px;\r\n margin: 0;\r\n padding: 12px;\r\n }\r\n input.ninja-forms-field,\r\n select.ninja-forms-field:not([multiple]),\r\n .listselect-wrap .nf-field-element div {\r\n height: 50px;\r\n }\r\n textarea.ninja-forms-field {\r\n height: 200px;\r\n }\r\n hr.ninja-forms-field {\r\n padding: 0;\r\n }\r\n input[type=\"radio\"].ninja-forms-field,\r\n input[type=\"checkbox\"].ninja-forms-field {\r\n height: auto;\r\n }\r\n .listradio-wrap,\r\n .listcheckbox-wrap {\r\n li {\r\n margin-bottom: 12px !important;\r\n line-height: 0;\r\n }\r\n }\r\n .nf-product-field {\r\n &.ninja-forms-field {\r\n // background: transparent;\r\n // border: 0;\r\n // padding: 0;\r\n }\r\n span {\r\n padding-right: 16px;\r\n }\r\n .nf-field-qty {\r\n font-size: 16px;\r\n padding: 5px;\r\n width: 80px !important;\r\n }\r\n }\r\n .listselect-wrap,\r\n .liststate-wrap,\r\n .listcountry-wrap {\r\n select {\r\n //height: 50px;\r\n }\r\n }\r\n .nf-static {\r\n background: transparent;\r\n border: 0;\r\n font-weight: bold;\r\n padding: 0;\r\n }\r\n .label-above,\r\n .label-below,\r\n .label-hidden {\r\n .nf-field-label {\r\n margin-bottom: 10px;\r\n padding: 0;\r\n }\r\n }\r\n .label-below {\r\n .nf-field-label {\r\n margin-bottom: 0;\r\n margin-top: 10px;\r\n }\r\n }\r\n .label-right {\r\n .nf-field-label {\r\n margin: 0;\r\n }\r\n > input,\r\n textarea,\r\n select,\r\n .nf-product-field,\r\n .starrating,\r\n .nf-static,\r\n .pikaday__container {\r\n // margin-right: 1%;\r\n }\r\n > input[type=radio],\r\n input[type=checkbox] {\r\n margin-right: 1%;\r\n }\r\n ul {\r\n margin-right: 1%;\r\n }\r\n }\r\n .label-left {\r\n // > label {\r\n // margin: 0;\r\n // }\r\n // > input,\r\n // textarea,\r\n // select,\r\n // .pikaday__container {\r\n // // margin-left: 1%;\r\n // }\r\n // > input[type=radio],\r\n // input[type=checkbox] {\r\n // margin-left: 1%;\r\n // }\r\n // ul {\r\n // margin-left: 15px;\r\n // }\r\n }\r\n}\r\n","\r\n.nf-form-content {\r\n .list-select-wrap > div {\r\n position: relative;\r\n div {\r\n display: block;\r\n position: absolute;\r\n font-size: 16px;\r\n line-height: 16px;\r\n margin: 0;\r\n padding: 16px;\r\n height: 50px;\r\n top: 0;\r\n right: 0;\r\n left: 0;\r\n z-index: 1;\r\n &::after {\r\n content: \"\\f078\";\r\n font-family: FontAwesome;\r\n font-size: 20px;\r\n //font-weight: bold;\r\n //transform: rotate(90deg);\r\n position: absolute;\r\n right: 10px;\r\n bottom: 0;\r\n height: 50px;\r\n line-height: 50px;\r\n }\r\n }\r\n &.label-right {\r\n div {\r\n width: 59%;\r\n // &::after {\r\n // right: 20px;\r\n // }\r\n }\r\n }\r\n &.label-below {\r\n div {\r\n top: 0;\r\n bottom: auto;\r\n }\r\n }\r\n &.label-left {\r\n div {\r\n width: 59%;\r\n left: 40.5%;\r\n right: 40px;\r\n }\r\n }\r\n select {\r\n background: transparent;\r\n border: 0;\r\n appearance: none;\r\n position: relative;\r\n z-index: 2;\r\n }\r\n }\r\n .listmultiselect-wrap {\r\n select {\r\n appearance: normal;\r\n }\r\n }\r\n}\r\n",".checkbox-wrap,\r\n.listcheckbox-wrap {\r\n .nf-field-label,\r\n .nf-field-element {\r\n label {\r\n position: relative;\r\n margin-left: 30px;\r\n &::after {\r\n border: 1px solid;\r\n content: \"\";\r\n width: 18px;\r\n height: 18px;\r\n position: absolute;\r\n left: -28px;\r\n bottom: 0;\r\n }\r\n &::before {\r\n content: \"\\f00c\";\r\n font-family: FontAwesome;\r\n font-size: 24px;\r\n position: absolute;\r\n bottom: 0;\r\n opacity: 0;\r\n z-index: 2;\r\n }\r\n }\r\n }\r\n}\r\n.checkbox-container {\r\n .nf-field-element {\r\n input {\r\n display: none;\r\n }\r\n }\r\n &.label-above,\r\n &.label-below {\r\n // .nf-field-element {\r\n // input {\r\n // display: none;\r\n // }\r\n // }\r\n }\r\n &.label-above {\r\n label {\r\n height: 50px;\r\n margin: 0;\r\n display: block;\r\n &::before {\r\n left: -2px;\r\n bottom: -16px;\r\n }\r\n &::after {\r\n left: 0;\r\n bottom: -16px;\r\n }\r\n }\r\n }\r\n &.label-below {\r\n label {\r\n margin: 0;\r\n display: block;\r\n margin-top: 20px;\r\n &::before {\r\n left: -2px;\r\n bottom: auto;\r\n top: -27px;\r\n }\r\n &::after {\r\n left: 0;\r\n bottom: auto;\r\n top: -25px;\r\n }\r\n }\r\n }\r\n &.label-left {\r\n .nf-field-label {\r\n width: 38%;\r\n padding-right: 5%;\r\n }\r\n .nf-field-element {\r\n width: 58%;\r\n }\r\n label {\r\n margin: 0;\r\n display: block;\r\n &::before {\r\n left: auto;\r\n top: -2px;\r\n right: -36px;\r\n }\r\n &::after {\r\n left: auto;\r\n top: 0;\r\n right: -31px;\r\n }\r\n }\r\n }\r\n &.label-right {\r\n .nf-field-label {\r\n padding: 0;\r\n order: 10;\r\n }\r\n .nf-field-element {\r\n order: 5;\r\n display: none;\r\n }\r\n label {\r\n margin: 0 0 0 30px;\r\n display: block;\r\n &::before {\r\n left: -30px;\r\n top: 0;\r\n }\r\n &::after {\r\n left: -28px;\r\n top: 0;\r\n }\r\n }\r\n .field-wrap {\r\n display: flex;\r\n > div {\r\n width: 100%;\r\n }\r\n }\r\n label {\r\n &::after {\r\n // Commenting this line out to deal with checkbox list issues.\r\n // Leaving it in place because it may need to be re-visited in the future.\r\n //top: 2px !important;\r\n }\r\n }\r\n }\r\n &.label-hidden {\r\n label {\r\n height: 0;\r\n margin: 0;\r\n display: block;\r\n &::after {\r\n left: 0;\r\n bottom: 0;\r\n visibility: visible;\r\n }\r\n &.nf-checked-label {\r\n &::before {\r\n left: -2px;\r\n bottom: 0;\r\n visibility: visible;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n.listcheckbox-container {\r\n .nf-field-label {\r\n label {\r\n &::after {\r\n background: transparent !important;\r\n border: 0;\r\n }\r\n }\r\n }\r\n .nf-field-element {\r\n input {\r\n display: none;\r\n }\r\n label {\r\n margin-left: 30px !important;\r\n &::before {\r\n top: 1px;\r\n left: -30px;\r\n bottom: auto;\r\n }\r\n &::after {\r\n top: 3px;\r\n bottom: auto;\r\n }\r\n }\r\n }\r\n &.label-above,\r\n &.label-below,\r\n &.label-right {\r\n .nf-field-label {\r\n label {\r\n margin: 0;\r\n &::before {\r\n left: -30px;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n",".listradio-wrap {\r\n .nf-field-element {\r\n label {\r\n position: relative;\r\n margin-left: 30px !important;\r\n &::after {\r\n border-radius: 50%;\r\n content: \"\";\r\n width: 18px;\r\n height: 18px;\r\n position: absolute;\r\n left: -30px;\r\n bottom: 1px;\r\n top: .05em;\r\n }\r\n &.nf-checked-label {\r\n &::before {\r\n border-radius: 50%;\r\n content: \"\";\r\n height: 10px;\r\n width: 10px;\r\n position: absolute;\r\n left: -26px;\r\n bottom: 5px;\r\n z-index: 2;\r\n top: .25em;\r\n }\r\n }\r\n }\r\n input {\r\n display: none;\r\n }\r\n }\r\n}\r\n","input[type=checkbox].nf-toggle {\r\n background: transparent;\r\n border: 0;\r\n box-shadow: 0 0 0;\r\n margin: 10px;\r\n height: 18px;\r\n appearance: none;\r\n position: relative;\r\n cursor: pointer;\r\n &::after {\r\n background: #BCBDBF;\r\n border: 2px solid #BCBDBF;\r\n border-radius: 20px;\r\n content: \"\";\r\n position: absolute;\r\n top: -4px;\r\n left: -4px;\r\n width: 46px;\r\n height: 24px;\r\n transition: all 0.3s ease;\r\n }\r\n &::before {\r\n background: #fff;\r\n border-radius: 20px;\r\n content: \"\";\r\n position: absolute;\r\n top: -1px;\r\n left: 0;\r\n width: 18px;\r\n height: 18px;\r\n z-index: 99;\r\n transition: all 0.3s ease;\r\n }\r\n &:checked {\r\n &::after {\r\n background: lightgreen;\r\n border: 2px solid lightgreen;\r\n transition: all 0.3s ease;\r\n }\r\n &::before {\r\n top: -1px;\r\n left: 20px;\r\n transition: all 0.3s ease;\r\n }\r\n }\r\n .label-right & {\r\n padding: 0 50px 0 0;\r\n }\r\n .label-left & {\r\n padding: 0;\r\n margin-left: 22px;\r\n margin-top: 20px;\r\n }\r\n}\r\n",".nf-icons {\r\n .nf-field-element {\r\n position: relative;\r\n &::before {\r\n //border: 1px;\r\n font-family: FontAwesome;\r\n font-size: 20px;\r\n position: absolute;\r\n left: 1px;\r\n bottom: 1px;\r\n height: 48px;\r\n width: 50px;\r\n line-height: 50px;\r\n text-align: center;\r\n z-index: 1;\r\n }\r\n }\r\n .date-wrap,\r\n .number-wrap,\r\n .quantity-wrap,\r\n .email-wrap,\r\n .phone-wrap,\r\n .firstname-wrap,\r\n .lastname-wrap,\r\n .address-wrap,\r\n .city-wrap,\r\n .state-wrap,\r\n .zip-wrap,\r\n .creditcardfullname-wrap,\r\n .creditcardnumber-wrap,\r\n .creditcardcvc-wrap,\r\n .creditcardexpiration-wrap,\r\n .creditcardzip-wrap {\r\n .nf-field-element {\r\n input {\r\n padding-left: 60px;\r\n }\r\n }\r\n }\r\n &.right {\r\n .nf-field-element {\r\n &::before {\r\n left: auto;\r\n right: 1px;\r\n }\r\n }\r\n .date-wrap,\r\n .number-wrap,\r\n .quantity-wrap,\r\n .email-wrap,\r\n .phone-wrap,\r\n .firstname-wrap,\r\n .lastname-wrap,\r\n .address-wrap,\r\n .city-wrap,\r\n .state-wrap,\r\n .zip-wrap,\r\n .creditcardfullname-wrap,\r\n .creditcardnumber-wrap,\r\n .creditcardcvc-wrap,\r\n .creditcardexpiration-wrap,\r\n .creditcardzip-wrap {\r\n > div {\r\n input {\r\n padding-left: 12px;\r\n padding-right: 60px;\r\n }\r\n }\r\n }\r\n }\r\n .date-wrap .nf-field-element::before {\r\n content: \"\\f073\";\r\n }\r\n .number-wrap .nf-field-element::before,\r\n .quantity-wrap > div::before {\r\n content: \"\\f292\";\r\n }\r\n .email-wrap .nf-field-element::before {\r\n content: \"\\f0e0\";\r\n }\r\n .phone-wrap .nf-field-element::before {\r\n content: \"\\f095\";\r\n }\r\n .firstname-wrap .nf-field-element::before,\r\n .lastname-wrap .nf-field-element::before {\r\n content: \"\\f007\";\r\n }\r\n .address-wrap .nf-field-element::before,\r\n .city-wrap .nf-field-element::before,\r\n .state-wrap .nf-field-element::before,\r\n .zip-wrap .nf-field-element::before {\r\n content: \"\\f041\";\r\n }\r\n .creditcardfullname-wrap .nf-field-element::before,\r\n .creditcardnumber-wrap .nf-field-element::before,\r\n .creditcardcvc-wrap .nf-field-element::before,\r\n .creditcardexpiration-wrap .nf-field-element::before,\r\n .creditcardzip-wrap .nf-field-element::before {\r\n content: \"\\f283\";\r\n }\r\n}\r\n",".nf-form-content {\r\n input:not([type='button']),\r\n textarea,\r\n .list-select-wrap .nf-field-element > div {\r\n background: $field-background;\r\n border: 1px solid $field-border;\r\n border-radius: 0;\r\n box-shadow: none;\r\n color: $field-font;\r\n transition: all .5s;\r\n &:focus {\r\n background: $focus-background;\r\n border-color: $focus-border;\r\n //box-shadow: -3px 3px 10px #ccc;\r\n color: $focus-font;\r\n outline: none;\r\n transition: all .5s;\r\n }\r\n }\r\n input[type=\"submit\"],\r\n input[type=\"button\"],\r\n button {\r\n background: $accent;\r\n border: 0;\r\n color: $field-background;\r\n transition: all .5s;\r\n &:hover {\r\n background: $field-border;\r\n color: $field-font;\r\n transition: all .5s;\r\n }\r\n }\r\n select.ninja-forms-field {\r\n color: $field-font;\r\n &:focus {\r\n background: transparent;\r\n border: 0;\r\n box-shadow: none;\r\n outline: none;\r\n }\r\n }\r\n}\r\n\r\n.list-select-wrap {\r\n div {\r\n &::after {\r\n color: $field-font;\r\n transition: all .5s;\r\n }\r\n }\r\n select {\r\n &:active,\r\n &:focus {\r\n + div {\r\n background: $focus-background !important;\r\n border-color: $focus-border !important;\r\n transition: all .5s;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.listradio-wrap {\r\n .nf-field-element {\r\n label {\r\n &::after {\r\n background: $field-background;\r\n border: 2px solid $field-border;\r\n transition: all .5s;\r\n }\r\n &.nf-checked-label {\r\n &::after {\r\n border-color: $selected-font;\r\n transition: all .5s;\r\n }\r\n &::before {\r\n background: $selected-font;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.checkbox-wrap,\r\n.listcheckbox-wrap {\r\n .nf-field-label,\r\n .nf-field-element {\r\n label {\r\n &::after {\r\n background: $field-background;\r\n border-color: $field-border;\r\n transition: all .5s;\r\n }\r\n &::before {\r\n color: $field-background;\r\n opacity: 0;\r\n transition: all .5s;\r\n }\r\n &.nf-checked-label {\r\n &::after {\r\n //background: $accent;\r\n border-color: $selected-border;\r\n transition: all .5s;\r\n }\r\n &::before {\r\n color: $selected-font;\r\n opacity: 100;\r\n transition: all .5s;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.nf-error {\r\n position: relative;\r\n .ninja-forms-field {\r\n border-color: #E80000 !important;\r\n transition: all .5s;\r\n }\r\n &.field-wrap {\r\n .nf-field-element::after {\r\n background: #E80000;\r\n color: #fff;\r\n font-family: FontAwesome;\r\n font-size: 20px;\r\n content: \"\\f12a\";\r\n position: absolute;\r\n top: 1px;\r\n right: 1px;\r\n bottom: 1px;\r\n height: 48px;\r\n width: 50px;\r\n line-height: 50px;\r\n text-align: center;\r\n transition: all .5s;\r\n }\r\n &.checkbox-wrap {\r\n .nf-field-element::after {\r\n display: none;\r\n }\r\n }\r\n }\r\n .nf-error-msg {\r\n color: #E80000;\r\n }\r\n}\r\n.checkbox-container {\r\n .nf-after-field .nf-error-msg {\r\n //text-align: left;\r\n }\r\n}\r\n.nf-pass {\r\n position: relative;\r\n .ninja-forms-field {\r\n border-color: green !important;\r\n transition: all .5s;\r\n }\r\n &.field-wrap {\r\n .nf-field-element::after {\r\n color: green;\r\n font-family: FontAwesome;\r\n font-size: 30px;\r\n content: \"\\f058\";\r\n position: absolute;\r\n top: 0;\r\n right: 16px;\r\n height: 50px;\r\n line-height: 50px;\r\n transition: all .5s;\r\n }\r\n &.checkbox-wrap {\r\n .nf-field-element::after {\r\n display: none;\r\n }\r\n }\r\n }\r\n // &.field-wrap::before {\r\n // border-color: green !important;\r\n // }\r\n}\r\n\r\n.nf-field-submit-error {\r\n border: 1px solid;\r\n margin: 10px 0px;\r\n padding: 15px 15px 15px 50px;\r\n position: relative;\r\n z-index: 1;\r\n &::after {\r\n content: \"\\f06a\";\r\n font-family: FontAwesome;\r\n font-size: 24px;\r\n position: absolute;\r\n top: 0;\r\n left: 15px;\r\n height: 50px;\r\n line-height: 50px;\r\n z-index: 2;\r\n }\r\n}\r\n\r\n.nf-field-submit-error {\r\n border-color: #D8000C;\r\n color: #D8000C;\r\n background-color: #FFBABA;\r\n}\r\n\r\n.nf-icons {\r\n .nf-field-element::before {\r\n background: $field-border;\r\n color: $field-background;\r\n }\r\n}\r\n\r\n.nf-help {\r\n color: $selected-font;\r\n}\r\n","@import \"display-structure\";\r\n\r\n@import \"op-spacing\";\r\n//@import \"op-columns\";\r\n@import \"op-select\";\r\n@import \"op-checkbox\";\r\n@import \"op-radio\";\r\n@import \"op-toggle\";\r\n@import \"op-icons\";\r\n\r\n/* ---------------------------------\r\nDEFAULT LIGHT COLORS\r\n----------------------------------*/\r\n$base: #f7f7f7;\r\n$accent: #333;\r\n@import \"op-variables-light\";\r\n@import \"op-color\";\r\n\r\n/* ---------------------------------\r\nLIGHT COLORS - nf-brown\r\n----------------------------------*/\r\n$base: #F3EFDD;\r\n$accent: #736628;\r\n@import \"op-variables-light\";\r\n.nf-brown {\r\n @import \"op-color\";\r\n}\r\n\r\n/* ---------------------------------\r\nLIGHT COLORS - nf-red\r\n----------------------------------*/\r\n$base: #F0E3E3;\r\n$accent: #8A5252;\r\n@import \"op-variables-light\";\r\n.nf-red {\r\n @import \"op-color\";\r\n}\r\n\r\n/* ---------------------------------\r\nLIGHT COLORS - nf-blue\r\n----------------------------------*/\r\n$base: #DFEFF5;\r\n$accent: #4F9DBF;\r\n@import \"op-variables-light\";\r\n.nf-blue {\r\n @import \"op-color\";\r\n}\r\n\r\n@import \"st-media-queries\";\r\n","$field-background: $base;\r\n$field-border: darken( $base, 20% );\r\n$field-font: darken( $base, 50% );\r\n\r\n$focus-background: lighten( $base, 10% );\r\n$focus-border: darken( $field-border, 20% );\r\n$focus-font: lighten( $field-font, 10% );\r\n\r\n$selected-background: lighten( $base, 10% );\r\n$selected-border: darken( $field-border, 5% );\r\n$selected-font: $accent;\r\n","@media only screen and (max-width: 800px) {\r\n .nf-field-container {\r\n .nf-field-label {\r\n margin-bottom: 10px !important;\r\n padding: 0;\r\n width: 100%;\r\n order: 5;\r\n label {\r\n text-align: left;\r\n }\r\n }\r\n .nf-field-description {\r\n margin: 0;\r\n width: 100%;\r\n order: 10;\r\n }\r\n .nf-field-element {\r\n width: 100%;\r\n order: 15;\r\n }\r\n .checkbox-wrap {\r\n .nf-field-label {\r\n width: auto;\r\n label {\r\n position: relative;\r\n margin-left: 30px;\r\n &::after {\r\n left: -28px;\r\n bottom: 0;\r\n }\r\n &::before {\r\n left: -30px;\r\n bottom: 0;\r\n }\r\n }\r\n }\r\n .nf-field-element {\r\n width: 20px;\r\n }\r\n }\r\n }\r\n .nf-form-cont {\r\n .five-sixths,\r\n .four-sixths,\r\n .one-fourth,\r\n .one-half,\r\n .one-sixth,\r\n .one-third,\r\n .three-fourths,\r\n .three-sixths,\r\n .two-fourths,\r\n .two-sixths,\r\n .two-thirds {\r\n clear: both;\r\n float: none;\r\n margin: 0;\r\n width: 100%;\r\n .inside {\r\n padding: 0;\r\n }\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["st-defaults.scss","editor.scss","st-loading.scss","st-label-positions.scss","repeater-field.scss","op-spacing.scss","op-select.scss","op-checkbox.scss","op-radio.scss","op-toggle.scss","op-icons.scss","op-color.scss","display-opinions-light.scss","op-variables-light.scss","st-media-queries.scss"],"names":[],"mappings":"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iBAAiB,AACjB,kBAAmB,CACtB,AClJT,oEDqJgB,YAAa,CAChB,ACtJb,iCD+JI,iBAAiB,AACjB,gBAAgB,AAChB,4BAA4B,AAC5B,kBAAkB,AAClB,SAAU,CAYb,AC/KD,uCDqKQ,gBAAgB,AAChB,wBAAwB,AACxB,eAAe,AACf,kBAAkB,AAClB,MAAM,AACN,UAAU,AACV,YAAY,AACZ,iBAAiB,AACjB,SAAU,CACb,AC9KL,iCDkLI,qBAAqB,AACrB,cAAc,AACd,wBAAyB,CAC5B,ACrLD,6CDyLQ,mBEhN2B,AFiN3B,aC7LM,CD8LT,AC3LL,mBD+LI,aCjMY,CDkMf,ACtLD,qJD9BQ,mBC2BM,AD1BN,yBEJ2B,AFK3B,gBAAgB,AAChB,gBAAgB,AAChB,cENyB,AFOzB,kBAAmB,CAStB,ACgBL,uKDvBY,gBEP4B,AFQ5B,qBEP+B,AFS/B,cER4B,AFS5B,aAAa,AACb,kBAAmB,CACtB,ACiBT,wHDZQ,mBCUQ,ADTR,SAAS,AACT,cCOM,ADNN,kBAAmB,CAMtB,ACGL,0IDPY,mBE1BuB,AF2BvB,cE1BqB,AF2BrB,kBAAmB,CACtB,ACIT,kDDDQ,aE/ByB,CFsC5B,ACNL,wDDCY,uBAAuB,AACvB,SAAS,AACT,gBAAgB,AAChB,YAAa,CAChB,ACLT,oCDYY,cE5CqB,AF6CrB,kBAAmB,CACtB,ACdT,uFDoBgB,0BAAwC,AACxC,+BAAsC,AACtC,kBAAmB,CACtB,ACvBb,sDDgCgB,mBCnCF,ADoCE,yBElEmB,AFmEnB,kBAAmB,CACtB,ACnCb,uEDsCoB,qBCxCJ,ADyCI,kBAAmB,CACtB,ACxCjB,wED0CoB,kBC5CJ,CD6CC,AC3CjB,wNDuDgB,mBC1DF,AD2DE,qBEzFmB,AF0FnB,kBAAmB,CACtB,AC1Db,4ND4DgB,cC/DF,ADgEE,UAAU,AACV,kBAAmB,CACtB,AC/Db,4RDmEoB,qBE5FyB,AF6FzB,kBAAmB,CACtB,ACrEjB,gSDuEoB,cCzEJ,AD0EI,YAAY,AACZ,kBAAmB,CACtB,AC1EjB,kBDiFI,iBAAkB,CA+BrB,AChHD,qCDmFQ,+BAAgC,AAChC,kBAAmB,CACtB,ACrFL,qDDwFY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","file":"display-opinions-light.css","sourcesContent":["/*\n * Ninja Forms - Form Display Structure\n */\n\n.ninja-forms-form-wrap *,\n.ninja-forms-form-wrap *:after,\n.ninja-forms-form-wrap *:before {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.nf-response-msg {\n display: none;\n}\n\n.nf-field-container,\n#ninja_forms_required_items {\n clear: both;\n position: relative;\n margin-bottom: 25px;\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n &.hidden-container,\n &.hr-container {\n margin: 0;\n height: auto;\n .nf-field-label {\n display: none;\n }\n }\n &.html-container {\n .nf-field-label {\n display: none;\n }\n }\n}\n\n.nf-field-label {\n label {\n font-weight: bold;\n margin: 0;\n padding: 0;\n }\n}\n.nf-field-element {\n position: relative;\n input,\n select,\n textarea {\n margin: 0;\n width: auto;\n height: auto;\n vertical-align: inherit;\n }\n textarea {\n height: 200px;\n }\n}\n.nf-field-description {\n p:last-child {\n margin: 0;\n }\n}\n.nf-help {\n background: url( '../img/help-info.png' ) no-repeat;\n display: inline-block;\n width: 16px;\n height: 16px;\n}\n\n.nf-input-limit {\n font-size: 12px;\n margin-top: 5px;\n}\n.nf-static {\n padding: 0 10px;\n}\n.nf-after-field {\n .nf-error-msg {\n margin-right: 10px;\n //text-align: right;\n }\n}\n\n/* ---------------------------------\nCHECKBOX FIELD\n----------------------------------*/\n\n\n\n/* ---------------------------------\nRADIO & CHECKBOX LISTS\n----------------------------------*/\n\n.list-radio-wrap,\n.list-checkbox-wrap,\n.list-image-wrap {\n .nf-field-element {\n ul, li {\n list-style: none !important;\n margin: 0 !important;\n padding: 0 !important;\n input {\n margin-right: 5px;\n }\n }\n li {\n padding-left: 10px;\n margin: 0 0 5px !important;\n text-indent: initial !important;\n label {\n //display: inline;\n display: block;\n float: initial;\n //margin: 0;\n width: auto;\n margin-left: 1.5em;\n }\n input {\n width: auto !important;\n float: left;\n margin-top: .25em;\n }\n }\n }\n}\n\n.listimage-wrap {\n li {\n width: 100%;\n height: 100%;\n display: inline-grid;\n label {\n padding: 5px;\n border-width: 2px;\n border-style: solid;\n border-color: transparent;\n &.nf-checked-label {\n border-width: 2px;\n border-style: solid;\n border-color: #007acc;\n transition: all .5s;\n }\n img {\n display: block;\n }\n }\n input {\n display: none;\n }\n }\n}\n\n/* ---------------------------------\nPRODUCT FIELD\n----------------------------------*/\n.product-wrap {\n > div {\n input {\n width: 80px !important;\n }\n .nf-product-field {\n span {\n padding: 0 5px;\n }\n }\n }\n}\n\n/* ---------------------------------\nSTAR RATING\n----------------------------------*/\n.starrating-wrap .star {\n border-bottom: 0;\n}\n\n/* ---------------------------------\nHONEYPOT\n----------------------------------*/\n\n.nf-form-hp {\n position: absolute;\n visibility: hidden;\n}\n\n/* ---------------------------------\nSELECT LIST\n----------------------------------*/\n.list-select-wrap {\n div div {\n display: none;\n }\n}\n\n\n/* ---------------------------------\nCOLORS\nAs minimal as possible\n----------------------------------*/\n.ninja-forms-req-symbol,\n.nf-error-msg {\n color: #E80000;\n}\n.nf-error {\n .ninja-forms-field {\n border: 1px solid #E80000;\n }\n &.listimage-wrap {\n .nf-field-element {\n ul {\n border: 1px solid #E80000;\n }\n }\n }\n}\n.nf-field-submit-error {\n padding: 15px;\n}\n\n.ninja-forms-noscript-message {\n background: #f1f1f1;\n border: 4px dashed #ccc;\n color: #333;\n display: block;\n font-size: 20px;\n margin: 20px 0;\n padding: 40px;\n text-align: center;\n}\n\n/* ---------------------------------\nHELPER CLASSES\n----------------------------------*/\n.two-col-list {\n ul {\n li {\n float: left;\n width: 50%\n }\n }\n}\n.three-col-list {\n ul {\n li {\n float: left;\n width: 33.33%\n }\n }\n}\n.four-col-list {\n ul {\n li {\n float: left;\n width: 25%\n }\n }\n}\n.five-col-list {\n ul {\n li {\n float: left;\n width: 20%\n }\n }\n}\n.six-col-list {\n ul {\n li {\n float: left;\n width: 16.66%\n }\n }\n}\n\n\nbody {\n .pika-label {\n background: transparent;\n }\n}\n\n/* Column Classes\n Link: http://twitter.github.io/bootstrap/assets/css/bootstrap-responsive.css\n--------------------------------------------- */\n.nf-form-cont {\n .five-sixths,\n .four-sixths,\n .one-fourth,\n .one-half,\n .one-sixth,\n .one-third,\n .three-fourths,\n .three-sixths,\n .two-fourths,\n .two-sixths,\n .two-thirds {\n clear: initial;\n float: left;\n margin-left: 2.564102564102564%;\n .inside {\n padding: 20px;\n }\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n }\n\n .one-half,\n .three-sixths,\n .two-fourths {\n width: 48.717948717948715%;\n }\n\n .one-third,\n .two-sixths {\n width: 31.623931623931625%;\n }\n\n .four-sixths,\n .two-thirds {\n width: 65.81196581196582%;\n }\n\n .one-fourth {\n width: 23.076923076923077%;\n }\n\n .three-fourths {\n width: 74.35897435897436%;\n }\n\n .one-sixth {\n width: 14.52991452991453%;\n }\n\n .five-sixths {\n width: 82.90598290598291%;\n }\n\n .first {\n clear: both;\n margin-left: 0;\n }\n}\n",".note-popover {\n display: none !important;\n}\n.nf-form-wrap {\n .note-editor {\n border: 0 !important;\n .note-toolbar {\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n }\n .note-editable {\n background: #f9f9f9;\n border: 1px solid #f1f1f1;\n display: block;\n p {\n font-size: 16px;\n }\n ul {\n list-style-type: disc;\n margin-left: 2em;\n }\n table {\n td {\n border: 1px solid #ccc;\n width: auto;\n }\n }\n }\n .modal {\n display: none;\n }\n .btn-group {\n float: left;\n &.note-tools {\n float: right;\n }\n }\n .btn {\n background: #f9f9f9;\n border: 0;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n margin-right: 2px;\n padding-top: 4px;\n &.disabled {\n background: transparent;\n color: #aaa;\n .merge-tags {\n background: #f9f9f9;\n color: #666;\n }\n }\n }\n button[type=button] {\n padding: 4px;\n width: auto;\n height: auto;\n }\n .dropdown-toggle {\n position: relative;\n display: inline-block;\n top: 0;\n &::after {\n content: \"\";\n width: 0;\n }\n }\n }\n .tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n filter: alpha(opacity=0);\n opacity: 0;\n\n line-break: auto;\n }\n .tooltip.in {\n filter: alpha(opacity=90);\n opacity: .9;\n }\n .tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n }\n .tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n }\n .tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n }\n .tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n }\n .tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n }\n .tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n .tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n }\n .tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n }\n .tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .dropdown-menu {\n position: absolute;\n // top: 100%;\n // left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n }\n .dropdown-menu.pull-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n }\n .dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n }\n .dropdown-menu > li > a:hover,\n .dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n }\n .dropdown-menu > .active > a,\n .dropdown-menu > .active > a:hover,\n .dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n }\n .dropdown-menu > .disabled > a,\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n color: #777;\n }\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n }\n .open > .dropdown-menu {\n display: block;\n }\n .open > a {\n outline: 0;\n }\n .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n .dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n }\n .dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n }\n .pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n }\n .dropup .caret,\n .navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n }\n .dropup .dropdown-menu,\n .navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n }\n .btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n }\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n .nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n .nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n }\n .navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n @media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n }\n @media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n }\n}\n",".nf-loading-spinner {\n width: 40px;\n height: 40px;\n margin: 100px auto;\n background-color: rgba(208,208,208,.5);\n\n border-radius: 100%;\n animation: nf-scaleout 1.0s infinite ease-in-out;\n}\n\n@-webkit-keyframes nf-scaleout {\n 0% { transform: scale(0) }\n 100% {\n transform: scale(1.0);\n opacity: 0;\n }\n}\n\n@keyframes nf-scaleout {\n 0% {\n transform: scale(0);\n } 100% {\n transform: scale(1.0);\n opacity: 0;\n }\n}","/* ---------------------------------\nSTANDARDIZE ALL FIELDS\n----------------------------------*/\n.field-wrap {\n display: flex;\n //flex-wrap:wrap;\n > label {\n display: block;\n }\n > div input,\n textarea,\n select,\n .pikaday__container,\n .pikaday__display {\n width: 100%;\n }\n > div input[type=\"checkbox\"] {\n width: auto;\n }\n input[type=\"submit\"],\n input[type=\"button\"],\n button {\n width: auto;\n }\n .nf-product-field {\n // .nf-element {\n // width: 100%;\n // }\n }\n}\n\n.nf-field-label {\n order: 5;\n}\n.nf-field-description {\n width: 100%;\n order: 10;\n}\n.nf-field-element {\n order: 15;\n}\n\n\n/* ---------------------------------\nLABEL ABOVE\n----------------------------------*/\n.label-above {\n .nf-field-label {\n margin-bottom: 10px;\n }\n}\n\n/* ---------------------------------\nLABEL BELOW\n----------------------------------*/\n.label-below {\n .nf-field-label {\n margin-top: 10px;\n order: 15;\n }\n .nf-field-element {\n order: 5;\n }\n}\n\n/* ---------------------------------\nLABEL HIDDEN\n----------------------------------*/\n.label-hidden {\n .field-wrap {\n flex-wrap: wrap;\n }\n .nf-field-label {\n height: 0;\n margin: 0 !important;\n width: 100%;\n visibility: hidden;\n }\n .nf-field-description {\n width: 100%;\n order: 20;\n }\n .nf-field-element {\n width: 100%;\n }\n}\n\n/* ---------------------------------\nLABEL LEFT\n----------------------------------*/\n.label-left {\n .field-wrap {\n flex-direction: row;\n flex-wrap: wrap;\n }\n .nf-field-label {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding-right: 2%;\n text-align: right;\n width: 35%;\n order: 5;\n label {\n width: 100%;\n }\n }\n .nf-field-description {\n margin-left: 35%;\n }\n .nf-field-element {\n display: inline-block;\n width: 65%;\n order: 10;\n }\n .nf-after-field {\n margin-left: 36.5%;\n }\n}\n\n/* ---------------------------------\nLABEL RIGHT\n----------------------------------*/\n.label-right {\n .field-wrap {\n flex-direction: row;\n }\n .nf-field-label {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding-left: 2%;\n width: 35%;\n order: 10;\n }\n .nf-field-description {\n margin-right: 35%;\n order: 15;\n }\n .nf-field-element {\n display: inline-block;\n width: 65%;\n order: 5;\n }\n .checkbox-wrap {\n .nf-field-label {\n width: auto;\n }\n .nf-field-element {\n width: 20px;\n }\n }\n .nf-after-field {\n width: 65%;\n }\n}\n/* ---------------------------------\nADJUST SOME LABEL ABOVE & BELOW ISSUES\n----------------------------------*/\n.label-below,\n.label-above {\n .field-wrap {\n flex-direction: column;\n flex-flow: wrap;\n }\n .nf-field-element {\n margin: 0;\n width: 100%;\n }\n .checkbox-wrap {\n .nf-field-label {\n //margin: 0;\n }\n }\n}\n\n/* ---------------------------------\nADJUST SOME LABEL LEFT & RIGHT ISSUES\n----------------------------------*/\n.label-left,\n.label-right {\n .textarea-wrap,\n .listradio-wrap,\n .listcheckbox-wrap {\n .nf-field-label {\n align-items: flex-start;\n }\n }\n .textarea-wrap {\n .nf-field-label {\n margin-top: 5px;\n }\n }\n .html-wrap,\n .hr-wrap {\n display: block;\n .nf-field-element {\n display: block;\n margin: 0;\n width: 100%;\n }\n }\n}\n\n/* ---------------------------------\nFIELD DESCRIPTION POSITIONS\n----------------------------------*/\n",".nf-repeater-fieldsets{\n fieldset {\n margin-bottom: 1em;\n }\n}\n\n.nf-remove-fieldset {\n color: red;\n font-size: 1.5em;\n background-color: transparent;\n border: thin solid red;\n padding: 0.1em 0.4em;\n float: right;\n margin-top: -1em;\n}",".nf-help {\n background: none;\n}\n.nf-field-description {\n font-size: 14px;\n}\n.nf-form-content {\n padding: 5px;\n max-width: 1000px;\n margin: 0 auto;\n label {\n font-size: 18px;\n line-height: 20px;\n }\n .ninja-forms-field,\n .listselect-wrap .nf-field-element div {\n font-size: 16px;\n margin: 0;\n padding: 12px;\n }\n input.ninja-forms-field,\n select.ninja-forms-field:not([multiple]),\n .listselect-wrap .nf-field-element div {\n height: 50px;\n }\n textarea.ninja-forms-field {\n height: 200px;\n }\n hr.ninja-forms-field {\n padding: 0;\n }\n input[type=\"radio\"].ninja-forms-field,\n input[type=\"checkbox\"].ninja-forms-field {\n height: auto;\n }\n .listradio-wrap,\n .listcheckbox-wrap {\n li {\n margin-bottom: 12px !important;\n line-height: 0;\n }\n }\n .nf-product-field {\n &.ninja-forms-field {\n // background: transparent;\n // border: 0;\n // padding: 0;\n }\n span {\n padding-right: 16px;\n }\n .nf-field-qty {\n font-size: 16px;\n padding: 5px;\n width: 80px !important;\n }\n }\n .listselect-wrap,\n .liststate-wrap,\n .listcountry-wrap {\n select {\n //height: 50px;\n }\n }\n .nf-static {\n background: transparent;\n border: 0;\n font-weight: bold;\n padding: 0;\n }\n .label-above,\n .label-below,\n .label-hidden {\n .nf-field-label {\n margin-bottom: 10px;\n padding: 0;\n }\n }\n .label-below {\n .nf-field-label {\n margin-bottom: 0;\n margin-top: 10px;\n }\n }\n .label-right {\n .nf-field-label {\n margin: 0;\n }\n > input,\n textarea,\n select,\n .nf-product-field,\n .starrating,\n .nf-static,\n .pikaday__container {\n // margin-right: 1%;\n }\n > input[type=radio],\n input[type=checkbox] {\n margin-right: 1%;\n }\n ul {\n margin-right: 1%;\n }\n }\n .label-left {\n // > label {\n // margin: 0;\n // }\n // > input,\n // textarea,\n // select,\n // .pikaday__container {\n // // margin-left: 1%;\n // }\n // > input[type=radio],\n // input[type=checkbox] {\n // margin-left: 1%;\n // }\n // ul {\n // margin-left: 15px;\n // }\n }\n}\n","\n.nf-form-content {\n .list-select-wrap > div {\n position: relative;\n div {\n display: block;\n position: absolute;\n font-size: 16px;\n line-height: 16px;\n margin: 0;\n padding: 16px;\n height: 50px;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n &::after {\n content: \"\\f078\";\n font-family: FontAwesome;\n font-size: 20px;\n //font-weight: bold;\n //transform: rotate(90deg);\n position: absolute;\n right: 10px;\n bottom: 0;\n height: 50px;\n line-height: 50px;\n }\n }\n &.label-right {\n div {\n width: 59%;\n // &::after {\n // right: 20px;\n // }\n }\n }\n &.label-below {\n div {\n top: 0;\n bottom: auto;\n }\n }\n &.label-left {\n div {\n width: 59%;\n left: 40.5%;\n right: 40px;\n }\n }\n select {\n background: transparent;\n border: 0;\n appearance: none;\n position: relative;\n z-index: 2;\n }\n }\n .listmultiselect-wrap {\n select {\n appearance: normal;\n }\n }\n}\n",".checkbox-wrap,\n.listcheckbox-wrap {\n .nf-field-label,\n .nf-field-element {\n label {\n position: relative;\n margin-left: 30px;\n &::after {\n border: 1px solid;\n content: \"\";\n width: 18px;\n height: 18px;\n position: absolute;\n left: -28px;\n bottom: 0;\n }\n &::before {\n content: \"\\f00c\";\n font-family: FontAwesome;\n font-size: 24px;\n position: absolute;\n bottom: 0;\n opacity: 0;\n z-index: 2;\n }\n }\n }\n}\n.checkbox-container {\n .nf-field-element {\n input {\n display: none;\n }\n }\n &.label-above,\n &.label-below {\n // .nf-field-element {\n // input {\n // display: none;\n // }\n // }\n }\n &.label-above {\n label {\n height: 50px;\n margin: 0;\n display: block;\n &::before {\n left: -2px;\n bottom: -16px;\n }\n &::after {\n left: 0;\n bottom: -16px;\n }\n }\n }\n &.label-below {\n label {\n margin: 0;\n display: block;\n margin-top: 20px;\n &::before {\n left: -2px;\n bottom: auto;\n top: -27px;\n }\n &::after {\n left: 0;\n bottom: auto;\n top: -25px;\n }\n }\n }\n &.label-left {\n .nf-field-label {\n width: 38%;\n padding-right: 5%;\n }\n .nf-field-element {\n width: 58%;\n }\n label {\n margin: 0;\n display: block;\n &::before {\n left: auto;\n top: -2px;\n right: -36px;\n }\n &::after {\n left: auto;\n top: 0;\n right: -31px;\n }\n }\n }\n &.label-right {\n .nf-field-label {\n padding: 0;\n order: 10;\n }\n .nf-field-element {\n order: 5;\n display: none;\n }\n label {\n margin: 0 0 0 30px;\n display: block;\n &::before {\n left: -30px;\n top: 0;\n }\n &::after {\n left: -28px;\n top: 0;\n }\n }\n .field-wrap {\n display: flex;\n > div {\n width: 100%;\n }\n }\n label {\n &::after {\n // Commenting this line out to deal with checkbox list issues.\n // Leaving it in place because it may need to be re-visited in the future.\n //top: 2px !important;\n }\n }\n }\n &.label-hidden {\n label {\n height: 0;\n margin: 0;\n display: block;\n &::after {\n left: 0;\n bottom: 0;\n visibility: visible;\n }\n &.nf-checked-label {\n &::before {\n left: -2px;\n bottom: 0;\n visibility: visible;\n }\n }\n }\n }\n}\n.listcheckbox-container {\n .nf-field-label {\n label {\n &::after {\n background: transparent !important;\n border: 0;\n }\n }\n }\n .nf-field-element {\n input {\n display: none;\n }\n label {\n margin-left: 30px !important;\n &::before {\n top: 1px;\n left: -30px;\n bottom: auto;\n }\n &::after {\n top: 3px;\n bottom: auto;\n }\n }\n }\n &.label-above,\n &.label-below,\n &.label-right {\n .nf-field-label {\n label {\n margin: 0;\n &::before {\n left: -30px;\n }\n }\n }\n }\n}\n",".listradio-wrap {\n .nf-field-element {\n label {\n position: relative;\n margin-left: 30px !important;\n &::after {\n border-radius: 50%;\n content: \"\";\n width: 18px;\n height: 18px;\n position: absolute;\n left: -30px;\n bottom: 1px;\n top: .05em;\n }\n &.nf-checked-label {\n &::before {\n border-radius: 50%;\n content: \"\";\n height: 10px;\n width: 10px;\n position: absolute;\n left: -26px;\n bottom: 5px;\n z-index: 2;\n top: .25em;\n }\n }\n }\n input {\n display: none;\n }\n }\n}\n","input[type=checkbox].nf-toggle {\n background: transparent;\n border: 0;\n box-shadow: 0 0 0;\n margin: 10px;\n height: 18px;\n appearance: none;\n position: relative;\n cursor: pointer;\n &::after {\n background: #BCBDBF;\n border: 2px solid #BCBDBF;\n border-radius: 20px;\n content: \"\";\n position: absolute;\n top: -4px;\n left: -4px;\n width: 46px;\n height: 24px;\n transition: all 0.3s ease;\n }\n &::before {\n background: #fff;\n border-radius: 20px;\n content: \"\";\n position: absolute;\n top: -1px;\n left: 0;\n width: 18px;\n height: 18px;\n z-index: 99;\n transition: all 0.3s ease;\n }\n &:checked {\n &::after {\n background: lightgreen;\n border: 2px solid lightgreen;\n transition: all 0.3s ease;\n }\n &::before {\n top: -1px;\n left: 20px;\n transition: all 0.3s ease;\n }\n }\n .label-right & {\n padding: 0 50px 0 0;\n }\n .label-left & {\n padding: 0;\n margin-left: 22px;\n margin-top: 20px;\n }\n}\n",".nf-icons {\n .nf-field-element {\n position: relative;\n &::before {\n //border: 1px;\n font-family: FontAwesome;\n font-size: 20px;\n position: absolute;\n left: 1px;\n bottom: 1px;\n height: 48px;\n width: 50px;\n line-height: 50px;\n text-align: center;\n z-index: 1;\n }\n }\n .date-wrap,\n .number-wrap,\n .quantity-wrap,\n .email-wrap,\n .phone-wrap,\n .firstname-wrap,\n .lastname-wrap,\n .address-wrap,\n .city-wrap,\n .state-wrap,\n .zip-wrap,\n .creditcardfullname-wrap,\n .creditcardnumber-wrap,\n .creditcardcvc-wrap,\n .creditcardexpiration-wrap,\n .creditcardzip-wrap {\n .nf-field-element {\n input {\n padding-left: 60px;\n }\n }\n }\n &.right {\n .nf-field-element {\n &::before {\n left: auto;\n right: 1px;\n }\n }\n .date-wrap,\n .number-wrap,\n .quantity-wrap,\n .email-wrap,\n .phone-wrap,\n .firstname-wrap,\n .lastname-wrap,\n .address-wrap,\n .city-wrap,\n .state-wrap,\n .zip-wrap,\n .creditcardfullname-wrap,\n .creditcardnumber-wrap,\n .creditcardcvc-wrap,\n .creditcardexpiration-wrap,\n .creditcardzip-wrap {\n > div {\n input {\n padding-left: 12px;\n padding-right: 60px;\n }\n }\n }\n }\n .date-wrap .nf-field-element::before {\n content: \"\\f073\";\n }\n .number-wrap .nf-field-element::before,\n .quantity-wrap > div::before {\n content: \"\\f292\";\n }\n .email-wrap .nf-field-element::before {\n content: \"\\f0e0\";\n }\n .phone-wrap .nf-field-element::before {\n content: \"\\f095\";\n }\n .firstname-wrap .nf-field-element::before,\n .lastname-wrap .nf-field-element::before {\n content: \"\\f007\";\n }\n .address-wrap .nf-field-element::before,\n .city-wrap .nf-field-element::before,\n .state-wrap .nf-field-element::before,\n .zip-wrap .nf-field-element::before {\n content: \"\\f041\";\n }\n .creditcardfullname-wrap .nf-field-element::before,\n .creditcardnumber-wrap .nf-field-element::before,\n .creditcardcvc-wrap .nf-field-element::before,\n .creditcardexpiration-wrap .nf-field-element::before,\n .creditcardzip-wrap .nf-field-element::before {\n content: \"\\f283\";\n }\n}\n",".nf-form-content {\n input:not([type='button']),\n textarea,\n .list-select-wrap .nf-field-element > div {\n background: $field-background;\n border: 1px solid $field-border;\n border-radius: 0;\n box-shadow: none;\n color: $field-font;\n transition: all .5s;\n &:focus {\n background: $focus-background;\n border-color: $focus-border;\n //box-shadow: -3px 3px 10px #ccc;\n color: $focus-font;\n outline: none;\n transition: all .5s;\n }\n }\n input[type=\"submit\"],\n input[type=\"button\"],\n button {\n background: $accent;\n border: 0;\n color: $field-background;\n transition: all .5s;\n &:hover {\n background: $field-border;\n color: $field-font;\n transition: all .5s;\n }\n }\n select.ninja-forms-field {\n color: $field-font;\n &:focus {\n background: transparent;\n border: 0;\n box-shadow: none;\n outline: none;\n }\n }\n}\n\n.list-select-wrap {\n div {\n &::after {\n color: $field-font;\n transition: all .5s;\n }\n }\n select {\n &:active,\n &:focus {\n + div {\n background: $focus-background !important;\n border-color: $focus-border !important;\n transition: all .5s;\n }\n }\n }\n}\n\n.listradio-wrap {\n .nf-field-element {\n label {\n &::after {\n background: $field-background;\n border: 2px solid $field-border;\n transition: all .5s;\n }\n &.nf-checked-label {\n &::after {\n border-color: $selected-font;\n transition: all .5s;\n }\n &::before {\n background: $selected-font;\n }\n }\n }\n }\n}\n\n.checkbox-wrap,\n.listcheckbox-wrap {\n .nf-field-label,\n .nf-field-element {\n label {\n &::after {\n background: $field-background;\n border-color: $field-border;\n transition: all .5s;\n }\n &::before {\n color: $field-background;\n opacity: 0;\n transition: all .5s;\n }\n &.nf-checked-label {\n &::after {\n //background: $accent;\n border-color: $selected-border;\n transition: all .5s;\n }\n &::before {\n color: $selected-font;\n opacity: 100;\n transition: all .5s;\n }\n }\n }\n }\n}\n\n.nf-error {\n position: relative;\n .ninja-forms-field {\n border-color: #E80000 !important;\n transition: all .5s;\n }\n &.field-wrap {\n .nf-field-element::after {\n background: #E80000;\n color: #fff;\n font-family: FontAwesome;\n font-size: 20px;\n content: \"\\f12a\";\n position: absolute;\n top: 1px;\n right: 1px;\n bottom: 1px;\n height: 48px;\n width: 50px;\n line-height: 50px;\n text-align: center;\n transition: all .5s;\n }\n &.checkbox-wrap {\n .nf-field-element::after {\n display: none;\n }\n }\n }\n .nf-error-msg {\n color: #E80000;\n }\n}\n.checkbox-container {\n .nf-after-field .nf-error-msg {\n //text-align: left;\n }\n}\n.nf-pass {\n position: relative;\n .ninja-forms-field {\n border-color: green !important;\n transition: all .5s;\n }\n &.field-wrap {\n .nf-field-element::after {\n color: green;\n font-family: FontAwesome;\n font-size: 30px;\n content: \"\\f058\";\n position: absolute;\n top: 0;\n right: 16px;\n height: 50px;\n line-height: 50px;\n transition: all .5s;\n }\n &.checkbox-wrap {\n .nf-field-element::after {\n display: none;\n }\n }\n }\n // &.field-wrap::before {\n // border-color: green !important;\n // }\n}\n\n.nf-field-submit-error {\n border: 1px solid;\n margin: 10px 0px;\n padding: 15px 15px 15px 50px;\n position: relative;\n z-index: 1;\n &::after {\n content: \"\\f06a\";\n font-family: FontAwesome;\n font-size: 24px;\n position: absolute;\n top: 0;\n left: 15px;\n height: 50px;\n line-height: 50px;\n z-index: 2;\n }\n}\n\n.nf-field-submit-error {\n border-color: #D8000C;\n color: #D8000C;\n background-color: #FFBABA;\n}\n\n.nf-icons {\n .nf-field-element::before {\n background: $field-border;\n color: $field-background;\n }\n}\n\n.nf-help {\n color: $selected-font;\n}\n","@import \"display-structure\";\n\n@import \"op-spacing\";\n//@import \"op-columns\";\n@import \"op-select\";\n@import \"op-checkbox\";\n@import \"op-radio\";\n@import \"op-toggle\";\n@import \"op-icons\";\n\n/* ---------------------------------\nDEFAULT LIGHT COLORS\n----------------------------------*/\n$base: #f7f7f7;\n$accent: #333;\n@import \"op-variables-light\";\n@import \"op-color\";\n\n/* ---------------------------------\nLIGHT COLORS - nf-brown\n----------------------------------*/\n$base: #F3EFDD;\n$accent: #736628;\n@import \"op-variables-light\";\n.nf-brown {\n @import \"op-color\";\n}\n\n/* ---------------------------------\nLIGHT COLORS - nf-red\n----------------------------------*/\n$base: #F0E3E3;\n$accent: #8A5252;\n@import \"op-variables-light\";\n.nf-red {\n @import \"op-color\";\n}\n\n/* ---------------------------------\nLIGHT COLORS - nf-blue\n----------------------------------*/\n$base: #DFEFF5;\n$accent: #4F9DBF;\n@import \"op-variables-light\";\n.nf-blue {\n @import \"op-color\";\n}\n\n@import \"st-media-queries\";\n","$field-background: $base;\n$field-border: darken( $base, 20% );\n$field-font: darken( $base, 50% );\n\n$focus-background: lighten( $base, 10% );\n$focus-border: darken( $field-border, 20% );\n$focus-font: lighten( $field-font, 10% );\n\n$selected-background: lighten( $base, 10% );\n$selected-border: darken( $field-border, 5% );\n$selected-font: $accent;\n","@media only screen and (max-width: 800px) {\n .nf-field-container {\n .nf-field-label {\n margin-bottom: 10px !important;\n padding: 0;\n width: 100%;\n order: 5;\n label {\n text-align: left;\n }\n }\n .nf-field-description {\n margin: 0;\n width: 100%;\n order: 10;\n }\n .nf-field-element {\n width: 100%;\n order: 15;\n }\n .checkbox-wrap {\n .nf-field-label {\n width: auto;\n label {\n position: relative;\n margin-left: 30px;\n &::after {\n left: -28px;\n bottom: 0;\n }\n &::before {\n left: -30px;\n bottom: 0;\n }\n }\n }\n .nf-field-element {\n width: 20px;\n }\n }\n }\n .nf-form-cont {\n .five-sixths,\n .four-sixths,\n .one-fourth,\n .one-half,\n .one-sixth,\n .one-third,\n .three-fourths,\n .three-sixths,\n .two-fourths,\n .two-sixths,\n .two-thirds {\n clear: both;\n float: none;\n margin: 0;\n width: 100%;\n .inside {\n padding: 0;\n }\n }\n }\n}\n"]}
assets/css/display-opinions.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["op-spacing.scss","op-columns.scss","op-toggle.scss"],"names":[],"mappings":"AAAA,SACI,eAAgB,CACnB,AACD,sBACI,cAAe,CAClB,AACD,iBACI,YAAY,AACZ,iBAAiB,AACjB,aAAc,CAkHjB,AArHD,uBAKQ,eAAe,AACf,gBAAiB,CACpB,AAPL,4FAUQ,eAAe,AACf,SAAS,AACT,YAAa,CAChB,AAbL,2JAiBQ,WAAY,CACf,AAlBL,4CAoBQ,YAAa,CAChB,AArBL,sCAuBQ,SAAU,CACb,AAxBL,6GA2BQ,WAAY,CACf,AA5BL,2EAgCY,6BAA8B,AAC9B,aAAc,CACjB,AAlCT,wCA2CY,kBAAmB,CACtB,AA5CT,iDA8CY,eAAe,AACf,YAAY,AACZ,oBAAsB,CACzB,AAjDT,4BA2DQ,uBAAuB,AACvB,SAAS,AACT,gBAAiB,AACjB,SAAU,CACb,AA/DL,2IAoEY,mBAAmB,AACnB,SAAU,CACb,AAtET,8CA0EY,gBAAgB,AAChB,eAAgB,CACnB,AA5ET,8CAgFY,QAAS,CACZ,AAjFT,oIAgGY,eAAgB,CACnB,ACnGT,wIAWI,WAAc,AACd,WAAW,AACX,8BAA+B,CASlC,AAtBD,gOAeQ,YAAa,CAChB,AAhBL,0MAkBQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAGL,qCAGI,yBAA0B,CAC7B,AAED,uBAEI,yBAA0B,CAC7B,AAED,yBAEI,wBAAyB,CAC5B,AAED,YACI,yBAA0B,CAC7B,AAED,eACI,wBAAyB,CAC5B,AAED,WACI,wBAAyB,CAC5B,AAED,aACI,wBAAyB,CAC5B,AAED,OACI,WAAW,AACX,aAAc,CACjB,AC/DD,+BACI,uBAAuB,AACvB,SAAS,AACT,iBAAiB,AACjB,YAAY,AACZ,YAAY,AACZ,wBAAA,AAAgB,gBAAA,AAChB,kBAAkB,AAClB,cAAe,CA6ClB,AArDD,qCAUQ,mBAAmB,AACnB,yBAAyB,AACzB,mBAAmB,AACnB,WAAW,AACX,kBAAkB,AAClB,SAAS,AACT,UAAU,AACV,WAAW,AACX,YAAY,AACZ,wBAAyB,CAC5B,AApBL,sCAsBQ,gBAAgB,AAChB,mBAAmB,AACnB,WAAW,AACX,kBAAkB,AAClB,SAAS,AACT,OAAO,AACP,WAAW,AACX,YAAY,AACZ,WAAW,AACX,wBAAyB,CAC5B,AAhCL,6CAmCY,mBAAsB,AACtB,yBAA4B,AAC5B,wBAAyB,CAC5B,AAtCT,8CAwCY,SAAS,AACT,UAAU,AACV,wBAAyB,CAC5B,AAEL,4CACI,kBAAmB,CACtB,AACD,2CACI,UAAU,AACV,iBAAiB,AACjB,eAAgB,CACnB","file":"display-opinions.css","sourcesContent":[".nf-help {\r\n background: none;\r\n}\r\n.nf-field-description {\r\n font-size: 14px;\r\n}\r\n.nf-form-content {\r\n padding: 5px;\r\n max-width: 1000px;\r\n margin: 0 auto;\r\n label {\r\n font-size: 18px;\r\n line-height: 20px;\r\n }\r\n .ninja-forms-field,\r\n .listselect-wrap .nf-field-element div {\r\n font-size: 16px;\r\n margin: 0;\r\n padding: 12px;\r\n }\r\n input.ninja-forms-field,\r\n select.ninja-forms-field:not([multiple]),\r\n .listselect-wrap .nf-field-element div {\r\n height: 50px;\r\n }\r\n textarea.ninja-forms-field {\r\n height: 200px;\r\n }\r\n hr.ninja-forms-field {\r\n padding: 0;\r\n }\r\n input[type=\"radio\"].ninja-forms-field,\r\n input[type=\"checkbox\"].ninja-forms-field {\r\n height: auto;\r\n }\r\n .listradio-wrap,\r\n .listcheckbox-wrap {\r\n li {\r\n margin-bottom: 12px !important;\r\n line-height: 0;\r\n }\r\n }\r\n .nf-product-field {\r\n &.ninja-forms-field {\r\n // background: transparent;\r\n // border: 0;\r\n // padding: 0;\r\n }\r\n span {\r\n padding-right: 16px;\r\n }\r\n .nf-field-qty {\r\n font-size: 16px;\r\n padding: 5px;\r\n width: 80px !important;\r\n }\r\n }\r\n .listselect-wrap,\r\n .liststate-wrap,\r\n .listcountry-wrap {\r\n select {\r\n //height: 50px;\r\n }\r\n }\r\n .nf-static {\r\n background: transparent;\r\n border: 0;\r\n font-weight: bold;\r\n padding: 0;\r\n }\r\n .label-above,\r\n .label-below,\r\n .label-hidden {\r\n .nf-field-label {\r\n margin-bottom: 10px;\r\n padding: 0;\r\n }\r\n }\r\n .label-below {\r\n .nf-field-label {\r\n margin-bottom: 0;\r\n margin-top: 10px;\r\n }\r\n }\r\n .label-right {\r\n .nf-field-label {\r\n margin: 0;\r\n }\r\n > input,\r\n textarea,\r\n select,\r\n .nf-product-field,\r\n .starrating,\r\n .nf-static,\r\n .pikaday__container {\r\n // margin-right: 1%;\r\n }\r\n > input[type=radio],\r\n input[type=checkbox] {\r\n margin-right: 1%;\r\n }\r\n ul {\r\n margin-right: 1%;\r\n }\r\n }\r\n .label-left {\r\n // > label {\r\n // margin: 0;\r\n // }\r\n // > input,\r\n // textarea,\r\n // select,\r\n // .pikaday__container {\r\n // // margin-left: 1%;\r\n // }\r\n // > input[type=radio],\r\n // input[type=checkbox] {\r\n // margin-left: 1%;\r\n // }\r\n // ul {\r\n // margin-left: 15px;\r\n // }\r\n }\r\n}\r\n","/* Column Classes\r\n Link: http://twitter.github.io/bootstrap/assets/css/bootstrap-responsive.css\r\n--------------------------------------------- */\r\n\r\n.five-sixths,\r\n.four-sixths,\r\n.one-fourth,\r\n.one-half,\r\n.one-sixth,\r\n.one-third,\r\n.three-fourths,\r\n.three-sixths,\r\n.two-fourths,\r\n.two-sixths,\r\n.two-thirds {\r\n clear: initial;\r\n float: left;\r\n margin-left: 2.564102564102564%;\r\n .inside {\r\n padding: 20px;\r\n }\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n}\r\n\r\n.one-half,\r\n.three-sixths,\r\n.two-fourths {\r\n width: 48.717948717948715%;\r\n}\r\n\r\n.one-third,\r\n.two-sixths {\r\n width: 31.623931623931625%;\r\n}\r\n\r\n.four-sixths,\r\n.two-thirds {\r\n width: 65.81196581196582%;\r\n}\r\n\r\n.one-fourth {\r\n width: 23.076923076923077%;\r\n}\r\n\r\n.three-fourths {\r\n width: 74.35897435897436%;\r\n}\r\n\r\n.one-sixth {\r\n width: 14.52991452991453%;\r\n}\r\n\r\n.five-sixths {\r\n width: 82.90598290598291%;\r\n}\r\n\r\n.first {\r\n clear: both;\r\n margin-left: 0;\r\n}\r\n","input[type=checkbox].nf-toggle {\r\n background: transparent;\r\n border: 0;\r\n box-shadow: 0 0 0;\r\n margin: 10px;\r\n height: 18px;\r\n appearance: none;\r\n position: relative;\r\n cursor: pointer;\r\n &::after {\r\n background: #BCBDBF;\r\n border: 2px solid #BCBDBF;\r\n border-radius: 20px;\r\n content: \"\";\r\n position: absolute;\r\n top: -4px;\r\n left: -4px;\r\n width: 46px;\r\n height: 24px;\r\n transition: all 0.3s ease;\r\n }\r\n &::before {\r\n background: #fff;\r\n border-radius: 20px;\r\n content: \"\";\r\n position: absolute;\r\n top: -1px;\r\n left: 0;\r\n width: 18px;\r\n height: 18px;\r\n z-index: 99;\r\n transition: all 0.3s ease;\r\n }\r\n &:checked {\r\n &::after {\r\n background: lightgreen;\r\n border: 2px solid lightgreen;\r\n transition: all 0.3s ease;\r\n }\r\n &::before {\r\n top: -1px;\r\n left: 20px;\r\n transition: all 0.3s ease;\r\n }\r\n }\r\n .label-right & {\r\n padding: 0 50px 0 0;\r\n }\r\n .label-left & {\r\n padding: 0;\r\n margin-left: 22px;\r\n margin-top: 20px;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["op-spacing.scss","op-columns.scss","op-toggle.scss"],"names":[],"mappings":"AAAA,SACI,eAAgB,CACnB,AACD,sBACI,cAAe,CAClB,AACD,iBACI,YAAY,AACZ,iBAAiB,AACjB,aAAc,CAkHjB,AArHD,uBAKQ,eAAe,AACf,gBAAiB,CACpB,AAPL,4FAUQ,eAAe,AACf,SAAS,AACT,YAAa,CAChB,AAbL,2JAiBQ,WAAY,CACf,AAlBL,4CAoBQ,YAAa,CAChB,AArBL,sCAuBQ,SAAU,CACb,AAxBL,6GA2BQ,WAAY,CACf,AA5BL,2EAgCY,6BAA8B,AAC9B,aAAc,CACjB,AAlCT,wCA2CY,kBAAmB,CACtB,AA5CT,iDA8CY,eAAe,AACf,YAAY,AACZ,oBAAsB,CACzB,AAjDT,4BA2DQ,uBAAuB,AACvB,SAAS,AACT,gBAAiB,AACjB,SAAU,CACb,AA/DL,2IAoEY,mBAAmB,AACnB,SAAU,CACb,AAtET,8CA0EY,gBAAgB,AAChB,eAAgB,CACnB,AA5ET,8CAgFY,QAAS,CACZ,AAjFT,oIAgGY,eAAgB,CACnB,ACnGT,wIAWI,WAAc,AACd,WAAW,AACX,8BAA+B,CASlC,AAtBD,gOAeQ,YAAa,CAChB,AAhBL,0MAkBQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAGL,qCAGI,yBAA0B,CAC7B,AAED,uBAEI,yBAA0B,CAC7B,AAED,yBAEI,wBAAyB,CAC5B,AAED,YACI,yBAA0B,CAC7B,AAED,eACI,wBAAyB,CAC5B,AAED,WACI,wBAAyB,CAC5B,AAED,aACI,wBAAyB,CAC5B,AAED,OACI,WAAW,AACX,aAAc,CACjB,AC/DD,+BACI,uBAAuB,AACvB,SAAS,AACT,iBAAiB,AACjB,YAAY,AACZ,YAAY,AACZ,wBAAA,AAAgB,gBAAA,AAChB,kBAAkB,AAClB,cAAe,CA6ClB,AArDD,qCAUQ,mBAAmB,AACnB,yBAAyB,AACzB,mBAAmB,AACnB,WAAW,AACX,kBAAkB,AAClB,SAAS,AACT,UAAU,AACV,WAAW,AACX,YAAY,AACZ,wBAAyB,CAC5B,AApBL,sCAsBQ,gBAAgB,AAChB,mBAAmB,AACnB,WAAW,AACX,kBAAkB,AAClB,SAAS,AACT,OAAO,AACP,WAAW,AACX,YAAY,AACZ,WAAW,AACX,wBAAyB,CAC5B,AAhCL,6CAmCY,mBAAsB,AACtB,yBAA4B,AAC5B,wBAAyB,CAC5B,AAtCT,8CAwCY,SAAS,AACT,UAAU,AACV,wBAAyB,CAC5B,AAEL,4CACI,kBAAmB,CACtB,AACD,2CACI,UAAU,AACV,iBAAiB,AACjB,eAAgB,CACnB","file":"display-opinions.css","sourcesContent":[".nf-help {\n background: none;\n}\n.nf-field-description {\n font-size: 14px;\n}\n.nf-form-content {\n padding: 5px;\n max-width: 1000px;\n margin: 0 auto;\n label {\n font-size: 18px;\n line-height: 20px;\n }\n .ninja-forms-field,\n .listselect-wrap .nf-field-element div {\n font-size: 16px;\n margin: 0;\n padding: 12px;\n }\n input.ninja-forms-field,\n select.ninja-forms-field:not([multiple]),\n .listselect-wrap .nf-field-element div {\n height: 50px;\n }\n textarea.ninja-forms-field {\n height: 200px;\n }\n hr.ninja-forms-field {\n padding: 0;\n }\n input[type=\"radio\"].ninja-forms-field,\n input[type=\"checkbox\"].ninja-forms-field {\n height: auto;\n }\n .listradio-wrap,\n .listcheckbox-wrap {\n li {\n margin-bottom: 12px !important;\n line-height: 0;\n }\n }\n .nf-product-field {\n &.ninja-forms-field {\n // background: transparent;\n // border: 0;\n // padding: 0;\n }\n span {\n padding-right: 16px;\n }\n .nf-field-qty {\n font-size: 16px;\n padding: 5px;\n width: 80px !important;\n }\n }\n .listselect-wrap,\n .liststate-wrap,\n .listcountry-wrap {\n select {\n //height: 50px;\n }\n }\n .nf-static {\n background: transparent;\n border: 0;\n font-weight: bold;\n padding: 0;\n }\n .label-above,\n .label-below,\n .label-hidden {\n .nf-field-label {\n margin-bottom: 10px;\n padding: 0;\n }\n }\n .label-below {\n .nf-field-label {\n margin-bottom: 0;\n margin-top: 10px;\n }\n }\n .label-right {\n .nf-field-label {\n margin: 0;\n }\n > input,\n textarea,\n select,\n .nf-product-field,\n .starrating,\n .nf-static,\n .pikaday__container {\n // margin-right: 1%;\n }\n > input[type=radio],\n input[type=checkbox] {\n margin-right: 1%;\n }\n ul {\n margin-right: 1%;\n }\n }\n .label-left {\n // > label {\n // margin: 0;\n // }\n // > input,\n // textarea,\n // select,\n // .pikaday__container {\n // // margin-left: 1%;\n // }\n // > input[type=radio],\n // input[type=checkbox] {\n // margin-left: 1%;\n // }\n // ul {\n // margin-left: 15px;\n // }\n }\n}\n","/* Column Classes\n Link: http://twitter.github.io/bootstrap/assets/css/bootstrap-responsive.css\n--------------------------------------------- */\n\n.five-sixths,\n.four-sixths,\n.one-fourth,\n.one-half,\n.one-sixth,\n.one-third,\n.three-fourths,\n.three-sixths,\n.two-fourths,\n.two-sixths,\n.two-thirds {\n clear: initial;\n float: left;\n margin-left: 2.564102564102564%;\n .inside {\n padding: 20px;\n }\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n}\n\n.one-half,\n.three-sixths,\n.two-fourths {\n width: 48.717948717948715%;\n}\n\n.one-third,\n.two-sixths {\n width: 31.623931623931625%;\n}\n\n.four-sixths,\n.two-thirds {\n width: 65.81196581196582%;\n}\n\n.one-fourth {\n width: 23.076923076923077%;\n}\n\n.three-fourths {\n width: 74.35897435897436%;\n}\n\n.one-sixth {\n width: 14.52991452991453%;\n}\n\n.five-sixths {\n width: 82.90598290598291%;\n}\n\n.first {\n clear: both;\n margin-left: 0;\n}\n","input[type=checkbox].nf-toggle {\n background: transparent;\n border: 0;\n box-shadow: 0 0 0;\n margin: 10px;\n height: 18px;\n appearance: none;\n position: relative;\n cursor: pointer;\n &::after {\n background: #BCBDBF;\n border: 2px solid #BCBDBF;\n border-radius: 20px;\n content: \"\";\n position: absolute;\n top: -4px;\n left: -4px;\n width: 46px;\n height: 24px;\n transition: all 0.3s ease;\n }\n &::before {\n background: #fff;\n border-radius: 20px;\n content: \"\";\n position: absolute;\n top: -1px;\n left: 0;\n width: 18px;\n height: 18px;\n z-index: 99;\n transition: all 0.3s ease;\n }\n &:checked {\n &::after {\n background: lightgreen;\n border: 2px solid lightgreen;\n transition: all 0.3s ease;\n }\n &::before {\n top: -1px;\n left: 20px;\n transition: all 0.3s ease;\n }\n }\n .label-right & {\n padding: 0 50px 0 0;\n }\n .label-left & {\n padding: 0;\n margin-left: 22px;\n margin-top: 20px;\n }\n}\n"]}
assets/css/display-structure.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["st-defaults.scss","editor.scss","st-loading.scss","st-label-positions.scss","repeater-field.scss"],"names":[],"mappings":"AAIA,sFAKI,0BAA0B,AAC1B,qBAAsB,CACzB,AAED,iBACI,YAAa,CAChB,AAED,gDAEI,WAAW,AACX,kBAAkB,AAClB,kBAAmB,CAmBtB,AAvBD,4DAMQ,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AATL,4JAYQ,SAAS,AACT,WAAY,CAIf,AAjBL,0UAoBY,YAAa,CAChB,AAIT,sBAEQ,gBAAiB,AACjB,SAAS,AACT,SAAU,CACb,AAEL,kBACI,iBAAkB,CAYrB,AAbD,4EAKQ,SAAS,AACT,WAAW,AACX,YAAY,AACZ,sBAAuB,CAC1B,AATL,2BAWQ,YAAa,CAChB,AAEL,mCAEQ,QAAS,CACZ,AAEL,SACI,+CAAmD,AACnD,qBAAqB,AACrB,WAAW,AACX,WAAY,CACf,AAED,gBACI,eAAe,AACf,cAAe,CAClB,AACD,WACI,cAAe,CAClB,AACD,8BAEQ,iBAAkB,CAErB,AAaL,0OAKY,0BAA2B,AAC3B,mBAAoB,AACpB,mBAAqB,CAIxB,AAXT,8QASgB,gBAAiB,CACpB,AAVb,qHAaY,kBAAkB,AAClB,yBAA0B,AAC1B,uBAA+B,CAclC,AA7BT,uIAkBgB,cAAc,AACd,WAAc,AAEd,WAAW,AACX,iBAAkB,CACrB,AAvBb,uIAyBgB,qBAAsB,AACtB,WAAW,AACX,gBAAiB,CACpB,AAKb,mBAEQ,WAAW,AACX,YAAY,AACZ,wBAAA,AAAoB,mBAAA,CAmBvB,AAvBL,yBAMY,YAAY,AAGZ,4BAAyB,CAU5B,AAnBT,0CAagB,yBAAqB,AACrB,kBAAmB,CACtB,AAfb,6BAiBgB,aAAc,CACjB,AAlBb,yBAqBY,YAAa,CAChB,AAOT,wBAGY,oBAAsB,CACzB,AAJT,yCAOgB,aAAc,CACjB,AAQb,uBACI,eAAgB,CACnB,AAMD,YACI,kBAAkB,AAClB,iBAAkB,CACrB,AAKD,0BAEQ,YAAa,CAChB,AAQL,sCAEI,aAAc,CACjB,AACD,2EAOgB,wBAAyB,CAC5B,AAIb,uBACI,YAAa,CAChB,AAED,8BACI,mBAAmB,AACnB,uBAAuB,AACvB,WAAW,AACX,cAAc,AACd,eAAe,AACf,cAAc,AACd,aAAa,AACb,iBAAkB,CACrB,AAKD,oBAGY,WAAW,AACX,SACJ,CAAC,AAGT,sBAGY,WAAW,AACX,YACJ,CAAC,AAGT,qBAGY,WAAW,AACX,SACJ,CAAC,AAGT,qBAGY,WAAW,AACX,SACJ,CAAC,AAGT,oBAGY,WAAW,AACX,YACJ,CAAC,AAKT,iBAEQ,sBAAuB,CAC1B,AAML,kSAYQ,WAAc,AACd,WAAW,AACX,8BAA+B,CASlC,AAvBL,0XAgBY,YAAa,CAChB,AAjBT,oWAmBY,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AAtBT,+EA4BQ,yBAA0B,CAC7B,AA7BL,mDAiCQ,yBAA0B,CAC7B,AAlCL,qDAsCQ,wBAAyB,CAC5B,AAvCL,0BA0CQ,yBAA0B,CAC7B,AA3CL,6BA8CQ,wBAAyB,CAC5B,AA/CL,yBAkDQ,wBAAyB,CAC5B,AAnDL,2BAsDQ,wBAAyB,CAC5B,AAvDL,qBA0DQ,WAAW,AACX,aAAc,CACjB,AC7VL,cACI,sBAAwB,CAC3B,AACD,2BAEM,kBAAoB,CAkEvB,AApEH,+CAKc,WAAW,AACX,WAAW,AACX,aAAc,CACjB,AARX,0CAWU,mBAAmB,AACnB,yBAAyB,AACzB,aAAc,CAcjB,AA3BP,4CAec,cAAe,CAClB,AAhBX,6CAkBc,qBAAqB,AACrB,eAAgB,CACnB,AApBX,mDAuBkB,sBAAsB,AACtB,UAAW,CACd,AAzBf,kCA6BU,YAAa,CAChB,AA9BP,sCAgCU,UAAW,CAId,AApCP,iDAkCc,WAAY,CACf,AAnCX,gCAsCU,mBAAmB,AACnB,SAAS,AACT,kBAAkB,AAClB,WAAW,AACX,eAAe,AACf,iBAAiB,AACjB,eAAgB,CASnB,AArDP,yCA8Cc,uBAAuB,AACvB,UAAW,CAKd,AApDX,qDAiDkB,mBAAmB,AACnB,UAAW,CACd,AAnDf,+CAuDQ,YAAY,AACZ,WAAW,AACX,WAAY,CACb,AA1DP,4CA4DQ,kBAAkB,AAClB,qBAAqB,AACrB,KAAM,CAKP,AAnEP,kDAgEY,WAAW,AACX,OAAQ,CACT,AAlEX,uBAsEI,kBAAkB,AAClB,aAAa,AACb,cAAc,AACd,sDAA2D,AAC3D,eAAe,AACf,kBAAkB,AAClB,gBAAmB,AACnB,uBAAuB,AACvB,gBAAgB,AAChB,iBAAiB,AACjB,qBAAqB,AACrB,iBAAiB,AACjB,oBAAoB,AACpB,sBAAsB,AACtB,kBAAkB,AAClB,oBAAoB,AACpB,iBAAiB,AACjB,mBAAmB,AACnB,wBAAwB,AACxB,UAAU,AAEV,eAAgB,CACjB,AA5FH,0BA8FI,yBAAyB,AACzB,UAAW,CACZ,AAhGH,2BAkGI,cAAc,AACd,eAAgB,CACjB,AApGH,6BAsGI,cAAc,AACd,eAAgB,CACjB,AAxGH,8BA0GI,cAAc,AACd,cAAe,CAChB,AA5GH,4BA8GI,cAAc,AACd,gBAAiB,CAClB,AAhHH,6BAkHI,gBAAgB,AAChB,gBAAgB,AAChB,WAAW,AACX,kBAAkB,AAClB,sBAAsB,AACtB,iBAAkB,CACnB,AAxHH,6BA0HI,kBAAkB,AAClB,QAAQ,AACR,SAAS,AACT,yBAAyB,AACzB,kBAAmB,CACpB,AA/HH,0CAiII,SAAS,AACT,SAAS,AACT,iBAAiB,AACjB,uBAAuB,AACvB,qBAAsB,CACvB,AAtIH,+CAwII,UAAU,AACV,SAAS,AACT,mBAAmB,AACnB,uBAAuB,AACvB,qBAAsB,CACvB,AA7IH,gDA+II,SAAS,AACT,SAAS,AACT,mBAAmB,AACnB,uBAAuB,AACvB,qBAAsB,CACvB,AApJH,4CAsJI,QAAQ,AACR,OAAO,AACP,gBAAgB,AAChB,2BAA2B,AAC3B,uBAAwB,CACzB,AA3JH,2CA6JI,QAAQ,AACR,QAAQ,AACR,gBAAgB,AAChB,2BAA2B,AAC3B,sBAAuB,CACxB,AAlKH,6CAoKI,MAAM,AACN,SAAS,AACT,iBAAiB,AACjB,uBAAuB,AACvB,wBAAyB,CAC1B,AAzKH,kDA2KI,MAAM,AACN,UAAU,AACV,gBAAgB,AAChB,uBAAuB,AACvB,wBAAyB,CAC1B,AAhLH,mDAkLI,MAAM,AACN,SAAS,AACT,gBAAgB,AAChB,uBAAuB,AACvB,wBAAyB,CAC1B,AAvLH,6BAyLI,kBAAkB,AAGlB,aAAa,AACb,aAAa,AACb,WAAW,AACX,gBAAgB,AAChB,cAAc,AACd,eAAe,AACf,eAAe,AACf,gBAAgB,AAChB,gBAAgB,AAChB,sBAAsB,AAEd,4BAA4B,AACpC,sBAAsB,AACtB,iCAAoC,AACpC,kBAAkB,AAEV,sCAA0C,CACnD,AA7MH,wCA+MI,QAAQ,AACR,SAAU,CACX,AAjNH,sCAmNI,WAAW,AACX,aAAa,AACb,gBAAgB,AAChB,wBAAyB,CAC1B,AAvNH,kCAyNI,cAAc,AACd,iBAAiB,AACjB,WAAW,AACX,gBAAmB,AACnB,uBAAuB,AACvB,WAAW,AACX,kBAAmB,CACpB,AAhOH,gFAmOI,cAAc,AACd,qBAAqB,AACrB,wBAAyB,CAC1B,AAtOH,iIA0OI,WAAW,AACX,qBAAqB,AACrB,yBAAyB,AACzB,SAAU,CACX,AA9OH,uIAkPI,UAAW,CACZ,AAnPH,8FAsPI,qBAAqB,AACrB,mBAAmB,AACnB,6BAA6B,AAC7B,sBAAsB,AACtB,kEAAmE,CACpE,AA3PH,mCA6PI,aAAc,CACf,AA9PH,sBAgQI,SAAU,CACX,AAjQH,mCAmQI,QAAQ,AACR,SAAU,CACX,AArQH,kCAuQI,WAAW,AACX,MAAO,CACR,AAzQH,+BA2QI,cAAc,AACd,iBAAiB,AACjB,eAAe,AACf,uBAAuB,AACvB,WAAW,AACX,kBAAmB,CACpB,AAjRH,iCAmRI,eAAe,AACf,MAAM,AACN,QAAQ,AACR,SAAS,AACT,OAAO,AACP,WAAY,CACb,AAzRH,yCA2RI,QAAQ,AACR,SAAU,CACX,AA7RH,iFAgSI,WAAW,AACX,aAAa,AACb,yBAAyB,AACzB,yBAA2B,CAC5B,AApSH,iGAuSI,SAAS,AACT,YAAY,AACZ,iBAAkB,CACnB,AACD,yBA3SF,2CA6SM,QAAQ,AACR,SAAU,CACX,AA/SL,gDAiTM,WAAW,AACX,MAAO,CACR,CAAA,AAnTL,6DAsTI,SAAU,CACX,AAvTH,qHAyTI,SAAS,AACT,SAAU,CAKX,AA/TH,uCAiUI,gBAAgB,AAChB,yBAAyB,AACzB,yBAA0B,CAC3B,AACD,yBArUF,+CAuUM,gBAAgB,AAChB,WAAW,AACX,WAAW,AACX,aAAa,AACb,6BAA6B,AAC7B,SAAS,AAED,eAAgB,CACzB,AA/UL,oHAkVM,yBAA0B,CAC3B,AAnVL,oDAqVM,gBAAiB,CAClB,AAtVL,oHAyVM,qBAAsB,CACvB,CAAA,AA1VL,4CA6VI,aAAa,AACb,yBAAyB,AACzB,yBAA0B,CAC3B,AAhWH,iEAkWI,gBAAgB,AAChB,2BAA2B,AAC3B,4BAA4B,AAC5B,6BAA6B,AAC7B,2BAA4B,CAC7B,AACD,yBAxWF,oEA0WM,UAAW,CACZ,AA3WL,oJA8WM,WAAW,AACX,4BAA6B,CAC9B,AAhXL,uOAoXM,WAAW,AACX,wBAAyB,CAC1B,AAtXL,6OA0XM,WAAW,AACX,4BAA6B,CAC9B,CAAA,AAEH,yBA9XF,gFAgYM,oBAAqB,CACtB,AAjYL,wEAmYM,wBAAyB,CAC1B,AApYL,oEAsYM,aAAc,CACf,AAvYL,oJA0YM,WAAW,AACX,4BAA6B,CAC9B,AA5YL,uOAgZM,WAAW,AACX,wBAAyB,CAC1B,AAlZL,6OAsZM,WAAW,AACX,4BAA6B,CAC9B,CAAA,AC3ZL,oBACE,WAAW,AACX,YAAY,AACZ,kBAAkB,AAClB,mCAAsC,AAEtC,mBAAmB,AACnB,+CAAgD,CACjD,AAUD,uBACE,GACE,kBAAmB,CAAA,AACnB,GACE,mBAAqB,AACrB,SAAU,CAAA,CAAA,ACpBhB,YACI,oBAAA,AAAa,YAAA,CAyBhB,AA1BD,kBAIQ,aAAc,CACjB,AALL,4HAWQ,UAAW,CACd,AAZL,sHAmBQ,UAAW,CACd,AAQL,gBACI,iBAAA,AAAQ,OAAA,CACX,AACD,sBACI,WAAW,AACX,kBAAA,AAAS,QAAA,CACZ,AACD,kBACI,kBAAA,AAAS,QAAA,CACZ,AAMD,6BAEQ,kBAAmB,CACtB,AAML,6BAEQ,gBAAgB,AAChB,kBAAA,AAAS,QAAA,CACZ,AAJL,+BAMQ,iBAAA,AAAQ,OAAA,CACX,AAML,0BAEQ,mBAAA,AAAe,cAAA,CAClB,AAHL,8BAKQ,SAAS,AACT,mBAAoB,AACpB,WAAW,AACX,iBAAkB,CACrB,AATL,oCAWQ,WAAW,AACX,kBAAA,AAAS,QAAA,CACZ,AAbL,gCAeQ,UAAW,CACd,AAML,wBAEQ,uBAAA,AAAmB,mBAAA,AACnB,mBAAA,AAAe,cAAA,CAClB,AAJL,4BAMQ,oBAAA,AAAa,aAAA,AACb,uBAAA,AAAmB,mBAAA,AACnB,sBAAA,AAAmB,mBAAA,AACnB,iBAAiB,AACjB,iBAAiB,AACjB,UAAU,AACV,iBAAA,AAAQ,OAAA,CAIX,AAhBL,kCAcY,UAAW,CACd,AAfT,kCAkBQ,eAAgB,CACnB,AAnBL,8BAqBQ,qBAAqB,AACrB,UAAU,AACV,kBAAA,AAAS,QAAA,CACZ,AAxBL,4BA0BQ,iBAAkB,CACrB,AAML,sDAEQ,uBAAA,AAAmB,kBAAA,CAF3B,AAWK,6BANG,oBAAA,AAAa,aAAA,AAEb,sBAAA,AAAmB,mBAAA,AACnB,gBAAgB,AAChB,UAAU,AACV,kBAAA,AAAS,QAAA,CACZ,AAXL,mCAaQ,iBAAiB,AACjB,kBAAA,AAAS,QAAA,CACZ,AAfL,+BAiBQ,qBAAqB,AACrB,UAAU,AACV,iBAAA,AAAQ,OAAA,CACX,AApBL,4CAuBY,UAAW,CACd,AAxBT,8CA0BY,UAAW,CACd,AA3BT,6BA8BQ,SAAU,CACb,AAKL,kDAGQ,0BAAA,AAAsB,sBAAA,AACtB,mBAAA,AAAe,cAAA,CAClB,AALL,8DAOQ,SAAS,AACT,UAAW,CACd,AAWL,+QAMY,qBAAA,AAAuB,sBAAA,CAC1B,AAPT,uFAWY,cAAe,CAClB,AAZT,0FAgBQ,aAAc,CAMjB,AAtBL,kKAkBY,cAAc,AACd,SAAS,AACT,UAAW,CACd,ACxMT,gCAEQ,iBAAkB,CACrB,AAGL,oBACI,UAAU,AACV,gBAAgB,AAChB,6BAA6B,AAC7B,sBAAsB,AACtB,oBAAoB,AACpB,YAAY,AACZ,eAAgB,CACnB","file":"display-structure.css","sourcesContent":["/*\r\n * Ninja Forms - Form Display Structure\r\n */\r\n\r\n.ninja-forms-form-wrap *,\r\n.ninja-forms-form-wrap *:after,\r\n.ninja-forms-form-wrap *:before {\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n -ms-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n\r\n.nf-response-msg {\r\n display: none;\r\n}\r\n\r\n.nf-field-container,\r\n#ninja_forms_required_items {\r\n clear: both;\r\n position: relative;\r\n margin-bottom: 25px;\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n &.hidden-container,\r\n &.hr-container {\r\n margin: 0;\r\n height: auto;\r\n .nf-field-label {\r\n display: none;\r\n }\r\n }\r\n &.html-container {\r\n .nf-field-label {\r\n display: none;\r\n }\r\n }\r\n}\r\n\r\n.nf-field-label {\r\n label {\r\n font-weight: bold;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n}\r\n.nf-field-element {\r\n position: relative;\r\n input,\r\n select,\r\n textarea {\r\n margin: 0;\r\n width: auto;\r\n height: auto;\r\n vertical-align: inherit;\r\n }\r\n textarea {\r\n height: 200px;\r\n }\r\n}\r\n.nf-field-description {\r\n p:last-child {\r\n margin: 0;\r\n }\r\n}\r\n.nf-help {\r\n background: url( '../img/help-info.png' ) no-repeat;\r\n display: inline-block;\r\n width: 16px;\r\n height: 16px;\r\n}\r\n\r\n.nf-input-limit {\r\n font-size: 12px;\r\n margin-top: 5px;\r\n}\r\n.nf-static {\r\n padding: 0 10px;\r\n}\r\n.nf-after-field {\r\n .nf-error-msg {\r\n margin-right: 10px;\r\n //text-align: right;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nCHECKBOX FIELD\r\n----------------------------------*/\r\n\r\n\r\n\r\n/* ---------------------------------\r\nRADIO & CHECKBOX LISTS\r\n----------------------------------*/\r\n\r\n.list-radio-wrap,\r\n.list-checkbox-wrap,\r\n.list-image-wrap {\r\n .nf-field-element {\r\n ul, li {\r\n list-style: none !important;\r\n margin: 0 !important;\r\n padding: 0 !important;\r\n input {\r\n margin-right: 5px;\r\n }\r\n }\r\n li {\r\n padding-left: 10px;\r\n margin: 0 0 5px !important;\r\n text-indent: initial !important;\r\n label {\r\n //display: inline;\r\n display: block;\r\n float: initial;\r\n //margin: 0;\r\n width: auto;\r\n margin-left: 1.5em;\r\n }\r\n input {\r\n width: auto !important;\r\n float: left;\r\n margin-top: .25em;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.listimage-wrap {\r\n li {\r\n width: 100%;\r\n height: 100%;\r\n display: inline-grid;\r\n label {\r\n padding: 5px;\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: transparent;\r\n &.nf-checked-label {\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: #007acc;\r\n transition: all .5s;\r\n }\r\n img {\r\n display: block;\r\n }\r\n }\r\n input {\r\n display: none;\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nPRODUCT FIELD\r\n----------------------------------*/\r\n.product-wrap {\r\n > div {\r\n input {\r\n width: 80px !important;\r\n }\r\n .nf-product-field {\r\n span {\r\n padding: 0 5px;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nSTAR RATING\r\n----------------------------------*/\r\n.starrating-wrap .star {\r\n border-bottom: 0;\r\n}\r\n\r\n/* ---------------------------------\r\nHONEYPOT\r\n----------------------------------*/\r\n\r\n.nf-form-hp {\r\n position: absolute;\r\n visibility: hidden;\r\n}\r\n\r\n/* ---------------------------------\r\nSELECT LIST\r\n----------------------------------*/\r\n.list-select-wrap {\r\n div div {\r\n display: none;\r\n }\r\n}\r\n\r\n\r\n/* ---------------------------------\r\nCOLORS\r\nAs minimal as possible\r\n----------------------------------*/\r\n.ninja-forms-req-symbol,\r\n.nf-error-msg {\r\n color: #E80000;\r\n}\r\n.nf-error {\r\n .ninja-forms-field {\r\n border: 1px solid #E80000;\r\n }\r\n &.listimage-wrap {\r\n .nf-field-element {\r\n ul {\r\n border: 1px solid #E80000;\r\n }\r\n }\r\n }\r\n}\r\n.nf-field-submit-error {\r\n padding: 15px;\r\n}\r\n\r\n.ninja-forms-noscript-message {\r\n background: #f1f1f1;\r\n border: 4px dashed #ccc;\r\n color: #333;\r\n display: block;\r\n font-size: 20px;\r\n margin: 20px 0;\r\n padding: 40px;\r\n text-align: center;\r\n}\r\n\r\n/* ---------------------------------\r\nHELPER CLASSES\r\n----------------------------------*/\r\n.two-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 50%\r\n }\r\n }\r\n}\r\n.three-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 33.33%\r\n }\r\n }\r\n}\r\n.four-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 25%\r\n }\r\n }\r\n}\r\n.five-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 20%\r\n }\r\n }\r\n}\r\n.six-col-list {\r\n ul {\r\n li {\r\n float: left;\r\n width: 16.66%\r\n }\r\n }\r\n}\r\n\r\n\r\nbody {\r\n .pika-label {\r\n background: transparent;\r\n }\r\n}\r\n\r\n/* Column Classes\r\n Link: http://twitter.github.io/bootstrap/assets/css/bootstrap-responsive.css\r\n--------------------------------------------- */\r\n.nf-form-cont {\r\n .five-sixths,\r\n .four-sixths,\r\n .one-fourth,\r\n .one-half,\r\n .one-sixth,\r\n .one-third,\r\n .three-fourths,\r\n .three-sixths,\r\n .two-fourths,\r\n .two-sixths,\r\n .two-thirds {\r\n clear: initial;\r\n float: left;\r\n margin-left: 2.564102564102564%;\r\n .inside {\r\n padding: 20px;\r\n }\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n\r\n .one-half,\r\n .three-sixths,\r\n .two-fourths {\r\n width: 48.717948717948715%;\r\n }\r\n\r\n .one-third,\r\n .two-sixths {\r\n width: 31.623931623931625%;\r\n }\r\n\r\n .four-sixths,\r\n .two-thirds {\r\n width: 65.81196581196582%;\r\n }\r\n\r\n .one-fourth {\r\n width: 23.076923076923077%;\r\n }\r\n\r\n .three-fourths {\r\n width: 74.35897435897436%;\r\n }\r\n\r\n .one-sixth {\r\n width: 14.52991452991453%;\r\n }\r\n\r\n .five-sixths {\r\n width: 82.90598290598291%;\r\n }\r\n\r\n .first {\r\n clear: both;\r\n margin-left: 0;\r\n }\r\n}\r\n",".note-popover {\r\n display: none !important;\r\n}\r\n.nf-form-wrap {\r\n .note-editor {\r\n border: 0 !important;\r\n .note-toolbar {\r\n &::after {\r\n clear: both;\r\n content: \"\";\r\n display: block;\r\n }\r\n }\r\n .note-editable {\r\n background: #f9f9f9;\r\n border: 1px solid #f1f1f1;\r\n display: block;\r\n p {\r\n font-size: 16px;\r\n }\r\n ul {\r\n list-style-type: disc;\r\n margin-left: 2em;\r\n }\r\n table {\r\n td {\r\n border: 1px solid #ccc;\r\n width: auto;\r\n }\r\n }\r\n }\r\n .modal {\r\n display: none;\r\n }\r\n .btn-group {\r\n float: left;\r\n &.note-tools {\r\n float: right;\r\n }\r\n }\r\n .btn {\r\n background: #f9f9f9;\r\n border: 0;\r\n border-radius: 4px;\r\n color: #666;\r\n cursor: pointer;\r\n margin-right: 2px;\r\n padding-top: 4px;\r\n &.disabled {\r\n background: transparent;\r\n color: #aaa;\r\n .merge-tags {\r\n background: #f9f9f9;\r\n color: #666;\r\n }\r\n }\r\n }\r\n button[type=button] {\r\n padding: 4px;\r\n width: auto;\r\n height: auto;\r\n }\r\n .dropdown-toggle {\r\n position: relative;\r\n display: inline-block;\r\n top: 0;\r\n &::after {\r\n content: \"\";\r\n width: 0;\r\n }\r\n }\r\n }\r\n .tooltip {\r\n position: absolute;\r\n z-index: 1070;\r\n display: block;\r\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\r\n font-size: 12px;\r\n font-style: normal;\r\n font-weight: normal;\r\n line-height: 1.42857143;\r\n text-align: left;\r\n text-align: start;\r\n text-decoration: none;\r\n text-shadow: none;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n word-break: normal;\r\n word-spacing: normal;\r\n word-wrap: normal;\r\n white-space: normal;\r\n filter: alpha(opacity=0);\r\n opacity: 0;\r\n\r\n line-break: auto;\r\n }\r\n .tooltip.in {\r\n filter: alpha(opacity=90);\r\n opacity: .9;\r\n }\r\n .tooltip.top {\r\n padding: 5px 0;\r\n margin-top: -3px;\r\n }\r\n .tooltip.right {\r\n padding: 0 5px;\r\n margin-left: 3px;\r\n }\r\n .tooltip.bottom {\r\n padding: 5px 0;\r\n margin-top: 3px;\r\n }\r\n .tooltip.left {\r\n padding: 0 5px;\r\n margin-left: -3px;\r\n }\r\n .tooltip-inner {\r\n max-width: 200px;\r\n padding: 3px 8px;\r\n color: #fff;\r\n text-align: center;\r\n background-color: #000;\r\n border-radius: 4px;\r\n }\r\n .tooltip-arrow {\r\n position: absolute;\r\n width: 0;\r\n height: 0;\r\n border-color: transparent;\r\n border-style: solid;\r\n }\r\n .tooltip.top .tooltip-arrow {\r\n bottom: 0;\r\n left: 50%;\r\n margin-left: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.top-left .tooltip-arrow {\r\n right: 5px;\r\n bottom: 0;\r\n margin-bottom: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.top-right .tooltip-arrow {\r\n bottom: 0;\r\n left: 5px;\r\n margin-bottom: -5px;\r\n border-width: 5px 5px 0;\r\n border-top-color: #000;\r\n }\r\n .tooltip.right .tooltip-arrow {\r\n top: 50%;\r\n left: 0;\r\n margin-top: -5px;\r\n border-width: 5px 5px 5px 0;\r\n border-right-color: #000;\r\n }\r\n .tooltip.left .tooltip-arrow {\r\n top: 50%;\r\n right: 0;\r\n margin-top: -5px;\r\n border-width: 5px 0 5px 5px;\r\n border-left-color: #000;\r\n }\r\n .tooltip.bottom .tooltip-arrow {\r\n top: 0;\r\n left: 50%;\r\n margin-left: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .tooltip.bottom-left .tooltip-arrow {\r\n top: 0;\r\n right: 5px;\r\n margin-top: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .tooltip.bottom-right .tooltip-arrow {\r\n top: 0;\r\n left: 5px;\r\n margin-top: -5px;\r\n border-width: 0 5px 5px;\r\n border-bottom-color: #000;\r\n }\r\n .dropdown-menu {\r\n position: absolute;\r\n // top: 100%;\r\n // left: 0;\r\n z-index: 1000;\r\n display: none;\r\n float: left;\r\n min-width: 160px;\r\n padding: 5px 0;\r\n margin: 2px 0 0;\r\n font-size: 14px;\r\n text-align: left;\r\n list-style: none;\r\n background-color: #fff;\r\n -webkit-background-clip: padding-box;\r\n background-clip: padding-box;\r\n border: 1px solid #ccc;\r\n border: 1px solid rgba(0, 0, 0, .15);\r\n border-radius: 4px;\r\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\r\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\r\n }\r\n .dropdown-menu.pull-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropdown-menu .divider {\r\n height: 1px;\r\n margin: 9px 0;\r\n overflow: hidden;\r\n background-color: #e5e5e5;\r\n }\r\n .dropdown-menu > li > a {\r\n display: block;\r\n padding: 3px 20px;\r\n clear: both;\r\n font-weight: normal;\r\n line-height: 1.42857143;\r\n color: #333;\r\n white-space: nowrap;\r\n }\r\n .dropdown-menu > li > a:hover,\r\n .dropdown-menu > li > a:focus {\r\n color: #262626;\r\n text-decoration: none;\r\n background-color: #f5f5f5;\r\n }\r\n .dropdown-menu > .active > a,\r\n .dropdown-menu > .active > a:hover,\r\n .dropdown-menu > .active > a:focus {\r\n color: #fff;\r\n text-decoration: none;\r\n background-color: #337ab7;\r\n outline: 0;\r\n }\r\n .dropdown-menu > .disabled > a,\r\n .dropdown-menu > .disabled > a:hover,\r\n .dropdown-menu > .disabled > a:focus {\r\n color: #777;\r\n }\r\n .dropdown-menu > .disabled > a:hover,\r\n .dropdown-menu > .disabled > a:focus {\r\n text-decoration: none;\r\n cursor: not-allowed;\r\n background-color: transparent;\r\n background-image: none;\r\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\r\n }\r\n .open > .dropdown-menu {\r\n display: block;\r\n }\r\n .open > a {\r\n outline: 0;\r\n }\r\n .dropdown-menu-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropdown-menu-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n .dropdown-header {\r\n display: block;\r\n padding: 3px 20px;\r\n font-size: 12px;\r\n line-height: 1.42857143;\r\n color: #777;\r\n white-space: nowrap;\r\n }\r\n .dropdown-backdrop {\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 990;\r\n }\r\n .pull-right > .dropdown-menu {\r\n right: 0;\r\n left: auto;\r\n }\r\n .dropup .caret,\r\n .navbar-fixed-bottom .dropdown .caret {\r\n content: \"\";\r\n border-top: 0;\r\n border-bottom: 4px dashed;\r\n border-bottom: 4px solid \\9;\r\n }\r\n .dropup .dropdown-menu,\r\n .navbar-fixed-bottom .dropdown .dropdown-menu {\r\n top: auto;\r\n bottom: 100%;\r\n margin-bottom: 2px;\r\n }\r\n @media (min-width: 768px) {\r\n .navbar-right .dropdown-menu {\r\n right: 0;\r\n left: auto;\r\n }\r\n .navbar-right .dropdown-menu-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n }\r\n .btn-group-justified > .btn-group .dropdown-menu {\r\n left: auto;\r\n }\r\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\r\n top: auto;\r\n left: auto;\r\n }\r\n .nav-justified > .dropdown .dropdown-menu {\r\n top: auto;\r\n left: auto;\r\n }\r\n .nav-tabs .dropdown-menu {\r\n margin-top: -1px;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-nav .open .dropdown-menu {\r\n position: static;\r\n float: none;\r\n width: auto;\r\n margin-top: 0;\r\n background-color: transparent;\r\n border: 0;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a,\r\n .navbar-nav .open .dropdown-menu .dropdown-header {\r\n padding: 5px 15px 5px 25px;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a {\r\n line-height: 20px;\r\n }\r\n .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-nav .open .dropdown-menu > li > a:focus {\r\n background-image: none;\r\n }\r\n }\r\n .navbar-nav > li > .dropdown-menu {\r\n margin-top: 0;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\r\n margin-bottom: 0;\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n border-bottom-right-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\r\n color: #777;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\r\n color: #333;\r\n background-color: transparent;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\r\n color: #555;\r\n background-color: #e7e7e7;\r\n }\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\r\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\r\n color: #ccc;\r\n background-color: transparent;\r\n }\r\n }\r\n @media (max-width: 767px) {\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\r\n border-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\r\n background-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\r\n color: #9d9d9d;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\r\n color: #fff;\r\n background-color: transparent;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\r\n color: #fff;\r\n background-color: #080808;\r\n }\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\r\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\r\n color: #444;\r\n background-color: transparent;\r\n }\r\n }\r\n}\r\n",".nf-loading-spinner {\r\n width: 40px;\r\n height: 40px;\r\n margin: 100px auto;\r\n background-color: rgba(208,208,208,.5);\r\n\r\n border-radius: 100%;\r\n animation: nf-scaleout 1.0s infinite ease-in-out;\r\n}\r\n\r\n@-webkit-keyframes nf-scaleout {\r\n 0% { transform: scale(0) }\r\n 100% {\r\n transform: scale(1.0);\r\n opacity: 0;\r\n }\r\n}\r\n\r\n@keyframes nf-scaleout {\r\n 0% {\r\n transform: scale(0);\r\n } 100% {\r\n transform: scale(1.0);\r\n opacity: 0;\r\n }\r\n}","/* ---------------------------------\r\nSTANDARDIZE ALL FIELDS\r\n----------------------------------*/\r\n.field-wrap {\r\n display: flex;\r\n //flex-wrap:wrap;\r\n > label {\r\n display: block;\r\n }\r\n > div input,\r\n textarea,\r\n select,\r\n .pikaday__container,\r\n .pikaday__display {\r\n width: 100%;\r\n }\r\n > div input[type=\"checkbox\"] {\r\n width: auto;\r\n }\r\n input[type=\"submit\"],\r\n input[type=\"button\"],\r\n button {\r\n width: auto;\r\n }\r\n .nf-product-field {\r\n // .nf-element {\r\n // width: 100%;\r\n // }\r\n }\r\n}\r\n\r\n.nf-field-label {\r\n order: 5;\r\n}\r\n.nf-field-description {\r\n width: 100%;\r\n order: 10;\r\n}\r\n.nf-field-element {\r\n order: 15;\r\n}\r\n\r\n\r\n/* ---------------------------------\r\nLABEL ABOVE\r\n----------------------------------*/\r\n.label-above {\r\n .nf-field-label {\r\n margin-bottom: 10px;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL BELOW\r\n----------------------------------*/\r\n.label-below {\r\n .nf-field-label {\r\n margin-top: 10px;\r\n order: 15;\r\n }\r\n .nf-field-element {\r\n order: 5;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL HIDDEN\r\n----------------------------------*/\r\n.label-hidden {\r\n .field-wrap {\r\n flex-wrap: wrap;\r\n }\r\n .nf-field-label {\r\n height: 0;\r\n margin: 0 !important;\r\n width: 100%;\r\n visibility: hidden;\r\n }\r\n .nf-field-description {\r\n width: 100%;\r\n order: 20;\r\n }\r\n .nf-field-element {\r\n width: 100%;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL LEFT\r\n----------------------------------*/\r\n.label-left {\r\n .field-wrap {\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n }\r\n .nf-field-label {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding-right: 2%;\r\n text-align: right;\r\n width: 35%;\r\n order: 5;\r\n label {\r\n width: 100%;\r\n }\r\n }\r\n .nf-field-description {\r\n margin-left: 35%;\r\n }\r\n .nf-field-element {\r\n display: inline-block;\r\n width: 65%;\r\n order: 10;\r\n }\r\n .nf-after-field {\r\n margin-left: 36.5%;\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nLABEL RIGHT\r\n----------------------------------*/\r\n.label-right {\r\n .field-wrap {\r\n flex-direction: row;\r\n }\r\n .nf-field-label {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding-left: 2%;\r\n width: 35%;\r\n order: 10;\r\n }\r\n .nf-field-description {\r\n margin-right: 35%;\r\n order: 15;\r\n }\r\n .nf-field-element {\r\n display: inline-block;\r\n width: 65%;\r\n order: 5;\r\n }\r\n .checkbox-wrap {\r\n .nf-field-label {\r\n width: auto;\r\n }\r\n .nf-field-element {\r\n width: 20px;\r\n }\r\n }\r\n .nf-after-field {\r\n width: 65%;\r\n }\r\n}\r\n/* ---------------------------------\r\nADJUST SOME LABEL ABOVE & BELOW ISSUES\r\n----------------------------------*/\r\n.label-below,\r\n.label-above {\r\n .field-wrap {\r\n flex-direction: column;\r\n flex-flow: wrap;\r\n }\r\n .nf-field-element {\r\n margin: 0;\r\n width: 100%;\r\n }\r\n .checkbox-wrap {\r\n .nf-field-label {\r\n //margin: 0;\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nADJUST SOME LABEL LEFT & RIGHT ISSUES\r\n----------------------------------*/\r\n.label-left,\r\n.label-right {\r\n .textarea-wrap,\r\n .listradio-wrap,\r\n .listcheckbox-wrap {\r\n .nf-field-label {\r\n align-items: flex-start;\r\n }\r\n }\r\n .textarea-wrap {\r\n .nf-field-label {\r\n margin-top: 5px;\r\n }\r\n }\r\n .html-wrap,\r\n .hr-wrap {\r\n display: block;\r\n .nf-field-element {\r\n display: block;\r\n margin: 0;\r\n width: 100%;\r\n }\r\n }\r\n}\r\n\r\n/* ---------------------------------\r\nFIELD DESCRIPTION POSITIONS\r\n----------------------------------*/\r\n",".nf-repeater-fieldsets{\r\n fieldset {\r\n margin-bottom: 1em;\r\n }\r\n}\r\n\r\n.nf-remove-fieldset {\r\n color: red;\r\n font-size: 1.5em;\r\n background-color: transparent;\r\n border: thin solid red;\r\n padding: 0.1em 0.4em;\r\n float: right;\r\n margin-top: -1em;\r\n}"]}
1
+ {"version":3,"sources":["st-defaults.scss","editor.scss","st-loading.scss","st-label-positions.scss","repeater-field.scss"],"names":[],"mappings":"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","file":"display-structure.css","sourcesContent":["/*\n * Ninja Forms - Form Display Structure\n */\n\n.ninja-forms-form-wrap *,\n.ninja-forms-form-wrap *:after,\n.ninja-forms-form-wrap *:before {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n -ms-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.nf-response-msg {\n display: none;\n}\n\n.nf-field-container,\n#ninja_forms_required_items {\n clear: both;\n position: relative;\n margin-bottom: 25px;\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n &.hidden-container,\n &.hr-container {\n margin: 0;\n height: auto;\n .nf-field-label {\n display: none;\n }\n }\n &.html-container {\n .nf-field-label {\n display: none;\n }\n }\n}\n\n.nf-field-label {\n label {\n font-weight: bold;\n margin: 0;\n padding: 0;\n }\n}\n.nf-field-element {\n position: relative;\n input,\n select,\n textarea {\n margin: 0;\n width: auto;\n height: auto;\n vertical-align: inherit;\n }\n textarea {\n height: 200px;\n }\n}\n.nf-field-description {\n p:last-child {\n margin: 0;\n }\n}\n.nf-help {\n background: url( '../img/help-info.png' ) no-repeat;\n display: inline-block;\n width: 16px;\n height: 16px;\n}\n\n.nf-input-limit {\n font-size: 12px;\n margin-top: 5px;\n}\n.nf-static {\n padding: 0 10px;\n}\n.nf-after-field {\n .nf-error-msg {\n margin-right: 10px;\n //text-align: right;\n }\n}\n\n/* ---------------------------------\nCHECKBOX FIELD\n----------------------------------*/\n\n\n\n/* ---------------------------------\nRADIO & CHECKBOX LISTS\n----------------------------------*/\n\n.list-radio-wrap,\n.list-checkbox-wrap,\n.list-image-wrap {\n .nf-field-element {\n ul, li {\n list-style: none !important;\n margin: 0 !important;\n padding: 0 !important;\n input {\n margin-right: 5px;\n }\n }\n li {\n padding-left: 10px;\n margin: 0 0 5px !important;\n text-indent: initial !important;\n label {\n //display: inline;\n display: block;\n float: initial;\n //margin: 0;\n width: auto;\n margin-left: 1.5em;\n }\n input {\n width: auto !important;\n float: left;\n margin-top: .25em;\n }\n }\n }\n}\n\n.listimage-wrap {\n li {\n width: 100%;\n height: 100%;\n display: inline-grid;\n label {\n padding: 5px;\n border-width: 2px;\n border-style: solid;\n border-color: transparent;\n &.nf-checked-label {\n border-width: 2px;\n border-style: solid;\n border-color: #007acc;\n transition: all .5s;\n }\n img {\n display: block;\n }\n }\n input {\n display: none;\n }\n }\n}\n\n/* ---------------------------------\nPRODUCT FIELD\n----------------------------------*/\n.product-wrap {\n > div {\n input {\n width: 80px !important;\n }\n .nf-product-field {\n span {\n padding: 0 5px;\n }\n }\n }\n}\n\n/* ---------------------------------\nSTAR RATING\n----------------------------------*/\n.starrating-wrap .star {\n border-bottom: 0;\n}\n\n/* ---------------------------------\nHONEYPOT\n----------------------------------*/\n\n.nf-form-hp {\n position: absolute;\n visibility: hidden;\n}\n\n/* ---------------------------------\nSELECT LIST\n----------------------------------*/\n.list-select-wrap {\n div div {\n display: none;\n }\n}\n\n\n/* ---------------------------------\nCOLORS\nAs minimal as possible\n----------------------------------*/\n.ninja-forms-req-symbol,\n.nf-error-msg {\n color: #E80000;\n}\n.nf-error {\n .ninja-forms-field {\n border: 1px solid #E80000;\n }\n &.listimage-wrap {\n .nf-field-element {\n ul {\n border: 1px solid #E80000;\n }\n }\n }\n}\n.nf-field-submit-error {\n padding: 15px;\n}\n\n.ninja-forms-noscript-message {\n background: #f1f1f1;\n border: 4px dashed #ccc;\n color: #333;\n display: block;\n font-size: 20px;\n margin: 20px 0;\n padding: 40px;\n text-align: center;\n}\n\n/* ---------------------------------\nHELPER CLASSES\n----------------------------------*/\n.two-col-list {\n ul {\n li {\n float: left;\n width: 50%\n }\n }\n}\n.three-col-list {\n ul {\n li {\n float: left;\n width: 33.33%\n }\n }\n}\n.four-col-list {\n ul {\n li {\n float: left;\n width: 25%\n }\n }\n}\n.five-col-list {\n ul {\n li {\n float: left;\n width: 20%\n }\n }\n}\n.six-col-list {\n ul {\n li {\n float: left;\n width: 16.66%\n }\n }\n}\n\n\nbody {\n .pika-label {\n background: transparent;\n }\n}\n\n/* Column Classes\n Link: http://twitter.github.io/bootstrap/assets/css/bootstrap-responsive.css\n--------------------------------------------- */\n.nf-form-cont {\n .five-sixths,\n .four-sixths,\n .one-fourth,\n .one-half,\n .one-sixth,\n .one-third,\n .three-fourths,\n .three-sixths,\n .two-fourths,\n .two-sixths,\n .two-thirds {\n clear: initial;\n float: left;\n margin-left: 2.564102564102564%;\n .inside {\n padding: 20px;\n }\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n }\n\n .one-half,\n .three-sixths,\n .two-fourths {\n width: 48.717948717948715%;\n }\n\n .one-third,\n .two-sixths {\n width: 31.623931623931625%;\n }\n\n .four-sixths,\n .two-thirds {\n width: 65.81196581196582%;\n }\n\n .one-fourth {\n width: 23.076923076923077%;\n }\n\n .three-fourths {\n width: 74.35897435897436%;\n }\n\n .one-sixth {\n width: 14.52991452991453%;\n }\n\n .five-sixths {\n width: 82.90598290598291%;\n }\n\n .first {\n clear: both;\n margin-left: 0;\n }\n}\n",".note-popover {\n display: none !important;\n}\n.nf-form-wrap {\n .note-editor {\n border: 0 !important;\n .note-toolbar {\n &::after {\n clear: both;\n content: \"\";\n display: block;\n }\n }\n .note-editable {\n background: #f9f9f9;\n border: 1px solid #f1f1f1;\n display: block;\n p {\n font-size: 16px;\n }\n ul {\n list-style-type: disc;\n margin-left: 2em;\n }\n table {\n td {\n border: 1px solid #ccc;\n width: auto;\n }\n }\n }\n .modal {\n display: none;\n }\n .btn-group {\n float: left;\n &.note-tools {\n float: right;\n }\n }\n .btn {\n background: #f9f9f9;\n border: 0;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n margin-right: 2px;\n padding-top: 4px;\n &.disabled {\n background: transparent;\n color: #aaa;\n .merge-tags {\n background: #f9f9f9;\n color: #666;\n }\n }\n }\n button[type=button] {\n padding: 4px;\n width: auto;\n height: auto;\n }\n .dropdown-toggle {\n position: relative;\n display: inline-block;\n top: 0;\n &::after {\n content: \"\";\n width: 0;\n }\n }\n }\n .tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n filter: alpha(opacity=0);\n opacity: 0;\n\n line-break: auto;\n }\n .tooltip.in {\n filter: alpha(opacity=90);\n opacity: .9;\n }\n .tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n }\n .tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n }\n .tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n }\n .tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n }\n .tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n }\n .tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n .tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n }\n .tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n }\n .tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .dropdown-menu {\n position: absolute;\n // top: 100%;\n // left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n }\n .dropdown-menu.pull-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n }\n .dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n }\n .dropdown-menu > li > a:hover,\n .dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n }\n .dropdown-menu > .active > a,\n .dropdown-menu > .active > a:hover,\n .dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n }\n .dropdown-menu > .disabled > a,\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n color: #777;\n }\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n }\n .open > .dropdown-menu {\n display: block;\n }\n .open > a {\n outline: 0;\n }\n .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n .dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n }\n .dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n }\n .pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n }\n .dropup .caret,\n .navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n }\n .dropup .dropdown-menu,\n .navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n }\n .btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n }\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n .nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n .nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n }\n .navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n @media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n }\n @media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n }\n}\n",".nf-loading-spinner {\n width: 40px;\n height: 40px;\n margin: 100px auto;\n background-color: rgba(208,208,208,.5);\n\n border-radius: 100%;\n animation: nf-scaleout 1.0s infinite ease-in-out;\n}\n\n@-webkit-keyframes nf-scaleout {\n 0% { transform: scale(0) }\n 100% {\n transform: scale(1.0);\n opacity: 0;\n }\n}\n\n@keyframes nf-scaleout {\n 0% {\n transform: scale(0);\n } 100% {\n transform: scale(1.0);\n opacity: 0;\n }\n}","/* ---------------------------------\nSTANDARDIZE ALL FIELDS\n----------------------------------*/\n.field-wrap {\n display: flex;\n //flex-wrap:wrap;\n > label {\n display: block;\n }\n > div input,\n textarea,\n select,\n .pikaday__container,\n .pikaday__display {\n width: 100%;\n }\n > div input[type=\"checkbox\"] {\n width: auto;\n }\n input[type=\"submit\"],\n input[type=\"button\"],\n button {\n width: auto;\n }\n .nf-product-field {\n // .nf-element {\n // width: 100%;\n // }\n }\n}\n\n.nf-field-label {\n order: 5;\n}\n.nf-field-description {\n width: 100%;\n order: 10;\n}\n.nf-field-element {\n order: 15;\n}\n\n\n/* ---------------------------------\nLABEL ABOVE\n----------------------------------*/\n.label-above {\n .nf-field-label {\n margin-bottom: 10px;\n }\n}\n\n/* ---------------------------------\nLABEL BELOW\n----------------------------------*/\n.label-below {\n .nf-field-label {\n margin-top: 10px;\n order: 15;\n }\n .nf-field-element {\n order: 5;\n }\n}\n\n/* ---------------------------------\nLABEL HIDDEN\n----------------------------------*/\n.label-hidden {\n .field-wrap {\n flex-wrap: wrap;\n }\n .nf-field-label {\n height: 0;\n margin: 0 !important;\n width: 100%;\n visibility: hidden;\n }\n .nf-field-description {\n width: 100%;\n order: 20;\n }\n .nf-field-element {\n width: 100%;\n }\n}\n\n/* ---------------------------------\nLABEL LEFT\n----------------------------------*/\n.label-left {\n .field-wrap {\n flex-direction: row;\n flex-wrap: wrap;\n }\n .nf-field-label {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding-right: 2%;\n text-align: right;\n width: 35%;\n order: 5;\n label {\n width: 100%;\n }\n }\n .nf-field-description {\n margin-left: 35%;\n }\n .nf-field-element {\n display: inline-block;\n width: 65%;\n order: 10;\n }\n .nf-after-field {\n margin-left: 36.5%;\n }\n}\n\n/* ---------------------------------\nLABEL RIGHT\n----------------------------------*/\n.label-right {\n .field-wrap {\n flex-direction: row;\n }\n .nf-field-label {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding-left: 2%;\n width: 35%;\n order: 10;\n }\n .nf-field-description {\n margin-right: 35%;\n order: 15;\n }\n .nf-field-element {\n display: inline-block;\n width: 65%;\n order: 5;\n }\n .checkbox-wrap {\n .nf-field-label {\n width: auto;\n }\n .nf-field-element {\n width: 20px;\n }\n }\n .nf-after-field {\n width: 65%;\n }\n}\n/* ---------------------------------\nADJUST SOME LABEL ABOVE & BELOW ISSUES\n----------------------------------*/\n.label-below,\n.label-above {\n .field-wrap {\n flex-direction: column;\n flex-flow: wrap;\n }\n .nf-field-element {\n margin: 0;\n width: 100%;\n }\n .checkbox-wrap {\n .nf-field-label {\n //margin: 0;\n }\n }\n}\n\n/* ---------------------------------\nADJUST SOME LABEL LEFT & RIGHT ISSUES\n----------------------------------*/\n.label-left,\n.label-right {\n .textarea-wrap,\n .listradio-wrap,\n .listcheckbox-wrap {\n .nf-field-label {\n align-items: flex-start;\n }\n }\n .textarea-wrap {\n .nf-field-label {\n margin-top: 5px;\n }\n }\n .html-wrap,\n .hr-wrap {\n display: block;\n .nf-field-element {\n display: block;\n margin: 0;\n width: 100%;\n }\n }\n}\n\n/* ---------------------------------\nFIELD DESCRIPTION POSITIONS\n----------------------------------*/\n",".nf-repeater-fieldsets{\n fieldset {\n margin-bottom: 1em;\n }\n}\n\n.nf-remove-fieldset {\n color: red;\n font-size: 1.5em;\n background-color: transparent;\n border: thin solid red;\n padding: 0.1em 0.4em;\n float: right;\n margin-top: -1em;\n}"]}
assets/js/min/builder.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"mappings":"","sources":["main.js"],"sourcesContent":["(function () {\n/**\r\n * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\r\n * Available via the MIT or new BSD license.\r\n * see: http://github.com/jrburke/almond for details\r\n */\r\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\r\n//be followed.\r\n/*jslint sloppy: true */\r\n/*global setTimeout: false */\r\n\r\nvar requirejs, require, define;\r\n(function (undef) {\r\n var main, req, makeMap, handlers,\r\n defined = {},\r\n waiting = {},\r\n config = {},\r\n defining = {},\r\n hasOwn = Object.prototype.hasOwnProperty,\r\n aps = [].slice,\r\n jsSuffixRegExp = /\\.js$/;\r\n\r\n function hasProp(obj, prop) {\r\n return hasOwn.call(obj, prop);\r\n }\r\n\r\n /**\r\n * Given a relative module name, like ./something, normalize it to\r\n * a real name that can be mapped to a path.\r\n * @param {String} name the relative name\r\n * @param {String} baseName a real name that the name arg is relative\r\n * to.\r\n * @returns {String} normalized name\r\n */\r\n function normalize(name, baseName) {\r\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\r\n foundI, foundStarMap, starI, i, j, part,\r\n baseParts = baseName && baseName.split(\"/\"),\r\n map = config.map,\r\n starMap = (map && map['*']) || {};\r\n\r\n //Adjust any relative paths.\r\n if (name && name.charAt(0) === \".\") {\r\n //If have a base name, try to normalize against it,\r\n //otherwise, assume it is a top-level require that will\r\n //be relative to baseUrl in the end.\r\n if (baseName) {\r\n name = name.split('/');\r\n lastIndex = name.length - 1;\r\n\r\n // Node .js allowance:\r\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\r\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\r\n }\r\n\r\n //Lop off the last part of baseParts, so that . matches the\r\n //\"directory\" and not name of the baseName's module. For instance,\r\n //baseName of \"one/two/three\", maps to \"one/two/three.js\", but we\r\n //want the directory, \"one/two\" for this normalization.\r\n name = baseParts.slice(0, baseParts.length - 1).concat(name);\r\n\r\n //start trimDots\r\n for (i = 0; i < name.length; i += 1) {\r\n part = name[i];\r\n if (part === \".\") {\r\n name.splice(i, 1);\r\n i -= 1;\r\n } else if (part === \"..\") {\r\n if (i === 1 && (name[2] === '..' || name[0] === '..')) {\r\n //End of the line. Keep at least one non-dot\r\n //path segment at the front so it can be mapped\r\n //correctly to disk. Otherwise, there is likely\r\n //no path mapping for a path starting with '..'.\r\n //This can still fail, but catches the most reasonable\r\n //uses of ..\r\n break;\r\n } else if (i > 0) {\r\n name.splice(i - 1, 2);\r\n i -= 2;\r\n }\r\n }\r\n }\r\n //end trimDots\r\n\r\n name = name.join(\"/\");\r\n } else if (name.indexOf('./') === 0) {\r\n // No baseName, so this is ID is resolved relative\r\n // to baseUrl, pull off the leading dot.\r\n name = name.substring(2);\r\n }\r\n }\r\n\r\n //Apply map config if available.\r\n if ((baseParts || starMap) && map) {\r\n nameParts = name.split('/');\r\n\r\n for (i = nameParts.length; i > 0; i -= 1) {\r\n nameSegment = nameParts.slice(0, i).join(\"/\");\r\n\r\n if (baseParts) {\r\n //Find the longest baseName segment match in the config.\r\n //So, do joins on the biggest to smallest lengths of baseParts.\r\n for (j = baseParts.length; j > 0; j -= 1) {\r\n mapValue = map[baseParts.slice(0, j).join('/')];\r\n\r\n //baseName segment has config, find if it has one for\r\n //this name.\r\n if (mapValue) {\r\n mapValue = mapValue[nameSegment];\r\n if (mapValue) {\r\n //Match, update name to the new value.\r\n foundMap = mapValue;\r\n foundI = i;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (foundMap) {\r\n break;\r\n }\r\n\r\n //Check for a star map match, but just hold on to it,\r\n //if there is a shorter segment match later in a matching\r\n //config, then favor over this star map.\r\n if (!foundStarMap && starMap && starMap[nameSegment]) {\r\n foundStarMap = starMap[nameSegment];\r\n starI = i;\r\n }\r\n }\r\n\r\n if (!foundMap && foundStarMap) {\r\n foundMap = foundStarMap;\r\n foundI = starI;\r\n }\r\n\r\n if (foundMap) {\r\n nameParts.splice(0, foundI, foundMap);\r\n name = nameParts.join('/');\r\n }\r\n }\r\n\r\n return name;\r\n }\r\n\r\n function makeRequire(relName, forceSync) {\r\n return function () {\r\n //A version of a require function that passes a moduleName\r\n //value for items that may need to\r\n //look up paths relative to the moduleName\r\n var args = aps.call(arguments, 0);\r\n\r\n //If first arg is not require('string'), and there is only\r\n //one arg, it is the array form without a callback. Insert\r\n //a null so that the following concat is correct.\r\n if (typeof args[0] !== 'string' && args.length === 1) {\r\n args.push(null);\r\n }\r\n return req.apply(undef, args.concat([relName, forceSync]));\r\n };\r\n }\r\n\r\n function makeNormalize(relName) {\r\n return function (name) {\r\n return normalize(name, relName);\r\n };\r\n }\r\n\r\n function makeLoad(depName) {\r\n return function (value) {\r\n defined[depName] = value;\r\n };\r\n }\r\n\r\n function callDep(name) {\r\n if (hasProp(waiting, name)) {\r\n var args = waiting[name];\r\n delete waiting[name];\r\n defining[name] = true;\r\n main.apply(undef, args);\r\n }\r\n\r\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\r\n throw new Error('No ' + name);\r\n }\r\n return defined[name];\r\n }\r\n\r\n //Turns a plugin!resource to [plugin, resource]\r\n //with the plugin being undefined if the name\r\n //did not have a plugin prefix.\r\n function splitPrefix(name) {\r\n var prefix,\r\n index = name ? name.indexOf('!') : -1;\r\n if (index > -1) {\r\n prefix = name.substring(0, index);\r\n name = name.substring(index + 1, name.length);\r\n }\r\n return [prefix, name];\r\n }\r\n\r\n /**\r\n * Makes a name map, normalizing the name, and using a plugin\r\n * for normalization if necessary. Grabs a ref to plugin\r\n * too, as an optimization.\r\n */\r\n makeMap = function (name, relName) {\r\n var plugin,\r\n parts = splitPrefix(name),\r\n prefix = parts[0];\r\n\r\n name = parts[1];\r\n\r\n if (prefix) {\r\n prefix = normalize(prefix, relName);\r\n plugin = callDep(prefix);\r\n }\r\n\r\n //Normalize according\r\n if (prefix) {\r\n if (plugin && plugin.normalize) {\r\n name = plugin.normalize(name, makeNormalize(relName));\r\n } else {\r\n name = normalize(name, relName);\r\n }\r\n } else {\r\n name = normalize(name, relName);\r\n parts = splitPrefix(name);\r\n prefix = parts[0];\r\n name = parts[1];\r\n if (prefix) {\r\n plugin = callDep(prefix);\r\n }\r\n }\r\n\r\n //Using ridiculous property names for space reasons\r\n return {\r\n f: prefix ? prefix + '!' + name : name, //fullName\r\n n: name,\r\n pr: prefix,\r\n p: plugin\r\n };\r\n };\r\n\r\n function makeConfig(name) {\r\n return function () {\r\n return (config && config.config && config.config[name]) || {};\r\n };\r\n }\r\n\r\n handlers = {\r\n require: function (name) {\r\n return makeRequire(name);\r\n },\r\n exports: function (name) {\r\n var e = defined[name];\r\n if (typeof e !== 'undefined') {\r\n return e;\r\n } else {\r\n return (defined[name] = {});\r\n }\r\n },\r\n module: function (name) {\r\n return {\r\n id: name,\r\n uri: '',\r\n exports: defined[name],\r\n config: makeConfig(name)\r\n };\r\n }\r\n };\r\n\r\n main = function (name, deps, callback, relName) {\r\n var cjsModule, depName, ret, map, i,\r\n args = [],\r\n callbackType = typeof callback,\r\n usingExports;\r\n\r\n //Use name if no relName\r\n relName = relName || name;\r\n\r\n //Call the callback to define the module, if necessary.\r\n if (callbackType === 'undefined' || callbackType === 'function') {\r\n //Pull out the defined dependencies and pass the ordered\r\n //values to the callback.\r\n //Default to [require, exports, module] if no deps\r\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\r\n for (i = 0; i < deps.length; i += 1) {\r\n map = makeMap(deps[i], relName);\r\n depName = map.f;\r\n\r\n //Fast path CommonJS standard dependencies.\r\n if (depName === \"require\") {\r\n args[i] = handlers.require(name);\r\n } else if (depName === \"exports\") {\r\n //CommonJS module spec 1.1\r\n args[i] = handlers.exports(name);\r\n usingExports = true;\r\n } else if (depName === \"module\") {\r\n //CommonJS module spec 1.1\r\n cjsModule = args[i] = handlers.module(name);\r\n } else if (hasProp(defined, depName) ||\r\n hasProp(waiting, depName) ||\r\n hasProp(defining, depName)) {\r\n args[i] = callDep(depName);\r\n } else if (map.p) {\r\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\r\n args[i] = defined[depName];\r\n } else {\r\n throw new Error(name + ' missing ' + depName);\r\n }\r\n }\r\n\r\n ret = callback ? callback.apply(defined[name], args) : undefined;\r\n\r\n if (name) {\r\n //If setting exports via \"module\" is in play,\r\n //favor that over return value and exports. After that,\r\n //favor a non-undefined return value over exports use.\r\n if (cjsModule && cjsModule.exports !== undef &&\r\n cjsModule.exports !== defined[name]) {\r\n defined[name] = cjsModule.exports;\r\n } else if (ret !== undef || !usingExports) {\r\n //Use the return value from the function.\r\n defined[name] = ret;\r\n }\r\n }\r\n } else if (name) {\r\n //May just be an object definition for the module. Only\r\n //worry about defining if have a module name.\r\n defined[name] = callback;\r\n }\r\n };\r\n\r\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\r\n if (typeof deps === \"string\") {\r\n if (handlers[deps]) {\r\n //callback in this case is really relName\r\n return handlers[deps](callback);\r\n }\r\n //Just return the module wanted. In this scenario, the\r\n //deps arg is the module name, and second arg (if passed)\r\n //is just the relName.\r\n //Normalize module name, if it contains . or ..\r\n return callDep(makeMap(deps, callback).f);\r\n } else if (!deps.splice) {\r\n //deps is a config object, not an array.\r\n config = deps;\r\n if (config.deps) {\r\n req(config.deps, config.callback);\r\n }\r\n if (!callback) {\r\n return;\r\n }\r\n\r\n if (callback.splice) {\r\n //callback is an array, which means it is a dependency list.\r\n //Adjust args if there are dependencies\r\n deps = callback;\r\n callback = relName;\r\n relName = null;\r\n } else {\r\n deps = undef;\r\n }\r\n }\r\n\r\n //Support require(['a'])\r\n callback = callback || function () {};\r\n\r\n //If relName is a function, it is an errback handler,\r\n //so remove it.\r\n if (typeof relName === 'function') {\r\n relName = forceSync;\r\n forceSync = alt;\r\n }\r\n\r\n //Simulate async callback;\r\n if (forceSync) {\r\n main(undef, deps, callback, relName);\r\n } else {\r\n //Using a non-zero value because of concern for what old browsers\r\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\r\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\r\n //If want a value immediately, use require('id') instead -- something\r\n //that works in almond on the global level, but not guaranteed and\r\n //unlikely to work in other AMD implementations.\r\n setTimeout(function () {\r\n main(undef, deps, callback, relName);\r\n }, 4);\r\n }\r\n\r\n return req;\r\n };\r\n\r\n /**\r\n * Just drops the config on the floor, but returns req in case\r\n * the config return value is used.\r\n */\r\n req.config = function (cfg) {\r\n return req(cfg);\r\n };\r\n\r\n /**\r\n * Expose module registry for debugging and tooling\r\n */\r\n requirejs._defined = defined;\r\n\r\n define = function (name, deps, callback) {\r\n if (typeof name !== 'string') {\r\n throw new Error('See almond README: incorrect module build, no module name');\r\n }\r\n\r\n //This module may not have dependencies\r\n if (!deps.splice) {\r\n //deps is not an array, so probably means\r\n //an object literal or factory function for\r\n //the value. Adjust args.\r\n callback = deps;\r\n deps = [];\r\n }\r\n\r\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\r\n waiting[name] = [name, deps, callback];\r\n }\r\n };\r\n\r\n define.amd = {\r\n jQuery: true\r\n };\r\n}());\r\n\ndefine(\"../lib/almond\", function(){});\n\n/**\r\n * Renders an application menu item from a domain model.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/menuItem',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-app-menu-item',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for domain changes and re-render when we detect one.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:currentDomain', this.render );\r\n\t\t\t// When we change the model (to disable it, for example), re-render.\r\n\t\t\tthis.model.on( 'change', this.render, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we render this view, remove the extra <div> tag created by backbone.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tonRender: function() {\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\t\t},\r\n\r\n\t\t// Listen for clicks on our app menu.\r\n\t\tevents: {\r\n\t\t\t'click a': 'clickAppMenu'\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we click on a menu item, fire a radio event.\r\n\t\t * This lets us separate the logic from the click event and view.\r\n\t\t * We pass this.model so that we know what item was clicked.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\te event\r\n\t\t * @return return\r\n\t\t */\r\n\t\tclickAppMenu: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:menu', e, this.model );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * These functions are available to templates, and help us to remove logic from template files.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return Object\r\n\t\t */\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\t/**\r\n\t\t\t\t * If we have any dashicons in our model, render them.\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderDashicons: function() {\r\n\t\t\t\t\tif ( ! this.dashicons ) return '';\r\n\r\n\t\t\t\t\tvar icon = document.createElement( 'span' );\r\n\t\t\t\t\ticon.classList.add( 'dashicons' );\r\n\t\t\t\t\ticon.classList.add( this.dashicons );\r\n\r\n\t\t\t\t\treturn icon.outerHTML;\r\n\t\t\t\t},\r\n\t\t\t\t/**\r\n\t\t\t\t * Render classes for our menu item, including active.\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderClasses: function() {\r\n\t\t\t\t\tvar classes = this.classes;\r\n\t\t\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\t\t\tif ( currentDomain.get( 'id' ) == this.id ) {\r\n\t\t\t\t\t\tclasses += ' active';\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn classes;\r\n\t\t\t\t},\r\n\t\t\t\t/**\r\n\t\t\t\t * If our menu is a link (like preview), render its url.\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderUrl: function() {\r\n\t\t\t\t\tif ( '' != this.url ) {\r\n\t\t\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\t\t\t\t\t\treturn this.url + formModel.get( 'id' );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '#';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/**\r\n\t\t\t\t * If our menu is a link (like preview), render its target.\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderTarget: function() {\r\n\t\t\t\t\tif ( '' != this.url ) {\r\n\t\t\t\t\t\treturn '_blank';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '_self';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * If our menu item is disabled, output 'disabled'\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderDisabled: function() {\r\n\t\t\t\t\tif ( this.disabled ) {\r\n\t\t\t\t\t\treturn 'disabled';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Collection view that takes our app menu items and renders an individual view for each.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/menu',['views/app/menuItem'], function( appMenuItemView ) {\r\n\tvar view = Marionette.CollectionView.extend( {\r\n\t\ttagName: 'div',\r\n\t\tchildView: appMenuItemView,\r\n\r\n\t\t/**\r\n\t\t * When we show this view, get rid of the extra <div> tag added by backbone.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tonShow: function() {\r\n\t\t\tjQuery( this.el ).find( 'li:last' ).unwrap();\r\n\t\t}\r\n\t} );\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Renders the action buttons to the right of the app menu. i.e. Publish\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/menuButtons',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'span',\r\n\t\ttemplate: '#tmpl-nf-app-header-action-button',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen to changes on the app 'clean' state. When it changes, re-render.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:clean', this.render, this );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:loading', this.render, this );\r\n\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'response:updateDB', this.bounceIcon, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * These functions are available to templates, and help us to remove logic from template files.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return Object\r\n\t\t */\r\n\t\ttemplateHelpers: function () {\r\n\t\t\tvar that = this;\r\n\t \treturn {\r\n\r\n\t \t\t/**\r\n\t \t\t * Render our Publish button. If we're loading, render the loading version.\r\n\t \t\t *\r\n\t \t\t * @since 3.0\r\n\t \t\t * @return string\r\n\t \t\t */\r\n\t \t\trenderPublish: function() {\r\n\t \t\t\tif ( that.publishWidth ) {\r\n\t \t\t\t\tthis.publishWidth = that.publishWidth + 'px';\r\n\t \t\t\t} else {\r\n\t \t\t\t\tthis.publishWidth = 'auto';\r\n\t \t\t\t}\r\n\r\n\t \t\t\tif ( nfRadio.channel( 'app' ).request( 'get:setting', 'loading' ) ) {\r\n\t \t\t\t\tvar template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-add-header-publish-loading' );\r\n\t \t\t\t} else {\r\n\t \t\t\t\tvar template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-app-header-publish-button' );\r\n\t \t\t\t}\r\n\t \t\t\treturn template( this );\r\n\t \t\t},\r\n\r\n\t \t\t/**\r\n\t \t\t * If our app state is clean, disable publish.\r\n\t \t\t * \r\n\t \t\t * @since 3.0\r\n\t \t\t * @return string\r\n\t \t\t */\r\n\t \t\tmaybeDisabled: function() {\r\n\t \t\t\tif ( nfRadio.channel( 'app' ).request( 'get:setting', 'clean' ) ) {\r\n\t \t\t\t\treturn 'disabled';\r\n\t \t\t\t} else {\r\n\t \t\t\t\treturn '';\r\n\t \t\t\t}\r\n\t \t\t},\r\n\r\n\t \t\t/**\r\n\t \t\t * [DEPRECATED] If our app isn't clean, render our 'viewChanges' button.\r\n\t \t\t * @since version\r\n\t \t\t * @return {[type]} [description]\r\n\t \t\t */\r\n\t \t\tmaybeRenderCancel: function() {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t},\r\n\r\n\t \t\trenderPublicLink: function() {\r\n\t\t\t\t\t\t// Don't show public link if the form has a temp ID\r\n\t\t\t\t\t\tvar formModel = Backbone.Radio.channel('app').request('get:formModel');\r\n\t\t\t\t\t\tif (isNaN(formModel.get('id'))) { return };\r\n\t\t\t\t\t\t// Otherwise, display normally\r\n\t \t\t\tvar publicLink = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-app-header-public-link' );\r\n\t \t\t\t\treturn publicLink( this );\r\n\t \t\t},\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tonShow: function() {\r\n\t\t\tvar publishEL = jQuery( this.el ).find( '.publish' );\r\n\t\t\t// this.publishWidth = jQuery( publishEL ).outerWidth( true );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Listen for clicks on the Publish or view changes button.\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tevents: {\r\n\t\t\t'click .publish': 'clickPublish',\r\n\t\t\t'click .viewChanges': 'clickViewChanges',\r\n\t\t\t'click .publicLink': 'clickPublicLink',\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we click publish, trigger a radio event.\r\n\t\t * This lets us separate the logic from the click event and view.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \te event\r\n\t\t * @return void\r\n\t\t */\r\n\t\tclickPublish: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:publish', e );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we click view changes, trigger a radio event.\r\n\t\t * This lets us separate the logic from the click event and view.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \te event\r\n\t\t * @return void\r\n\t\t */\r\n\t\tclickViewChanges: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:viewChanges', e );\r\n\t\t},\r\n\r\n\t\tclickPublicLink: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:publicLink', e );\r\n\t\t},\r\n\r\n\t\tbounceIcon: function( changeModel ) {\r\n\t\t\tjQuery( this.el ).find( '.dashicons-backup' ).effect( 'bounce', { times: 3 }, 600 );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Renders the action buttons to the right of the app menu. i.e. Publish\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/mobileMenuButton',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'span',\r\n\t\ttemplate: '#tmpl-nf-mobile-menu-button',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen to changes on the app 'clean' state. When it changes, re-render.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:clean', this.render, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * These functions are available to templates, and help us to remove logic from template files.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return Object\r\n\t\t */\r\n\t\ttemplateHelpers: function () {\r\n\t\t\tvar that = this;\r\n\t \treturn {\r\n\t \t\t/**\r\n\t \t\t * If our app state is clean, disable button.\r\n\t \t\t * \r\n\t \t\t * @since 3.0\r\n\t \t\t * @return string\r\n\t \t\t */\r\n\t \t\tmaybeDisabled: function() {\r\n\t \t\t\tif ( nfRadio.channel( 'app' ).request( 'get:setting', 'clean' ) ) {\r\n\t \t\t\t\treturn 'disabled';\r\n\t \t\t\t} else {\r\n\t \t\t\t\treturn '';\r\n\t \t\t\t}\r\n\t \t\t}\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Listen for clicks on the mobile menu button.\r\n\t\t * @type {Object}\r\n\t\t */\r\n\t\tevents: {\r\n\t\t\t'click .nf-mobile-menu': 'clickMobileMenu'\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we click publish, trigger a radio event.\r\n\t\t * This lets us separate the logic from the click event and view.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \te event\r\n\t\t * @return void\r\n\t\t */\r\n\t\tclickMobileMenu: function( e) {\r\n\t\t\tvar builderEl = nfRadio.channel( 'app' ).request( 'get:builderEl' );\r\n\t\t\tjQuery( builderEl ).toggleClass( 'nf-menu-expand' );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Main application header. Includes links to all of our domains.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/header',['views/app/menu', 'views/app/menuButtons', 'views/app/mobileMenuButton'], function( appMenuCollectionView, appMenuButtonsView, mobileMenuButtonView ) {\r\n\tvar view = Marionette.LayoutView.extend( {\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-app-header',\r\n\r\n\t\tregions: {\r\n\t\t\t// Menu is our main app menu.\r\n\t\t\tmenu: '.nf-app-menu',\r\n\t\t\t// Buttons represents the 'view changes' and 'Publish' buttons.\r\n\t\t\tbuttons: '.nf-app-buttons',\r\n\t\t\tmobileMenuButton: '.nf-mobile-menu-button'\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Since this is a layout region, we need to fill the two areas: menu and buttons whenever we show this view.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tonRender: function() {\r\n\t\t\t// Get our domains\r\n\t\t\tvar appDomainCollection = nfRadio.channel( 'app' ).request( 'get:domainCollection' );\r\n\t\t\t// show the menu area using the appropriate view, passing our domain collection.\r\n\t\t\tthis.menu.show( new appMenuCollectionView( { collection: appDomainCollection } ) );\r\n\t\t\tthis.buttons.show( new appMenuButtonsView() );\r\n\t\t\tthis.mobileMenuButton.show( new mobileMenuButtonView() );\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click #nf-logo': 'clickLogo'\r\n\t\t},\r\n\r\n\t\tclickLogo: function( e ) {\r\n\t\t\t\r\n\t\t}\r\n\r\n\t} );\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Renders our sub-header. i.e. add new field, add new action, etc.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/subHeader',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-sub-header'\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Renders our builder header.\r\n *\r\n * This is a layout view and handles two regions:\r\n * app - menu/buttons\r\n * subapp - title, add new field, etc.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/builderHeader',[ 'views/app/header', 'views/app/subHeader' ], function( appHeaderView, appSubHeaderView ) {\r\n\r\n\tvar view = Marionette.LayoutView.extend({\r\n\t\ttagName: \"div\",\r\n\t\ttemplate: \"#tmpl-nf-header\",\r\n\r\n\t\tregions: {\r\n\t\t\tapp: \"#nf-app-header\",\r\n\t\t\tformTitle: \"#nf-app-form-title\",\r\n\t\t\tappSub: \"#nf-app-sub-header\"\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:currentDomain', this.changeSubHeader );\r\n\t\t},\r\n\r\n\t\tonShow: function() {\r\n\t\t\tthis.app.show( new appHeaderView() );\r\n\r\n\t\t\tvar formData = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\t\t\tvar formSettings = formData.get( 'settings' );\r\n\r\n\t\t\tvar formTitleView = nfRadio.channel( 'views' ).request( 'get:formTitle' );\r\n\t\t\tthis.formTitle.show( new formTitleView( { model: formSettings } ) );\r\n\r\n\t\t\tthis.changeSubHeader();\r\n\t\t},\r\n\r\n\t\tchangeSubHeader: function() {\r\n\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\tvar subHeaderView = currentDomain.get( 'getSubHeaderView' ).call( currentDomain );\r\n\t\t\tthis.appSub.show( subHeaderView );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Renders our builder.\r\n *\r\n * This is a layout view and handles three regions:\r\n * gutterLeft - gutter to the left of our main content area\r\n * body - main content area\r\n * gutterRight - gutter to the right of our main content area\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2016 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/main',[], function() {\r\n\r\n\tvar view = Marionette.LayoutView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-main',\r\n\t\tclassName: 'nf-main-test',\r\n\t\tmaybeDone: false,\r\n\r\n\t\toffsetRight: false,\r\n\t\toffsetLeft: false,\r\n\r\n\t\tregions: {\r\n\t\t\tgutterLeft: '#nf-main-gutter-left',\r\n\t\t\tbody: '#nf-main-body',\r\n\t\t\tgutterRight: '#nf-main-gutter-right'\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:currentDomain', this.render );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:mainEl', this.getMainEl, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Make sure that our gutters resize to match our screen upon resize or drawer open/close.\r\n\t\t\t */\r\n\t\t\tjQuery( window ).on( 'resize', { context: this }, this.resizeBothGutters );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'before:open', this.setBothGuttersAbsolute );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'opened', this.setBothGuttersFixed );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'before:close', this.setBothGuttersAbsolute );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'closed', this.setBothGuttersFixed );\r\n\t\t\t// ... or Domain Change.\r\n this.listenTo( nfRadio.channel( 'app' ), 'change:currentDomain', function(){\r\n // @todo Using a timeout feels like a hack, but there may be a timing issue here.\r\n \tsetTimeout(function(){\r\n nfRadio.channel( 'app' ).request( 'update:gutters' );\r\n\t\t\t\t}, 300, this );\r\n\t\t\t}, this );\r\n\r\n\r\n\t\t\t/*\r\n\t\t\t * Reply to messages requesting that we resize our gutters.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'update:gutters', this.updateGutters, this );\r\n\t\t},\r\n\r\n\t\tonShow: function() {\r\n\t\t\tnfRadio.channel( 'main' ).trigger( 'show:main', this );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\tvar bodyView = currentDomain.get( 'getMainContentView' ).call( currentDomain );\r\n\t\t\tthis.body.show( bodyView );\r\n\r\n\t\t\tvar gutterLeftView = currentDomain.get( 'getGutterLeftView' ).call( currentDomain );\r\n\t\t\tthis.gutterLeft.show( gutterLeftView );\r\n\r\n\t\t\tvar gutterRightView = currentDomain.get( 'getGutterRightView' ).call( currentDomain );\r\n\t\t\tthis.gutterRight.show( gutterRightView );\r\n\t\t\t\r\n\t\t\tnfRadio.channel( 'main' ).trigger( 'render:main' );\r\n\t\t},\r\n\r\n\t\tgetMainEl: function() {\r\n\t\t\treturn jQuery( this.el ).parent();\r\n\t\t},\r\n\r\n\t\tonAttach: function() {\r\n\t\t\tthis.initialGutterResize();\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tjQuery( window ).off( 'resize', this.resize );\r\n\t\t},\r\n\r\n\t\tinitialGutterResize: function() {\r\n\t\t\tthis.resizeGutter( this.gutterLeft.el );\r\n\t\t\tthis.resizeGutter( this.gutterRight.el );\r\n\t\t\tthis.setBothGuttersFixed( this );\r\n\t\t},\r\n\r\n\t\tresizeBothGutters: function( e ) {\r\n\t\t\tvar context = ( e ) ? e.data.context : this;\r\n\r\n\t\t\tvar leftEl = context.gutterLeft.el;\r\n\t\t\tvar rightEl = context.gutterRight.el;\r\n\t\t\t\r\n\t\t\tcontext.resizeGutter( leftEl, context );\r\n\t\t\tcontext.resizeGutter( rightEl, context );\r\n\r\n\t\t\tcontext.setBothGuttersAbsolute( context );\r\n\r\n\t\t\t/*\r\n\t\t\t * Clear our timeout. If the timeout runs, it means we've stopped resizing.\r\n\t\t\t */\t\r\n\t\t\tclearTimeout( context.maybeDone );\r\n\t\t\t/*\r\n\t\t\t * Add our timeout.\r\n\t\t\t */\r\n\t\t\tcontext.maybeDone = setTimeout( context.setBothGuttersFixed, 100, context );\r\n\t\t},\r\n\r\n\t\tresizeGutter: function( el, context ) {\r\n\t\t\tvar top = jQuery( el ).offset().top;\r\n\t\t\tvar viewHeight = jQuery( window ).height();\r\n\t\t\tvar height = viewHeight - top;\r\n\t\t\tjQuery( el ).height( height );\r\n\t\t},\r\n\r\n\t\tsetBothGuttersFixed: function( context ) {\r\n\t\t\tcontext = context || this;\r\n\r\n\t\t\tvar offsetLeft = jQuery( context.gutterLeft.el ).offset();\r\n\t\t\tvar topLeft = offsetLeft.top;\r\n\t\t\tvar leftLeft = offsetLeft.left;\r\n\r\n\t\t\tjQuery( context.gutterLeft.el ).css( { position: 'fixed', left: leftLeft, top: topLeft } );\t\t\tvar offsetLeft = jQuery( context.gutterLeft.el ).offset();\r\n\t\t\t\r\n\t\t\tvar offsetRight = jQuery( context.gutterRight.el ).offset();\r\n\t\t\tvar topRight = offsetRight.top;\r\n\t\t\tvar leftRight = offsetRight.left;\r\n\r\n\t\t\tjQuery( context.gutterRight.el ).css( { position: 'fixed', left: leftRight, top: topRight } );\r\n\t\t},\r\n\r\n\t\tsetBothGuttersAbsolute: function( context ) {\r\n\t\t\tcontext = context || this;\r\n\r\n\t\t\tvar offsetLeft = jQuery( context.gutterLeft.el ).offset();\r\n\t\t\tvar offsetRight = jQuery( context.gutterRight.el ).offset();\r\n\r\n\t\t\tvar scrollTop = jQuery( '#nf-main' ).scrollTop();\r\n\r\n\t\t\tjQuery( context.gutterLeft.el ).css( { position: 'absolute', left: 0, top: scrollTop } );\r\n\t\t\tjQuery( context.gutterRight.el ).css( { position: 'absolute', top: scrollTop, right: 0, left: 'auto' } );\r\n\t\t},\r\n\r\n\t\tupdateGutters: function() {\r\n\t\t\tthis.resizeBothGutters();\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Renders an application menu item from a domain model.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/mobileMenuItem',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-mobile-menu-item',\r\n\r\n\t\t/**\r\n\t\t * When we render this view, remove the extra <div> tag created by backbone.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tonRender: function() {\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\t\t},\r\n\r\n\t\t// Listen for clicks on our app menu.\r\n\t\tevents: {\r\n\t\t\t'click a': 'clickAppMenu'\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we click on a menu item, fire a radio event.\r\n\t\t * This lets us separate the logic from the click event and view.\r\n\t\t * We pass this.model so that we know what item was clicked.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\te event\r\n\t\t * @return return\r\n\t\t */\r\n\t\tclickAppMenu: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:menu', e, this.model );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * These functions are available to templates, and help us to remove logic from template files.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return Object\r\n\t\t */\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\t/**\r\n\t\t\t\t * If we have any dashicons in our model, render them.\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderDashicons: function() {\r\n\t\t\t\t\tif ( ! this.mobileDashicon ) return '';\r\n\r\n var icon = document.createElement( 'span' );\r\n icon.classList.add( 'dashicons' );\r\n icon.classList.add( this.mobileDashicon );\r\n\r\n return icon.outerHTML;\r\n\t\t\t\t},\r\n\t\t\t\t/**\r\n\t\t\t\t * Render classes for our menu item, including active.\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderClasses: function() {\r\n\t\t\t\t\tvar classes = this.classes;\r\n\t\t\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\t\t\tif ( currentDomain.get( 'id' ) == this.id ) {\r\n\t\t\t\t\t\tclasses += ' active';\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn classes;\r\n\t\t\t\t},\r\n\t\t\t\t/**\r\n\t\t\t\t * If our menu is a link (like preview), render its url.\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderUrl: function() {\r\n\t\t\t\t\tif ( '' != this.url ) {\r\n\t\t\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\t\t\t\t\t\treturn this.url + formModel.get( 'id' );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '#';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/**\r\n\t\t\t\t * If our menu is a link (like preview), render its target.\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderTarget: function() {\r\n\t\t\t\t\tif ( '' != this.url ) {\r\n\t\t\t\t\t\treturn '_blank';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '_self';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * If our menu item is disabled, output 'disabled'\r\n\t\t\t\t * \r\n\t\t\t\t * @since 3.0\r\n\t\t\t\t * @return string\r\n\t\t\t\t */\r\n\t\t\t\trenderDisabled: function() {\r\n\t\t\t\t\tif ( this.disabled ) {\r\n\t\t\t\t\t\treturn 'disabled';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Single item view used for the menu drawer.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/mobileMenu',['views/app/mobileMenuItem'], function( mobileMenuItemView ) {\r\n\tvar view = Marionette.CompositeView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-mobile-menu',\r\n\t\tchildView: mobileMenuItemView,\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen to changes on the app 'clean' state. When it changes, re-render.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:clean', this.render, this );\r\n\t\t},\r\n\r\n\t\tattachHtml: function( collectionView, childView ) {\r\n\t\t\tjQuery( collectionView.el ).find( '.secondary' ).append( childView.el );\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\t/**\r\n\t \t\t * If our app state is clean, disable button.\r\n\t \t\t * \r\n\t \t\t * @since 3.0\r\n\t \t\t * @return string\r\n\t \t\t */\r\n\t \t\tmaybeDisabled: function() {\r\n\t \t\t\tif ( nfRadio.channel( 'app' ).request( 'get:setting', 'clean' ) ) {\r\n\t \t\t\t\treturn 'disabled';\r\n\t \t\t\t} else {\r\n\t \t\t\t\treturn '';\r\n\t \t\t\t}\r\n\t \t\t}\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .nf-publish': 'clickPublish'\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we click publish, trigger a radio event.\r\n\t\t * This lets us separate the logic from the click event and view.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \te event\r\n\t\t * @return void\r\n\t\t */\r\n\t\tclickPublish: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:publish', e );\r\n\t\t\tvar builderEl = nfRadio.channel( 'app' ).request( 'get:builderEl' );\r\n\t\t\tjQuery( builderEl ).toggleClass( 'nf-menu-expand' );\r\n\t\t},\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Empty drawer content view.\r\n * Called before we close the drawer.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/contentEmpty',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-empty'\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Renders our drawer region\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer',['views/app/drawer/contentEmpty'], function( drawerEmptyView ) {\r\n\r\n\tvar view = Marionette.LayoutView.extend( {\r\n\t\ttemplate: '#tmpl-nf-drawer',\r\n\r\n\t\tregions: {\r\n\t\t\theader: '#nf-drawer-header',\r\n\t\t\tcontent: '#nf-drawer-content',\r\n\t\t\tfooter: '#nf-drawer-footer'\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:drawerEl', this.getEl, this );\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'load:drawerContent', this.loadContent, this );\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'empty:drawerContent', this.emptyContent, this );\r\n\t\t},\r\n\r\n\t\tonShow: function() {\r\n\t\t\tjQuery( this.el ).parent().perfectScrollbar();\r\n\t\t},\r\n\r\n\t\tloadContent: function( drawerID, data ) {\r\n\t\t\tvar drawer = nfRadio.channel( 'app' ).request( 'get:drawer', drawerID );\r\n\t\t\tvar contentView = drawer.get( 'getContentView' ).call( drawer, data );\r\n\t\t\tvar headerView = drawer.get( 'getHeaderView' ).call( drawer, data );\r\n\t\t\tvar footerView = drawer.get( 'getFooterView' ).call( drawer, data );\r\n\r\n\t\t\tthis.header.show( headerView );\r\n\t\t\tthis.content.show( contentView );\r\n\t\t\tthis.footer.show( footerView );\r\n\r\n\t\t},\r\n\r\n\t\temptyContent: function() {\r\n\t\t\tthis.header.empty();\r\n\t\t\tthis.content.empty();\r\n\t\t\tthis.footer.empty();\r\n\t\t},\r\n\r\n\t\tgetEl: function() {\r\n\t\t\treturn jQuery( this.el ).parent();\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .nf-toggle-drawer': 'clickToggleDrawer'\r\n\t\t},\r\n\r\n\t\tclickToggleDrawer: function() {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:toggleDrawerSize' );\r\n\t\t}\r\n\r\n\t} );\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Single item view used for merge tags.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/mergeTagItem',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'li',\r\n\r\n\t\ttemplate: '#tmpl-nf-merge-tags-item',\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.model.off( 'change:active', this.render );\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.model.on( 'change:active', this.render, this );\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click a': 'clickTag'\r\n\t\t},\r\n\r\n\t\tclickTag: function( e ) {\r\n\t\t\tnfRadio.channel( 'mergeTags' ).trigger( 'click:mergeTag', e, this.model );\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\trenderClasses: function() {\r\n\t\t\t\t\tif ( this.active ) {\r\n\t\t\t\t\t\treturn 'active';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Merge tags popup section\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/mergeTagsSection',['views/app/drawer/mergeTagItem'], function( mergeTagItemView ) {\r\n\tvar view = Marionette.CompositeView.extend({\r\n\t\ttagName: 'div',\r\n\t\tchildView: mergeTagItemView,\r\n\t\ttemplate: '#tmpl-nf-merge-tags-section',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.collection = this.model.get( 'tags' );\r\n\t\t\tthis.model.on( 'change', this.render, this );\r\n\t\t\tif ( 'fields' == this.model.get( 'id' ) ) {\r\n\t\t\t\t// var fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\t\t\t\t// fieldCollection.on( 'all', this.updateFields, this );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.model.off( 'change', this.render );\r\n\t\t\tif ( 'fields' == this.model.get( 'id' ) ) {\r\n\t\t\t\tvar fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\t\t\t\tfieldCollection.off( 'all', this.updateFields, this );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tattachHtml: function( collectionView, childView ) {\r\n\t\t\tjQuery( collectionView.el ).find( '.merge-tags' ).append( childView.el );\r\n\t\t},\r\n\r\n\t\tupdateFields: function() {\r\n\t\t\tvar fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\t\t\tthis.model.set( 'tags', fieldCollection );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Model that represents our merge tags.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/mergeTagModel',[], function() {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\tactive: false,\r\n\t\t\texclude: false\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Collections of merge tags.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/mergeTagCollection',['models/app/mergeTagModel'], function( mergeTagModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: mergeTagModel\r\n\t} );\r\n\treturn collection;\r\n} );\n/**\r\n * Merge tags popup\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/mergeTagsContent',['views/app/drawer/mergeTagsSection', 'models/app/mergeTagCollection'], function( mergeTagsSectionView, MergeTagCollection ) {\r\n\tvar view = Marionette.CollectionView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-merge-tags-content',\r\n\t\tchildView: mergeTagsSectionView,\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'mergeTags' ).reply( 'get:view', this.getMergeTagsView, this );\r\n\t\t},\r\n\r\n\t\treRender: function( settingModel ) {\r\n\t\t\tvar mergeTagCollection = nfRadio.channel( 'mergeTags' ).request( 'get:collection' );\r\n\t\t\tvar defaultGroups = mergeTagCollection.where( { default_group: true } );\r\n\r\n\t\t\t/*\r\n\t\t\t * For the Actions Domain, Add Calc Merge Tags as a Default Group.\r\n\t\t\t */\r\n\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\tif( 'actions' == currentDomain.get( 'id' ) ){\r\n\t\t\t\tvar calcMergeTagGroup = mergeTagCollection.where( { id: 'calcs' } );\r\n defaultGroups = defaultGroups.concat( calcMergeTagGroup );\r\n }\r\n\r\n\t\t\tthis.collection = new MergeTagCollection( defaultGroups );\r\n\t\t\tvar that = this;\r\n\t\t\tvar useMergeTags = settingModel.get( 'use_merge_tags' );\r\n\t\t\tif ( 'object' == typeof useMergeTags ) {\r\n\t\t\t\tif ( 'undefined' != typeof useMergeTags.exclude ) {\r\n\t\t\t\t\t_.each( useMergeTags.exclude, function( exclude ) {\r\n\t\t\t\t\t\tthat.collection.remove( exclude )\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( 'undefined' != typeof useMergeTags.include ) {\r\n\t\t\t\t\t_.each( mergeTagCollection.models, function( sectionModel ) {\r\n\t\t\t\t\t\tif ( -1 != useMergeTags.include.indexOf( sectionModel.get( 'id' ) ) ) {\r\n\t\t\t\t\t\t\t// console.log( sectionModel );\r\n\t\t\t\t\t\t\tthat.collection.add( sectionModel );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.render();\r\n\t\t},\r\n\r\n\t\tgetMergeTagsView: function() {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Builder view.\r\n *\r\n * This layout view has regions that represent our application areas:\r\n * header\r\n * main\r\n * menuDrawer - Mobile side-menu\r\n * drawer\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/builder',['views/app/builderHeader', 'views/app/main', 'views/app/mobileMenu', 'views/app/drawer', 'views/app/drawer/mergeTagsContent'], function( headerView, mainView, mobileMenuView, drawerView, mergeTagsContentView ) {\r\n\tvar view = Marionette.LayoutView.extend( {\r\n\t\ttemplate: \"#tmpl-nf-builder\",\r\n\t\tel: '#nf-builder',\r\n\r\n\t\tregions: {\r\n\t\t\theader: \"#nf-header\",\r\n\t\t\tmain: \"#nf-main\",\r\n\t\t\tmenuDrawer: \"#nf-menu-drawer\",\r\n\t\t\tdrawer: \"#nf-drawer\",\r\n\t\t\tmergeTagsContent: '.merge-tags-content'\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Respond to requests asking for the builder dom element.\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:builderEl', this.getBuilderEl, this );\r\n\t\t\t// Respond to requests asking for the builder view\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:builderView', this.getBuilderView, this );\r\n\t\t\t// Layout views aren't self-rendering.\r\n\t\t\tthis.render();\r\n\t\t\tvar mergeTags = nfRadio.channel( 'mergeTags' ).request( 'get:collection' );\r\n\t\t\tvar mergeTagsClone = mergeTags.clone();\r\n\t\t\tthis.mergeTagsContent.show( new mergeTagsContentView( { collection: mergeTagsClone } ) );\r\n\t\t\t// Show our header.\r\n\t\t\tthis.header.show( new headerView() );\r\n\t\t\t// Show our main content.\r\n\t\t\tthis.main.show( new mainView() );\r\n\t\t\t// Show our mobile menu\r\n\t\t\tvar appDomainCollection = nfRadio.channel( 'app' ).request( 'get:domainCollection' );\r\n\t\t\tthis.menuDrawer.show( new mobileMenuView( { collection: appDomainCollection } ) );\r\n\t\t\t// Show our drawer.\r\n\t\t\tthis.drawer.show( new drawerView() );\r\n\r\n\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\r\n\t\t},\r\n\r\n\t\tgetBuilderEl: function() {\r\n\t\t\treturn this.el;\r\n\t\t},\r\n\r\n\t\tgetBuilderView: function() {\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\t// Listen for clicks\r\n\t\tevents: {\r\n\t\t\t'click .nf-open-drawer': 'openDrawer',\r\n\t\t\t'click .nf-change-domain': 'changeDomain',\r\n\t\t\t'click .nf-close-drawer': 'closeDrawer'\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Someone clicked to open a drawer, so fire a radio event.\r\n\t\t * This lets us separate the logic from the click event and view.\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @param Object \te \tevent\r\n\t\t * @return void\r\n\t\t */\r\n\t\topenDrawer: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:openDrawer', e );\r\n\t\t},\r\n\t\t/**\r\n\t\t * Someone clicked to close a drawer, so fire a radio event.\r\n\t\t * This lets us separate the logic from the click event and view.\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tcloseDrawer: function() {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:closeDrawer' );\r\n\t\t},\r\n\t\t/**\r\n\t\t * Someone clicked to change the domain, so fire a radio event.\r\n\t\t * This lets us separate the logic from the click event and view.\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @param Object \te \tevent\r\n\t\t * @return void\r\n\t\t */\r\n\t\tchangeDomain: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:menu', e );\r\n\t\t}\r\n\r\n\t} );\r\n\r\n\treturn view;\r\n} );\r\n\n\r\ndefine( 'controllers/app/remote',[], function() {\r\n return Marionette.Object.extend( {\r\n initialize: function() {\r\n this.listenTo( nfRadio.channel( 'setting' ), 'remote', this.addListener );\r\n },\r\n\r\n addListener: function( model, dataModel ) {\r\n\r\n var listenTo = model.get( 'remote' ).listen;\r\n\r\n // TODO: Change seems to be triggering twice on each update.\r\n this.listenTo( nfRadio.channel( 'fieldSetting-' + listenTo ), 'update:setting', this.updateSetting );\r\n this.listenTo( nfRadio.channel( 'actionSetting-' + listenTo ), 'update:setting', this.updateSetting );\r\n\r\n this.listenTo( nfRadio.channel( 'setting-type-' + model.get( 'type' ) ), 'click:extra', this.clickExtra );\r\n\r\n model.listenTo( nfRadio.channel( 'setting-remote' ), 'get:remote', this.getRemote, model );\r\n\r\n // Auto-trigger get:remote on drawer load.\r\n nfRadio.channel( 'setting-remote' ).trigger( 'get:remote', dataModel );\r\n },\r\n\r\n clickExtra: function( e, settingModel, dataModel, settingView ) {\r\n jQuery( e.srcElement ).addClass( 'spin' );\r\n nfRadio.channel( 'setting-remote' ).trigger( 'get:remote', dataModel );\r\n },\r\n\r\n updateSetting: function( dataModel, settingModel ) {\r\n nfRadio.channel( 'setting-remote' ).trigger( 'get:remote', dataModel );\r\n },\r\n\r\n getRemote: function( dataModel ) {\r\n\r\n var remote = this.get( 'remote' );\r\n\r\n var data = {\r\n parentValue: dataModel.get( remote.listen ),\r\n action: remote.action,\r\n security: ( remote.security ) ? remote.security : nfAdmin.ajaxNonce\r\n };\r\n\r\n // TODO: Disable setting and lock drawer while updating.\r\n var that = this;\r\n jQuery.post( ajaxurl, data, function( response ){\r\n var response = JSON.parse( response );\r\n\r\n if( 'textbox' == that.get( 'type' ) ) {\r\n dataModel.set( that.get('name'), response.value );\r\n }\r\n\r\n if( 'select' == that.get( 'type' ) ) {\r\n that.set( 'options', response.options );\r\n that.trigger( 'rerender' );\r\n }\r\n });\r\n },\r\n\r\n });\r\n} );\n/**\r\n * Handles opening and closing our drawer. This is where we display settings for fields, actions, and settings.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/drawer',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen to our drawer-related click events.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:openDrawer', this.clickOpenDrawer );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:closeDrawer', this.closeDrawer );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:toggleDrawerSize', this.toggleDrawerSize );\r\n\r\n\t\t\t// Reply to direct requests to open or close the drawer.\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'open:drawer', this.openDrawer, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'close:drawer', this.closeDrawer, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * When we close the drawer, we have to figure out what the right position should be.\r\n\t\t\t * This listens to requests from other parts of our app asking what the closed right position is.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'get:closedRightPos', this.getClosedDrawerPos, this );\r\n\t\t\t\r\n\t\t\t// Reply to requests to prevent our drawer from closing\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'prevent:close', this.preventClose, this );\r\n\t\t\t// Reply to requests to enable drawer closing\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'enable:close', this.enableClose, this );\r\n\t\t\t// Reply to requests for our disabled/enabled state.\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'get:preventClose', this.maybePreventClose, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Object that holds our array of 'prevent close' values.\r\n\t\t\t * We use an array so that registered requests can unregister and not affect each other.\r\n\t\t\t */\r\n\t\t\tthis.objPreventClose = {};\r\n\r\n\t\t\t/*\r\n\t\t\t * Listen to focus events on the filter and stop our interval when it happens.\r\n\t\t\t * This is to fix a bug that can cause the filter to gain focus every few seconds.\r\n\t\t\t */\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'filter:focused', this.filterFocused );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Handles closing our drawer\r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tcloseDrawer: function() {\r\n\t\t\t// Get our current domain.\r\n\t\t\tvar currentDrawer = nfRadio.channel( 'app' ).request( 'get:currentDrawer' );\r\n if ( ! currentDrawer || this.maybePreventClose() ) {\r\n return false;\r\n }\r\n\r\n\t\t\t// Triggers the before close drawer action on our current domain's drawer channel.\r\n\t\t\tnfRadio.channel( 'drawer-' + currentDrawer.get( 'id' ) ).trigger( 'before:closeDrawer' );\r\n\t\t\t/*\r\n\t\t\t * The 'before:closeDrawer' message is deprecated as of version 3.0 in favour of 'before:close'.\r\n\t\t\t * TODO: Remove this radio message in the future.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'drawer' ).trigger( 'before:closeDrawer' );\r\n\t\t\tnfRadio.channel( 'drawer' ).trigger( 'before:close' );\r\n\t\t\t// Send a message to our drawer to empty its contents.\r\n\t\t\tnfRadio.channel( 'drawer' ).request( 'empty:drawerContent' );\r\n\r\n\t\t\t// To close our drawer, we have to add our closed class to the builder and remove the opened class.\r\n\t\t\tvar builderEl = nfRadio.channel( 'app' ).request( 'get:builderEl' );\r\n\t\t\tjQuery( builderEl ).addClass( 'nf-drawer-closed' ).removeClass( 'nf-drawer-opened' );\r\n\t\t\tjQuery( builderEl ).removeClass( 'disable-main' );\r\n\r\n\t\t\t// Get the right position of our closed drawer. Should be container size in -px.\r\n\t\t\tvar rightClosed = this.getClosedDrawerPos();\r\n\r\n\t\t\t// Get our drawer element and give change the 'right' property to our closed position.\r\n\t\t\tvar drawerEl = nfRadio.channel( 'app' ).request( 'get:drawerEl' );\r\n\t\t\tjQuery( drawerEl ).css( { 'right': rightClosed } );\r\n\r\n\t\t\t// In order to access properties in 'this' context in our interval below, we have to set it here.\t\r\n\t\t\tvar that = this;\r\n\r\n\t\t\t/*\r\n\t\t\t * Since jQuery can't bind to a CSS change, we poll every .15 seconds to see if we've closed the drawer.\r\n\t\t\t *\r\n\t\t\t * Once our drawer is closed, we:\r\n\t\t\t * clear our interval\r\n\t\t\t * request that the app change it's current drawer to false\r\n\t\t\t * trigger a drawer closed message\r\n\t\t\t */\r\n\t\t\tthis.checkCloseDrawerPos = setInterval( function() {\r\n\t \tif ( rightClosed == jQuery( drawerEl ).css( 'right' ) ) {\r\n\t \t\tclearInterval( that.checkCloseDrawerPos );\r\n\t\t \t\tnfRadio.channel( 'app' ).request( 'update:currentDrawer', false );\r\n\t\t \t\tnfRadio.channel( 'drawer' ).trigger( 'closed' );\r\n\t\t \t\t/*\r\n\t\t \t\t * Reset the add new button z-index to 98.\r\n\t\t \t\t */\r\n\t\t \t\tjQuery( '.nf-master-control' ).css( 'z-index', 98 );\r\n\t\t \t\t// jQuery( drawerEl ).scrollTop( 0 );\r\n\t \t}\r\n\t\t\t}, 150 );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Click handler for our 'open drawer' event.\r\n\t\t * @since 3.0\r\n\t\t * @param e jQuery event\r\n\t\t * @return void\r\n\t\t */\r\n\t\tclickOpenDrawer: function( e ) {\r\n\t\t\tvar drawerID = jQuery( e.target ).data( 'drawerid' );\r\n\t\t\tthis.openDrawer( drawerID );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Open our drawer.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param string drawerID \tID of the drawer we want to open.\r\n\t\t * @param object data \tOptional data that we want to pass to the drawer.\r\n\t\t * @return void\r\n\t\t */\r\n\t\topenDrawer: function( drawerID, data ) {\r\n\t\t\tif ( this.maybePreventClose() ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// If we haven't sent a data object, set the variable to an empty object.\r\n\t\t\tdata = data || {};\r\n\r\n\t\t\t/*\r\n\t\t\t * If we're dealing with something that has a model, set the proper active state.\r\n\t\t\t *\r\n\t\t\t * TODO: Make this more dynamic. I'm not sure that it fits in the drawer controller.\r\n\t\t\t */\r\n\t\t\tif ( 'undefined' != typeof data.model ) {\r\n\t\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\t\tvar currentDomainID = currentDomain.get( 'id' );\r\n\t\t\t\tnfRadio.channel( currentDomainID ).request( 'clear:editActive' );\r\n\t\t\t\tdata.model.set( 'editActive', true );\r\n\t\t\t\tthis.dataModel = data.model;\r\n\t\t\t}\r\n\r\n\t\t\t// Send out a message requesting our drawer view to load the content for our drawer ID.\r\n\t\t\tnfRadio.channel( 'drawer' ).request( 'load:drawerContent', drawerID, data );\r\n\t\t\tnfRadio.channel( 'drawer' ).trigger( 'before:open' );\r\n\t\t\t\r\n\t\t\t// To open our drawer, we have to add our opened class to our builder element and remove the closed class.\r\n\t\t\tvar builderEl = nfRadio.channel( 'app' ).request( 'get:builderEl' );\r\n\t\t\tjQuery( builderEl ).addClass( 'nf-drawer-opened' ).removeClass( 'nf-drawer-closed' );\r\n\t\t\t\r\n\t\t\t// To open our drawer, we have to set the right position of our drawer to 0px.\r\n\t\t\tvar drawerEl = nfRadio.channel( 'app' ).request( 'get:drawerEl' );\r\n\t\t\tjQuery( drawerEl ).css( { 'right': '0px' } );\r\n\t\t\t\r\n\t\t\t// In order to access properties in 'this' context in our interval below, we have to set it here.\t\r\n\t\t\tvar that = this;\r\n\r\n\t\t\t/*\r\n\t\t\t * Since jQuery can't bind to a CSS change, we poll every .15 seconds to see if we've opened the drawer.\r\n\t\t\t *\r\n\t\t\t * Once our drawer is opened, we:\r\n\t\t\t * clear our interval\r\n\t\t\t * focus our filter\r\n\t\t\t * request that the app update its current drawer to the one we opened\r\n\t\t\t * trigger a drawer opened message\r\n\t\t\t */\r\n\t\t\tthis.hasFocus = false;\r\n\r\n\t\t\t/*\r\n\t\t\t * Set our add new button z-index to 0;\r\n\t\t\t */\r\n\t\t\tjQuery( '.nf-master-control' ).css( 'z-index', 0 );\r\n\r\n\t\t\tthis.checkOpenDrawerPos = setInterval( function() {\r\n\t \tif ( '0px' == jQuery( drawerEl ).css( 'right' ) ) {\r\n\t \t\tclearInterval( that.checkOpenDrawerPos );\r\n\t\t\t\t\tif ( ! that.hasFocus ) {\r\n\t\t \t\tthat.focusFilter();\r\n\t\t\t\t\t\tthat.hasFocus = true;\r\n\t\t\t \t\tnfRadio.channel( 'app' ).request( 'update:currentDrawer', drawerID );\r\n\t\t\t \t\tjQuery( drawerEl ).scrollTop( 0 );\r\n\t\t\t \t\tnfRadio.channel( 'drawer' ).trigger( 'opened' );\r\n\t\t\t\t\t} \t\t\r\n\t \t}\r\n\t\t\t}, 150 );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Toggle the drawer from half to full screen and vise-versa\r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\ttoggleDrawerSize: function() {\r\n\t\t\t// Get our drawer element.\r\n\t\t\tvar drawerEl = nfRadio.channel( 'app' ).request( 'get:drawerEl' );\r\n\t\t\t// toggle our drawer size class.\r\n\t\t\tjQuery( drawerEl ).toggleClass( 'nf-drawer-expand' );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Focus our filter\r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n focusFilter: function() {\r\n \t// Get our filter element\r\n \tvar filterEl = nfRadio.channel( 'drawer' ).request( 'get:filterEl' );\r\n \t// Focus\r\n \tjQuery( filterEl ).focus();\r\n },\r\n\r\n /**\r\n * Get the CSS right position (in px) of the closed drawer element.\r\n * This is calculated by:\r\n * getting the width of the builder element\r\n * add 300 pixels\r\n * make it negative\r\n * \r\n * @since 3.0\r\n * @return void\r\n */\r\n getClosedDrawerPos: function() {\r\n\t\t\tvar builderEl = nfRadio.channel( 'app' ).request( 'get:builderEl' );\r\n\t\t\tvar closedPos = jQuery( builderEl ).width() + 300;\r\n\t\t\treturn '-' + closedPos + 'px';\r\n },\r\n\r\n /**\r\n * Check to see if anything has registered a prevent close key.\r\n * \r\n * @since 3.0\r\n * @return boolean\r\n */\r\n maybePreventClose: function() {\r\n \tif ( 0 == Object.keys( this.objPreventClose ).length ) {\r\n \t\treturn false;\r\n \t} else {\r\n \t\treturn true;\r\n \t}\r\n },\r\n\r\n /**\r\n * Register a prevent close key.\r\n * \r\n * @since 3.0\r\n * @param string \tkey unique id for our 'prevent close' setting.\r\n * @return void\r\n */\r\n preventClose: function( key ) {\r\n \tthis.objPreventClose[ key ] = true;\r\n \t/*\r\n \t * When we disable closing the drawer, add the disable class.\r\n \t */\r\n \t// Get our current drawer.\r\n\t\t\tthis.dataModel.set( 'drawerDisabled', true );\r\n },\r\n\r\n /**\r\n * Remove a previously registered prevent close key.\r\n * \r\n * @since 3.0\r\n * @param string \tkey unique id for our 'prevent close' setting.\r\n * @return void\r\n */\r\n enableClose: function( key ) {\r\n \tdelete this.objPreventClose[ key ];\r\n \t /*\r\n \t * When we remove all of our disables preventing closing the drawer, remove the disable class.\r\n \t */\r\n \tif ( ! this.maybePreventClose() && 'undefined' != typeof this.dataModel ) {\r\n\t \t// Get our current drawer.\r\n\t\t\t\tthis.dataModel.set( 'drawerDisabled', false ); \t\t\r\n \t}\r\n },\r\n\r\n /**\r\n * When we focus our filter, make sure that our open drawer interval is cleared.\r\n * \r\n * @since 3.0\r\n * @return void\r\n */\r\n filterFocused: function() {\r\n \tclearInterval( this.checkOpenDrawerPos );\r\n },\r\n\r\n getPreventClose: function() {\r\n \treturn this.objPreventClose;\r\n }\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Default drawer header.\r\n *\r\n * Includes our filter/search and 'Done' button.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/headerDefault',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-header-default',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tif ( this.model ) {\r\n\t\t\t\t// Listen for our drawer being disabled.\r\n\t\t\t\tthis.model.on( 'change:drawerDisabled', this.render, this );\t\t\t\t\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we render, remove the extra div added by backbone and add listeners related to our filter.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tonRender: function() {\r\n\t\t\t// Remove extra wrapping div.\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\t\t\t// Respond to requests related to our filter.\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'clear:filter', this.clearFilter, this );\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'blur:filter', this.blurFilter, this );\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'get:filterEl', this.getEl, this );\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tif ( this.model ) {\r\n\t\t\t\tthis.model.off( 'change:drawerDisabled', this.render );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'keyup .nf-filter'\t: 'maybeChangeFilter',\r\n\t\t\t'input .nf-filter'\t: 'changeFilter',\r\n\t\t\t'focus input'\t\t: 'getFocus'\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When the filter text is changed, trigger an event on our current drawer.\r\n\t\t * This lets us keep the logic separate from the click event and view.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \te event\r\n\t\t * @return void\r\n\t\t */\r\n\t\tchangeFilter: function( e ) {\r\n\t\t\tvar currentDrawer = nfRadio.channel( 'app' ).request( 'get:currentDrawer' );\r\n\t\t\tnfRadio.channel( 'drawer-' + currentDrawer.get( 'id' ) ).trigger( 'change:filter', e.target.value, e );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * The user pressed a key. If it's the enter key, then run the change filter function.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \te event\r\n\t\t * @return void\r\n\t\t */\r\n\t\tmaybeChangeFilter: function( e ) {\r\n\t\t\tif ( 13 == e.keyCode ) {\r\n\t\t\t\te.addObject = true;\r\n\t\t\t\tthis.changeFilter( e );\t\t\t\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Clear our filter.\r\n\t\t *\r\n\t\t * This triggers 'input' on the field, which will trigger a change if necessary.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tclearFilter: function() {\r\n\t\t\tvar filterEl = jQuery( this.el ).find( '.nf-filter' );\r\n\t\t\tif ( '' != jQuery.trim( filterEl.val() ) ) {\r\n\t\t\t\tfilterEl.val('');\r\n\t\t\t\tfilterEl.trigger( 'input' );\r\n\t\t\t\tfilterEl.focus();\t\t\t\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Fire the 'blur' event on our filter. Used to force a change event when the user tabs.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tblurFilter: function() {\r\n\t\t\tjQuery( this.el ).find( '.nf-filter' ).blur();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Return our filter dom element.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return Object\r\n\t\t */\r\n\t\tgetEl: function() {\r\n\t\t\treturn jQuery( this.el ).find( '.nf-filter' );\r\n\t\t},\r\n\r\n\t\tgetFocus: function() {\r\n\t\t\tnfRadio.channel( 'drawer' ).trigger( 'filter:focused' );\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\trenderDisabled: function() {\r\n\t\t\t\t\t// Get our current domain.\r\n\t\t\t\t\tif ( this.drawerDisabled ) {\r\n\t\t\t\t\t\treturn 'disabled';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Default drawer footer\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/footerDefault',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-empty'\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'models/app/drawerModel',['views/app/drawer/headerDefault', 'views/app/drawer/footerDefault'], function( defaultHeaderView, defaultFooterView ) {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\tgetHeaderView: function( data ) {\r\n\t\t\t\treturn new defaultHeaderView( data );\r\n\t\t\t},\r\n\r\n\t\t\tgetFooterView: function( data ) {\r\n\t\t\t\treturn new defaultFooterView( data );\r\n\t\t\t}\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Collection that holds all of our drawer models.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/drawerCollection',['models/app/drawerModel'], function( drawerModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: drawerModel\r\n\t} );\r\n\treturn collection;\r\n} );\ndefine( 'views/fields/drawer/stagedField',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-staged-field',\r\n\r\n\t\tonRender: function() {\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .dashicons-dismiss': 'removeStagedField'\r\n\t\t},\r\n\r\n\t\tremoveStagedField: function( el ) {\r\n\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'click:removeStagedField', el, this.model );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\ndefine( 'views/fields/drawer/stagingEmpty',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-staged-fields-empty',\r\n\r\n\t\tonRender: function() {\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/fields/drawer/stagingCollection',['views/fields/drawer/stagedField', 'views/fields/drawer/stagingEmpty'], function( stagedFieldView, stagedFieldsEmptyView ) {\r\n\tvar view = Marionette.CollectionView.extend( {\r\n\t\ttagName: 'div',\r\n\t\tchildView: stagedFieldView,\r\n\t\temptyView: stagedFieldsEmptyView,\r\n\r\n\t\tactiveClass: 'nf-staged-fields-active', // CSS Class for showing the reservoir.\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:stagedFieldsEl', this.getStagedFieldsEl, this );\r\n\t\t},\r\n\r\n\t\tonShow: function() {\r\n\r\n\t\t\tthis.$el = jQuery( this.el ).parent();\r\n\t\t\tjQuery( this.$el ).find( 'span:first' ).unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\r\n\t\t\tvar that = this;\r\n\r\n\t\t\tjQuery( this.el ).sortable( {\r\n\t\t\t\tplaceholder: 'nf-staged-fields-sortable-placeholder',\r\n\t\t\t\thelper: 'clone',\r\n\t\t\t\ttolerance: 'pointer',\r\n\t\t\t\tover: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'over:stagedFields', e, ui );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tout: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'out:stagedFields', ui );\r\n\t\t\t\t},\r\n\r\n\t\t\t\treceive: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'receive:stagedFields', ui );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tupdate: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'fields' ).request( 'sort:staging' );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tstart: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'start:stagedFields', ui );\r\n\r\n\t\t\t\t},\r\n\r\n\t\t\t\tstop: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'stop:stagedFields', ui );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\tjQuery( this.el ).parent().draggable( {\r\n\t\t\t\topacity: 0.9,\r\n\t\t\t\tconnectToSortable: '.nf-field-type-droppable',\r\n\t\t\t\tappendTo: '#nf-main',\r\n\t\t\t\trefreshPositions: true,\r\n\t\t\t\tgrid: [ 3, 3 ],\r\n\t\t\t\ttolerance: 'pointer',\r\n\r\n\t\t\t\thelper: function( e ) {\r\n\t\t\t\t\tvar width = jQuery( e.target ).parent().width();\r\n\t\t\t\t\tvar height = jQuery( e.target ).parent().height();\r\n\t\t\t\t\tvar element = jQuery( e.target ).parent().clone();\r\n\t\t\t\t\tvar left = width / 4;\r\n\t\t\t\t\tvar top = height / 2;\r\n\t\t\t\t\tjQuery( this ).draggable( 'option', 'cursorAt', { top: top, left: left } );\r\n\t\t\t\t\tjQuery( element ).css( 'z-index', 1000 );\r\n\t\t\t\t\treturn element;\r\n\t\t\t\t},\r\n\r\n\t\t\t\tstart: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'startDrag:fieldStaging', this, ui );\r\n\t\t\t\t},\r\n\t\t\t\tstop: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'stopDrag:fieldStaging', this, ui );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tgetStagedFieldsEl: function() {\r\n\t\t\treturn jQuery( this.el );\r\n\t\t},\r\n\r\n\t\tonAddChild: function() {\r\n\t\t\tjQuery( this.el ).addClass( this.activeClass );\r\n\t\t},\r\n\r\n\t\tonRemoveChild: function() {\r\n\t\t\tif( this.hasStagedFields() ) return;\r\n\t\t\tjQuery( this.el ).removeClass( this.activeClass );\r\n\t\t},\r\n\r\n\t\thasStagedFields: function() {\r\n\t\t\treturn 0 != this.collection.length;\r\n\t\t}\r\n\r\n\t} );\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Model for our staged field.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/fields/stagingModel',[], function() {\r\n\tvar model = Backbone.Model.extend( {\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Collection of staged fields.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/fields/stagingCollection',['models/fields/stagingModel'], function( stagingModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: stagingModel,\r\n\t\tcomparator: 'order'\r\n\t} );\r\n\treturn collection;\r\n} );\ndefine( 'views/fields/drawer/typeSection',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-field-type-section',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t_.bindAll( this, 'render' );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:typeSection', this.getTypeSection, this );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\r\n\t\t\tthis.dragging = false;\r\n\t\t\tvar that = this;\r\n\t\t\t/*\r\n\t\t\t * If we're on a mobile device, we don't want to enable dragging for our field type buttons.\r\n\t\t\t */\r\n\t\t\tif ( ! nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\tjQuery( this.el ).find( 'div.nf-field-type-draggable' ).draggable( {\r\n\t\t\t\t\topacity: 0.9,\r\n\t\t\t\t\ttolerance: 'pointer',\r\n\t\t\t\t\tconnectToSortable: '.nf-field-type-droppable',\r\n\t\t\t\t\trefreshPositions: true,\r\n\t\t\t\t\tgrid: [ 5, 5 ],\r\n\t\t\t\t\tappendTo: '#nf-builder',\r\n\r\n\t\t\t\t\thelper: function( e ) {\r\n\t\t\t\t\t\tvar width = jQuery( e.target ).parent().width();\r\n\t\t\t\t\t\tvar height = jQuery( e.target ).parent().height();\r\n\t\t\t\t\t\tvar element = jQuery( e.target ).parent().clone();\r\n\t\t\t\t\t\tvar left = width / 4;\r\n\t\t\t\t\t\tvar top = height / 2;\r\n\t\t\t\t\t\tjQuery( this ).draggable( 'option', 'cursorAt', { top: top, left: left } );\r\n\t\t\t\t\t\tjQuery( element ).css( 'z-index', 1000 );\r\n\t\t\t\t\t\treturn element;\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tstart: function( e, ui ) {\r\n\t\t\t\t\t\tthat.dragging = true;\r\n\t\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'startDrag:type', this, ui );\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tstop: function( e, ui ) {\r\n\t\t\t\t\t\tthat.dragging = false;\r\n\t\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'stopDrag:type', this, ui );\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tdrag: function(e, ui) {\r\n\t\t\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'drag:type', this, ui, e );\t\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} ).disableSelection();\r\n\r\n\t\t\t\tjQuery( this.el ).find( '.nf-item' ).focus( function() {\r\n\t\t\t \tjQuery( this ).addClass( 'active' );\r\n\t\t\t } ).blur( function() {\r\n\t\t\t \tjQuery( this ).removeClass( 'active' );\r\n\t\t\t } );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .nf-item': 'clickFieldType',\r\n\t\t\t'keydown .nf-item': 'maybeClickFieldType',\r\n\t\t\t'mousedown .nf-item': 'mousedownFieldType'\r\n\t\t},\r\n\r\n\t\tclickFieldType: function( e ) {\r\n\t\t\tif ( ! this.dragging ) {\r\n\t\t\t\tnfRadio.channel( 'drawer' ).trigger( 'click:fieldType', e );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tmousedownFieldType: function( e ) {\r\n\t\t\tjQuery( e.target).addClass( 'clicked' );\r\n\t\t\tsetTimeout( function() {\r\n\t\t\t\tjQuery( e.target ).removeClass( 'clicked' );\r\n\t\t\t}, 1500 );\r\n\t\t},\r\n\r\n\t\tmaybeClickFieldType: function( e ) {\r\n\t\t\tif ( 13 == e.keyCode ) {\r\n\t\t\t\tthis.clickFieldType( e );\r\n\t\t\t\tnfRadio.channel( 'drawer' ).request( 'clear:filter' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\trenderFieldTypes: function() {\r\n\t\t\t var html = document.createElement( 'span' );\r\n\t\t\t var that = this;\r\n\t\t\t _.each( this.fieldTypes, function( id ) {\r\n\t\t\t var type = nfRadio.channel( 'fields' ).request( 'get:type', id );\r\n\t\t\t var nicename = type.get( 'nicename' );\r\n\t\t\t var icon = type.get( 'icon' );\r\n\t\t\t var renderType = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-drawer-field-type-button' );\r\n\t\t\t var templateHTML = renderType( { id: id, nicename: nicename, icon: icon, type: type, savedField: that.savedField } );\r\n var htmlFragments = document.createRange().createContextualFragment( templateHTML );\r\n html.appendChild( htmlFragments );\r\n\t\t\t } );\r\n\t\t\t return html.innerHTML;\r\n\t\t\t\t},\r\n\r\n\t\t\t\tsavedField: function() {\r\n\t\t\t\t\tif( this.type.get( 'savedField' ) ) {\r\n\t\t\t\t\t\treturn 'nf-saved';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetTypeSection: function() {\r\n\t\t\treturn this.el;\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\ndefine( 'views/fields/drawer/typeSectionCollection',['views/fields/drawer/typeSection'], function( fieldTypeSectionView ) {\r\n\tvar view = Marionette.CollectionView.extend( {\r\n\t\ttagName: 'div',\r\n\t\tchildView: fieldTypeSectionView,\r\n\r\n\t\tonShow: function() {\r\n\t\t\tjQuery( this.el ).find( '.nf-settings' ).unwrap();\r\n\t\t\tnfRadio.channel( 'fields' ).request( 'clear:editActive' );\r\n\t\t}\r\n\t} );\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/fields/drawer/addField',['views/fields/drawer/stagingCollection', 'models/fields/stagingCollection', 'views/fields/drawer/typeSectionCollection'], function( drawerStagingView, StagingCollection, fieldTypeSectionCollectionView ) {\r\n\r\n\tvar view = Marionette.LayoutView.extend( {\r\n\t\ttemplate: '#tmpl-nf-drawer-content-add-field',\r\n\r\n\t\tregions: {\r\n\t\t\tstaging: '#nf-drawer-staging .nf-reservoir',\r\n\t\t\tprimary: '#nf-drawer-primary',\r\n\t\t\tsecondary: '#nf-drawer-secondary'\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'filter:fieldTypes', this.filterFieldTypes );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'clear:filter', this.removeFieldTypeFilter );\r\n\r\n\t\t\tthis.savedCollection = nfRadio.channel( 'fields' ).request( 'get:savedFields' );\r\n\t\t\tthis.primaryCollection = this.savedCollection;\r\n\r\n\t\t\tthis.fieldTypeSectionCollection = nfRadio.channel( 'fields' ).request( 'get:typeSections' );\r\n\t\t\tthis.secondaryCollection = this.fieldTypeSectionCollection;\r\n\r\n\t\t},\r\n\r\n\t\tonShow: function() {\r\n\t\t\tvar stagingCollection = nfRadio.channel( 'fields' ).request( 'get:staging' );\r\n\t\t\tthis.staging.show( new drawerStagingView( { collection: stagingCollection } ) );\r\n\r\n\t\t\tthis.primary.show( new fieldTypeSectionCollectionView( { collection: this.primaryCollection } ) );\r\n\t\t\tthis.secondary.show( new fieldTypeSectionCollectionView( { collection: this.secondaryCollection } ) );\r\n\t\t},\r\n\r\n\t\tgetEl: function() {\r\n\t\t\treturn jQuery( this.el ).parent();\r\n\t\t},\r\n\r\n\t\tfilterFieldTypes: function( filteredSectionCollection ) {\r\n\t\t\tthis.primary.reset();\r\n\t\t\tthis.secondary.reset();\r\n\t\t\tthis.filteredSectionCollection = filteredSectionCollection;\r\n\t\t\tthis.primary.show( new fieldTypeSectionCollectionView( { collection: this.filteredSectionCollection } ) );\r\n\t\t},\r\n\r\n\t\tremoveFieldTypeFilter: function () {\r\n\t\t\tthis.primary.show( new fieldTypeSectionCollectionView( { collection: this.savedCollection } ) );\r\n\t\t\tthis.secondary.show( new fieldTypeSectionCollectionView( { collection: this.fieldTypeSectionCollection } ) );\r\n\t\t}\r\n\r\n\t} );\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/app/drawer/itemSettingCollection',[], function() {\r\n\tvar view = Marionette.CollectionView.extend( {\r\n\t\ttagName: 'div',\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\tthis.childViewOptions = { dataModel: data.dataModel };\r\n\t\t},\r\n\r\n\t\tgetChildView: function( model ) {\r\n\t\t\treturn nfRadio.channel( 'app' ).request( 'get:settingChildView', model );\r\n\t\t}\r\n\t} );\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/app/drawer/itemSettingGroup',['views/app/drawer/itemSettingCollection'], function( itemSettingCollectionView ) {\r\n\tvar view = Marionette.LayoutView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-content-edit-field-setting-group',\r\n\t\t\r\n\t\tregions: {\r\n\t\t\tsettings: '.nf-field-settings'\r\n\t\t},\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\tthis.model.on( 'change', this.render, this );\r\n\t\t\tthis.dataModel = data.dataModel;\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.model.off( 'change', this.render );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\r\n\t\t\tthis.settings.show( new itemSettingCollectionView( { collection: this.model.get( 'settings' ), dataModel: this.dataModel } ) );\r\n\r\n\t\t\tif(!nfAdmin.devMode) {\r\n\t\t\t\t// Only check if not for calculations.\r\n\t\t\t\tif(0 == this.$el.find('.calculations').length){\r\n\t\t\t\t\tvar visibleSettings = false;\r\n\t\t\t\t\tthis.$el.find('.nf-setting').each(function(index, setting) {\r\n\t\t\t\t\t\tif( 'none' !== setting.style.display ){\r\n\t\t\t\t\t\t\tvisibleSettings = true;\r\n\t\t\t\t\t\t\treturn false; //Exit jQuery each loop.\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif(!visibleSettings) {\r\n\t\t\t\t\t\tthis.$el.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( this.model.get( 'display' ) ) {\r\n\t\t\t\t// ...\r\n\t\t\t} else {\r\n\t\t\t\tthis.settings.empty();\r\n\t\t\t}\r\n\r\n\t\t\tnfRadio.channel( 'drawer' ).trigger( 'render:settingGroup', this );\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .toggle': 'clickToggleGroup'\r\n\t\t},\r\n\r\n\t\tclickToggleGroup: function( e ) {\r\n\t\t\tnfRadio.channel( 'drawer' ).trigger( 'click:toggleSettingGroup', e, this.model );\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\trenderLabel: function() {\r\n\t\t\t\t\tif ( '' != this.label ) {\r\n\t\t\t\t\t\tvar groupLabel = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-drawer-content-edit-setting-group-label' );\r\n\t\t\t\t\t\treturn groupLabel( this );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderArrowDir: function() {\r\n\t\t\t\t\tif ( this.display ) {\r\n\t\t\t\t\t\treturn 'down';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn 'right';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/app/drawer/itemSettingGroupCollection',['views/app/drawer/itemSettingGroup'], function( itemSettingGroupView ) {\r\n\tvar view = Marionette.CollectionView.extend( {\r\n\t\ttagName: 'div',\r\n\t\tchildView: itemSettingGroupView,\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\tthis.childViewOptions = { dataModel: data.dataModel };\r\n\t\t}\r\n\t} );\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/app/drawer/editSettings',['views/app/drawer/itemSettingGroupCollection'], function( itemSettingGroupCollectionView ) {\r\n\tvar view = Marionette.LayoutView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-content-edit-settings',\r\n\r\n\t\tregions: {\r\n\t\t\tsettingTitle: '.nf-setting-title',\r\n\t\t\tsettingGroups: '.nf-setting-groups'\r\n\t\t},\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\tthis.dataModel = data.model;\r\n\t\t\tthis.groupCollection = data.groupCollection;\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\tvar titleView = currentDomain.get( 'getSettingsTitleView' ).call( currentDomain, { model: this.model } );\r\n\r\n\t\t\tthis.settingTitle.show( titleView );\r\n\t\t\tthis.settingGroups.show( new itemSettingGroupCollectionView( { collection: this.groupCollection, dataModel: this.dataModel } ) );\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function () {\r\n\t \treturn {\r\n\t \t\tmaybeRenderTitle: function() {\r\n\t \t\t\tif ( 'undefined' !== typeof this.type ) {\r\n\t \t\t\t\tvar title = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-drawer-content-edit-settings-title' );\r\n\t \t\t\t\treturn title( this );\r\n\t \t\t\t} else {\r\n\t \t\t\t\treturn '';\r\n\t \t\t\t}\r\n\t \t\t},\r\n\r\n\t \t\trenderTypeNicename: function() {\r\n\t \t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\t\t\tvar domainID = currentDomain.get( 'id' );\r\n\t \t\t\tvar type = nfRadio.channel( domainID ).request( 'get:type', this.type );\r\n\t \t\t\treturn type.get( 'nicename' );\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t},\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Edit Settings drawer header.\r\n *\r\n * Includes our 'Done' button.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/headerEditSettings',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-header-edit-settings',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tif ( this.model ) {\r\n\t\t\t\t// Listen for our drawer being disabled.\r\n\t\t\t\tthis.model.on( 'change:drawerDisabled', this.render, this );\t\t\t\t\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tif ( this.model ) {\r\n\t\t\t\tthis.model.off( 'change:drawerDisabled', this.render );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\trenderDisabled: function() {\r\n\t\t\t\t\t// Get our current domain.\r\n\t\t\t\t\tif ( this.drawerDisabled ) {\r\n\t\t\t\t\t\treturn 'disabled';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Button to add an action to the form.\r\n *\r\n * TODO: make dynamic\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Actions\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/actions/drawer/typeButton',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-action-type-button',\r\n\r\n\t\tonRender: function() {\r\n\t\t\t\r\n\t\t\tjQuery( this.el ).disableSelection();\r\n\t\t\t\r\n\t\t\tif ( 'installed' == this.model.get( 'section') ) {\r\n\t\t\t\tvar that = this;\r\n\t\t\t\tjQuery( this.el ).draggable( {\r\n\t\t\t\t\topacity: 0.9,\r\n\t\t\t\t\ttolerance: 'intersect',\r\n\t\t\t\t\tscroll: false,\r\n\t\t\t\t\thelper: 'clone',\r\n\r\n\t\t\t\t\tstart: function( e, ui ) {\r\n\t\t\t\t\t\tthat.dragging = true;\r\n\t\t\t\t\t\tnfRadio.channel( 'drawer-addAction' ).trigger( 'startDrag:type', this, ui );\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tstop: function( e, ui ) {\r\n\t\t\t\t\t\tthat.dragging = false;\r\n\t\t\t\t\t\tnfRadio.channel( 'drawer-addAction' ).trigger( 'stopDrag:type', this, ui );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .nf-item': 'clickAddAction'\r\n\t\t},\r\n\r\n\t\tclickAddAction: function( e ) {\r\n\t\t\tif ( ! this.dragging ) {\r\n\t\t\t\tif ( 'installed' == this.model.get( 'section' ) ) { // Is this an installed action?\r\n\t\t\t\t\tnfRadio.channel( 'actions' ).trigger( 'click:addAction', this.model );\r\n\t\t\t\t} else { // This isn't an installed action\r\n\t\t\t\t\tvar modalContent = this.model.get( 'modal_content' );\r\n\r\n\t\t\t\t\tvar actionModal = new jBox( 'Modal', {\r\n\t\t\t\t\t content: modalContent,\r\n\t\t\t\t\t zIndex:99999999,\r\n\t\t\t\t\t closeButton: 'box',\r\n\t\t\t\t\t overlay: true,\r\n\t\t\t\t\t width: 600,\r\n\t\t\t\t\t repositionOnOpen: true,\r\n\t\t\t\t\t reposition: true\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tactionModal.open();\r\n\t\t\t\t\t// window.open( this.model.get( 'link' ), '_blank' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\trenderClasses: function() {\r\n\t\t\t\t\tvar classes = 'nf-item';\r\n\t\t\t\t\tif ( '' != jQuery.trim( this.image ) ) {\r\n\t\t\t\t\t\tclasses += ' nf-has-img';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( 'installed' == this.section ) {\r\n\t\t\t\t\t\tclasses += ' nf-action-type';\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn classes;\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderStyle: function() {\r\n\t\t\t\t\tif ( '' != jQuery.trim( this.image ) ) {\r\n\r\n\t\t\t\t\t\t// This is being used in a template, so carefully consider the order of double/single quotes.\r\n\t\t\t\t\t\treturn \"background-image: url('\" + jQuery.trim( this.image ) + \"')\";\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\ndefine( 'views/actions/drawer/typeCollection',['views/actions/drawer/typeButton'], function( actionTypeButtonView ) {\r\n\tvar view = Marionette.CompositeView.extend( {\r\n\t\ttemplate: '#tmpl-nf-drawer-action-type-section',\r\n\t\tchildView: actionTypeButtonView,\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\tvar that = this;\r\n\t\t\treturn {\r\n\t\t\t\thasContents: function() {\r\n\t\t\t\t\treturn that.collection.length > 0;\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderNicename: function() {\r\n\t\t\t\t\treturn that.collection.nicename;\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderClasses: function() {\r\n\t\t\t\t\treturn that.collection.slug;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tattachHtml: function( collectionView, childView ) {\r\n\t\t\tjQuery( collectionView.el ).find( '.action-types' ).append( childView.el );\r\n\t\t}\r\n\t} );\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Model that represents our setting.\r\n *\r\n * When the model is created, we trigger the init event in two radio channels.\r\n *\r\n * This lets specific types of settings modify the model before anything uses it.\r\n *\r\n * Fieldset, for instance, uses this hook to instantiate its settings as a collection.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/settingModel',[], function() {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\tsettings: false,\r\n\t\t\thide_merge_tags: false,\r\n\t\t\terror: false\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Send out two messages saying that we've initialized a setting model.\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'init:settingModel', this );\r\n\t\t\tnfRadio.channel( this.get( 'type' ) ).trigger( 'init:settingModel', this );\r\n\t\t\tnfRadio.channel( 'setting-name-' + this.get( 'name' ) ).trigger( 'init:settingModel', this );\r\n\t\t\tthis.on( 'change:error', this.maybePreventUI, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * If we have an objectType set on our collection, then we're creating a model for the generic settings collection.\r\n\t\t\t * If we're using merge tags in this setting\r\n\t\t\t */\r\n\t\t\tif( 'undefined' == typeof this.collection ) return;\r\n\r\n\t\t\tif ( this.get( 'use_merge_tags' ) && 'undefined' != typeof this.collection.options.objectType ) {\r\n\t\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'update:fieldKey', this.updateKey );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When a field key is updated, send out a radio message requesting that this setting be checked for the old key.\r\n\t\t * We want to send the message on the objectType channel.\r\n\t\t * This means that if this setting is for fields, it will trigger on the fields channel, actions, etc.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Backbone.Model \tkeyModel data model representing the field for which the key just changed\r\n\t\t * @return void\r\n\t\t */\r\n\t\tupdateKey: function( keyModel ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'fire:updateFieldKey', keyModel, this );\r\n\t\t},\r\n\r\n\t\tmaybePreventUI: function() {\r\n\t\t\tif ( this.get( 'error' ) ) {\r\n\t\t\t\tnfRadio.channel( 'drawer' ).request( 'prevent:close', 'setting-' + this.get( 'name' ) + '-error' );\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'prevent:changeDomain', 'setting-' + this.get( 'name' ) + '-error' );\t\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\tnfRadio.channel( 'drawer' ).request( 'enable:close', 'setting-' + this.get( 'name' ) + '-error' );\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'enable:changeDomain', 'setting-' + this.get( 'name' ) + '-error' );\r\n\t\t\t}\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Collections of settings for each field type.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/settingCollection',['models/app/settingModel'], function( settingModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: settingModel,\r\n\r\n\t\tinitialize: function( models, options ) {\r\n\t\t\tthis.options = options || {};\r\n\t\t}\r\n\t} );\r\n\treturn collection;\r\n} );\n/**\r\n * Model that represents our type settings groups.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/settingGroupModel',[ 'models/app/settingCollection' ], function( SettingCollection ) {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\r\n\t\tinitialize: function( options ) {\r\n\t\t\tif ( false == this.get( 'settings' ) instanceof Backbone.Collection ) {\r\n\t\t\t\tthis.set( 'settings', new SettingCollection( this.get( 'settings' ) ) );\r\n\t\t\t}\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Collection of our type settings groups.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/settingGroupCollection',['models/app/settingGroupModel'], function( settingGroupModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: settingGroupModel\r\n\t} );\r\n\treturn collection;\r\n} );\n/**\r\n * Model for our field type\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/typeModel',[ 'models/app/settingGroupCollection' ], function( SettingGroupCollection ) {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tif ( false === this.get( 'settingGroups' ) instanceof Backbone.Collection ) {\r\n\t\t\t\tthis.set( 'settingGroups', new SettingGroupCollection( this.get( 'settingGroups' ) ) );\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'init:typeModel', this );\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Collection that holds our field type models. \r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/typeCollection',['models/app/typeModel'], function( typeModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: typeModel,\r\n\t\ttype: false,\r\n\r\n\t\tinitialize: function( models, options ) {\r\n\t\t\t_.each( options, function( option, key ) {\r\n\t\t\t\tthis[ key ] = option;\r\n\t\t\t}, this );\r\n\t\t}\r\n\t} );\r\n\treturn collection;\r\n} );\n/**\r\n * Add action drawer.\r\n *\r\n * TODO: make dynamic\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Actions\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/actions/drawer/addAction',['views/actions/drawer/typeCollection', 'models/app/typeCollection'], function( actionTypeCollectionView, actionTypeCollection ) {\r\n\r\n\tvar view = Marionette.LayoutView.extend( {\r\n\t\ttemplate: '#tmpl-nf-drawer-content-add-action',\r\n\r\n\t\tregions: {\r\n\t\t\tprimary: '#nf-drawer-primary',\r\n\t\t\t\r\n\t\t\tpayments: '#nf-drawer-secondary-payments',\r\n\t\t\tmarketing: '#nf-drawer-secondary-marketing',\r\n\t\t\tmanagement: '#nf-drawer-secondary-management',\r\n\t\t\tworkflow: '#nf-drawer-secondary-workflow',\r\n\t\t\tnotifications: '#nf-drawer-secondary-notifications',\r\n\t\t\tmisc: '#nf-drawer-secondary-misc',\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'filter:actionTypes', this.filteractionTypes );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'clear:filter', this.removeactionTypeFilter );\r\n\t\t\r\n\t\t\tthis.installedActions = nfRadio.channel( 'actions' ).request( 'get:installedActions' );\r\n\t\t\tthis.primaryCollection = this.installedActions;\r\n\r\n\t\t\tthis.availableActions = nfRadio.channel( 'actions' ).request( 'get:availableActions' );\r\n\t\t\tthis.updateAvailableActionGroups();\r\n\t\t},\r\n\r\n\t\tonShow: function() {\r\n\t\t\tthis.primary.show( new actionTypeCollectionView( { collection: this.primaryCollection } ) );\r\n\r\n\t\t\tthis.payments.show( new actionTypeCollectionView( { collection: this.paymentsCollection } ) );\r\n\t\t\tthis.marketing.show( new actionTypeCollectionView( { collection: this.marketingCollection } ) );\r\n\t\t\tthis.management.show( new actionTypeCollectionView( { collection: this.managementCollection } ) );\r\n\t\t\tthis.workflow.show( new actionTypeCollectionView( { collection: this.workflowCollection } ) );\r\n\t\t\tthis.notifications.show( new actionTypeCollectionView( { collection: this.notificationsCollection } ) );\r\n\t\t\tthis.misc.show( new actionTypeCollectionView( { collection: this.miscCollection } ) );\t\t\r\n\t\t},\r\n\r\n\t\tgetEl: function() {\r\n\t\t\treturn jQuery( this.el ).parent();\r\n\t\t},\r\n\r\n\t\tfilteractionTypes: function( filteredInstalled, filteredAvailable ) {\r\n\t\t\tthis.primary.reset().show( new actionTypeCollectionView( { collection: filteredInstalled } ) );\r\n\r\n\t\t\tthis.availableActions = filteredAvailable;\r\n\t\t\tthis.updateAvailableActionGroups();\r\n\t\t\tthis.payments.reset().show( new actionTypeCollectionView( { collection: this.paymentsCollection } ) );\r\n\t\t\tthis.marketing.reset().show( new actionTypeCollectionView( { collection: this.marketingCollection } ) );\r\n\t\t\tthis.management.reset().show( new actionTypeCollectionView( { collection: this.managementCollection } ) );\r\n\t\t\tthis.workflow.reset().show( new actionTypeCollectionView( { collection: this.workflowCollection } ) );\r\n\t\t\tthis.notifications.reset().show( new actionTypeCollectionView( { collection: this.notificationsCollection } ) );\r\n\t\t\tthis.misc.reset().show( new actionTypeCollectionView( { collection: this.miscCollection } ) );\t\r\n\t\t\t\r\n\t\t},\r\n\r\n\t\tremoveactionTypeFilter: function () {\r\n\t\t\tthis.primary.show( new actionTypeCollectionView( { collection: this.primaryCollection } ) );\r\n\r\n\t\t\tthis.availableActions = nfRadio.channel( 'actions' ).request( 'get:availableActions' );\r\n\t\t\tthis.updateAvailableActionGroups();\r\n\t\t\tthis.payments.show( new actionTypeCollectionView( { collection: this.paymentsCollection } ) );\r\n\t\t\tthis.marketing.show( new actionTypeCollectionView( { collection: this.marketingCollection } ) );\r\n\t\t\tthis.management.show( new actionTypeCollectionView( { collection: this.managementCollection } ) );\r\n\t\t\tthis.workflow.show( new actionTypeCollectionView( { collection: this.workflowCollection } ) );\r\n\t\t\tthis.notifications.show( new actionTypeCollectionView( { collection: this.notificationsCollection } ) );\r\n\t\t\tthis.misc.show( new actionTypeCollectionView( { collection: this.miscCollection } ) );\r\n\t\t},\r\n\r\n\t\tupdateAvailableActionGroups: function() {\r\n\t\t\tthis.paymentsCollection = new actionTypeCollection(\r\n\t\t\t\tthis.availableActions.where({group: 'payments'}),\r\n\t\t\t\t{\r\n\t\t\t\t\tslug: 'payments',\r\n\t\t\t\t\tnicename: nfi18n.paymentsActionNicename\r\n\t\t\t\t} \r\n\t\t\t);\r\n\r\n\t\t\tthis.marketingCollection = new actionTypeCollection(\r\n\t\t\t\tthis.availableActions.where({group: 'marketing'}),\r\n\t\t\t\t{\r\n\t\t\t\t\tslug: 'marketing',\r\n\t\t\t\t\tnicename: nfi18n.marketingActionNicename\r\n\t\t\t\t} \r\n\t\t\t);\r\n\r\n\t\t\tthis.managementCollection = new actionTypeCollection(\r\n\t\t\t\tthis.availableActions.where({group: 'management'}),\r\n\t\t\t\t{\r\n\t\t\t\t\tslug: 'management',\r\n\t\t\t\t\tnicename: nfi18n.managementActionNicename\r\n\t\t\t\t} \r\n\t\t\t);\r\n\r\n\t\t\tthis.workflowCollection = new actionTypeCollection(\r\n\t\t\t\tthis.availableActions.where({group: 'workflow'}),\r\n\t\t\t\t{\r\n\t\t\t\t\tslug: 'workflow',\r\n\t\t\t\t\tnicename: nfi18n.workflowActionNicename\r\n\t\t\t\t} \r\n\t\t\t);\r\n\r\n\t\t\tthis.notificationsCollection = new actionTypeCollection(\r\n\t\t\t\tthis.availableActions.where({group: 'notifications'}),\r\n\t\t\t\t{\r\n\t\t\t\t\tslug: 'notifications',\r\n\t\t\t\t\tnicename: nfi18n.notificationsActionNicename\r\n\t\t\t\t} \r\n\t\t\t);\r\n\r\n\t\t\tthis.miscCollection = new actionTypeCollection(\r\n\t\t\t\tthis.availableActions.where({group: 'misc'}),\r\n\t\t\t\t{\r\n\t\t\t\t\tslug: 'misc',\r\n\t\t\t\t\tnicename: nfi18n.miscActionNicename\r\n\t\t\t\t} \r\n\t\t\t);\r\n\t\t}\r\n\r\n\t} );\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Individual change item.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/contentViewChangesItem',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-content-view-changes-item',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.model.on( 'change:disabled', this.render, this );\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.model.off( 'change:disabled', this.render );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we render this element, remove the extra wrapping <div> that backbone creates.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tonRender: function() {\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .undoSingle': 'undoSingle'\r\n\t\t},\r\n\r\n\t\tundoSingle: function( e ) {\r\n\t\t\tnfRadio.channel( 'drawer' ).trigger( 'click:undoSingle', this.model );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Changes collection view.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/contentViewChanges',['views/app/drawer/contentViewChangesItem'], function( viewChangesItem ) {\r\n\tvar view = Marionette.CollectionView.extend( {\r\n\t\ttagName: 'table',\r\n className: 'nf-changes',\r\n\t\tchildView: viewChangesItem\r\n\t} );\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Handles clicks on the 'view changes' button in the header.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/headerViewChanges',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-header-view-changes',\r\n\r\n\t\tevents: {\r\n\t\t\t'click .undoChanges': 'clickUndoChanges'\r\n\t\t},\r\n\r\n\t\tclickUndoChanges: function( e ) {\r\n\t\t\tnfRadio.channel( 'drawer' ).trigger( 'click:undoChanges' );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Error view used for settings.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/settingError',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-edit-setting-error'\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/app/drawer/itemSetting',['views/app/drawer/mergeTagsContent', 'views/app/drawer/settingError'], function( mergeTagsContentView, settingErrorView ) {\r\n\tvar view = Marionette.LayoutView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-edit-setting-wrap',\r\n\r\n\t\tregions: {\r\n\t\t\terror: '.nf-setting-error'\r\n\t\t},\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\tthis.dataModel = data.dataModel;\r\n\t\t\t/*\r\n\t\t\t * Send out a request on the setting-type-{type} channel asking if we should render on dataModel change.\r\n\t\t\t * Defaults to false.\r\n\t\t\t * This lets specific settings, like RTEs, say that they don't want to be re-rendered when their data model changes.\r\n\t\t\t */\r\n\t\t\tvar renderOnChange = ( 'undefined' == typeof nfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).request( 'renderOnChange' ) ) ? false : nfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).request( 'renderOnChange' );\r\n\t\t\t\r\n\t\t\tif ( renderOnChange ) {\r\n\t\t\t\tthis.dataModel.on( 'change:' + this.model.get( 'name' ), this.render, this );\r\n\t\t\t}\r\n\r\n\t\t\tthis.model.on( 'change:error', this.renderError, this );\r\n\t\t\tthis.model.on( 'change:warning', this.renderWarning, this );\r\n\r\n\t\t\tvar deps = this.model.get( 'deps' );\r\n\t\t\tif ( deps ) {\r\n\t\t\t\tfor ( var name in deps ) {\r\n\t\t\t\t if ( deps.hasOwnProperty( name ) ) {\r\n\t\t\t\t \tthis.dataModel.on( 'change:' + name, this.render, this );\r\n\t\t\t\t }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n /**\r\n\t\t\t * For settings that require a remote refresh\r\n\t\t\t * add an \"update\"/refresh icon to the label.\r\n */\r\n var remote = this.model.get( 'remote' );\r\n\t\t\tif( remote ) {\r\n if( 'undefined' != typeof remote.refresh || remote.refresh ) {\r\n\t\t\t\t\tvar labelText, updateIcon, updateLink, labelWrapper;\r\n\r\n labelText = document.createTextNode( this.model.get('label') );\r\n\r\n updateIcon = document.createElement( 'span' );\r\n updateIcon.classList.add( 'dashicons', 'dashicons-update' );\r\n\r\n updateLink = document.createElement( 'a' );\r\n updateLink.classList.add( 'extra' );\r\n updateLink.appendChild( updateIcon );\r\n\r\n // Wrap the label text and icon/link in a parent element.\r\n labelWrapper = document.createElement( 'span' );\r\n labelWrapper.appendChild( labelText );\r\n labelWrapper.appendChild( updateLink );\r\n\r\n // The model expects a string value.\r\n this.model.set('label', labelWrapper.innerHTML );\r\n }\r\n\r\n\t\t\t\tnfRadio.channel( 'setting' ).trigger( 'remote', this.model, this.dataModel, this );\r\n\t\t\t\tthis.model.on( 'rerender', this.render, this );\r\n\t\t\t}\r\n\r\n\t\t\t/*\r\n\t\t\t * When our drawer opens, send out a radio message on our setting type channel.\r\n\t\t\t */\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'opened', this.drawerOpened );\r\n\r\n\t\t\t/*\r\n\t\t\t * When our drawer closes, send out a radio message on our setting type channel.\r\n\t\t\t */\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'closed', this.drawerClosed );\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.dataModel.off( 'change:' + this.model.get( 'name' ), this.render );\r\n\t\t\tthis.model.off( 'change:error', this.renderError );\r\n\r\n\t\t\tvar deps = this.model.get( 'deps' );\r\n\t\t\tif ( deps ) {\r\n\t\t\t\tfor (var name in deps) {\r\n\t\t\t\t if ( deps.hasOwnProperty( name ) ) {\r\n\t\t\t\t \tthis.dataModel.off( 'change:' + name, this.render );\r\n\t\t\t\t }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif( this.model.get( 'remote' ) ) {\r\n\t\t\t\tthis.model.off( 'rerender', this.render, this );\r\n\t\t\t}\r\n\r\n\t\t\t/*\r\n\t\t\t * Send out a radio message.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'destroy:setting', this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'destroy:setting', this.model, this.dataModel, this );\r\n\t\t\r\n\t\t\t/*\r\n\t\t\t * Unescape any HTML being saved if we are a textbox.\r\n\t\t\t */\r\n\t\t\tif ( 'textbox' == this.model.get( 'type' ) ) {\r\n\t\t\t\tvar setting = this.model.get( 'name' );\r\n\t\t\t\tvar value = this.dataModel.get( setting );\r\n\t\t\t\tthis.dataModel.set( setting, _.unescape( value ), { silent: true } );\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tonBeforeRender: function() {\r\n\t\t\t/*\r\n\t\t\t * We want to escape any HTML being output if we are a textbox.\r\n\t\t\t */\r\n\t\t\tif ( 'textbox' == this.model.get( 'type' ) ) {\r\n\t\t\t\tvar setting = this.model.get( 'name' );\r\n\t\t\t\tvar value = this.dataModel.get( setting );\r\n\t\t\t\tthis.dataModel.set( setting, _.escape( value ), { silent: true } );\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'before:renderSetting', this.model, this.dataModel );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'before:renderSetting', this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'before:renderSetting', this.model, this.dataModel, this );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tthis.mergeTagsContentView = false;\r\n\t\t\tvar that = this;\r\n\r\n\t\t\t/*\r\n\t\t\t * Send out a radio message.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'render:setting', this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'render:setting', this.model, this.dataModel, this );\r\n\r\n\t\t\tjQuery( this.el ).find( '.nf-help' ).each(function() {\r\n\t\t\t\tvar content = jQuery(this).next('.nf-help-text');\r\n\t\t\t\tjQuery( this ).jBox( 'Tooltip', {\r\n\t\t\t\t\tcontent: content,\r\n\t\t\t\t\tmaxWidth: 200,\r\n\t\t\t\t\ttheme: 'TooltipBorder',\r\n\t\t\t\t\ttrigger: 'click',\r\n\t\t\t\t\tcloseOnClick: true\r\n\t\t\t\t})\r\n\t\t });\r\n\t\t\t\r\n\t\t if ( this.model.get( 'use_merge_tags' ) ) {\r\n\t\t \tnfRadio.channel( 'mergeTags' ).request( 'init', this );\r\n\t\t }\r\n\r\n\t\t\t/*\r\n\t\t\t * Apply Setting Field Masks\r\n\t\t\t */\r\n\t\t\tvar mask = this.model.get( 'mask' );\r\n\r\n\t\t\tif( typeof mask != \"undefined\" ){\r\n\r\n\t\t\t\tvar input = jQuery( this.$el ).find( 'input' );\r\n\r\n\t\t\t\tswitch( mask.type ){\r\n\t\t\t\t\tcase 'numeric':\r\n\t\t\t\t\t\tinput.autoNumeric({\r\n\t\t\t\t\t\t\taSep: thousandsSeparator,\r\n\t\t\t\t\t\t\taDec: decimalPoint\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'currency':\r\n\r\n\t\t\t\t\t\tvar currency = nfRadio.channel( 'settings' ).request( 'get:setting', 'currency' );\r\n\t\t\t\t\t\tvar currencySymbol = nfAdmin.currencySymbols[ currency ] || '';\r\n\r\n\t\t\t\t\t\tinput.autoNumeric({\r\n\t\t\t\t\t\t\taSign: jQuery('<div />').html(currencySymbol).text(),\r\n\t\t\t\t\t\t\taSep: thousandsSeparator,\r\n\t\t\t\t\t\t\taDec: decimalPoint\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'custom':\r\n\t\t\t\t\t\tif( mask.format ) input.mask( mask.format )\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t// TODO: Error Logging.\r\n\t\t\t\t\t\tconsole.log( 'Notice: Mask type of \"' + mask.type + '\" is not supported.' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.renderError();\r\n\t\t},\r\n\r\n\t\tonShow: function() {\t\t\t\r\n\t\t\t/*\r\n\t\t\t * Send out a radio message.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'show:setting', this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'show:setting', this.model, this.dataModel, this );\r\n\t\t},\r\n\r\n\t\tonAttach: function() {\t\t\t\r\n\t\t\t/*\r\n\t\t\t * Send out a radio message.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'attach:setting', this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'attach:setting', this.model, this.dataModel, this );\r\n\t\t},\r\n\r\n\t\trenderError: function() {\r\n\t\t\tif ( this.model.get( 'error' ) ) {\r\n\t\t\t\tjQuery( this.el ).find( '.nf-setting' ).addClass( 'nf-error' );\r\n\t\t\t\tthis.error.show( new settingErrorView( { model: this.model } ) );\r\n\t\t\t} else {\r\n\t\t\t\tjQuery( this.el ).find( '.nf-setting' ).removeClass( 'nf-error' );\r\n\t\t\t\tthis.error.empty();\r\n\t\t\t}\r\n\t\t},\r\n\r\n renderWarning: function() {\r\n if ( this.model.get( 'warning' ) ) {\r\n jQuery( this.el ).find( '.nf-setting' ).addClass( 'nf-warning' );\r\n this.error.show( new settingErrorView( { model: this.model } ) );\r\n } else {\r\n jQuery( this.el ).find( '.nf-setting' ).removeClass( 'nf-warning' );\r\n this.error.empty();\r\n }\r\n },\r\n\r\n\t\ttemplateHelpers: function () {\r\n\t\t\tvar that = this;\r\n\t \treturn {\r\n\r\n\t \t\trenderVisible: function() {\r\n\r\n\t\t\t\t\tif(!nfAdmin.devMode){\r\n\t\t\t\t\t\tif('Action' == that.dataModel.get('objectType') && 'email' == that.dataModel.get('type')){\r\n\t\t\t\t\t\t\tif('cc' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t\tif('bcc' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t\tif('from_name' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t\tif('from_address' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t\tif('email_format' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif('Action' == that.dataModel.get('objectType') && 'save' == that.dataModel.get('type')){\r\n\t\t\t\t\t\t\tif('submitter_email' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif('label_pos' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('input_limit' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('input_limit_type' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('input_limit_msg' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('help_text' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('disable_input' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('disable_browser_autocomplete' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('mask' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('custom_mask' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('custom_name_attribute' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('personally_identifiable' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// \"administration\" settings\r\n\t\t\t\t\t\tif('key' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('admin_label' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('num_sort' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('user_state' == this.name) return 'style=\"display:none;\"';\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif('checkbox' == that.dataModel.get('type')){\r\n\t\t\t\t\t\t\tif('checked_value' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t\tif('unchecked_value' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t\tif('checked_calc_value' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t\tif('unchecked_calc_value' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif('starrating' == that.dataModel.get('type')){\r\n\t\t\t\t\t\t\tif('default' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif('listmultiselect' == that.dataModel.get('type')){\r\n\t\t\t\t\t\t\tif('box_size' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif('date' == that.dataModel.get('type')){\r\n\t\t\t\t\t\t\tif('year_range_start' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t\tif('year_range_end' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( this.deps ) {\r\n\t\t\t\t\t\tfor (var name in this.deps) {\r\n\t\t\t\t\t\t if ( this.deps.hasOwnProperty( name ) ) {\r\n\t\t\t\t\t\t if ( that.dataModel.get( name ) != this.deps[ name ] ) {\r\n\t\t\t\t\t\t \treturn 'style=\"display:none;\"';\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t \t\t\treturn '';\r\n\t \t\t},\r\n\r\n\t \t\trenderSetting: function(){\r\n\t \t\t\tif ( 'undefined' != typeof that.dataModel.get( this.name ) ) {\r\n\t \t\t\t\tthis.value = that.dataModel.get( this.name );\r\n\t \t\t\t} else if ( 'undefined' == typeof this.value ) {\r\n\t \t\t\t\tthis.value = '';\r\n\t \t\t\t}\r\n\t \t\t\tvar setting = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-edit-setting-' + this.type );\r\n\t\t\t\t\treturn setting( this );\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderLabelClasses: function() {\r\n\t\t\t\t\tvar classes = '';\r\n\t\t\t\t\tif ( this.use_merge_tags ) {\r\n\t\t\t\t\t\tclasses += ' has-merge-tags';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( 'rte' == this.type ) {\r\n\t\t\t\t\t\tclasses += ' rte';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn classes;\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderClasses: function() {\r\n\t\t\t\t\tvar classes = 'nf-setting ';\r\n\t\t\t\t\tif ( 'undefined' != typeof this.width ) {\r\n\t\t\t\t\t\tclasses += 'nf-' + this.width;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclasses += ' nf-one-half';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( this.error ) {\r\n\t\t\t\t\t\tclasses += ' nf-error';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn classes;\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderTooltip: function() {\r\n\t\t\t\t\tif ( ! this.help ) return '';\r\n\t\t\t\t\tvar helpText, helpTextContainer, helpIcon, helpIconLink, helpTextWrapper;\r\n\r\n\t\t\t\t\thelpText = document.createElement( 'div' );\r\n\t\t\t\t\thelpText.innerHTML = this.help;\r\n\t\t\t\t\t\r\n\t\t\t\t\thelpTextContainer = document.createElement( 'div' );\r\n\t\t\t\t\thelpTextContainer.classList.add( 'nf-help-text' );\r\n\t\t\t\t\thelpTextContainer.appendChild( helpText );\r\n\r\n\t\t\t\t\thelpIcon = document.createElement( 'span' );\r\n\t\t\t\t\thelpIcon.classList.add( 'dashicons', 'dashicons-admin-comments' );\r\n helpIconLink = document.createElement( 'a' );\r\n helpIconLink.classList.add( 'nf-help' );\r\n helpIconLink.setAttribute( 'href', '#' );\r\n helpIconLink.setAttribute( 'tabindex', '-1' );\r\n helpIconLink.appendChild( helpIcon );\r\n\r\n helpTextWrapper = document.createElement( 'span' );\r\n helpTextWrapper.appendChild( helpIconLink );\r\n helpTextWrapper.appendChild( helpTextContainer );\r\n\r\n // The template expects a string value.\r\n\t\t\t\t\treturn helpTextWrapper.innerHTML;\r\n\t\t\t\t},\r\n\r\n\t\t\t /*\r\n\t\t\t * Render a select element with only the email fields on the\r\n\t\t\t * form\r\n\t\t\t */\r\n\t\t\t renderEmailFieldOptions: function() {\r\n\t\t\t\t var fields = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\r\n\t\t\t\t initialOption = document.createElement( 'option' );\r\n\t\t\t\t initialOption.value = '';\r\n\t\t\t\t initialOption.label = '--';\r\n\t\t\t\t initialOption.innerHTML = '--';\r\n\r\n\t\t\t\t var select_value = '';\r\n\t\t\t\t var select = document.createElement( 'select' );\r\n\t\t\t\t select.classList.add( 'setting' );\r\n\t\t\t\t select.setAttribute( 'data-id', 'my_seledt' );\r\n\t\t\t\t select.appendChild( initialOption );\r\n\r\n\t\t\t\t var index = 0;\r\n\t\t\t\t var that = this;\r\n\t\t\t\t fields.each( function( field ) {\r\n\t\t\t\t\t // Check for the field type in our lookup array and...\r\n\t\t\t\t\t if( 'email' != field.get( 'type' ) ) {\r\n\t\t\t\t\t\t // Return if the type is in our lookup array.\r\n\t\t\t\t\t\t return '';\r\n\t\t\t\t\t }\r\n\r\n\t\t\t\t\t var option = document.createElement( 'option' );\r\n\r\n\t\t\t\t\t option.value = field.get( 'key' );\r\n\t\t\t\t\t option.innerHTML = field.get( 'label' );\r\n\t\t\t\t\t option.label = field.get( 'label' );\r\n\t\t\t\t\t \r\n\t\t\t\t\t if( that.value === field.get( 'key' ) ) {\r\n\t\t\t\t\t\t option.setAttribute( 'selected', 'selected' );\r\n\t\t\t\t\t }\r\n\t\t\t\t\t select.appendChild( option );\r\n\t\t\t\t\t index = index + 1;\r\n\t\t\t\t });\r\n\r\n\t\t\t\t label = document.createElement( 'label' );\r\n\t\t\t\t label.classList.add( 'nf-select' );\r\n\r\n\t\t\t\t label.appendChild( select );\r\n\r\n\t\t\t\t // Select Lists need an empty '<div></div>' for styling purposes.\r\n\t\t\t\t emptyContainer = document.createElement( 'div' );\r\n\t\t\t\t label.appendChild( emptyContainer );\r\n\r\n\t\t\t\t // The template requires a string.\r\n\t\t\t\t return label.innerHTML;\r\n\t\t\t },\r\n\r\n\t\t\t\trenderMergeTags: function() {\r\n\t\t\t\t\tif ( this.use_merge_tags && ! this.hide_merge_tags ) {\r\n\t\t\t\t\t\treturn '<span class=\"dashicons dashicons-list-view merge-tags\"></span>';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t /**\r\n\t\t\t * Renders min and/or max attributes for the number input\r\n\t\t\t *\r\n\t\t\t * @returns {string}\r\n\t\t\t */\r\n\t\t\t renderMinMax: function() {\r\n\t\t\t\t\tvar minMaxStr = '';\r\n\t\t\t\t\t// if we have a min value set, then output it\r\n\t\t\t\t\tif( 'undefined' != typeof this.min_val && null != this.min_val && jQuery.isNumeric( this.min_val ) ) {\r\n\t\t\t\t\t\tminMaxStr = minMaxStr + \"min='\" + this.min_val + \"'\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// if we have a max value set, then output it\r\n\t\t\t\t if( 'undefined' != typeof this.max_val && '' != this.max_val && jQuery.isNumeric( this.max_val ) ) {\r\n\t\t\t\t\t minMaxStr = minMaxStr + \" max='\" + this.max_val + \"'\";\r\n\t\t\t\t }\r\n\r\n\t\t\t\t return minMaxStr;\r\n\t\t\t },\r\n\r\n\t\t\t /**\r\n\t\t\t * Returns a string to let the user know the min and/or max\r\n\t\t\t * value for the field\r\n\t\t\t *\r\n\t\t\t * @returns {string}\r\n\t\t\t */\r\n\t\t\t renderMinMaxHelper: function() {\r\n\t\t\t\t var minMaxHelperStr = '';\r\n\t\t\t\t // if we have a min value output it to the helper text\r\n\t\t\t\t if( 'undefined' != typeof this.min_val && null != this.min_val && jQuery.isNumeric( this.min_val ) ) {\r\n\t\t\t\t \t// empty string? then add '('\r\n\t\t\t\t \tif( 0 == minMaxHelperStr.length ) {\r\n\t\t\t\t \t\tminMaxHelperStr = \"(\";\r\n\t\t\t\t\t }\r\n\t\t\t\t\t minMaxHelperStr = minMaxHelperStr + nfi18n.minVal + \": \" + this.min_val;\r\n\t\t\t\t }\r\n\r\n\t\t\t\t // if we have a max value output it to the helper text\r\n\t\t\t\t if( 'undefined' != typeof this.max_val && '' != this.max_val && jQuery.isNumeric( this.max_val ) ) {\r\n\t\t\t\t\t // empty string? then add '('\r\n\t\t\t\t\t if( 0 == minMaxHelperStr.length ) {\r\n\t\t\t\t\t\t minMaxHelperStr = \"(\";\r\n\t\t\t\t\t } else {\r\n\t\t\t\t\t \t// else, we know we have a min so add a comma\r\n\t\t\t\t\t \tminMaxHelperStr = minMaxHelperStr + \", \";\r\n\t\t\t\t\t }\r\n\t\t\t\t\t minMaxHelperStr = minMaxHelperStr + nfi18n.maxVal + \": \" + this.max_val;\r\n\t\t\t\t }\r\n\r\n\t\t\t\t // if not an empty string, then add ')'\r\n\t\t\t\t if( 0 < minMaxHelperStr.length ) {\r\n\t\t\t\t\t minMaxHelperStr = minMaxHelperStr + \")\";\r\n\t\t\t\t }\r\n\r\n\t\t\t\t return minMaxHelperStr;\r\n\t\t\t\t},\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'change .setting': 'changeSetting',\r\n\t\t\t'keyup .setting': 'keyUpSetting',\r\n\t\t\t'click .setting': 'clickSetting',\r\n\t\t\t'click .extra': 'clickExtra'\r\n\t\t},\r\n\r\n\t\tchangeSetting: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'change:setting', e, this.model, this.dataModel );\r\n\t\t},\r\n\r\n\t\tkeyUpSetting: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'keyup:setting', e, this.model, this.dataModel );\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'keyup:setting', e, this.model, this.dataModel );\r\n\t\t},\r\n\r\n\t\tclickSetting: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:setting', e, this.model, this.dataModel );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'click:setting', e, this.model, this.dataModel, this );\r\n\t\t},\r\n\r\n\t\tclickExtra: function( e ) {\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'click:extra', e, this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'name' ) ).trigger( 'click:extra', e, this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-name-' + this.model.get( 'name' ) ).trigger( 'click:extra', e, this.model, this.dataModel, this );\r\n\t\t},\r\n\r\n\t\tdrawerOpened: function() {\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'drawer:opened', this.model, this.dataModel, this );\r\n\t\t},\r\n\r\n\t\tdrawerClosed: function() {\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'drawer:closed', this.model, this.dataModel, this );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Changes collection view.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/contentPublicLink',['views/app/drawer/itemSetting'], function( itemSettingView) {\r\n\tvar view = Marionette.LayoutView.extend( {\r\n\t\ttagName: 'div',\r\n template: '#tmpl-nf-drawer-content-public-link',\r\n \r\n\t\tregions: {\r\n embedForm: '.embed-form',\r\n\t\t\tenablePublicLink: '.enable-public-link',\r\n copyPublicLink: '.copy-public-link',\r\n },\r\n\r\n\t\tonRender: function() {\r\n var formModel = Backbone.Radio.channel('app').request('get:formModel');\r\n var formSettingsDataModel = nfRadio.channel( 'settings' ).request( 'get:settings' );\r\n\r\n var allowPublicLinkSettingModel = nfRadio.channel( 'settings' ).request( 'get:settingModel', 'allow_public_link' );\r\n this.enablePublicLink.show( new itemSettingView( { model: allowPublicLinkSettingModel, dataModel: formSettingsDataModel } ) );\r\n \r\n var embedForm = \"[ninja_form id='{FORM_ID}']\".replace('{FORM_ID}', formModel.get('id'));\r\n formSettingsDataModel.set('embed_form', embedForm);\r\n\r\n var embedFormSettingModel = nfRadio.channel( 'settings' ).request( 'get:settingModel', 'embed_form' );\r\n this.embedForm.show( new itemSettingView( { model: embedFormSettingModel, dataModel: formSettingsDataModel } ) );\r\n\r\n var public_link_key = formSettingsDataModel.get('public_link_key');\r\n \r\n /**\r\n * Generate a public link key which is follows the format:\r\n * Form Id + 4 consecutive base 36 numbers\r\n */\r\n if (!public_link_key) {\r\n public_link_key = nfRadio.channel('app').request('generate:publicLinkKey');\r\n }\r\n\r\n // apply public link url to settings (ending with key)\r\n var publicLink = nfAdmin.publicLinkStructure.replace('[FORM_ID]', public_link_key);\r\n formSettingsDataModel.set('public_link', publicLink);\r\n \r\n // Display public link\r\n var publicLinkSettingModel = nfRadio.channel( 'settings' ).request( 'get:settingModel', 'public_link' );\r\n this.copyPublicLink.show(new itemSettingView( { model: publicLinkSettingModel, dataModel: formSettingsDataModel } ));\r\n },\r\n\r\n\t\tevents: {\r\n\t\t\t'click #embed_form + .js-click-copytext': 'copyFormEmbedHandler',\r\n\t\t\t'click #public_link + div > .js-click-copytext': 'copyPublicLinkHandler',\r\n\t\t\t'click #public_link + div > .js-click-resettext': 'confirmResetPublicLinkHandler',\r\n\t\t\t'click #public_link + div > .js-click-confirm': 'resetPublicLinkHandler',\r\n\t\t\t'click #public_link + div > .js-click-cancel': 'cancelResetPublicLinkHandler'\r\n\t\t},\r\n\r\n\t\tcopyFormEmbedHandler: function( e ) {\r\n\r\n document.getElementById('embed_form').select();\r\n document.execCommand('copy');\r\n\r\n e.target.innerHTML = 'Copied!';\r\n setTimeout(function(){ e.target.innerHTML = 'Copy'; }, 1500);\r\n\t\t},\r\n\r\n\t\tcopyPublicLinkHandler: function( e ) {\r\n\r\n document.getElementById('public_link').select();\r\n document.execCommand('copy');\r\n\r\n e.target.innerHTML = 'Copied!';\r\n setTimeout(function(){ e.target.innerHTML = 'Copy'; }, 1500);\r\n },\r\n \r\n confirmResetPublicLinkHandler: function( e ) {\r\n _.each( e.target.parentNode.children, function( node ) {\r\n if ( node.classList.contains( 'js-click-copytext' ) || node.classList.contains( 'js-click-resettext' ) ) {\r\n node.style.display = 'none';\r\n } else {\r\n node.style.display = 'inline-block';\r\n }\r\n } );\r\n },\r\n\r\n resetPublicLinkHandler: function ( e ) {\r\n // Generate a new link.\r\n var public_link_key = nfRadio.channel('app').request('generate:publicLinkKey');\r\n var publicLink = nfAdmin.publicLinkStructure.replace('[FORM_ID]', public_link_key);\r\n var formSettingsDataModel = nfRadio.channel( 'settings' ).request( 'get:settings' );\r\n formSettingsDataModel.set('public_link', publicLink);\r\n // Reset the buttons.\r\n this.cancelResetPublicLinkHandler( e );\r\n _.each( e.target.parentNode.children, function( node ) {\r\n if ( node.classList.contains( 'js-click-resettext' ) ) {\r\n node.style.display = 'inline-block';\r\n node.classList.add('primary');\r\n node.classList.remove('secondary');\r\n node.innerHTML = 'Link Reset!';\r\n setTimeout(function(){\r\n node.classList.add('secondary');\r\n node.classList.remove('primary');\r\n node.innerHTML = 'Reset';\r\n }, 1500);\r\n } else {\r\n node.style.display = 'none';\r\n }\r\n if ( node.classList.contains( 'js-click-copytext' ) ) {\r\n setTimeout(function(){\r\n node.style.display = 'inline-block';\r\n }, 1500);\r\n }\r\n } );\r\n // Update the visible public link.\r\n jQuery('#public_link').val( publicLink );\r\n },\r\n\r\n cancelResetPublicLinkHandler: function ( e ) {\r\n _.each( e.target.parentNode.children, function( node ) {\r\n if ( node.classList.contains( 'js-click-cancel' ) || node.classList.contains( 'js-click-confirm' ) ) {\r\n node.style.display = 'none';\r\n } else {\r\n node.style.display = 'inline-block';\r\n }\r\n } );\r\n }\r\n\t} );\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Handles clicks on the 'view changes' button in the header.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/headerPublicLink',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-header-public-link'\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Changes collection view.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/contentNewForm',['views/app/drawer/itemSetting'], function( itemSettingView) {\r\n\tvar view = Marionette.LayoutView.extend( {\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-content-new-form',\r\n\r\n\t\tregions: {\r\n\t\t\tformName: '.new-form-name',\r\n\t\t\tformSubmit: '.new-form-submit'\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tvar titleSettingModel = nfRadio.channel( 'settings' ).request( 'get:settingModel', 'title' );\r\n\t\t\tvar addSubmitSettingModel = nfRadio.channel( 'settings' ).request( 'get:settingModel', 'add_submit' );\r\n\t\t\tvar dataModel = nfRadio.channel( 'settings' ).request( 'get:settings' );\r\n\t\t\tthis.formName.show( new itemSettingView( { model: titleSettingModel, dataModel: dataModel } ) );\r\n\t\t\t/*\r\n\t\t\t * If we don't have any submit buttons on the form, prompt the user to add one on publish.\r\n\t\t\t */\r\n\t\t\tvar fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\t\t\tvar submitButtons = fieldCollection.findWhere( { type: 'submit' } );\r\n\t\t\tif ( 'undefined' == typeof submitButtons ) {\r\n\t\t\t\tthis.formSubmit.show( new itemSettingView( { model: addSubmitSettingModel, dataModel: dataModel } ) );\r\n\t\t\t} else {\r\n\t\t\t\tdataModel.set( 'add_submit', 0 );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .publish': 'clickPublish'\r\n\t\t},\r\n\r\n\t\tclickPublish: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:confirmPublish', e );\r\n\t\t}\r\n\t} );\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Handles clicks on the 'view changes' button in the header.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/headerNewForm',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-header-new-form'\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Config file for our app drawers.\r\n *\r\n * this.collection represents all of our registered drawers.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/drawerConfig',[\r\n\t'models/app/drawerCollection',\r\n\t'views/fields/drawer/addField',\r\n\t'views/app/drawer/editSettings',\r\n\t'views/app/drawer/headerEditSettings',\r\n\t'views/actions/drawer/addAction',\r\n\t'views/app/drawer/contentViewChanges',\r\n\t'views/app/drawer/headerViewChanges',\r\n\t'views/app/drawer/contentPublicLink',\r\n\t'views/app/drawer/headerPublicLink',\r\n\t'views/app/drawer/contentNewForm',\r\n\t'views/app/drawer/headerNewForm'\r\n\t], function(\r\n\t\tdrawerCollection,\r\n\t\taddFieldView,\r\n\t\teditSettingsView,\r\n\t\teditSettingsHeaderView,\r\n\t\taddActionView,\r\n\t\tviewChangesView,\r\n\t\tviewChangesHeaderView,\r\n\t\tpublicLinkView,\r\n\t\tpublicLinkHeaderView,\t\t\r\n\t\tnewFormView,\r\n\t\tnewFormHeaderView,\r\n\t\tmobileItemControlsView\r\n\t) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\r\n\t\t\tthis.collection = new drawerCollection( [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'addField',\r\n\r\n\t\t\t\t\tgetContentView: function( data ) {\r\n\t\t\t\t\t\treturn new addFieldView( data );\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'addAction',\r\n\r\n\t\t\t\t\tgetContentView: function( data ) {\r\n\t\t\t\t\t\treturn new addActionView( data );\r\n\t\t\t\t\t}\r\n\t\t\t\t},\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'editSettings',\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * TODO: Add filtering when editing settings. For now, removing them from settings.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tgetHeaderView: function( data ) {\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Get a custom setting header view if one is set.\r\n\t\t\t\t\t\t * TODO: Currently, this only works for advanced settings.\r\n\t\t\t\t\t\t * This could be used to replace the need for a single config file.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tif ( 'undefined' != typeof data.typeModel ) {\r\n\t\t\t\t\t\t\tvar view = nfRadio.channel( data.typeModel.get( 'id' ) ).request( 'get:drawerHeaderView' ) || editSettingsHeaderView;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar view = editSettingsHeaderView;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn new view( data );\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tgetContentView: function( data ) {\r\n\t\t\t\t\t\treturn new editSettingsView( data );\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'viewChanges',\r\n\r\n\t\t\t\t\t// getHeaderView() is defined by default, but we need to override it for the viewChanges drawer.\r\n\t\t\t\t\tgetHeaderView: function( data ) {\r\n\t\t\t\t\t\treturn new viewChangesHeaderView( data );\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tgetContentView: function( data ) {\r\n\t\t\t\t\t\treturn new viewChangesView( data );\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'publicLink',\r\n\r\n\t\t\t\t\t// getHeaderView() is defined by default, but we need to override it for the publicLink drawer.\r\n\t\t\t\t\tgetHeaderView: function( data ) {\r\n\t\t\t\t\t\treturn new publicLinkHeaderView( data );\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tgetContentView: function( data ) {\r\n\t\t\t\t\t\treturn new publicLinkView( data );\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'newForm',\r\n\r\n\t\t\t\t\t// getHeaderView() is defined by default, but we need to override it for the newForm drawer.\r\n\t\t\t\t\tgetHeaderView: function( data ) {\r\n\t\t\t\t\t\treturn new newFormHeaderView( data );\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tgetContentView: function( data ) {\r\n\t\t\t\t\t\treturn new newFormView( data );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t] );\r\n\r\n\t\t\t// Listen for requests for our drawer collection.\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:drawerCollection', this.getDrawerCollection, this );\r\n\t\t\t// Listen for requests for specific drawer models.\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:drawer', this.getDrawer, this );\r\n\t\t},\r\n\r\n\t\tgetDrawerCollection: function() {\r\n\t\t\treturn this.collection;\r\n\t\t},\r\n\r\n\t\tgetDrawer: function( id ) {\r\n\t\t\treturn this.collection.get( id );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Default settings title view.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/defaultSettingsTitle',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-content-edit-settings-title-default',\r\n\r\n\t\ttemplateHelpers: function () {\r\n\t \treturn {\r\n\t \t\trenderTypeNicename: function() {\r\n\t \t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\t\t\tvar domainID = currentDomain.get( 'id' );\r\n\t \t\t\tvar type = nfRadio.channel( domainID ).request( 'get:type', this.type );\r\n\t \t\t\tif ( 'undefined' != typeof type ) {\r\n\t \t\t\t\treturn type.get( 'nicename' );\r\n\t \t\t\t} else {\r\n\t \t\t\t\treturn '';\r\n\t \t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t},\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Empty view.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/empty',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-empty'\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Model for our individual domains.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/domainModel',[ 'views/app/drawer/defaultSettingsTitle', 'views/app/empty' ], function( DefaultSettingsTitleView, EmptyView ) {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\tdashicons: '',\r\n\t\t\tclasses: '',\r\n\t\t\tactive: false,\r\n\t\t\turl: '',\r\n\t\t\thotkeys: false,\r\n\t\t\tdisabled: false,\r\n\r\n\t\t\tgetSettingsTitleView: function( data ) {\r\n\t\t\t\treturn new DefaultSettingsTitleView( data );\r\n\t\t\t},\r\n\r\n\t\t\tgetDefaultSettingsTitleView: function( data ) {\r\n\t\t\t\treturn new DefaultSettingsTitleView( data );\r\n\t\t\t},\r\n\r\n\t\t\tgetGutterLeftView: function( data ) {\r\n\t\t\t\t/*\r\n\t\t\t\t * Return empty view\r\n\t\t\t\t */\r\n\t\t\t\treturn new EmptyView();\r\n\t\t\t},\r\n\r\n\t\t\tgetGutterRightView: function( data ) {\r\n\t\t\t\t/* \r\n\t\t\t\t * Return empty view\r\n\t\t\t\t */\r\n\t\t\t\treturn new EmptyView();\r\n\t\t\t}\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Holds all of our domain models.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/domainCollection',['models/app/domainModel'], function( domainModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: domainModel\r\n\t} );\r\n\treturn collection;\r\n} );\ndefine( 'views/fields/subHeader',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-sub-header-fields'\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/fields/mainContentFieldCollection',[], function() {\r\n\tvar view = Marionette.CollectionView.extend( {\r\n\t\ttagName: 'div',\r\n\t\treorderOnSort: true,\r\n\r\n\t\tgetChildView: function() {\r\n\t\t\treturn nfRadio.channel( 'views' ).request( 'get:fieldItem' );\r\n\t\t},\r\n\r\n\t\tgetEmptyView: function() {\r\n\t\t\treturn nfRadio.channel( 'views' ).request( 'get:mainContentEmpty' );\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:sortableEl', this.getSortableEl, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'init:sortable', this.initSortable, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'destroy:sortable', this.destroySortable, this );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tif ( this.collection.models.length > 0 ) {\r\n\t\t\t\tjQuery( this.el ).addClass( 'nf-field-type-droppable' ).addClass( 'nf-fields-sortable' );\r\n\t\t\t\tvar that = this;\r\n\t\t\t\t/* TODO: There's a bug with some Android phones and chrome. The fix below hasn't been implement.\r\n\r\n\t\t\t\t * Instantiate our sortable field list, but only if we aren't on a mobile device.\r\n\t\t\t\t *\r\n\t\t\t\t * On Android, our sortable list isn't scrollable if it's instantiated at render.\r\n\t\t\t\t * Instead, for mobile, we need to instantiate our sortable when the user tapholds and then\r\n\t\t\t\t * destroy it when the drag stops.\r\n\t\t\t\t */\r\n\t\t\t\t// if ( ! nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\t\tthis.initSortable();\r\n\t\t\t\t// }\r\n\t\t\t}\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'render:fieldsSortable', this );\r\n\t\t},\r\n\r\n\t\tgetSortableEl: function() {\r\n\t\t\treturn this.el;\r\n\t\t},\r\n\r\n\t\tinitSortable: function() {\r\n\t\t\tif ( nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\tvar tolerance = 'pointer';\r\n\t\t\t} else {\r\n\t\t\t\tvar tolerance = 'intersect';\r\n\t\t\t}\r\n\r\n\t\t\tjQuery( this.el ).sortable( {\r\n\t\t\t\tcontainment: 'parent',\r\n\t\t\t\thelper: 'clone',\r\n\t\t\t\tcancel: '.nf-item-controls',\r\n\t\t\t\tplaceholder: 'nf-fields-sortable-placeholder',\r\n\t\t\t\topacity: 0.95,\r\n\t\t\t\tgrid: [ 5, 5 ],\r\n\t\t\t\t// scroll: false,\r\n\t\t\t\tappendTo: '#nf-main',\r\n\t\t\t\tscrollSensitivity: 10,\r\n\t\t\t\t//connectWith would allow drag and drop between fields already in the builder and the repeatable fieldset ( this is currently an issue until we deal with existing data stored)\r\n\t\t\t\t//connectWith: '.nf-fields-sortable', \r\n\r\n\t\t\t\treceive: function( e, ui ) {\r\n\t\t\t\t\tif ( ui.item.dropping || jQuery(ui.item).hasClass(\"nf-over-repeater\") ) return;\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'receive:fieldsSortable', ui );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tover: function( e, ui ) {\r\n\t\t\t\t\tif ( ui.item.dropping ) return;\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'over:fieldsSortable', ui );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tout: function( e, ui ) {\r\n\t\t\t\t\tif ( ui.item.dropping ) return;\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'out:fieldsSortable', ui );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tstart: function( e, ui ) {\r\n\t\t\t\t\tif ( ui.item.dropping ) return;\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'start:fieldsSortable', ui );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tupdate: function( e, ui ) {\r\n\t\t\t\t\tif ( ui.item.dropping ) return;\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'update:fieldsSortable', ui, this );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tstop: function( e, ui ) {\r\n\t\t\t\t\tif ( ui.item.dropping ) return;\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'stop:fieldsSortable', ui );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tdestroySortable: function() {\r\n\t\t\tjQuery( this.el ).sortable( 'destroy' );\r\n\t\t},\r\n\r\n\t\tonAddChild: function( childView ) {\r\n\t\t\tif ( nfRadio.channel( 'fields' ).request( 'get:adding' ) ) {\r\n\t\t\t\tchildView.$el.hide().show( 'clip' );\r\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'set:adding', false );\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t} );\r\n\r\n\treturn view;\r\n} );\r\n\ndefine( 'views/fields/drawer/addSavedField',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-add-saved-field',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.model.on( 'change:addSavedLoading', this.renderAddButton, this );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tthis.renderAddButton();\r\n\t\t},\r\n\r\n\t\trenderAddButton: function() {\r\n\t\t\tif ( this.model.get( 'addSavedLoading' ) ) {\r\n\t\t\t\tvar button = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-add-saved-field-loading' );\r\n\t\t\t} else {\r\n\t\t\t\tvar button = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-add-saved-field-button' );\r\n\t\t\t}\r\n\t\t\tjQuery( this.el ).find( '.add-button' ).html( button( this ) );\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.model.off( 'change:addSavedLoading', this.render );\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .nf-button': 'clickAddSavedField'\r\n\t\t},\r\n\r\n\t\tclickAddSavedField: function( e ) {\r\n\t\t\tnfRadio.channel( 'drawer' ).trigger( 'click:addSavedField', e, this.model );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Fields settings title view.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/fields/drawer/settingsTitle',['views/fields/drawer/addSavedField'], function( addSavedFieldView ) {\r\n\tvar view = Marionette.LayoutView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-drawer-content-edit-settings-title-fields',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.model.on( 'change:saved', this.render, this );\r\n\t\t\tthis.model.on( 'change:label', this.renderjBoxContent, this );\r\n\t\t},\r\n\r\n\t\tregions: {\r\n\t\t\taddSaved: '.nf-add-saved-field'\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.model.off( 'change:saved', this.render );\r\n\t\t\tthis.addSavedjBox.destroy();\r\n\t\t\tthis.model.unset( 'jBox', { silent: true } );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tthis.renderjBoxContent();\r\n\t\t\tvar that = this;\r\n\t\t\tthis.addSavedjBox = new jBox( 'Tooltip', {\r\n\t\t\t\ttrigger: 'click',\r\n\t\t\t\ttitle: 'Add to Favorite Fields',\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx:'left',\r\n\t\t\t\t\ty:'center'\r\n\t\t\t\t},\r\n\t\t\t\toutside:'x',\r\n\t\t\t\tcloseOnClick: 'body',\r\n\r\n\t\t\t\tonCreated: function() {\r\n\t\t\t\t\tthis.setContent( jQuery( that.el ).find( '.nf-add-saved-field' ) );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tthis.addSavedjBox.attach( jQuery( this.el ).find( '.dashicons') );\r\n\t\t\tthis.model.set( 'jBox', this.addSavedjBox, { silent: true } );\r\n\t\t},\r\n\r\n\t\trenderjBoxContent: function() {\r\n\t\t\tif ( this.addSaved ) {\r\n\t\t\t\tthis.addSaved.show( new addSavedFieldView( { model: this.model } ) );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function () {\r\n\t \treturn {\r\n\t \t\trenderTypeNicename: function() {\r\n\t \t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\t\t\tvar domainID = currentDomain.get( 'id' );\r\n\t \t\t\tvar type = nfRadio.channel( domainID ).request( 'get:type', this.type );\r\n\t \t\t\tvar displayName = type.get( 'nicename' );\r\n\r\n\t \t\t\tif ( this.saved ) {\r\n\t \t\t\t\tvar realType = nfRadio.channel( domainID ).request( 'get:type', type.get( 'type' ) );\r\n\t \t\t\t\tdisplayName += ' - ' + realType.get( 'nicename' );\r\n\t \t\t\t}\r\n\t \t\t\treturn displayName;\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\trenderSavedStar: function() {\r\n\t\t\t\t\tif ( this.saved ) {\r\n\t\t\t\t\t\tvar star = 'filled';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar star = 'empty';\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn '<span class=\"dashicons dashicons-star-' + star + '\"></span>'\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Add main header.\r\n *\r\n * TODO: make dynamic\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Actions\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/actions/mainHeader',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-main-header-actions',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tvar actionCollection = nfRadio.channel( 'actions' ).request( 'get:collection' );\r\n\t\t\tthis.listenTo( actionCollection, 'add', this.render );\r\n\t\t\tthis.listenTo( actionCollection, 'remove', this.render );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tvar actionCollection = nfRadio.channel( 'actions' ).request( 'get:collection' );\r\n\t\t\tif ( actionCollection.models.length == 0 ) {\r\n\t\t\t\tjQuery( this.el ).hide();\r\n\t\t\t} else {\r\n\t\t\t\tjQuery( this.el ).show();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Actions subheader view.\r\n *\r\n * TODO: make dynamic\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Actions\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/actions/subHeader',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-sub-header-actions'\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Renders an application menu item from a domain model.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/itemControls',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-item-controls',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for domain changes and re-render when we detect one.\r\n\t\t\t// this.listenTo( nfRadio.channel( 'app' ), 'change:currentDomain', this.render );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we render this view, remove the extra <div> tag created by backbone.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tonRender: function() {\r\n\t\t\t// this.$el = this.$el.children();\r\n\t\t\t// this.$el.unwrap();\r\n\t\t\t// this.setElement( this.$el );\r\n\t\t\t// \r\n\t\t\tthis.currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'mouseover .nf-item-control': 'mouseoverItemControl',\r\n\t\t\t'click .nf-edit-settings': 'clickEdit',\r\n\t\t\t'singletap .nf-item-control': 'singleTapEdit',\r\n\t\t\t'click .nf-item-delete': 'clickDelete',\r\n\t\t\t'click .nf-item-duplicate': 'clickDuplicateField'\r\n\t\t},\r\n\r\n\t\tclickEdit: function( e ) {\r\n\t\t\tif ( ! nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\tnfRadio.channel( 'app' ).trigger( 'click:edit', e, this.model );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsingleTapEdit: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:edit', e, this.model );\r\n\t\t},\r\n\r\n\t\tclickDelete: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:delete', e, this.model );\r\n\t\t},\r\n\r\n\t\tclickDuplicateField: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'click:duplicate', e, this.model );\r\n\t\t},\r\n\r\n\t\tmouseoverItemControl: function( e ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'mouseover:itemControl', e, this.model );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Single action table row\r\n *\r\n * TODO: make dynamic\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Actions\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/actions/actionItem',['views/app/itemControls'], function( itemControlsView ) {\r\n\tvar view = Marionette.LayoutView.extend({\r\n\t\ttagName: 'tr',\r\n\t\ttemplate: '#tmpl-nf-action-item',\r\n\r\n\t\tregions: {\r\n\t\t\titemControls: '.nf-item-controls'\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.template = nfRadio.channel( 'actions' ).request( 'get:actionItemTemplate' ) || this.template;\r\n\t\t\tthis.model.on( 'change:label', this.render, this );\r\n\t\t\tthis.model.on( 'change:editActive', this.render, this );\r\n\t\t\tthis.model.on( 'change:active', this.maybeDeactivate, this );\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.model.off( 'change:label', this.render );\r\n\t\t\tthis.model.off( 'change:editActive', this.render );\r\n\t\t\tthis.model.off( 'change:active', this.maybeDeactivate );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tif ( this.model.get( 'editActive' ) ) {\r\n\t\t\t\tjQuery( this.el ).addClass( 'active' );\r\n\t\t\t} else {\r\n\t\t\t\tjQuery( this.el ).removeClass( 'active' );\r\n\t\t\t}\r\n\r\n\t\t\tthis.maybeDeactivate();\r\n\r\n\t\t\tthis.itemControls.show( new itemControlsView( { model: this.model } ) );\r\n\t\t},\r\n\r\n\t\tmaybeDeactivate: function() {\r\n\t\t\tif ( 0 == this.model.get( 'active' ) ) {\r\n\t\t\t\tjQuery( this.el ).addClass( 'deactivated' );\r\n\t\t\t} else {\r\n\t\t\t\tjQuery( this.el ).removeClass( 'deactivated' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'change input': 'changeToggle',\r\n\t\t\t'click': 'maybeClickEdit'\r\n\t\t},\r\n\r\n\t\tmaybeClickEdit: function( e ) {\r\n\t\t\tif ( 'TR' == jQuery( e.target ).parent().prop( 'tagName' ) ) {\r\n\t\t\t\tnfRadio.channel( 'app' ).trigger( 'click:edit', e, this.model );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tchangeToggle: function( e ) {\r\n\t\t\tvar setting = jQuery( e.target ).data( 'setting' );\r\n\t\t\tvar settingModel = nfRadio.channel( 'actions' ).request( 'get:settingModel', setting );\r\n\t\t\tnfRadio.channel( 'app' ).request( 'change:setting', e, settingModel, this.model );\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:db' );\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\trenderToggle: function( settingName ) {\r\n\t\t\t\t\tthis.settingName = settingName || 'active';\r\n\t\t\t\t\tvar actionLabel = this.label;\r\n\t\t\t\t\tthis.label = '';\r\n\t\t\t\t\tthis.value = this[ this.settingName ];\r\n\t\t\t\t\tthis.name = this.id + '-' + this.settingName;\r\n\t\t\t\t\tvar html = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-edit-setting-toggle' );\r\n\t\t\t\t\thtml = html( this );\r\n\t\t\t\t\tthis.label = actionLabel;\r\n\t\t\t\t\treturn html;\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderTypeNicename: function() {\r\n\t\t\t\t\tvar type = nfRadio.channel( 'actions' ).request( 'get:type', this.type );\r\n\t\t\t\t\tif ( 'undefined' == typeof type ) return;\r\n\r\n\t\t\t\t\treturn type.get( 'nicename' );\r\n\t\t\t\t},\r\n\r\n /**\r\n\t\t\t\t * [Deprecated] Tooltips are not currently implemented in the context of the action list.\r\n\t\t\t\t * However, the template uses a nested template which requires the helper method.\r\n * @returns {string}\r\n */\r\n\t\t\t\trenderTooltip: function() {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderMergeTags: function() {\r\n\t\t\t\t\tif ( this.use_merge_tags ) {\r\n\t\t\t\t\t\treturn '<span class=\"dashicons dashicons-list-view merge-tags\"></span>';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\ndefine( 'views/actions/mainContentEmpty',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-main-content-actions-empty',\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tjQuery( this.el ).parent().parent().removeClass( 'nf-actions-empty' );\r\n\t\t\t// jQuery( this.el ).parent().removeClass( 'nf-fields-empty-droppable' ).droppable( 'destroy' );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\t\t},\r\n\r\n\t\tonShow: function() {\r\n\t\t\tjQuery( this.el ).parent().parent().addClass( 'nf-actions-empty' );\r\n\t\t\t// if ( jQuery( this.el ).parent().hasClass( 'ui-sortable' ) ) {\r\n\t\t\t// \tjQuery( this.el ).parent().sortable( 'destroy' );\r\n\t\t\t// }\r\n\t\t\t// jQuery( this.el ).parent().addClass( 'nf-fields-empty-droppable' );\r\n\t\t\t// jQuery( this.el ).parent().droppable( {\r\n\t\t\t// \taccept: function( draggable ) {\r\n\t\t\t// \t\tif ( jQuery( draggable ).hasClass( 'nf-stage' ) || jQuery( draggable ).hasClass( 'nf-field-type-button' ) ) {\r\n\t\t\t// \t\t\treturn true;\r\n\t\t\t// \t\t}\r\n\t\t\t// \t},\r\n\t\t\t// \thoverClass: 'nf-droppable-hover',\r\n\t\t\t// \ttolerance: 'pointer',\r\n\t\t\t// \tover: function( e, ui ) {\r\n\t\t\t// \t\tui.item = ui.draggable;\r\n\t\t\t// \t\tnfRadio.channel( 'app' ).request( 'over:fieldsSortable', ui );\r\n\t\t\t// \t},\r\n\t\t\t// \tout: function( e, ui ) {\r\n\t\t\t// \t\tui.item = ui.draggable;\r\n\t\t\t// \t\tnfRadio.channel( 'app' ).request( 'out:fieldsSortable', ui );\r\n\t\t\t// \t},\r\n\t\t\t// \tdrop: function( e, ui ) {\r\n\t\t\t// \t\tui.item = ui.draggable;\r\n\t\t\t// \t\tnfRadio.channel( 'app' ).request( 'receive:fieldsSortable', ui );\r\n\t\t\t// \t\tvar fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\t\t\t// \t\tfieldCollection.trigger( 'reset', fieldCollection );\r\n\t\t\t// \t},\r\n\t\t\t// } );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Main content view for our actions.\r\n *\r\n * TODO: make dynamic\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Actions\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/actions/mainContent',['views/actions/actionItem', 'views/actions/mainContentEmpty'], function( actionView, emptyView ) {\r\n\tvar view = Marionette.CompositeView.extend({\r\n\t\ttemplate: '#tmpl-nf-action-table',\r\n\t\tchildView: actionView,\r\n\t\temptyView: emptyView,\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.template = nfRadio.channel( 'actions' ).request( 'get:mainContentTemplate' ) || this.template;\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tjQuery( this.el ).droppable( {\r\n\t\t\t\taccept: '.nf-action-type-draggable',\r\n\t\t\t\tactiveClass: 'nf-droppable-active',\r\n\t\t\t\thoverClass: 'nf-droppable-hover',\r\n\t\t\t\tdrop: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'drop:actionType', e, ui );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tattachHtml: function( collectionView, childView ) {\r\n\t\t\tif ( 'undefined' == typeof nfRadio.channel( 'actions' ).request( 'get:type', childView.model.get( 'type' ) ) ) return;\r\n\r\n\t\t\tjQuery( collectionView.el ).find( 'tbody' ).append( childView.el );\r\n\t\t},\r\n\t});\r\n\r\n\treturn view;\r\n} );\r\n\ndefine( 'views/advanced/mainHeader',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-main-header-settings'\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/advanced/subHeader',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-sub-header-settings'\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/advanced/settingItem',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-form-setting-type',\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.model.off( 'change:editActive', this.updateActiveClass );\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.model.on( 'change:editActive', this.updateActiveClass, this );\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click': 'clickEdit'\r\n\t\t},\r\n\r\n\t\tclickEdit: function( e ) {\r\n\t\t\tnfRadio.channel( 'settings' ).trigger( 'click:edit', e, this.model );\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\treturn {\r\n\t\t\t\trenderClasses: function() {\r\n\t\t\t\t\tvar classes = 'nf-setting-wrap ' + this.id;\r\n\t \t\t\tif ( this.editActive ) {\r\n\t \t\t\t\tclasses += ' active';\r\n\t \t\t\t}\r\n\t \t\t\treturn classes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tupdateActiveClass: function() {\r\n\t\t\tif ( this.model.get( 'editActive' ) ) {\r\n\t\t\t\tjQuery( this.el ).find( '.nf-setting-wrap' ).addClass( 'active' );\r\n\t\t\t} else {\r\n\t\t\t\tjQuery( this.el ).find( '.nf-setting-wrap' ).removeClass( 'active' );\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/advanced/mainContent',['views/advanced/settingItem'], function( settingItem ) {\r\n\tvar view = Marionette.CompositeView.extend({\r\n\t\tchildView: settingItem,\r\n\t\ttemplate: '#tmpl-nf-advanced-main-content',\r\n\r\n\t\tattachHtml: function( collectionView, childView ) {\r\n\t\t\tjQuery( collectionView.el ).find( '.child-view-container' ).append( childView.el );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Model that represents our form fields.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/fields/fieldModel',[], function() {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\tobjectType: 'Field',\r\n\t\t\tobjectDomain: 'fields',\r\n\t\t\teditActive: false,\r\n\t\t\torder: 999,\r\n\t\t\tidAttribute: 'id'\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tvar type = this.get('type');\r\n\t\t\tif ( 'undefined' == typeof type ) return;\r\n\r\n\t\t\t// Listen for model attribute changes\r\n\t\t\tthis.on( 'change', this.changeSetting, this );\r\n\r\n\t\t\t// Get our parent field type.\r\n\t\t\tvar fieldType = nfRadio.channel( 'fields' ).request( 'get:type', this.get( 'type' ) );\r\n\t\t\tvar parentType = fieldType.get( 'parentType' );\r\n\r\n\t\t\t// Loop through our field type \"settingDefaults\" and add any default settings.\r\n\t\t\t_.each( fieldType.get( 'settingDefaults' ), function( val, key ) {\r\n\t\t\t\tif ( 'undefined' == typeof this.get( key ) ) {\r\n\t\t\t\t\tthis.set( key, val, { silent: true } );\r\n\t\t\t\t}\r\n\t\t\t}, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * If our field type is a saved field, set our field type to the actual field type\r\n\t\t\t */\r\n\t\t\tif ( 'saved' == fieldType.get( 'section' ) ) {\r\n\t\t\t\tthis.set( 'type', fieldType.get( 'type' ) );\r\n\t\t\t}\r\n\r\n\t\t\tif (type === 'listimage') {\r\n\t\t\t\tthis.get = this.listimageGet;\r\n\t\t\t\tthis.set = this.listimageSet;\r\n\t\t\t}\r\n\r\n\t\t\t/*\r\n\t\t\t * Trigger an init event on three channels:\r\n\t\t\t * \r\n\t\t\t * fields\r\n\t\t\t * fields-parentType\r\n\t\t\t * field-type\r\n\t\t\t *\r\n\t\t\t * This lets specific field types modify model attributes before anything uses them.\r\n\t\t\t */ \r\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'init:fieldModel', this );\r\n\t\t\tnfRadio.channel( 'fields-' + parentType ).trigger( 'init:fieldModel', this );\r\n\t\t\tnfRadio.channel( 'fields-' + this.get( 'type' ) ).trigger( 'init:fieldModel', this );\r\n\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'fire:updateFieldKey', this.updateFieldKey );\r\n\t\t},\r\n\r\n\t\tlistimageGet: function(attr) {\r\n if(attr === 'options') {\r\n\t\t\t\t\tattr = 'image_options';\r\n\t\t\t}\r\n\r\n return Backbone.Model.prototype.get.call(this, attr);\r\n\t\t},\r\n\t\t\r\n\t\tlistimageSet: function(attributes, options) {\r\n\t\t\tif ('options' === attributes) {\r\n\t\t\t\tattributes = 'image_options';\r\n\t\t\t}\r\n\t\t\treturn Backbone.Model.prototype.set.call(this, attributes, options);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Fires an event on the fieldSetting-{name} channel saying we've updated a setting.\r\n\t\t * When we change the model attributes, fire an event saying we've changed something.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tchangeSetting: function( model, options ) {\r\n\t\t\tnfRadio.channel( 'fieldSetting-' + _.keys( model.changedAttributes() )[0] ).trigger( 'update:setting', this, options.settingModel ) ;\r\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'update:setting', this, options.settingModel );\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'update:setting', this, options.settingModel );\r\n\t\t},\r\n\r\n\t\tupdateFieldKey: function( keyModel, settingModel ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'replace:fieldKey', this, keyModel, settingModel );\r\n\t\t},\r\n \r\n /**\r\n * Function used to get the formatted lable of the fieldModel.\r\n * \r\n * @since 3.3.3\r\n * @return String\r\n */\r\n formatLabel: function() {\r\n // Try to use admin label.\r\n var label = this.get( 'admin_label' );\r\n // If our admin label is empty...\r\n if ( '' == label ) {\r\n // Use the field label instead.\r\n label = this.get( 'label' );\r\n }\r\n return label;\r\n }\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Collection that holds our field models.\r\n * This is the actual field data created by the user.\r\n *\r\n * We listen to the add and remove events so that we can push the new id to either the new fields or removed fields property.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/fields/fieldCollection',['models/fields/fieldModel'], function( fieldModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: fieldModel,\r\n\t\tcomparator: function( model ){\r\n\t\t\treturn parseInt( model.get( 'order' ) );\r\n\t\t},\r\n\t\ttmpNum: 1,\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.on( 'add', this.addField, this );\r\n\t\t\tthis.on( 'remove', this.removeField, this );\r\n\r\n\t\t\tthis.listenTo( this, 'add:field', this.addNewField );\r\n\t\t\tthis.listenTo( this, 'append:field', this.appendNewField );\r\n\t\t\tthis.listenTo( this, 'remove:field', this.removeFieldResponse );\r\n\t\t\tthis.newIDs = [];\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we add a field, push the id onto our new fields property.\r\n\t\t * This lets us tell the server that this is a new field to be added rather than a field to be updated.\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @param void\r\n\t\t */\r\n\t\taddField: function( model ) {\r\n\t\t\tthis.newIDs.push( model.get( 'id' ) );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we remove a field, push the id onto our removed fields property.\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @param void\r\n\t\t */\r\n\t\tremoveField: function( model ) {\r\n\t\t\tthis.removedIDs = this.removedIDs || {};\r\n\t\t\tthis.removedIDs[ model.get( 'id' ) ] = model.get( 'id' );\r\n\t\t},\r\n\r\n\t\taddNewField: function( model ) {\r\n\t\t\tthis.add( model );\r\n\t\t},\r\n\r\n\t\tappendNewField: function( model ) {\r\n\t\t\tif ( 0 == this.length ) {\r\n\t\t\t\tvar order = 0;\r\n\t\t\t} else {\r\n\t\t\t\tvar order = this.at( this.length -1 ).get( 'order' ) + 1;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.set( 'order', order, { silent: true } );\r\n\t\t\tthis.add( model );\r\n\t\t},\r\n\r\n\t\tremoveFieldResponse: function( model ) {\r\n\t\t\tthis.remove( model );\r\n\t\t},\r\n\r\n\t\tfieldExists: function( fieldModel ) {\r\n\t\t\treturn -1 != this.indexOf( fieldModel );\r\n\t\t}\r\n\t} );\r\n\treturn collection;\r\n} );\r\n\n/**\r\n * Config file for our app domains.\r\n * \r\n * this.collection represents all of our app domain (fields, actions, settings) information.\r\n *\r\n * This doesn't store the current domain, but rather all the data about each.\r\n * \r\n * This data includes:\r\n * hotkeys\r\n * header view\r\n * subheader view\r\n * content view\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/domainConfig',[\r\n\t// Require our domain collection\r\n\t'models/app/domainCollection',\r\n\t// Require our fields domain files\r\n\t'views/fields/subHeader',\r\n\t'views/fields/mainContentFieldCollection',\r\n\t'views/fields/drawer/settingsTitle',\r\n\t// Require our actions domain files\r\n\t'views/actions/mainHeader', \r\n\t'views/actions/subHeader',\r\n\t'views/actions/mainContent',\r\n\t// Require our settings domain files\r\n\t'views/advanced/mainHeader',\r\n\t'views/advanced/subHeader',\r\n\t'views/advanced/mainContent',\r\n\t// Empty View\r\n\t'views/app/empty',\r\n\t// FieldCollection: used by the default formContentData filter\r\n\t'models/fields/fieldCollection'\r\n\t], \r\n\tfunction( \r\n\t\tappDomainCollection,\r\n\t\tfieldsSubHeaderView,\r\n\t\tFieldsMainContentFieldCollectionView,\r\n\t\tfieldsSettingsTitleView,\r\n\t\tactionsMainHeaderView,\r\n\t\tactionsSubHeaderView,\r\n\t\tactionsMainContentView,\r\n\t\tsettingsMainHeaderView,\r\n\t\tsettingsSubHeaderView,\r\n\t\tsettingsMainContentView,\r\n\t\tEmptyView,\r\n\t\tFieldCollection\r\n\t) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t/*\r\n\t\t\t * Add our default formContentView filter.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'formContent' ).request( 'add:viewFilter', this.defaultFormContentView, 10, this );\r\n\t\t\t\r\n\t\t\t/*\r\n\t\t\t * Add our default formContentData filter.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'formContent' ).request( 'add:loadFilter', this.defaultFormContentLoad, 10, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Add our default formContentGutterView filters.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'formContentGutters' ).request( 'add:leftFilter', this.defaultFormContentGutterView, 10, this );\r\n\t\t\tnfRadio.channel( 'formContentGutters' ).request( 'add:rightFilter', this.defaultFormContentGutterView, 10, this );\r\n\r\n\t\t\t// Define our app domains\r\n\t\t\tthis.collection = new appDomainCollection( [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'fields',\r\n\t\t\t\t\tnicename: nfi18n.domainFormFields,\r\n\t\t\t\t\thotkeys: {\r\n\t\t\t\t\t\t'Esc'\t\t\t\t: 'close:drawer',\r\n\t\t\t\t\t\t'Ctrl+Shift+n'\t\t: 'add:newField',\r\n\t\t\t\t\t\t'Ctrl+Shift+a'\t\t: 'changeDomain:actions',\r\n\t\t\t\t\t\t'Ctrl+Shift+s'\t\t: 'changeDomain:settings',\r\n\t\t\t\t\t\t'Alt+Ctrl+t'\t\t: 'open:mergeTags',\r\n\t\t\t\t\t\t'up'\t\t\t\t: 'up:mergeTags',\r\n\t\t\t\t\t\t'down'\t\t\t\t: 'down:mergeTags',\r\n\t\t\t\t\t\t'Shift+return'\t\t: 'return:mergeTags'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmobileDashicon: 'dashicons-menu',\r\n\r\n\t\t\t\t\tgetSubHeaderView: function() {\r\n\t\t\t\t\t\treturn new fieldsSubHeaderView();\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t/**\r\n\t\t\t\t\t * Get the formContent view that should be used in our builder.\r\n\t\t\t\t\t * Uses two filters:\r\n\t\t\t\t\t * 1) One for our formContentData\r\n\t\t\t\t\t * 2) One for our formContentView\r\n\t\t\t\t\t *\r\n\t\t\t\t\t * If we don't have any view filters, we use the default formContentView.\r\n\t\t\t\t\t * \r\n\t\t\t\t\t * @since 3.0\r\n\t\t\t\t\t * @return formContentView backbone view.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tgetMainContentView: function( collection ) {\r\n\t\t\t\t\t\tvar formContentData = nfRadio.channel( 'settings' ).request( 'get:setting', 'formContentData' );\r\n\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * As of version 3.0, 'fieldContentsData' has deprecated in favour of 'formContentData'.\r\n\t\t\t\t\t\t * If we don't have this setting, then we check for this deprecated value.\r\n\t\t\t\t\t\t * \r\n\t\t\t\t\t\t * Set our fieldContentsData to our form setting 'fieldContentsData'\r\n\t\t\t\t\t\t *\r\n\t\t\t\t\t\t * TODO: Remove this backwards compatibility eventually.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tif ( ! formContentData ) {\r\n\t\t\t\t\t\t\tformContentData = nfRadio.channel( 'settings' ).request( 'get:setting', 'fieldContentsData' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * If we don't have a filter for our formContentData, default to fieldCollection.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tvar formContentLoadFilters = nfRadio.channel( 'formContent' ).request( 'get:loadFilters' );\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t/* \r\n\t\t\t\t\t\t* Get our first filter, this will be the one with the highest priority.\r\n\t\t\t\t\t\t*/\r\n\t\t\t\t\t\tvar sortedArray = _.without( formContentLoadFilters, undefined );\r\n\t\t\t\t\t\tvar callback = _.first( sortedArray );\r\n\t\t\t\t\t\tformContentData = callback( formContentData, nfRadio.channel( 'app' ).request( 'get:formModel' ), true );\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Check our fieldContentViewsFilter to see if we have any defined.\r\n\t\t\t\t\t\t * If we do, overwrite our default with the view returned from the filter.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tvar formContentViewFilters = nfRadio.channel( 'formContent' ).request( 'get:viewFilters' );\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t/* \r\n\t\t\t\t\t\t* Get our first filter, this will be the one with the highest priority.\r\n\t\t\t\t\t\t*/\r\n\t\t\t\t\t\tvar sortedArray = _.without( formContentViewFilters, undefined );\r\n\t\t\t\t\t\tvar callback = _.first( sortedArray );\r\n\t\t\t\t\t\tformContentView = callback();\r\n\r\n\t\t\t\t\t\tnfRadio.channel( 'settings' ).request( 'update:setting', 'formContentData', formContentData, true );\r\n\t\t\t\t\t\treturn new formContentView( { collection: formContentData } );\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tgetSettingsTitleView: function( data ) {\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * If we are dealing with a field model, return the fields settings view, otherwise, return the default.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tif ( 'fields' == data.model.get( 'objectDomain' ) ) {\r\n\t\t\t\t\t\t\treturn new fieldsSettingsTitleView( data );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn this.get( 'getDefaultSettingsTitleView' ).call( this, data );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tgetGutterLeftView: function( data ) {\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Check our fieldContentViewsFilter to see if we have any defined.\r\n\t\t\t\t\t\t * If we do, overwrite our default with the view returned from the filter.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tvar gutterFilters = nfRadio.channel( 'formContentGutters' ).request( 'get:leftFilters' );\r\n\r\n\t\t\t\t\t\t/* \r\n\t\t\t\t\t\t* Get our first filter, this will be the one with the highest priority.\r\n\t\t\t\t\t\t*/\r\n\t\t\t\t\t\tvar sortedArray = _.without( gutterFilters, undefined );\r\n\t\t\t\t\t\tvar callback = _.first( sortedArray );\r\n\t\t\t\t\t\tgutterView = callback();\r\n\r\n\t\t\t\t\t\treturn new gutterView(); \r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tgetGutterRightView: function() {\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Check our fieldContentViewsFilter to see if we have any defined.\r\n\t\t\t\t\t\t * If we do, overwrite our default with the view returned from the filter.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tvar gutterFilters = nfRadio.channel( 'formContentGutters' ).request( 'get:rightFilters' );\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t/* \r\n\t\t\t\t\t\t* Get our first filter, this will be the one with the highest priority.\r\n\t\t\t\t\t\t*/\r\n\t\t\t\t\t\tvar sortedArray = _.without( gutterFilters, undefined );\r\n\t\t\t\t\t\tvar callback = _.first( sortedArray );\r\n\t\t\t\t\t\tgutterView = callback();\r\n\r\n\t\t\t\t\t\treturn new gutterView(); \r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'actions',\r\n\t\t\t\t\tnicename: nfi18n.domainActions,\r\n\t\t\t\t\thotkeys: {\r\n\t\t\t\t\t\t'Esc'\t\t\t\t: 'close:drawer',\r\n\t\t\t\t\t\t'Ctrl+Shift+n'\t\t: 'add:newAction',\r\n\t\t\t\t\t\t'Ctrl+Shift+f'\t\t: 'changeDomain:fields',\r\n\t\t\t\t\t\t'Ctrl+Shift+s'\t\t: 'changeDomain:settings',\r\n\t\t\t\t\t\t'Alt+Ctrl+t'\t\t: 'open:mergeTags',\r\n\t\t\t\t\t\t'up'\t\t\t\t: 'up:mergeTags',\r\n\t\t\t\t\t\t'down'\t\t\t\t: 'down:mergeTags',\r\n\t\t\t\t\t\t'Shift+return'\t\t: 'return:mergeTags'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmobileDashicon: 'dashicons-external',\r\n\r\n\t\t\t\t\tgetSubHeaderView: function() {\r\n\t\t\t\t\t\treturn new actionsSubHeaderView();\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\r\n\t\t\t\t\tgetMainContentView: function() {\r\n\t\t\t\t\t\tvar collection = nfRadio.channel( 'actions' ).request( 'get:collection' );\r\n\t\t\t\t\t\treturn new actionsMainContentView( { collection: collection } );\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'settings',\r\n\t\t\t\t\tnicename: nfi18n.domainAdvanced,\r\n\t\t\t\t\thotkeys: {\r\n\t\t\t\t\t\t'Esc'\t\t\t\t: 'close:drawer',\r\n\t\t\t\t\t\t'Ctrl+Shift+f'\t\t: 'changeDomain:fields',\r\n\t\t\t\t\t\t'Ctrl+Shift+a'\t\t: 'changeDomain:actions',\r\n\t\t\t\t\t\t'Alt+Ctrl+t'\t\t: 'open:mergeTags',\r\n\t\t\t\t\t\t'up'\t\t\t\t: 'up:mergeTags',\r\n\t\t\t\t\t\t'down'\t\t\t\t: 'down:mergeTags',\r\n\t\t\t\t\t\t'Shift+return'\t\t: 'return:mergeTags'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmobileDashicon: 'dashicons-admin-generic',\r\n\r\n\t\t\t\t\tgetSubHeaderView: function() {\r\n\t\t\t\t\t\treturn new settingsSubHeaderView();\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\r\n\t\t\t\t\tgetMainContentView: function() {\r\n\t\t\t\t\t\tvar collection = nfRadio.channel( 'settings' ).request( 'get:typeCollection' );\r\n\t\t\t\t\t\treturn new settingsMainContentView( { collection: collection } );\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tid: 'preview',\r\n\t\t\t\t\tnicename: 'Preview Form',\r\n\t\t\t\t\tclasses: 'preview',\r\n\t\t\t\t\tdashicons: 'dashicons-visibility',\r\n\t\t\t\t\tmobileDashicon: 'dashicons-visibility',\r\n\t\t\t\t\turl: nfAdmin.previewurl\r\n\t\t\t\t}\r\n\t\t\t] );\r\n\r\n\t\t\t/*\r\n\t\t\t * Send out a radio message with our domain config collection.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'init:domainCollection', this.collection );\r\n\r\n\t\t\t/*\r\n\t\t\t * Respond to requests to get the app domain collection.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:domainCollection', this.getDomainCollection, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:domainModel', this.getDomainModel, this );\r\n\t\t},\r\n\r\n\t\tgetDomainCollection: function() {\r\n\t\t\treturn this.collection;\r\n\t\t},\r\n\r\n\t\tgetDomainModel: function( id ) {\r\n\t\t\treturn this.collection.get( id );\r\n\t\t},\r\n\r\n\t\tdefaultFormContentView: function( formContentData ) {\r\n\t\t\treturn FieldsMainContentFieldCollectionView;\r\n\t\t},\r\n\r\n\t\tdefaultFormContentLoad: function( formContentData ) {\r\n\t\t\tvar fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\t\t\t/*\r\n\t\t\t * If we only have one load filter, we can just return the field collection.\r\n\t\t\t */\r\n\t\t\tvar formContentLoadFilters = nfRadio.channel( 'formContent' ).request( 'get:loadFilters' );\r\n\t\t\tvar sortedArray = _.without( formContentLoadFilters, undefined );\r\n\r\n\t\t\tif ( 1 == sortedArray.length || 'undefined' == typeof formContentData || true === formContentData instanceof Backbone.Collection ) return fieldCollection;\r\n\r\n\t\t\t/*\r\n\t\t\t * If another filter is registered, we are calling this from somewhere else.\r\n\t\t\t */\r\n\r\n \tvar fieldModels = _.map( formContentData, function( key ) {\r\n \t\treturn fieldCollection.findWhere( { key: key } );\r\n \t}, this );\r\n\r\n \treturn new FieldCollection( fieldModels );\r\n\t\t},\r\n\r\n\t\tdefaultFormContentGutterView: function( formContentData ) {\r\n\t\t\treturn EmptyView;\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Model for our app data.\r\n * Listens for changes to the 'clean' attribute and triggers a radio message when the state changes.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/appModel',[], function() {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\tloading: false\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen to changes to our 'clean' attribute.\r\n\t\t\tthis.on( 'change:clean', this.changeStatus, this );\r\n\t\t},\r\n\r\n\t\tchangeStatus: function() {\r\n\t\t\t// Send out a radio message when the 'clean' attribute changes.\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'change:clean', this.get( 'clean' ) );\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Creates and stores a model that represents app-wide data. i.e. current domain, current drawer, clean, etc.\r\n *\r\n * clean is a boolean that represents whether or not changes have been made.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/data',['models/app/appModel'], function( appModel ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Get the collection that represents all the parts of our application.\r\n\t\t\tvar appDomainCollection = nfRadio.channel( 'app' ).request( 'get:domainCollection' );\r\n\t\t\t// Setup our initial model.\r\n\t\t\tthis.model = new appModel( {\r\n\t\t\t\tcurrentDrawer: false,\r\n\t\t\t\tcurrentDomain: appDomainCollection.get( 'fields' ),\r\n\t\t\t\tclean: true\r\n\t\t\t} );\r\n\r\n\t\t\t/*\r\n\t\t\t * Set the mobile setting used to track whether or not we're on a mobile device.\r\n\t\t\t */\r\n\t\t\tvar mobile = ( 1 == nfAdmin.mobile ) ? true : false;\r\n\t\t\tthis.model.set( 'mobile', mobile );\r\n\r\n\t\t\t/*\r\n\t\t\t * Respond to requests to see if we are on mobile.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'is:mobile', this.isMobile, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Respond to app channel requests for information about the state of our app.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:data', this.getData, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:setting', this.getSetting, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:currentDomain', this.getCurrentDomain, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:currentDrawer', this.getCurrentDrawer, this );\r\n\t\t\tnfRadio.channel( 'drawer' ).reply( 'get:current', this.getCurrentDrawer, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Respond to app channel requests to update app settings.\r\n\t\t\t */\t\t\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'update:currentDomain', this.updateCurrentDomain, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'update:currentDrawer', this.updateCurrentDrawer, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'update:setting', this.updateSetting, this );\r\n\r\n\t\t},\r\n\r\n\t\tupdateCurrentDomain: function( model ) {\r\n\t\t\tthis.updateSetting( 'currentDomain', model );\r\n\t\t},\r\n\r\n\t\tupdateSetting: function( setting, value ) {\r\n\t\t\tthis.model.set( setting, value );\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetSetting: function( setting ) {\r\n\t\t\treturn this.model.get( setting );\r\n\t\t},\r\n\r\n\t\tgetData: function() {\r\n\t\t\treturn this.model;\r\n\t\t},\r\n\r\n\t\tgetCurrentDomain: function() {\r\n\t\t\treturn this.model.get( 'currentDomain' );\r\n\t\t},\r\n\r\n\t\tupdateCurrentDrawer: function( drawerID ) {\r\n\t\t\tthis.updateSetting( 'currentDrawer', drawerID );\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetCurrentDrawer: function() {\r\n\t\t\tvar currentDrawerID = this.model.get( 'currentDrawer' );\r\n\t\t\treturn nfRadio.channel( 'app' ).request( 'get:drawer', currentDrawerID );\r\n\t\t},\r\n\r\n\t\tisMobile: function() {\r\n\t\t\treturn this.model.get( 'mobile' );\r\n\t\t}\r\n\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Listens for click events to expand/collapse setting groups.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - New Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/drawerToggleSettingGroup',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for click events on our settings group.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'click:toggleSettingGroup', this.toggleSettingGroup );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Set the 'display' attribute of our group model to true or false to toggle.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t\t\te \tevent\r\n\t\t * @param backbone.model \tmodel \tgroup setting model\r\n\t\t * @return void\r\n\t\t */\r\n\t\ttoggleSettingGroup: function( e, model ) {\r\n\t\t\tif ( model.get( 'display' ) ) {\r\n\t\t\t\t/*\r\n\t\t\t\t * Make sure that none of our settings have errors\r\n\t\t\t\t */\r\n\t\t\t\tvar errors = false;\r\n\t\t\t\t_.each( model.get( 'settings' ).models, function( setting ) {\r\n\t\t\t\t\tif ( setting.get( 'error' ) ) {\r\n\t\t\t\t\t\terrors = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\tif ( ! errors ) {\r\n\t\t\t\t\tmodel.set( 'display', false );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tmodel.set( 'display', true );\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Updates our database with our form data.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/updateDB',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for the closing of the drawer and update when it's closed.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'closed', this.updateDB );\r\n\t\t\t// Respond to requests to update the database.\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'update:db', this.updateDB, this );\r\n\t\t\t/*\r\n\t\t\t * Register our default formContent save filter.\r\n\t\t\t * This converts our collection into an array of keys.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'formContent' ).request( 'add:saveFilter', this.defaultSaveFilter, 10, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Update our database.\r\n\t\t * If action isn't specified, assume we're updating the preview.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param string \taction preview or publish\r\n\t\t * @return void\r\n\t\t */\r\n\t\tupdateDB: function( action ) {\r\n\r\n\t\t\t// If our app is clean, dont' update.\r\n\t\t\tif ( nfRadio.channel( 'app' ).request( 'get:setting', 'clean' ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Default action to preview.\r\n\t\t\taction = action || 'preview';\r\n\r\n\t\t\t// Setup our ajax actions based on the action we're performing\r\n\t\t\tif ( 'preview' == action ) {\r\n\t\t\t\tvar jsAction = 'nf_preview_update';\r\n\t\t\t} else if ( 'publish' == action ) {\r\n\t\t\t\tvar jsAction = 'nf_save_form';\r\n\t\t\t\t// now using a different ajax action\r\n\t\t\t\t// var jsAction = 'nf_batch_process';\r\n\t\t\t}\r\n\r\n\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\r\n\t\t\t/*\r\n\t\t\t * There are pieces of data that are only needed for the builder and not for the front-end.\r\n\t\t\t * We need to unset those.\r\n\t\t\t * TODO: Make this more dynamic/filterable.\r\n\t\t\t */\r\n\t\t\t_.each( formModel.get( 'fields' ).models, function( fieldModel, index ) {\r\n\t\t\t\tfieldModel.unset( 'jBox', { silent: true } );\r\n\t\t\t} );\r\n\r\n\t\t\t/*\r\n\t\t\t * The main content of our form is called the formContent.\r\n\t\t\t * In this next section, we check to see if any add-ons want to modify that contents before we save.\r\n\t\t\t * If there aren't any filters found, we default to the field collection.\r\n\t\t\t * \r\n\t\t\t */\r\n\t\t\t\r\n\t\t\tvar formContentData = nfRadio.channel( 'settings' ).request( 'get:setting', 'formContentData' );\r\n\t\t\t/*\r\n\t\t\t * As of version 3.0, 'fieldContentsData' has deprecated in favour of 'formContentData'.\r\n\t\t\t * If we don't have this setting, then we check for this deprecated value.\r\n\t\t\t * \r\n\t\t\t * Set our fieldContentsData to our form setting 'fieldContentsData'\r\n\t\t\t *\r\n\t\t\t * TODO: Remove this backwards compatibility eventually.\r\n\t\t\t */\r\n\t\t\tif ( ! formContentData ) {\r\n\t\t\t\tformContentData = nfRadio.channel( 'settings' ).request( 'get:setting', 'fieldContentsData' );\r\n\t\t\t}\r\n\r\n\t\t\tvar formContentSaveDataFilters = nfRadio.channel( 'formContent' ).request( 'get:saveFilters' );\r\n\t\t\t\t\t\t\r\n\t\t\t/* \r\n\t\t\t* Get our first filter, this will be the one with the highest priority.\r\n\t\t\t*/\r\n\t\t\tvar sortedArray = _.without( formContentSaveDataFilters, undefined );\r\n\t\t\tvar callback = _.first( sortedArray );\r\n\t\t\t/*\r\n\t\t\t * Set our formContentData to the callback specified in the filter, passing our current formContentData.\r\n\t\t\t */\r\n\t\t\tformContentData = callback( formContentData );\r\n\t\t\t\r\n\t\t\tif ( 'publish' == action && formModel.get( 'show_publish_options' ) ) {\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'open:drawer', 'newForm' );\r\n\t\t\t\tvar builderEl = nfRadio.channel( 'app' ).request( 'get:builderEl' );\r\n\t\t\t\tjQuery( builderEl ).addClass( 'disable-main' );\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Get our form data\r\n\t\t\tvar formData = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\r\n\t\t\t// Turn our formData model into an object\r\n\t\t\tvar data = JSON.parse( JSON.stringify( formData ) );\r\n\t\t\tdata.settings.formContentData = formContentData;\r\n\r\n\t\t\t/**\r\n\t\t\t * Prepare fields for submission.\r\n\t\t\t */\r\n\t\t\t\r\n\t\t\t// Get the field IDs that we've deleted.\r\n\t\t\tvar removedIDs = formData.get( 'fields' ).removedIDs;\r\n\r\n\t\t\t/*\r\n\t\t\t * data.fields is an array of objects like:\r\n\t\t\t * field.label = blah\r\n\t\t\t * field.label_pos = blah\r\n\t\t\t * etc.\r\n\t\t\t *\r\n\t\t\t * And we need that format to be:\r\n\t\t\t * field.settings.label = blah\r\n\t\t\t * field.settings.label_pos = blah\r\n\t\t\t *\r\n\t\t\t * So, we loop through our fields and create a field.settings object.\r\n\t\t\t */\r\n\t\t\t_.each( data.fields, function( field ) {\r\n\t\t\t\tvar id = field.id;\r\n\t\t\t\t// We dont' want to update id or parent_id\r\n\t\t\t\tdelete field.id;\r\n\t\t\t\tdelete field.parent_id;\r\n\t\t\t\tvar settings = {};\r\n\t\t\t\t// Loop through all the attributes of our fields\r\n\t\t\t\tfor (var prop in field) {\r\n\t\t\t\t if ( field.hasOwnProperty( prop ) ) {\r\n\t\t\t\t \t// If our field property isn't null, then...\r\n if ( null !== field[ prop ] ) {\r\n // Set our settings.prop value.\r\n settings[prop] = field[prop];\r\n }\r\n // Delete the property from the field.\r\n delete field[ prop ];\r\n }\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor( var setting in settings ){\r\n\t\t\t\t\tif( null === settings[ setting ] ) {\r\n\t\t\t\t\t\tdelete settings[setting];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Update our field object.\r\n\t\t\t\tfield.settings = settings;\r\n\t\t\t\tfield.id = id;\r\n\t\t\t} );\r\n\r\n\t\t\t// Set our deleted_fields object so that we can know which fields were removed.\r\n\t\t\tdata.deleted_fields = removedIDs;\r\n\r\n\t\t\t/**\r\n\t\t\t * Prepare actions for submission.\r\n\t\t\t */\r\n\t\t\t\r\n\t\t\t// Get the action IDs that we've deleted.\r\n\t\t\tvar removedIDs = formData.get( 'actions' ).removedIDs;\r\n\r\n\t\t\t/*\r\n\t\t\t * data.actions is an array of objects like:\r\n\t\t\t * action.label = blah\r\n\t\t\t * action.label_pos = blah\r\n\t\t\t * etc.\r\n\t\t\t *\r\n\t\t\t * And we need that format to be:\r\n\t\t\t * action.settings.label = blah\r\n\t\t\t * action.settings.label_pos = blah\r\n\t\t\t *\r\n\t\t\t * So, we loop through our actions and create a field.settings object.\r\n\t\t\t */\r\n\t\t\t_.each( data.actions, function( action ) {\r\n\t\t\t\tvar id = action.id;\r\n\t\t\t\t// We dont' want to update id or parent_id\r\n\t\t\t\tdelete action.id;\r\n\t\t\t\tdelete action.parent_id;\r\n\t\t\t\tvar settings = {};\r\n\t\t\t\t// Loop through all the attributes of our actions\r\n\t\t\t\tfor (var prop in action) {\r\n\t\t\t\t if ( action.hasOwnProperty( prop ) ) {\r\n\t\t\t\t \t//Removing null values\r\n\t\t\t\t\t if( null !== action[ prop ] ) {\r\n\t\t\t\t\t\t // Set our settings.prop value.\r\n\t\t\t\t\t\t settings[ prop ] = action[ prop ];\r\n\t\t\t\t\t }\r\n\t\t\t\t // Delete the property from the action.\r\n\t\t\t\t delete action[ prop ];\r\n\t\t\t\t }\r\n\t\t\t\t}\r\n\t\t\t\t// Update our action object.\r\n\t\t\t\taction.settings = settings;\r\n\t\t\t\taction.id = id;\r\n\t\t\t} );\r\n\r\n\t\t\tfor ( var setting in data.settings ) {\r\n\t\t\t\tif ( null === data.settings[ setting ] ) {\r\n\t\t\t\t\tdelete data.settings[ setting ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Set our deleted_actions object so that we can know which actions were removed.\r\n\t\t\tdata.deleted_actions = removedIDs;\r\n\r\n\t\t\t// Turn our object into a JSON string.\r\n\t\t\tdata = JSON.stringify( data );\r\n\r\n\t\t\t// Run anything that needs to happen before we update.\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'before:updateDB', data );\r\n\r\n\t\t\tif ( 'publish' == action ) {\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'update:setting', 'loading', true );\r\n\t\t\t\tnfRadio.channel( 'app' ).trigger( 'change:loading' );\t\r\n\r\n\t\t\t\t// If we're on mobile, show a notice that we're publishing\r\n\t\t\t\tif ( nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\t\tnfRadio.channel( 'notices' ).request( 'add', 'publishing', 'Your Changes Are Being Published', { autoClose: false } );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( 'nf_save_form' === jsAction ) {\r\n\t\t\t\t// if the form string is long than this, chunk it\r\n\t\t\t\tvar chunk_size = 100000;\r\n\t\t\t\tvar data_chunks = [];\r\n\r\n\t\t\t\t// Let's chunk this\r\n\t\t\t\tif( chunk_size < data.length ) {\r\n\t\t\t\t\tdata_chunks = data.match(new RegExp('.{1,' + chunk_size + '}', 'g'));\r\n\t\t\t\t}\r\n\t\t\t\t// if we have chunks send them via the step processor\r\n\t\t\t\tif( 1 < data_chunks.length ) {\r\n\t\t\t\t\t// this function will make the ajax call for chunks\r\n\t\t\t\t\tthis.saveChunkedForm(\r\n\t\t\t\t\t\tdata_chunks,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t'nf_batch_process',\r\n\t\t\t\t\t\taction,\r\n\t\t\t\t\t\tformModel.get('id'),\r\n\t\t\t\t\t\ttrue\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// otherwise send it the regular way.\r\n\t\t\t\t\tvar context = this;\r\n\t\t\t\t\tvar responseData = null;\r\n\r\n\t\t\t\t\tjQuery.post( ajaxurl,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\taction: jsAction,\r\n\t\t\t\t\t\t\tform: data,\r\n\t\t\t\t\t\t\tsecurity: nfAdmin.ajaxNonce\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tfunction( response ) {\r\n\t\t\t\t\t\t\tresponseData = response;\r\n\t\t\t\t\t\t\tcontext.handleFinalResponse( responseData, action );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t).fail( function( xhr, status, error ) {\r\n\t\t\t\t\t\tcontext.handleFinalFailure( xhr, status, error, action )\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t} else if ( 'nf_preview_update' === jsAction ) {\r\n\t\t\t\tvar context = this;\r\n\t\t\t\tvar responseData = null;\r\n\t\t\t\tjQuery.post( ajaxurl,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taction: jsAction,\r\n\t\t\t\t\t\tform: data,\r\n\t\t\t\t\t\tsecurity: nfAdmin.ajaxNonce\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfunction( response ) {\r\n\t\t\t\t\t\tresponseData = response;\r\n\t\t\t\t\t\tcontext.handleFinalResponse( responseData, action );\r\n\t\t\t\t\t}\r\n\t\t\t\t).fail( function( xhr, status, error ) {\r\n\t\t\t\t\tcontext.handleFinalFailure( xhr, status, error, action )\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t},\r\n\t\t/**\r\n\t\t * Function to recursively send chunks until all chunks have been sent\r\n\t\t *\r\n\t\t * @param chunks\r\n\t\t * @param currentIndex\r\n\t\t * @param currentChunk\r\n\t\t * @param jsAction\r\n\t\t * @param action\r\n\t\t */\r\n\t\tsaveChunkedForm: function( chunks, currentChunk, jsAction, action, formId, new_publish ) {\r\n\t\t\tvar total_chunks = chunks.length;\r\n\t\t\tvar postObj = {\r\n\t\t\t\taction: jsAction,\r\n\t\t\t\tbatch_type: 'chunked_publish',\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tnew_publish: new_publish,\r\n\t\t\t\t\tchunk_total: total_chunks,\r\n\t\t\t\t\tchunk_current: currentChunk,\r\n\t\t\t\t\tchunk: chunks[ currentChunk ],\r\n\t\t\t\t\tform_id: formId\r\n\t\t\t\t},\r\n\t\t\t\tsecurity: nfAdmin.batchNonce\r\n\t\t\t};\r\n\r\n\t\t\tvar that = this;\r\n\t\t\tjQuery.post( ajaxurl, postObj )\r\n\t\t\t\t.then( function ( response ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tvar res = JSON.parse(response);\r\n\t\t\t\t\t\tif ( 'success' === res.last_request && ! res.batch_complete) {\r\n\t\t\t\t\t\t\tconsole.log('Chunk ' + currentChunk + ' processed');\r\n\r\n\t\t\t\t\t\t\t// send the next chunk\r\n\t\t\t\t\t\t\tthat.saveChunkedForm(chunks, res.requesting, jsAction, action, formId, false);\r\n\t\t\t\t\t\t} else if ( res.batch_complete ) {\r\n\t\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t\t * We need to respond with data to make the\r\n\t\t\t\t\t\t\t * publish button return to gray\r\n */\r\n\t\t\t\t\t\t\tthat.handleFinalResponse(response, action);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch ( exception ) {\r\n\t\t\t\t\t\tconsole.log( 'There was an error in parsing the' +\r\n\t\t\t\t\t\t\t' response');\r\n\t\t\t\t\t\tconsole.log( exception );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t).fail( function( xhr, status, error ) {\r\n\t\t\t\t\tconsole.log( 'There was an error sending form data' );\r\n\t\t\t\t\tconsole.log( error );\r\n\t\t\t\t\tthat.handleFinalFailure( xhr, status, error, action );\r\n\t\t\t\t});\r\n\t\t},\r\n\r\n\t\thandleFinalResponse: function( response, action ) {\r\n\t\t\ttry {\r\n\t\t\t\tresponse = JSON.parse( response );\r\n\t\t\t\tresponse.action = action;\r\n\r\n\t\t\t\t// Run anything that needs to happen after we update.\r\n\t\t\t\tnfRadio.channel( 'app' ).trigger( 'response:updateDB', response );\r\n\t\t\t\tif ( ! nfRadio.channel( 'app' ).request( 'is:mobile' ) && 'preview' == action ) {\r\n\t\t\t\t\t// nfRadio.channel( 'notices' ).request( 'add', 'previewUpdate', 'Preview Updated'\t);\r\n\t\t\t\t}\r\n\t\t\t} catch( exception ) {\r\n\t\t\t\tconsole.log( 'Something went wrong!' );\r\n\t\t\t\tconsole.log( exception );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\thandleFinalFailure: function( xhr, status, error, action ) {\r\n\t\t\t// For previews, only log to the console.\r\n\t\t\tif( 'preview' == action ) {\r\n\t\t\t\tconsole.log( error );\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// @todo Convert alert to jBox Modal.\r\n\t\t\talert(xhr.status + ' ' + error + '\\r\\n' + 'An error on the server caused your form not to publish.\\r\\nPlease contact Ninja Forms Support with your PHP Error Logs.\\r\\nhttps://ninjaforms.com/contact');\r\n\t\t},\r\n\r\n\t\tdefaultSaveFilter: function( formContentData ) {\r\n\t\t\treturn formContentData.pluck( 'key' );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\r\n\n/**\r\n * Model that represents our form data.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/formModel',[], function() {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tif ( ! jQuery.isNumeric( this.get( 'id' ) ) ) {\r\n\t\t\t\tthis.set( 'show_publish_options', true, { silent: true } );\r\n\t\t\t} else {\r\n\t\t\t\tthis.set( 'show_publish_options', false, { silent: true } );\r\n\t\t\t}\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Stores our form data and responds to requests for it.\r\n * Form data stores fields, actions, and settings.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/formData',['models/app/formModel'], function( formModel) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Instantiate Form Model\r\n\t\t\tthis.model = new formModel( { id: preloadedFormData.id } );\r\n\t\t\t// Set our field collection\r\n\t\t\tthis.model.set( 'fields', nfRadio.channel( 'fields' ).request( 'get:collection' ) );\r\n\t\t\t// Set our actions collection\r\n\t\t\tthis.model.set( 'actions', nfRadio.channel( 'actions' ).request( 'get:collection' ) );\r\n\t\t\t// Set our settings collection\r\n\t\t\tthis.model.set( 'settings', nfRadio.channel( 'settings' ).request( 'get:settings' ) );\r\n\t\t\t// Respond to requests for form data.\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:formModel', this.getFormModel, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Return form data model.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return backbone.model\r\n\t\t */\r\n\t\tgetFormModel: function() {\r\n\t\t\treturn this.model;\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles changing our preview link when we change the 'clean' state of our app.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/previewLink',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for events that would change our preview link\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'before:sendChanges', this.disablePreview, this );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'response:sendChanges', this.enablePreview, this );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:clean', this.changePreviewNicename, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Disable our preview link before we send data to update our preview.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tdisablePreview: function() {\r\n\t\t\t// Get our preview domain\r\n\t\t\tvar appDomains = nfRadio.channel( 'app' ).request( 'get:domainCollection' );\r\n\t\t\tvar preview = appDomains.get( 'preview' );\r\n\t\t\t// Set disabled to true. This will trigger the preview link view to redraw.\r\n\t\t\tpreview.set( 'disabled', true );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Change the preview link text from \"Preview Form\" to \"Preview Changes\" or vice-versa\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param boolean \tclean app data state\r\n\t\t * @return void\r\n\t\t */\r\n\t\tchangePreviewNicename: function( clean ) {\r\n\t\t\t// Get our preview domain\r\n\t\t\tvar appDomains = nfRadio.channel( 'app' ).request( 'get:domainCollection' );\r\n\t\t\tvar preview = appDomains.get( 'preview' );\r\n\r\n\t\t\t// If we have unsaved changes, set our text to 'changes' otherwise, set it to 'form'\r\n\t\t\tif ( ! clean ) {\r\n\t\t\t\tvar nicename = 'Preview Changes';\r\n\t\t\t} else {\r\n\t\t\t\tvar nicename = 'Preview Form';\r\n\t\t\t}\r\n\r\n\t\t\tpreview.set( 'nicename', nicename );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Enable our preview button.\r\n\t\t * This is triggered when we get a response from our preview update.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tenablePreview: function() {\r\n\t\t\t// Get our preview domain\r\n\t\t\tvar appDomains = nfRadio.channel( 'app' ).request( 'get:domainCollection' );\r\n\t\t\tvar preview = appDomains.get( 'preview' );\r\n\t\t\t// Set disabled to false. This will trigger the preview link view to redraw.\r\n\t\t\tpreview.set( 'disabled', false );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Listens to our app channel for requests to change the current domain.\r\n *\r\n * The app menu and the main submenu both contain clickable links that change the current domain.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/menuButtons',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:publish', this.publish );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:viewChanges', this.viewChanges );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:publicLink', this.publicLink );\r\n\t\t},\r\n\r\n\t\tpublish: function() {\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:db', 'publish' );\r\n\t\t},\r\n\r\n\t\tviewChanges: function() {\r\n\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\tnfRadio.channel( 'app' ).request( 'open:drawer', 'viewChanges', { collection: changeCollection } );\r\n\t\t},\r\n\r\n\t\tpublicLink: function() {\r\n\t\t\tnfRadio.channel( 'app' ).request( 'open:drawer', 'publicLink' );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Model that represents our change data.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/changeModel',[], function() {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\tdisabled: false\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Holds all of our change models.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/changeCollection',['models/app/changeModel'], function( domainModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: domainModel,\r\n\r\n\t\tcomparator: function( model ) {\r\n\t\t\tvar id = parseInt( model.cid.replace( 'c', '' ) );\r\n\t\t\treturn -id;\r\n\t\t}\r\n\t} );\r\n\treturn collection;\r\n} );\n/**\r\n * Track settings changes across our app.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/trackChanges',['models/app/changeCollection', 'models/app/changeModel'], function( changeCollection, ChangeModel ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tthis.collection = new changeCollection();\r\n\t\t\t// Respond to any requests to add a change directly.\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'register:change', this.registerChange, this );\r\n\t\t\t// Respond to requests for the change collection\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'get:collection', this.getCollection, this );\r\n\t\t\t// Listen for changes in our clean state. If it goes to clean, clear our collection.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:clean', this.maybeResetCollection );\r\n\t\t},\r\n\r\n\t\tregisterChange: function( action, model, changes, label, data ) {\r\n\t\t\tvar data = typeof data !== 'undefined' ? data : {};\r\n\t\t\tif ( 'undefined' == typeof label.dashicon ) {\r\n\t\t\t\tlabel.dashicon = 'admin-generic';\r\n\t\t\t}\r\n\t\t\tvar changeModel = new ChangeModel({\r\n\t\t\t\taction: action,\r\n\t\t\t\tmodel: model,\r\n\t\t\t\tchanges: changes,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tdata: data\t\t\r\n\t\t\t} );\r\n\t\t\tthis.collection.add( changeModel );\r\n\r\n\t\t\t//loop through repeater fields to reset active state if needed\r\n\t\t\tnfRadio.channel( 'fields-repeater' ).trigger( 'clearEditActive', model );\r\n\t\t\t\r\n\t\t\treturn changeModel;\r\n\t\t},\r\n\r\n\t\tgetCollection: function() {\r\n\t\t\treturn this.collection;\r\n\t\t},\r\n\r\n\t\tmaybeResetCollection: function( clean ) {\r\n\t\t\tif ( clean ) {\r\n\t\t\t\tthis.collection.reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\ndefine( 'controllers/app/undoChanges',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'click:undoChanges', this.undoChanges, this );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'click:undoSingle', this.undoSingle, this );\r\n\t\t},\r\n\r\n\t\tundoChanges: function() {\r\n\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\tchangeCollection.sort();\r\n\t\t\tvar that = this;\r\n\t\t\t_.each( changeCollection.models, function( change ) {\r\n\t\t\t\tthat.undoSingle( change, true );\r\n\t\t\t} );\r\n\t\t\tchangeCollection.reset();\r\n\t\t\t// Update preview.\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:db' );\t\t\t\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:setting', 'clean', true );\r\n\t\t\tnfRadio.channel( 'app' ).request( 'close:drawer' );\r\n this.dispatchClick();\r\n\t\t},\r\n\r\n\t\tundoSingle: function( change, undoAll ) {\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'undo:' + change.get( 'action' ), change, undoAll );\r\n this.dispatchClick();\r\n\t\t},\r\n \r\n dispatchClick: function() {\r\n // If we already have a cookie, exit.\r\n if ( document.cookie.includes( 'nf_undo' ) ) return;\r\n // Otherwise, prepare our cookie.\r\n var cname = \"nf_undo\";\r\n var d = new Date();\r\n // Set expiration at 1 week.\r\n d.setTime( d.getTime() + ( 7*24*60*60*1000 ) );\r\n var expires = \"expires=\"+ d.toUTCString();\r\n // Bake the cookie.\r\n document.cookie = cname + \"=1;\" + expires + \";path=/\";\r\n var data = {\r\n action: 'nf_undo_click',\r\n security: nfAdmin.ajaxNonce\r\n }\r\n // Make our AJAX call.\r\n jQuery.post( ajaxurl, data );\r\n }\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Listens for our update:db response and replaces tmp ids with new ids if we were performing the publish action.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/publishResponse',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen to our app channel for the updateDB response.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'response:updateDB', this.publishResponse );\r\n\t\t},\r\n\r\n\t\tpublishResponse: function( response ) {\r\n\t\t\t// If we aren't performing a publish action, bail.\r\n\t\t\tif ( 'publish' !== response.action ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// Check to see if we have any new ids. \r\n\t\t\tif ( 'undefined' != typeof response.data.new_ids ) {\r\n\r\n\t\t\t\t// If we have any new fields, update their models with the new id.\r\n\t\t\t\tif ( 'undefined' != typeof response.data.new_ids.fields ) {\r\n\t\t\t\t\t_.each( response.data.new_ids.fields, function( newID, oldID ) {\r\n\t\t\t\t\t\tvar field = nfRadio.channel( 'fields' ).request( 'get:field', oldID );\r\n\t\t\t\t\t\tif ( field ) {\r\n\t\t\t\t\t\t\tfield.set( 'id', newID );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfield = nfRadio.channel( 'fields-repeater' ).request( 'get:childField', oldID, null, newID );\r\n\t\t\t\t\t\t\tfield.set( 'id', newID );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If we have any new actions, update their models with the new id.\r\n\t\t\t\tif ( 'undefined' != typeof response.data.new_ids.actions ) {\r\n\t\t\t\t\t_.each( response.data.new_ids.actions, function( newID, oldID ) {\r\n\t\t\t\t\t\tvar action = nfRadio.channel( 'actions' ).request( 'get:action', oldID );\r\n\t\t\t\t\t\tif ( action ) {\r\n\t\t\t\t\t\t\taction.set( 'id', newID );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If we have a new form id, update the model with the new id.\r\n\t\t\t\tif ( 'undefined' != typeof response.data.new_ids.forms ) {\r\n\t\t\t\t\t_.each( response.data.new_ids.forms, function( newID, oldID ) {\r\n\t\t\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\t\t\t\t\t\tformModel.set( 'id', newID );\r\n\t\t\t\t\t\thistory.replaceState( '', '', 'admin.php?page=ninja-forms&form_id=' + newID );\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:setting', 'loading', false );\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'change:loading' );\r\n\r\n\t\t\t// If we're on mobile, show a notice that we're publishing\r\n\t\t\tif ( nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\tnfRadio.channel( 'notices' ).request( 'close', 'publishing' );\r\n\t\t\t}\r\n\t\t\t// Add a notice that we've published.\r\n//\t\t\tnfRadio.channel( 'notices' ).request( 'add', 'published', 'Changes Published' );\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'app:published', response );\r\n\r\n\t\t\t// Mark our app as clean. This will disable the publish button and fire anything else that cares about the state.\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:setting', 'clean', true );\r\n\t\t}\r\n\t\t\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Listens to our app channel for requests to change the current domain.\r\n *\r\n * The app menu and the main submenu both contain clickable links that change the current domain.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/changeDomain',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for both menu and submenu clicks.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:menu', this.changeAppDomain );\r\n\t\t\t// Reply to specific requests to change the domain\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'change:currentDomain', this.changeAppDomain, this );\r\n\r\n\t\t\t// Reply to requests to prevent our drawer from closing\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'prevent:changeDomain', this.preventChange, this );\r\n\t\t\t// Reply to requests to enable drawer closing\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'enable:changeDomain', this.enableChange, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Object that holds our array of 'prevent change' values.\r\n\t\t\t * We use an array so that registered requests can unregister and not affect each other.\r\n\t\t\t */\r\n\t\t\tthis.objPreventChange = {};\r\n\t\t},\r\n\r\n\t\tchangeAppDomain: function( e, model ) {\r\n\t\t\t/*\r\n\t\t\t * If we have disabled movement between domains, return false.\r\n\t\t\t */\r\n\t\t\tif ( this.maybePreventChange() ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t/*\r\n\t\t\t * If we are passed a model, use that model.\r\n\t\t\t * Otherwise, get the domain from the event target data.\r\n\t\t\t */ \r\n\t\t\tif ( 'undefined' == typeof model ) {\r\n\t\t\t\tvar domainID = jQuery( e.target ).data( 'domain' );\r\n\t\t\t\tvar model = nfRadio.channel( 'app' ).request( 'get:domainModel', domainID );\r\n\t\t\t}\r\n\t\t\t// If a drawer is open, close it.\r\n\t\t\tif ( nfRadio.channel( 'app' ).request( 'get:currentDrawer' ) ) {\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'close:drawer' );\r\n\t\t\t}\r\n\t\t\t/*\r\n\t\t\t * If we aren't dealing with an external url (such as preview), update our app data\r\n\t\t\t * and trigger a radio message saying we've changed the domain.\r\n\t\t\t */ \r\n\t\t\tif ( 0 == model.get( 'url' ).length ) {\r\n\t\t\t\tvar mainEl = nfRadio.channel( 'app' ).request( 'get:mainEl' );\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'update:currentDomain', model );\r\n\t\t\t\tjQuery( mainEl ).scrollTop( 0 );\t\t\t\t\r\n\t\t\t\tnfRadio.channel( 'app' ).trigger( 'change:currentDomain', model );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n * Check to see if anything has registered a key to prevent changing the domain.\r\n * \r\n * @since 3.0\r\n * @return boolean\r\n */\r\n maybePreventChange: function() {\r\n \tif ( 0 == Object.keys( this.objPreventChange ).length ) {\r\n \t\treturn false;\r\n \t} else {\r\n \t\treturn true;\r\n \t}\r\n },\r\n\r\n /**\r\n * Register a key to prevent changing the domain.\r\n * \r\n * @since 3.0\r\n * @param string \tkey unique id for our 'prevent change domain' setting.\r\n * @return void\r\n */\r\n preventChange: function( key ) {\r\n \tthis.objPreventChange[ key ] = true;\r\n },\r\n\r\n /**\r\n * Remove a previously registered key that is preventing our domain from changing.\r\n * \r\n * @since 3.0\r\n * @param string \tkey unique id for our 'prevent change domain' setting.\r\n * @return void\r\n */\r\n enableChange: function( key ) {\r\n \tdelete this.objPreventChange[ key ];\r\n },\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Modify the user's browser history when they click on a domain\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/pushstate',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:currentDomain', this.changePushState );\r\n\t\t},\r\n\r\n\t\tchangePushState: function() {\r\n\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\thistory.pushState( null, null, window.location.href + '&domain=' + currentDomain.get( 'id' ) );\r\n\t\t\tvar reExp = /domain=\\\\d+/;\r\n\t\t\tvar url = window.location.toString();\r\n\t\t\tvar newUrl = url.replace( reExp, '' );\r\n\t\t\tconsole.log( newUrl );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles our hotkey execution. Needs to be cleaned up and made more programmatic.\r\n * \r\n * Our hotkeys are defined by the domain that we're currently viewing. In each domain's model, there is a hotkey object.\r\n * \r\n * Currently too much hotkey data is hard-coded here.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/hotkeys',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// When we change our domain, change the hotkeys to those within that object.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'main' ), 'render:main', this.changeHotkeys );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'opened', this.changeHotkeys );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'render:settingGroup', this.changeHotkeys );\r\n\t\t\t// Currently, these are the functions that run when the new field or new action hotkey is pressed.\r\n\t\t\t// TODO: move these into a config module or into something more programmatic and scalable.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'add:newField', this.addNewField );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'add:newAction', this.addNewAction );\r\n\t\t\t// Same as above, these functions need to be moved into a more modular/programmatic solution.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'changeDomain:fields', this.changeDomainFields );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'changeDomain:actions', this.changeDomainActions );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'changeDomain:settings', this.changeDomainSettings );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'close:drawer', this.closeDrawer );\r\n\t\t},\r\n\r\n\t\tchangeHotkeys: function() {\r\n\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\tjQuery( document ).off( '.nfDomainHotkeys' );\r\n\t\t\tjQuery( 'input' ).off( '.nfDomainHotkeys' );\r\n\t\t\tif ( currentDomain.get( 'hotkeys' ) ) {\r\n\t\t\t\tjQuery.each( currentDomain.get( 'hotkeys' ), function( hotkey, msg ) {\r\n\t\t\t\t\tjQuery( document ).on( 'keydown.nfDomainHotkeys', null, hotkey, function( e ) {\r\n\t\t\t\t\t\tnfRadio.channel( 'hotkeys' ).trigger( msg, e );\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery( 'input' ).on( 'keydown.nfDomainHotkeys', null, hotkey, function( e ) {\r\n\t\t\t\t\t\tnfRadio.channel( 'hotkeys' ).trigger( msg, e );\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tjQuery( 'textarea' ).on( 'keydown.nfDomainHotkeys', null, hotkey, function( e ) {\r\n\t\t\t\t\t\tnfRadio.channel( 'hotkeys' ).trigger( msg, e );\r\n\t\t\t\t\t} );\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\taddNewField: function() {\r\n\t\t\tif ( 'addField' != nfRadio.channel( 'app' ).request( 'get:currentDrawer' ) ) {\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'open:drawer', 'addField' );\r\n\t\t\t} else {\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'close:drawer' );\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\r\n\t\taddNewAction: function() {\r\n\t\t\tif ( 'addAction' != nfRadio.channel( 'app' ).request( 'get:currentDrawer' ) ) {\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'open:drawer', 'addAction' );\r\n\t\t\t} else {\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'close:drawer' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tchangeDomainFields: function() {\r\n\t\t\tvar appDomainCollection = nfRadio.channel( 'app' ).request( 'get:domainCollection' );\r\n\t\t\tvar fieldsDomain = appDomainCollection.get( 'fields' );\r\n\t\t\tnfRadio.channel( 'app' ).request( 'change:currentDomain', {}, fieldsDomain );\r\n\t\t},\r\n\r\n\t\tchangeDomainActions: function() {\r\n\t\t\tvar appDomainCollection = nfRadio.channel( 'app' ).request( 'get:domainCollection' );\r\n\t\t\tvar actionsDomain = appDomainCollection.get( 'actions' );\r\n\t\t\tnfRadio.channel( 'app' ).request( 'change:currentDomain', {}, actionsDomain );\r\n\t\t},\r\n\r\n\t\tchangeDomainSettings: function() {\r\n\t\t\tvar appDomainCollection = nfRadio.channel( 'app' ).request( 'get:domainCollection' );\r\n\t\t\tvar settingsDomain = appDomainCollection.get( 'settings' );\r\n\t\t\tnfRadio.channel( 'app' ).request( 'change:currentDomain', {}, settingsDomain );\r\n\t\t},\r\n\r\n\t\tcloseDrawer: function() {\r\n\t\t\tnfRadio.channel( 'app' ).request( 'close:drawer' );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Change the clean state of our app when settings are changed.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/cleanState',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t/*\r\n\t\t\t * Set an array of field model attributes to ignore.\r\n\t\t\t * This list will be filtered just before we ignore anything.\r\n\t\t\t */ \r\n\t\t\tthis.ignoreAttributes = [\r\n\t\t\t\t'editActive'\r\n\t\t\t];\r\n\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'update:setting', this.setAppClean );\r\n\t\t},\r\n\r\n\t\tsetAppClean: function( model ) {\r\n\t\t\tfor( var attr in model.changedAttributes() ) {\r\n\t\t\t\tvar changedAttr = attr;\r\n\t\t\t\tvar after = model.changedAttributes()[ attr ];\r\n\t\t\t}\r\n\r\n\t\t\tvar ignoreAttributes = nfRadio.channel( 'undo-' + model.get( 'type' ) ).request( 'ignore:attributes', this.ignoreAttributes ) || this.ignoreAttributes;\r\n\t\t\t\r\n\t\t\tif ( -1 != this.ignoreAttributes.indexOf( attr ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:setting', 'clean', false );\r\n\r\n\t\t\t//loop through repeater fields to reset active state if needed\r\n\t\t\tnfRadio.channel( 'fields-repeater' ).trigger( 'clearEditActive', model );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * All of the core undo functions. Listens on the 'changes' channel for an undo request.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/coreUndo',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'undo:changeSetting', this.undoChangeSetting, this );\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'undo:addObject', this.undoAddObject, this );\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'undo:removeObject', this.undoRemoveObject, this );\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'undo:duplicateObject', this.undoDuplicateObject, this );\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'undo:sortFields', this.undoSortFields, this );\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'undo:addListOption', this.undoAddListOption, this );\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'undo:removeListOption', this.undoRemoveListOption, this );\r\n\t\t\tnfRadio.channel( 'changes' ).reply( 'undo:sortListOptions', this.undoSortListOptions, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Undo settings that have been changed.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \tchange \tmodel of our change\r\n\t\t * @param boolean \t\t\tundoAll are we in the middle of an undo all action?\r\n\t\t * @return void\r\n\t\t */\r\n\t\tundoChangeSetting: function( change, undoAll ) {\r\n\t\t\tvar fieldModel = change.get( 'model' );\r\n\t\t\tvar changes = change.get( 'changes' );\r\n\t\t\tvar attr = changes.attr;\r\n\t\t\tvar before = changes.before;\r\n\t\t\tfieldModel.set( attr, before );\r\n\t\t\tthis.maybeRemoveChange( change, undoAll );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Undo adding a field or an action.\r\n\t\t * Loops through our change collection and removes any change models based upon the one we're removing.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \tchange \tmodel of our change\r\n\t\t * @param boolean \t\t\tundoAll are we in the middle of an undo all action?\r\n\t\t * @return void\r\n\t\t */\r\n\t\tundoAddObject: function( change, undoAll ) {\r\n\t\t\tvar objectModel = change.get( 'model' );\r\n\t\t\tvar collection = change.get( 'data' ).collection;\r\n\r\n\t\t\tif ( 'undefined' != typeof collection.newIDs ) {\r\n\t\t\t\tdelete collection.newIDs[ objectModel.get( 'id' ) ];\r\n\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\tif ( ! undoAll ) {\r\n\t\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\t\tvar results = changeCollection.where( { model: objectModel } );\r\n\r\n\t\t\t\t_.each( results, function( model ) {\r\n\t\t\t\t\tif ( model !== change ) {\r\n\t\t\t\t\t\tchangeCollection.remove( model );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcollection.remove( objectModel );\r\n\t\t\tthis.maybeRemoveChange( change, undoAll );\r\n\t\t},\t\t\r\n\r\n\t\t/**\r\n\t\t * Undo adding a field or an action.\r\n\t\t * Loops through our change collection and removes any change models based upon the one we're removing.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \tchange \tmodel of our change\r\n\t\t * @param boolean \t\t\tundoAll are we in the middle of an undo all action?\r\n\t\t * @return void\r\n\t\t */\r\n\t\tundoDuplicateObject: function( change, undoAll ) {\r\n\t\t\tvar objectModel = change.get( 'model' );\r\n\t\t\tvar objectCollection = change.get( 'data' ).collection;\r\n\r\n\t\t\tif ( ! undoAll ) {\r\n\t\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\t\tvar results = changeCollection.where( { model: objectModel } );\r\n\r\n\t\t\t\t_.each( results, function( model ) {\r\n\t\t\t\t\tif ( model !== change ) {\r\n\t\t\t\t\t\tchangeCollection.remove( model );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\r\n\t\t\tobjectCollection.remove( objectModel );\r\n\t\t\tthis.maybeRemoveChange( change, undoAll );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Undo removing a field or an action.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \tchange \tmodel of our change\r\n\t\t * @param boolean \t\t\tundoAll are we in the middle of an undo all action?\r\n\t\t * @return void\r\n\t\t */\r\n\t\tundoRemoveObject: function( change, undoAll ) {\r\n\t\t\tvar dataModel = change.get( 'model' );\r\n\t\t\tvar collection = change.get( 'data' ).collection;\r\n\r\n\t\t\tnfRadio.channel( dataModel.get( 'objectDomain' ) ).request( 'add', dataModel );\r\n\r\n\t\t\tdelete collection.removedIDs[ dataModel.get( 'id' ) ];\r\n\t\t\t\r\n\t\t\tif ( ! undoAll ) {\r\n\t\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\t\tvar results = changeCollection.where( { model: dataModel } );\r\n\r\n\t\t\t\t_.each( results, function( model ) {\r\n\t\t\t\t\tif ( model !== change ) {\r\n\t\t\t\t\t\tmodel.set( 'disabled', false );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\t// Trigger a reset on our field collection so that our view re-renders\r\n\t\t\tcollection.trigger( 'reset', collection );\r\n\r\n\t\t\tthis.maybeRemoveChange( change, undoAll );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Undo field sorting.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \tchange \tmodel of our change\r\n\t\t * @param boolean \t\t\tundoAll are we in the middle of an undo all action?\r\n\t\t * @return void\r\n\t\t */\r\n\t\tundoSortFields: function( change, undoAll ) {\r\n\t\t\tvar data = change.get( 'data' );\r\n\t\t\tvar fields = data.fields;\r\n\r\n\t\t\tvar fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\t\t\t_.each( fields, function( changeModel ) {\r\n\t\t\t\tvar before = changeModel.before;\r\n\t\t\t\tvar fieldModel = changeModel.model;\r\n\t\t\t\tfieldModel.set( 'order', before );\r\n\t\t\t\t// console.log( 'set ' + fieldModel.get( 'label' ) + ' to ' + before );\r\n\t\t\t} );\r\n\t\t\t// console.log( fieldCollection.where( { label: 'Name' } ) );\r\n\t\t\t// console.log( fieldCollection.where( { label: 'Email' } ) );\r\n\r\n\r\n\t\t\tfieldCollection.sort();\r\n\t\t\tthis.maybeRemoveChange( change, undoAll );\r\n\t\t},\r\n\r\n\t\tundoAddListOption: function( change, undoAll ) {\r\n\t\t\tvar model = change.get( 'model' );\r\n\r\n\t\t\tif ( ! undoAll ) {\r\n\t\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\t\tvar results = changeCollection.where( { model: model } );\r\n\r\n\t\t\t\t_.each( results, function( changeModel ) {\r\n\t\t\t\t\tif ( changeModel !== change ) {\r\n\t\t\t\t\t\tchangeCollection.remove( changeModel );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tmodel.collection.remove( model );\r\n\t\t\tthis.maybeRemoveChange( change, undoAll );\r\n\t\t},\r\n\r\n\t\tundoRemoveListOption: function( change, undoAll ) {\r\n\t\t\tvar model = change.get( 'model' );\r\n\t\t\tvar collection = change.get( 'data' ).collection;\r\n\t\t\tcollection.add( model );\r\n\r\n\t\t\tif ( ! undoAll ) {\r\n\t\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\t\tvar results = changeCollection.where( { model: model } );\r\n\r\n\t\t\t\t_.each( results, function( model ) {\r\n\t\t\t\t\tif ( model !== change ) {\r\n\t\t\t\t\t\tmodel.set( 'disabled', false );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tthis.maybeRemoveChange( change, undoAll );\r\n\t\t},\r\n\r\n\t\tundoSortListOptions: function( change, undoAll ) {\r\n\t\t\tvar data = change.get( 'data' );\r\n\t\t\tvar collection = data.collection;\r\n\t\t\t\r\n\t\t\tvar objModels = data.objModels;\r\n\r\n\t\t\t_.each( objModels, function( changeModel ) {\r\n\t\t\t\tvar before = changeModel.before;\r\n\t\t\t\tvar optionModel = changeModel.model;\r\n\t\t\t\toptionModel.set( 'order', before );\r\n\t\t\t} );\t\t\t\t\r\n\r\n\r\n\t\t\tcollection.sort();\r\n\t\t\tthis.maybeRemoveChange( change, undoAll );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * If our undo action was requested to 'remove' the change from the collection, remove it.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \tchange \tmodel of our change\r\n\t\t * @param boolean \t\t\tremove \tshould we remove this item from our change collection\r\n\t\t * @return void\r\n\t\t */\r\n\t\tmaybeRemoveChange: function( change, undoAll ) {\t\t\t\r\n\t\t\tvar undoAll = typeof undoAll !== 'undefined' ? undoAll : false;\r\n\t\t\tif ( ! undoAll ) {\r\n\t\t\t\t// Update preview.\r\n\t\t\t\tnfRadio.channel( 'app' ).request( 'update:db' );\r\n\t\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\t\tchangeCollection.remove( change );\r\n\t\t\t\tif ( 0 == changeCollection.length ) {\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'update:setting', 'clean', true );\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'close:drawer' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Returns a clone of a backbone model with all the attributes looped through so that collections contained within are propely cloned.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/cloneModelDeep',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'clone:modelDeep', this.cloneModelDeep, this );\r\n\t\t},\r\n\r\n\t\tcloneModelDeep: function( model ) {\r\n\t\t\t// Temporary value used to store any new collections.\r\n\t\t\tvar replace = {};\r\n\t\t\t// Loop over every model attribute and if we find a collection, clone each model and instantiate a new collection.\r\n\t\t\t_.each( model.attributes, function( val, key ) {\r\n\t\t\t\tif( val instanceof Backbone.Collection ) { // Is this a backbone collection?\r\n\t\t\t\t\tvar clonedCollection = nfRadio.channel( 'app' ).request( 'clone:collectionDeep', val );\r\n\t\t\t\t\treplace[ key ] = clonedCollection;\r\n\t\t\t\t} else if ( val instanceof Backbone.Model ) { // Is this a backbone model?\r\n\t\t\t\t\treplace[ key ] = this.cloneModelDeep( val );\r\n\t\t\t\t}\r\n\t\t\t}, this );\r\n\r\n\t\t\t// Clone our original model\r\n\t\t\tvar newModel = model.clone();\r\n\t\t\t// Overwrite any collections we created above.\r\n\t\t\t_.each( replace, function( val, key ) {\r\n\t\t\t\tnewModel.set( key, val );\r\n\t\t\t} );\r\n\r\n\t\t\treturn newModel;\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Returns the appropriate child view for our settings drawer.\r\n *\r\n * This enables settings types to register custom childviews for their settings.\r\n * The option-repeater setting for the list field is an example.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App - Edit Settings Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/getSettingChildView',['views/app/drawer/itemSetting'], function( itemSettingView ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Respond to requests for field settings child views.\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:settingChildView', this.getSettingChildView, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Return the appropriate child setting view.\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model\tmodel \tField setting\r\n\t\t * @return backbone.view\r\n\t\t */\r\n\t\tgetSettingChildView: function( model ) {\r\n\t\t\t// Get our setting type.\r\n\t\t\tvar type = model.get( 'type' );\r\n\t\t\t// Request a setting childview from our setting type channel. (Setting type, not field type)\r\n\t\t\tvar settingChildView = nfRadio.channel( type ).request( 'get:settingChildView', model ) || itemSettingView;\r\n\t\t\t\r\n\t\t\treturn settingChildView\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Updates our model when the user changes a setting.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/changeSettingDefault',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Respond to requests to update settings.\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'change:setting', this.changeSetting, this );\r\n\r\n\t\t\t// Listen on our app channel for the change setting event. Fired by the setting view.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'change:setting', this.changeSetting, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we change our setting, update the model.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \t\t\te event\r\n\t\t * @param backbone.model \tsettingModel model that holds our field type settings info\r\n\t\t * @param backbone.model \tdataModel model that holds our field settings\r\n\t\t * @return void\r\n\t\t */\r\n\t\tchangeSetting: function( e, settingModel, dataModel, value ) {\r\n\t\t\tvar name = settingModel.get( 'name' );\r\n\t\t\tvar before = dataModel.get( name );\r\n\t\t\tvar value = value || null;\r\n\t\t\tif ( ! value ) {\r\n\t\t\t\t// Sends out a request on the fields-type (fields-text, fields-checkbox, etc) channel to see if that field type needs to return a special value for saving.\r\n\t\t\t\tvalue = nfRadio.channel( settingModel.get( 'type' ) ).request( 'before:updateSetting', e, dataModel, name, settingModel );\r\n\t\t\t}\r\n\r\n\t\t\tif( 'undefined' == typeof value ){\r\n\t\t\t value = jQuery( e.target ).val();\r\n }\r\n\t\t\t\r\n\t\t\t// Update our field model with the new setting value.\r\n\t\t\tdataModel.set( name, value, { settingModel: settingModel } );\r\n\t\t\tnfRadio.channel( 'setting-' + name ).trigger( 'after:updateSetting', dataModel, settingModel );\r\n\t\t\t// Register our setting change with our change tracker\r\n\t\t\tvar after = value;\r\n\t\t\t\r\n\t\t\tvar changes = {\r\n\t\t\t\tattr: name,\r\n\t\t\t\tbefore: before,\r\n\t\t\t\tafter: after\r\n\t\t\t}\r\n\r\n\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\tvar currentDomainID = currentDomain.get( 'id' );\r\n\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: dataModel.get( 'objectType' ),\r\n\t\t\t\tlabel: dataModel.get( 'label' ),\r\n\t\t\t\tchange: 'Changed ' + settingModel.get( 'label' ) + ' from ' + before + ' to ' + after\r\n\t\t\t};\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'changeSetting', dataModel, changes, label );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\ndefine( 'views/app/drawer/typeSettingFieldset',['views/app/drawer/itemSetting'], function( itemSettingView ) {\r\n\tvar view = Marionette.CompositeView.extend( {\r\n\t\ttemplate: '#tmpl-nf-edit-setting-wrap',\r\n\t\tchildView: itemSettingView,\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\tthis.collection = this.model.get( 'settings' );\r\n\t\t\tthis.childViewOptions = { dataModel: data.dataModel };\r\n\t\t\tthis.dataModel = data.dataModel;\r\n\t\t\tvar deps = this.model.get( 'deps' );\r\n\t\t\tif ( deps ) {\r\n\t\t\t\tfor ( var name in deps ) {\r\n\t\t\t\t if ( deps.hasOwnProperty( name ) ) {\r\n\t\t\t\t \tthis.dataModel.on( 'change:' + name, this.render, this );\r\n\t\t\t\t }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.model.on( 'rerender', this.render, this );\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tvar deps = this.model.get( 'deps' );\r\n\t\t\tif ( deps ) {\r\n\t\t\t\tfor (var name in deps) {\r\n\t\t\t\t if ( deps.hasOwnProperty( name ) ) {\r\n\t\t\t\t \tthis.dataModel.off( 'change:' + name, this.render );\r\n\t\t\t\t }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonBeforeRender: function() {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'before:renderSetting', this.model, this.dataModel );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'before:renderSetting', this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'before:renderSetting', this.model, this.dataModel, this );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\t/*\r\n\t\t\t * Send out a radio message.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'render:setting', this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'render:setting', this.model, this.dataModel, this );\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function () {\r\n\t\t\tvar that = this;\r\n\t \treturn {\r\n\t \t\trenderVisible: function() {\r\n\r\n\t\t\t\t\tif(!nfAdmin.devMode){\r\n\t\t\t\t\t\tif('help' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('classes' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\tif('input_limit_set' == this.name) return 'style=\"display:none;\"';\r\n\r\n\t\t\t\t\t\tif('checkbox' == that.dataModel.get('type')){\r\n\t\t\t\t\t\t\tif('checkbox_values' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif('date' == that.dataModel.get('type')){\r\n\t\t\t\t\t\t\tif('year_range' == this.name) return 'style=\"display:none;\"';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( this.deps ) {\r\n\t\t\t\t\t\tfor (var name in this.deps) {\r\n\t\t\t\t\t\t if ( this.deps.hasOwnProperty( name ) ) {\r\n\t\t\t\t\t\t if ( that.dataModel.get( name ) !== this.deps[ name ] ) {\r\n\t\t\t\t\t\t \treturn 'style=\"display:none;\"';\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t \t\t\treturn '';\r\n\t \t\t},\r\n\t \t\trenderSetting: function(){\r\n\t \t\t\tvar setting = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-edit-setting-' + this.type );\r\n\t\t\t\t\treturn setting( this );\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\trenderClasses: function() {\r\n\t\t\t\t\tvar classes = '';\r\n\t\t\t\t\tif ( 'undefined' != typeof this.width ) {\r\n\t\t\t\t\t\tclasses += this.width;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclasses += ' one-half';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( this.error ) {\r\n\t\t\t\t\t\tclasses += ' nf-error';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn classes;\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderError: function() {\r\n\t\t\t\t\tif ( this.error ) {\r\n\t\t\t\t\t\treturn this.error;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tattachHtml: function( collectionView, childView ) {\r\n\t\t\tjQuery( collectionView.el ).find( '.nf-field-sub-settings' ).append( childView.el );\r\n\t\t}\r\n\t} );\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Handles actions related to field settings that use a fieldset\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - Edit Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/fieldset',['views/app/drawer/typeSettingFieldset','models/app/settingCollection'], function( fieldsetView, settingCollection ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'fieldset' ).reply( 'get:settingChildView', this.getSettingChildView, this );\r\n\t\t\t// When a list type field is initialized, create an option collection.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'fieldset' ), 'init:settingModel', this.createSettingsCollection );\r\n\t\t},\r\n\r\n\t\tgetSettingChildView: function( model ) {\r\n\t\t\treturn fieldsetView;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Instantiate settings collection when a fieldset type is initialized.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \tmodel \tfield model being initialized\r\n\t\t * @return void\r\n\t\t */\r\n\t\tcreateSettingsCollection: function( model ) {\r\n\t\t\tmodel.set( 'settings', new settingCollection( model.get( 'settings' ) ) );\r\n\t\t},\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles actions related to our toggle field.\r\n * When we change the toggle, the setting value will be 'on' or ''.\r\n * We need to change this to 1 or 0.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - Edit Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/toggleSetting',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// We don't want the RTE setting to re-render when the value changes.\r\n\t\t\tnfRadio.channel( 'setting-type-toggle' ).reply( 'renderOnChange', function(){ return false } );\r\n\r\n\t\t\t// Respond to requests for field setting filtering.\r\n\t\t\tnfRadio.channel( 'toggle' ).reply( 'before:updateSetting', this.updateSetting, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Return either 1 or 0, depending upon the toggle position.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \t\t\te event\r\n\t\t * @param backbone.model \tfieldModel field model\r\n\t\t * @param string \t\t\tname setting name\r\n\t\t * @param backbone.model \tsettingTypeModel field type model\r\n\t\t * @return int 1 or 0\r\n\t\t */\r\n\t\tupdateSetting: function( e, fieldModel, name, settingTypeModel ) {\r\n\t\t\tif ( jQuery( e.target ).prop( 'checked' ) ) {\r\n\t\t\t\tvar value = 1;\r\n\t\t\t} else {\r\n\t\t\t\tvar value = 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles actions related to our toggle field.\r\n * When we change the toggle, the setting value will be 'on' or ''.\r\n * We need to change this to 1 or 0.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Fields - Edit Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/buttonToggleSetting',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// We don't want the RTE setting to re-render when the value changes.\r\n\t\t\tnfRadio.channel( 'setting-type-button-toggle' ).reply( 'renderOnChange', function(){ return false; } );\r\n\r\n\t\t\t// Respond to requests for field setting filtering.\r\n\t\t\tnfRadio.channel( 'button-toggle' ).reply( 'before:updateSetting', this.updateSetting, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Return either 1 or 0, depending upon the toggle position.\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @param Object \t\t\te event\r\n\t\t * @param backbone.model \tfieldModel field model\r\n\t\t * @param string \t\t\tname setting name\r\n\t\t * @param backbone.model \tsettingTypeModel field type model\r\n\t\t * @return int 1 or 0\r\n\t\t */\r\n\t\tupdateSetting: function( e, fieldModel, name, settingTypeModel ) {\r\n\t\t\treturn e.target.value;\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles actions related to number field settings.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Fields - Edit Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/numberSetting',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Respond to requests for field setting filtering.\r\n\t\t\tnfRadio.channel( 'number' ).reply( 'before:updateSetting', this.updateSetting, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Resets value if user enters value below min value or above max value\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @param Object \t\t\te event\r\n\t\t * @param backbone.model \tfieldModel field model\r\n\t\t * @param string \t\t\tname setting name\r\n\t\t * @param backbone.model \tsettingTypeModel field type model\r\n\t\t * @return int 1 or 0\r\n\t\t */\r\n\t\tupdateSetting: function( e, fieldModel, name, settingTypeModel ) {\r\n\t\t\tvar minVal = settingTypeModel.get( 'min_val' );\r\n\t\t\tvar maxVal = settingTypeModel.get( 'max_val' );\r\n\r\n\t\t\t/*\r\n\t\t\t * if we gave a min value set, revert to that if the user enters\r\n\t\t\t * a lower number\r\n\t\t\t*/\r\n\t\t\tif( 'undefined' != typeof minVal && null !== minVal ){\r\n\t\t\t\tif ( e.target.value < minVal ) {\r\n\t\t\t\t\tfieldModel.set('value', minVal);\r\n\t\t\t\t\te.target.value = minVal;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t/*\r\n\t\t\t * if we gave a max value set, revert to that if the user enters\r\n\t\t\t * a higher number\r\n\t\t\t*/\r\n\t\t\tif( 'undefined' != typeof maxVal && null !== maxVal ){\r\n\t\t\t\tif ( e.target.value > maxVal ) {\r\n\t\t\t\t\tfieldModel.set('value', maxVal);\r\n\t\t\t\t\te.target.value = maxVal;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn e.target.value;\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n\r\ndefine( 'controllers/app/radioSetting',[], function() {\r\n var controller = Marionette.Object.extend({\r\n initialize: function () {\r\n // Respond to requests for field setting filtering.\r\n\r\n console.log( nfRadio.channel( 'radio' ) );\r\n nfRadio.channel('radio').reply( 'before:updateSetting', this.updateSetting, this);\r\n },\r\n\r\n\r\n updateSetting: function( e, fieldModel, name, settingTypeModel ) {\r\n console.log( 'test' );\r\n }\r\n });\r\n return controller;\r\n} );\n/**\r\n * Listens for clicks on our action item action buttons.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - Main Sortable\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/itemControls',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\r\n\t\tdeleting: false, // block edit functionality while deleting field\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for clicks to edit, delete, duplicate actions.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:edit', this.clickEdit );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:delete', this.maybeDelete );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:duplicate', this.clickDuplicate );\r\n\r\n\t\t\t// Listen for our drawer close and remove our active edit state\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Open a drawer with our action model for editing settings.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t\t\te \tevent\r\n\t\t * @param backbone.model \tmodel \taction model\r\n\t\t * @return void\r\n\t\t */\r\n\t\tclickEdit: function( e, model ) {\r\n\t\t\t// if we are deleting a field, we don't want to the edit drawer to open\r\n\t\t\tif( ! this.deleting ) {\r\n\t\t\t\tvar currentDomain = nfRadio.channel('app').request('get:currentDomain');\r\n\t\t\t\tvar currentDomainID = currentDomain.get('id');\r\n\t\t\t\tvar type = nfRadio.channel(currentDomainID).request('get:type', model.get('type'));\r\n\t\t\t\tnfRadio.channel('app').request('open:drawer', 'editSettings', {\r\n\t\t\t\t\tmodel: model,\r\n\t\t\t\t\tgroupCollection: type.get('settingGroups')\r\n\t\t\t\t});\r\n\t\t\t\t//loop through repeater fields to reset active state if needed\r\n\t\t\t\tnfRadio.channel( 'fields-repeater' ).trigger( 'clearEditActive', model );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Let user know that all data will be lost before actually deleting\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @param Object\t\t\te \tevent\r\n\t\t * @param backbone.model \tmodel \taction model\r\n\t\t * @return void\r\n\t\t */\r\n\t\tmaybeDelete: function( e, dataModel ) {\r\n\t\t\t// we set deleting to true, so the edit event doesn't open drawer\r\n\t\t\tthis.deleting = true;\r\n\t\t\tvar modelID = dataModel.get( 'id' );\r\n\t\t\tvar modelType = dataModel.get( 'objectType' );\r\n\r\n\t\t\t// Build a lookup table for fields that we don't save\r\n\t\t\tvar nonSaveFields = [ 'html', 'submit', 'hr',\r\n\t\t\t\t'recaptcha', 'spam', 'creditcard', 'creditcardcvc',\r\n\t\t\t\t'creditcardexpiration', 'creditcardfullname',\r\n\t\t\t\t'creditcardnumber', 'creditcardzip' ];\r\n\r\n\t\t\t/*\r\n\t\t\t* If this is a new field that hasn't been saved, then we don't\r\n\t\t\t * need to check for data\r\n\t\t\t */\r\n\t\t\tif( 'field' != modelType.toLowerCase() ) {\r\n\t\t\t\tthis.clickDelete( e, dataModel );\r\n\t\t\t} else {\r\n\t\t\t\t/*\r\n\t\t\t\t* If the field has been saved, then we need to check for\r\n\t\t\t\t * submission data for this field\r\n\t\t\t\t */\r\n\t\t\t\tif( 'tmp' === modelID.toString().substring( 0, 3 )\r\n\t\t\t\t\t|| -1 != jQuery.inArray( dataModel.get( 'type' ), nonSaveFields ) ) {\r\n\t\t\t\t\t// not a saved field so proceed as normal\r\n\t\t\t\t\tthis.clickDelete( e, dataModel );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// need the form id\r\n\t\t\t\t\tvar formModel = Backbone.Radio.channel('app').request('get:formModel');\r\n\t\t\t\t\tvar data = {\r\n\t\t\t\t\t\t'action': 'nf_maybe_delete_field',\r\n\t\t\t\t\t\t'security': nfAdmin.ajaxNonce,\r\n\t\t\t\t\t\t'formID': formModel.get('id'),\r\n\t\t\t\t\t\t'fieldKey': dataModel.get('key'),\r\n\t\t\t\t\t\t'fieldID': modelID\r\n\t\t\t\t\t};\r\n\t\t\t\t\tvar that = this;\r\n\r\n\t\t\t\t\t// make call to see if field has submission data\r\n\t\t\t\t\tjQuery.post(ajaxurl, data)\r\n\t\t\t\t\t\t.done(function (response) {\r\n\t\t\t\t\t\t\tvar res = JSON.parse(response);\r\n\r\n\t\t\t\t\t\t\tif (res.data.hasOwnProperty('errors')) {\r\n\t\t\t\t\t\t\t\tvar errors = res.data.errors;\r\n\t\t\t\t\t\t\t\tvar errorMsg = '';\r\n\r\n\t\t\t\t\t\t\t\tif (Array.isArray(errors)) {\r\n\t\t\t\t\t\t\t\t\terrors.forEach(function(error) {\r\n\t\t\t\t\t\t\t\t\t\terrors += error + \"\\n\";\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\terrors = errors;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tconsole.log('Maybe Delete Field Errors: ', errors);\r\n\t\t\t\t\t\t\t\talert(errors);\r\n\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (res.data.field_has_data) {\r\n\t\t\t\t\t\t\t\t// if it does, show warning modal\r\n\t\t\t\t\t\t\t\tthat.doDeleteFieldModal(e, dataModel);\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t// if not, proceed like normal\r\n\t\t\t\t\t\t\t\tthat.clickDelete(e, dataModel);\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Create the field delete warning modal\r\n\t\t *\r\n\t\t * @param e\r\n\t\t * @param dataModel\r\n\t\t */\r\n\t\tdoDeleteFieldModal: function( e, dataModel ) {\r\n\t\t\t// Build warning modal to warn user a losing all data related to field\r\n var that = this;\r\n var modalData = {\r\n width: 400,\r\n closeOnClick: false,\r\n closeOnEsc: true,\r\n content: nfi18n.fieldDataDeleteMsg,\r\n btnPrimary: {\r\n text: nfi18n.delete,\r\n callback: function() {\r\n // close and destory modal.\r\n deleteModal.toggleModal( false );\r\n deleteModal.destroy();\r\n // proceed as normal, data will be deleted in backend on publish\r\n that.clickDelete( e, dataModel );\r\n }\r\n },\r\n btnSecondary: {\r\n text: nfi18n.cancel,\r\n callback: function() {\r\n // close and destory modal\r\n deleteModal.toggleModal( false );\r\n deleteModal.destroy();\r\n // set deleting to false so edit can work as normal\r\n that.deleting = false;\r\n }\r\n }\r\n };\r\n var deleteModal = new NinjaModal( modalData );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Delete a action model from our collection\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t\t\te \tevent\r\n\t\t * @param backbone.model \tmodel \taction model\r\n\t\t * @return void\r\n\t\t */\r\n\t\tclickDelete: function( e, dataModel ) {\r\n\t\t\tvar newModel = nfRadio.channel( 'app' ).request( 'clone:modelDeep', dataModel );\r\n\r\n\t\t\t// Add our action deletion to our change log.\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: dataModel.get( 'objectType' ),\r\n\t\t\t\tlabel: dataModel.get( 'label' ),\r\n\t\t\t\tchange: 'Removed',\r\n\t\t\t\tdashicon: 'dismiss'\r\n\t\t\t};\r\n\r\n\t\t\tvar data = {\r\n\t\t\t\tcollection: dataModel.collection\r\n\t\t\t};\r\n\r\n\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\tvar results = changeCollection.where( { model: dataModel } );\r\n\r\n\t\t\t_.each( results, function( changeModel ) {\r\n\t\t\t\tvar data = changeModel.get( 'data' );\r\n\t\t\t\tif ( 'undefined' != typeof data.fields ) {\r\n\t\t\t\t\t_.each( data.fields, function( field, index ) {\r\n\t\t\t\t\t\tif ( field.model == dataModel ) {\r\n\t\t\t\t\t\t\tdata.fields[ index ].model = newModel;\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t\tchangeModel.set( 'data', data );\r\n\t\t\t\tchangeModel.set( 'model', newModel );\r\n\t\t\t\tchangeModel.set( 'disabled', true );\r\n\t\t\t} );\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'removeObject', newModel, null, label, data );\r\n\t\t\t\r\n\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\tvar currentDomainID = currentDomain.get( 'id' );\r\n\t\t\tnfRadio.channel( currentDomainID ).request( 'delete', dataModel );\r\n\t\t\tthis.deleting = false;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Duplicate a action within our collection, adding the word \"copy\" to the label.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t\t\te \tevent\r\n\t\t * @param backbone.model \tmodel \taction model\r\n\t\t * @return void\r\n\t\t */\r\n\t\tclickDuplicate: function( e, model ) {\r\n\t\t\tvar newModel = nfRadio.channel( 'app' ).request( 'clone:modelDeep', model );\r\n\t\t\tvar currentDomain = nfRadio.channel( 'app' ).request( 'get:currentDomain' );\r\n\t\t\tvar currentDomainID = currentDomain.get( 'id' );\r\n\r\n\t\t\t// Change our label.\r\n\t\t\t// Make sure this update is silent to avoid triggering key change events down the waterfall.\r\n\t\t\tnewModel.set( 'label', newModel.get( 'label' ) + ' Copy', {silent: true} );\r\n\t\t\t// Update our ID to the new tmp id.\r\n\t\t\tvar tmpID = nfRadio.channel( currentDomainID ).request( 'get:tmpID' );\r\n\t\t\tnewModel.set( 'id', tmpID );\r\n\t\t\t// Add new model.\r\n\t\t\t// Params are: model, silent, renderTrigger, action\r\n\t\t\tnfRadio.channel( currentDomainID ).request( 'add', newModel, false, false, 'duplicate' );\r\n\t\t\t\r\n\t\t\t// Add our action addition to our change log.\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: model.get( 'objectType' ),\r\n\t\t\t\tlabel: model.get( 'label' ),\r\n\t\t\t\tchange: 'Duplicated',\r\n\t\t\t\tdashicon: 'admin-page'\r\n\t\t\t};\r\n\r\n\t\t\tvar data = {\r\n\t\t\t\tcollection: nfRadio.channel( currentDomainID ).request( 'get:collection' )\r\n\t\t\t}\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'duplicateObject', newModel, null, label, data );\r\n\t\t\t\r\n\t\t\tmodel.trigger( 'change:label', model );\r\n\r\n\t\t\t// Update preview.\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:db' );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Config file for our merge tags.\r\n *\r\n * this.collection represents all of our registered merge tags.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/mergeTags',[\r\n\t'models/app/mergeTagCollection'\r\n\t], function(\r\n\tmergeTagCollection\r\n\t) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tthis.tagSectionCollection = new mergeTagCollection();\r\n\t\t\tvar that = this;\r\n\t\t\t_.each( mergeTags, function( tagSection ) {\r\n\t\t\t\tif ( tagSection.tags ) {\r\n\t\t\t\t\tvar tags = new mergeTagCollection( tagSection.tags );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar tags = '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthat.tagSectionCollection.add( {\r\n\t\t\t\t\tid: tagSection.id,\r\n\t\t\t\t\tlabel: tagSection.label,\r\n\t\t\t\t\ttags: tags,\r\n\t\t\t\t\tdefault_group: tagSection.default_group\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\r\n\t\t\tvar fieldTags = this.tagSectionCollection.get( 'fields').get( 'tags' );\r\n\r\n\t\t\tvar fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\t\t\t_.each( fieldCollection.models, function( field ) {\r\n\t\t\t\t// TODO: Make this dynamic\r\n\t\t\t\tif ( 'submit' !== field.get( 'type' ) ) {\r\n\t\t\t\t\tfieldTags.add( {\r\n\t\t\t\t\t\tid: field.get( 'id' ),\r\n\t\t\t\t\t\tlabel: field.get( 'label' ),\r\n\t\t\t\t\t\ttag: that.getFieldKeyFormat( field.get( 'key' ) )\r\n\t\t\t\t\t} );\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\tvar calcTags = new mergeTagCollection();\r\n\r\n\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\t\t\tvar calcCollection = formModel.get( 'settings' ).get( 'calculations' );\r\n\t\t\t_.each( calcCollection.models, function( calcModel ) {\r\n\t\t\t\tcalcTags.add( {\r\n\t\t\t\t\tlabel: calcModel.get( 'name' ),\r\n\t\t\t\t\ttag: '{calc:' + calcModel.get( 'name' ) + '}'\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\r\n\t\t\tthis.tagSectionCollection.get( 'calcs' ).set( 'tags', calcTags );\r\n\r\n\t\t\tthis.currentElement = {};\r\n\t\t\tthis.settingModel = {};\r\n\t\t\tthis.open = false;\r\n\r\n\t\t\t// Unhook jBox Merge Tag stuff.\r\n\t\t\t// nfRadio.channel( 'mergeTags' ).reply( 'init', this.initMergeTags, this );\r\n\r\n\t\t\tthis.listenTo( nfRadio.channel( 'mergeTags' ), 'click:mergeTag', this.clickMergeTag );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'fields' ), 'add:field', this.addFieldTags );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'fields' ), 'delete:field', this.deleteFieldTags );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'option-repeater-calculations' ), 'update:option', this.updateCalcTags );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'option-repeater-calculations' ), 'remove:option', this.updateCalcTags );\r\n\r\n\t\t\t\r\n\t\t\tnfRadio.channel( 'mergeTags' ).reply( 'update:currentElement', this.updateCurrentElement, this );\r\n\t\t\tnfRadio.channel( 'mergeTags' ).reply( 'update:currentSetting', this.updateCurrentSetting, this );\r\n\r\n\t\t\t// Listen for requests for our mergeTag collection.\r\n\t\t\tnfRadio.channel( 'mergeTags' ).reply( 'get:collection', this.getCollection, this );\r\n\t\t\tnfRadio.channel( 'mergeTags' ).reply( 'get:mergeTag', this.getSectionModel, this );\r\n\r\n\t\t\t// When a field's ID is changed (ie from a tmpID), update the merge tag.\r\n this.listenTo( nfRadio.channel( 'fieldSetting-id' ), 'update:setting', this.updateID );\r\n\r\n\t\t\t// When we edit a key, check for places that key might be used.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'fieldSetting-key' ), 'update:setting', this.updateKey );\r\n\r\n\t\t\t// Reply to requests to check a data model for a field key when one is updated.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'replace:fieldKey', this.replaceFieldKey );\r\n\r\n\t\t\t// Reply to requests to check a data model for a field key when one is updated.\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:fieldKeyFormat', this.getFieldKeyFormat, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * TODO: Hotkey support for adding tags.\r\n\t\t\t *\r\n\t\t\t\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'open:mergeTags', this.openMergeTags );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'up:mergeTags', this.upMergeTags );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'down:mergeTags', this.downMergeTags );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'hotkeys' ), 'return:mergeTags', this.returnMergeTags );\r\n\t\t\tnfRadio.channel( 'mergeTags' ).reply( 'update:open', this.updateOpen, this );\r\n\t\t\t*/\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Init merge tags within the passed view.\r\n\t\t * @since 3.0\r\n\t\t * @param backbone.view view to be searched for merge tags.\r\n\t\t * @return void\r\n\t\t */\r\n\t\tinitMergeTags: function( view ) {\r\n\t\t\tvar mergeTagsView = nfRadio.channel( 'mergeTags' ).request( 'get:view' );\r\n\t\t\tvar that = this;\r\n\t\t\t/*\r\n\t\t\t * Apply merge tags jQuery plugin.\r\n\t\t\t *\r\n\t\t\t * Prevent jBox from being called multiple times on the same element\r\n\t\t\t */\r\n\t\t\tthis.jBoxes = {};\r\n\t\t\tvar that = this;\r\n\r\n\t\t\tjQuery( view.el ).find( '.merge-tags' ).each(function() {\r\n\t\t\t\tif ( 'undefined' == typeof jQuery( this ).data( 'jBox-id' ) ) {\r\n\t\t\t\t\tvar jBox = jQuery( this ).jBox( 'Tooltip', {\r\n\t\t\t\t\t\ttitle: 'Insert Merge Tag',\r\n\t\t\t\t\t\ttrigger: 'click',\r\n\t\t\t\t\t\tposition: {\r\n\t\t\t\t\t\t\tx: 'center',\r\n\t\t\t\t\t\t\ty: 'bottom'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tcloseOnClick: 'body',\r\n\t\t\t\t\t\tcloseOnEsc: true,\r\n\t\t\t\t\t\ttheme: 'TooltipBorder',\r\n\t\t\t\t\t\tmaxHeight: 200,\r\n\r\n\t\t\t\t\t\tonOpen: function() {\r\n\t\t\t\t\t\t\tmergeTagsView.reRender( view.model );\r\n\t\t\t\t\t\t\tthis.setContent( jQuery( '.merge-tags-content' ) );\r\n\t\t\t\t\t\t\tvar currentElement = jQuery( this.target ).prev( '.setting' );\r\n\t\t\t\t\t\t\tif ( 0 == currentElement.length ) {\r\n\t\t\t\t\t\t\t\tcurrentElement = jQuery( view.el ).find( '.setting' );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tthat.updateCurrentSetting( view.model );\r\n\t\t\t\t\t\t\tthat.updateCurrentElement( currentElement );\r\n\t\t\t\t\t\t\t// nfRadio.channel( 'drawer' ).request( 'prevent:close', 'merge-tags' );\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tonClose: function() {\r\n\t\t\t\t\t\t\t// nfRadio.channel( 'drawer' ).request( 'enable:close', 'merge-tags' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tjQuery( this ).data( 'jBox-id', jBox.id );\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t });\r\n\t\t},\r\n\r\n\t\tclickMergeTag: function( e, tagModel ) {\r\n\t\t\t/*\r\n\t\t\t * TODO: Make this more dynamic.\r\n\t\t\t * Currently, the RTE is the only section that modifies how merge tags work,\r\n\t\t\t * but another type of setting might need to do this in the future.\r\n\t\t\t */\r\n\r\n\t\t\tif( 'undefined' != typeof this.settingModel.get( 'settingModel' ) && 'calculations' == this.settingModel.get( 'settingModel' ).get( 'name' ) ) {\r\n\r\n\t\t\t\tconsole.log( tagModel );\r\n\r\n\t\t\t\tvar currentValue = jQuery( this.currentElement ).val();\r\n\t\t\t\tvar currentPos = jQuery( this.currentElement ).caret();\r\n\t\t\t\tvar newPos = currentPos + tagModel.get( 'tag' ).length;\r\n\r\n\t\t\t\tvar tag = ( 'undefined' != typeof tagModel.get( 'calcTag' ) ) ? tagModel.get( 'calcTag' ) : tagModel.get( 'tag' );\r\n\r\n\t\t\t\tcurrentValue = currentValue.substr( 0, currentPos ) + tag + currentValue.substr( currentPos );\r\n\t\t\t\tjQuery( this.currentElement ).val( currentValue ).caret( newPos ).trigger( 'change' );\r\n\t\t\t} else if( 'rte' == this.settingModel.get( 'type' ) ) {\r\n\t\t\t\tjQuery( this.currentElement ).summernote( 'insertText', tagModel.get( 'tag' ) );\r\n\t\t\t} else {\r\n\t\t\t\tvar currentValue = jQuery( this.currentElement ).val();\r\n\t\t\t\tvar currentPos = jQuery( this.currentElement ).caret();\r\n\t\t\t\tvar newPos = currentPos + tagModel.get( 'tag' ).length;\r\n\t\t\t\tcurrentValue = currentValue.substr( 0, currentPos ) + tagModel.get( 'tag' ) + currentValue.substr( currentPos );\r\n\t\t\t\tjQuery( this.currentElement ).val( currentValue ).caret( newPos ).trigger( 'change' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\taddFieldTags: function( fieldModel ) {\r\n\t\t\t// TODO: Make this dynamic\r\n\t\t\tif ( 'submit' !== fieldModel.get( 'type' ) ) {\r\n\t\t\t\tthis.tagSectionCollection.get( 'fields' ).get( 'tags' ).add( {\r\n\t\t\t\t\tid: fieldModel.get( 'id' ),\r\n\t\t\t\t\tlabel: fieldModel.get( 'label' ),\r\n\t\t\t\t\ttag: this.getFieldKeyFormat( fieldModel.get( 'key' ) ),\r\n\t\t\t\t\tcalcTag: this.getFieldKeyFormatCalc( fieldModel.get( 'key' ) )\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdeleteFieldTags: function( fieldModel ) {\r\n\t\t\tvar fieldID = fieldModel.get( 'id' );\r\n\t\t\tvar tagModel = this.tagSectionCollection.get( 'fields' ).get( 'tags' ).get( fieldID );\r\n\t\t\tthis.tagSectionCollection.get( 'fields' ).get( 'tags' ).remove( tagModel );\r\n\t\t},\r\n\r\n\t\tupdateCalcTags: function( optionModel ) {\r\n\t\t\tvar calcTags = new mergeTagCollection();\r\n\r\n\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\t\t\tvar calcCollection = formModel.get( 'settings' ).get( 'calculations' );\r\n\r\n\t\t\t_.each( calcCollection.models, function( calc ) {\r\n\t\t\t\tcalcTags.add( {\r\n\t\t\t\t\tlabel: calc.get( 'name' ),\r\n\t\t\t\t\ttag: '{calc:' + calc.get( 'name' ) + '}'\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\r\n\t\t\tthis.tagSectionCollection.get( 'calcs' ).set( 'tags', calcTags );\r\n\t\t},\r\n\r\n\t\topenMergeTags: function( e ) {\r\n\t\t\tif ( 'TEXTAREA' == jQuery( e.target )[0].tagName || 'INPUT' == jQuery( e.target )[0].tagName ) {\r\n\t\t\t\tjQuery( e.target ).parent().find( '.merge-tags' ).click();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\treturnMergeTags: function( e ) {\r\n\t\t\tif ( this.open ) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar currentModel = this.fields.where( { 'active': true } )[0];\r\n\t\t\t\tif ( currentModel ) {\r\n\t\t\t\t\tthis.clickMergeTag( e, currentModel );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tupMergeTags: function( e ) {\r\n\t\t\tif ( this.open ) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.changeActiveTag( 'up' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdownMergeTags: function( e ) {\r\n\t\t\tif ( this.open ) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.changeActiveTag( 'down' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tchangeActiveTag: function( dir ) {\r\n\t\t\tif ( 'down' == dir ) {\r\n\t\t\t\tvar inc = 1;\r\n\t\t\t} else {\r\n\t\t\t\tvar inc = -1\r\n\t\t\t}\r\n\t\t\t// First, check to see if a field is currently active.\r\n\t\t\tif( 0 < this.fields.where( { 'active': true } ).length ) {\r\n\t\t\t\tvar currentModel = this.fields.where( { 'active': true } )[0];\r\n\t\t\t\tvar currentIndex = this.fields.indexOf( currentModel );\r\n\t\t\t\tcurrentModel.set( 'active', false );\r\n\r\n\t\t\t\tvar nextModel = this.fields.models[ currentIndex + inc ];\r\n\t\t\t\tif ( nextModel ) {\r\n\t\t\t\t\tnextModel.set( 'active', true );\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t} else if ( 0 < this.fields.where( { 'active': true } ) ) { // There aren't any active fields. Check for active system tags.\r\n\t\t\t\tconsole.log( 'system' );\r\n\t\t\t} else if ( 0 < this.userInfo.where( { 'active': true } ) ) { // No active user info LIs.\r\n\t\t\t\tconsole.log( 'userinfo' );\r\n\t\t\t} else { // No active LIs. We haven't made any active yet, or we've gotten to the bottom of the list.\r\n\t\t\t\t// Make sure that we have fields\r\n\t\t\t\tif ( 0 < this.fields.models.length ) {\r\n\t\t\t\t\t// Set our first field to active.\r\n\t\t\t\t\tthis.fields.models[0].set( 'active', true );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Set our first system model to active.\r\n\t\t\t\t\tthis.system.models[0].set( 'active', true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tupdateCurrentElement: function( element ) {\r\n\t\t\tthis.currentElement = element;\r\n\t\t},\r\n\r\n\t\tupdateCurrentSetting: function( settingModel ) {\r\n\t\t\tthis.settingModel = settingModel;\r\n\t\t},\r\n\r\n\t\tgetCollection: function() {\r\n\t\t\treturn this.tagSectionCollection;\r\n\t\t},\r\n\r\n\t\tgetSectionModel: function( id ) {\r\n\t\t\treturn this.tagSectionCollection.get( id );\r\n\t\t},\r\n\r\n\t\tupdateOpen: function( open ) {\r\n\t\t\tthis.open = open;\r\n\t\t\t_.each( this.tagSectionCollection.get( 'fields' ).models, function( model ) {\r\n\t\t\t\tmodel.set( 'active', false );\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\t// When a field is published, update the merge tag with the newly assigned ID (as opposed to the tmpID).\r\n updateID: function( fieldModel ) {\r\n\r\n\t\t\t// Get the formatted merge tag for comparison.\r\n\t\t\tvar targetTag = this.getFieldKeyFormat( fieldModel.get( 'key' ) );\r\n\r\n\t\t\t// Search the field tags for the matching merge tag to be updated.\r\n\t\t\tvar oldTag = this.tagSectionCollection.get( 'fields' ).get( 'tags' ).find( function( fieldMergeTag ){\r\n return targetTag == fieldMergeTag.get( 'tag' );\r\n });\r\n\r\n\t\t\t// If no matching tag is found, return early.\r\n\t\t\tif( 'undefined' == typeof oldTag ) return;\r\n\r\n\t\t\t// Update the merge tag with the \"published\" field ID.\r\n\t\t\toldTag.set( 'id', fieldModel.get( 'id' ) );\r\n\t\t},\r\n\r\n\t\tupdateKey: function( fieldModel ) {\r\n\t\t\tvar newKey = fieldModel.get( 'key' );\r\n\t\t\tvar oldTag = this.tagSectionCollection.get( 'fields' ).get( 'tags' ).get( fieldModel.get( 'id' ) );\r\n\t\t\tif ( 'undefined' != typeof oldTag ) {\r\n\t\t\t\toldTag.set( 'tag', this.getFieldKeyFormat( newKey ) );\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tgetFieldKeyFormat: function( key ) {\r\n\t\t\treturn '{field:' + key + '}';\r\n\t\t},\r\n\r\n\t\tgetFieldKeyFormatCalc: function( key ) {\r\n\t\t\treturn '{field:' + key + ':calc}';\r\n\t\t},\r\n\r\n\t\treplaceFieldKey: function( dataModel, keyModel, settingModel ) {\r\n var oldKey = this.getFieldKeyFormat( keyModel._previousAttributes[ 'key' ] );\r\n\t\t\tvar newKey = this.getFieldKeyFormat( keyModel.get( 'key' ) );\r\n\t\t\tvar settingName = settingModel.get( 'name' );\r\n\t\t\tvar oldVal = dataModel.get( settingName );\r\n if(settingName == 'calculations' && 'undefined' != typeof(dataModel.get('calculations'))) {\r\n var calcModel = dataModel.get( 'calculations' );\r\n calcModel.each( function( model ) {\r\n var oldCalcKey = oldKey.slice( 0, (oldKey.length - 1) ) + ':calc}';\r\n var newCalcKey = newKey.slice( 0, (newKey.length - 1 ) ) + ':calc}';\r\n oldVal = model.get( 'eq' );\r\n if ( 'string' == typeof( oldVal ) ) {\r\n var re = new RegExp( oldCalcKey, 'g' );\r\n var newVal = oldVal.replace( re, newCalcKey );\r\n re = new RegExp( oldKey, 'g' );\r\n // TODO: We won't need this second replace when we no longer\r\n // have to append :calc to merge tags.\r\n newVal = newVal.replace( re, newKey );\r\n model.set( 'eq', newVal );\r\n }\r\n } );\r\n return false;\r\n }\r\n\t\t\tif ( 'string' == typeof oldVal ) {\r\n\t\t\t\tvar re = new RegExp( oldKey, 'g' );\r\n\t\t\t\tnewVal = oldVal.replace( re, newKey );\r\n\t\t\t\tdataModel.set( settingName, newVal );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\r\n\n/**\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/mergeTagLookupCollection',['models/app/mergeTagModel'], function( mergeTagModel ) {\r\n var collection = Backbone.Collection.extend( {\r\n model: mergeTagModel\r\n } );\r\n return collection;\r\n} );\n/**\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/mergeTag',[], function() {\r\n var view = Marionette.ItemView.extend({\r\n tagName: 'li',\r\n template: '#tmpl-nf-merge-tag-box-tag',\r\n\r\n events: {\r\n \"click\": \"insertTag\"\r\n },\r\n\r\n insertTag: function() {\r\n nfRadio.channel( 'mergeTags' ).request( 'insert:tag', this.model.get( 'tag' ) );\r\n }\r\n });\r\n\r\n return view;\r\n} );\n/**\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/mergeTagList',[ 'views/app/drawer/mergeTag' ], function( mergeTagView ) {\r\n var view = Marionette.CollectionView.extend({\r\n tagName: 'ul',\r\n childView: mergeTagView,\r\n calc: false,\r\n\r\n initialize: function() {\r\n nfRadio.channel( 'merge-tags' ).reply( 'update:taglist', this.sectionFilter, this );\r\n nfRadio.channel( 'merge-tags' ).reply( 'filtersearch', this.searchFilter, this );\r\n },\r\n\r\n filter: function( child, index, collection ){\r\n return 'fields' == child.get( 'section' );\r\n },\r\n\r\n sectionFilter: function( section, calc ){\r\n this.filter = function( child, index, collection ){\r\n return section == child.get( 'section' );\r\n }\r\n\r\n if ( calc ) {\r\n this.calc = true;\r\n }\r\n\r\n if ( this.calc ) {\r\n var fieldsToRemove = this.excludeFromCalcs();\r\n\r\n /**\r\n * Filters our merge tags.\r\n * Make sure that we're in the right section, and then check to see if the merge tag is in our remove tracker.\r\n */\r\n this.filter = function( child, index, collection ) {\r\n return section == child.get( 'section' ) && -1 == fieldsToRemove.indexOf( child.get( 'tag' ) );\r\n }\r\n }\r\n\r\n this.render();\r\n nfRadio.channel( 'merge-tags' ).trigger( 'after:filtersearch', section );\r\n },\r\n\r\n searchFilter: function( term ){\r\n if ( this.calc ) {\r\n var fieldsToRemove = this.excludeFromCalcs();\r\n }\r\n\r\n this.filter = function( child, index, collection ){\r\n var label = child.get( 'label' ).toLowerCase().indexOf( term.toLowerCase().replace( ':', '' ) ) >= 0;\r\n var tag = child.get( 'tag' ).toLowerCase().indexOf( term.toLowerCase() ) >= 0;\r\n // If we are in a calculation setting and this tag is in our remove tracker, early return false.\r\n if ( this.calc && -1 != fieldsToRemove.indexOf( child.get( 'tag' ) ) ) {\r\n return false;\r\n }\r\n return label || tag;\r\n }\r\n\r\n this.render();\r\n nfRadio.channel( 'merge-tags' ).trigger( 'after:filtersearch' );\r\n\r\n },\r\n\r\n /**\r\n * TODO: This is a wonky fix for removing Product and Quantity fields from calcuation merge tags.\r\n * Merge tags don't respect the \"exclude\" merge tag settings.\r\n * Ultimately, the fix might include updating merge tags to respect those settings.\r\n */\r\n excludeFromCalcs: function(){\r\n /**\r\n * Remove any unwanted fields if we are in a calculation.\r\n * Get a list of all fields, then filter out unwanted fields.\r\n */\r\n var fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n // Stores the keys of unwanted fields.\r\n var fieldsToRemove = [];\r\n // Declare blacklisted field types.\r\n var blacklist = ['product', 'quantity', 'total', 'shipping', 'date'];\r\n // Remove them from the merge tag selection box.\r\n _.each( fieldCollection.models, function( model ) {\r\n if ( -1 != blacklist.indexOf( model.get('type') ) ) {\r\n fieldsToRemove.push( '{field:' + model.get( 'key' ) + '}' );\r\n }\r\n });\r\n return fieldsToRemove;\r\n }\r\n });\r\n\r\n return view;\r\n} );\n/**\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/mergeTagGroup',[], function() {\r\n var view = Marionette.ItemView.extend({\r\n tagName: 'li',\r\n template: '#tmpl-nf-merge-tag-box-section',\r\n events: {\r\n \"click\": \"onClick\"\r\n },\r\n\r\n initialize: function () {\r\n this.listenTo( nfRadio.channel( 'merge-tags' ), 'after:filtersearch', this.updateActive );\r\n },\r\n\r\n onClick: function(){\r\n this.updateTags();\r\n },\r\n\r\n updateTags: function() {\r\n nfRadio.channel( 'merge-tags' ).request( 'update:taglist', this.model.get( 'id' ) );\r\n },\r\n\r\n updateActive: function( section ) {\r\n this.$el.removeClass( 'active' );\r\n\r\n if ( section == this.model.get( 'id' ) ) {\r\n this.$el.addClass( 'active' );\r\n }\r\n },\r\n\r\n setActive: function(){\r\n this.$el.addClass( 'active' );\r\n this.$el.siblings().removeClass( 'active' );\r\n },\r\n\r\n });\r\n\r\n return view;\r\n} );\n/**\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/mergeTagGroupList',[ 'views/app/drawer/mergeTagGroup' ], function( mergeTagGroupView ) {\r\n var view = Marionette.CollectionView.extend({\r\n tagName: 'ul',\r\n childView: mergeTagGroupView,\r\n\r\n initialize: function(){\r\n this.listenTo( nfRadio.channel( 'merge-tags' ), 'open', this.render, this );\r\n },\r\n\r\n // TODO: Update filter when a new tag is added. ie Calculations.\r\n filter: function( child, index, collection ){\r\n return 0 < child.get( 'tags' ).length;\r\n },\r\n });\r\n\r\n return view;\r\n} );\n/**\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/mergeTagFilter',[], function() {\r\n var view = Marionette.ItemView.extend({\r\n template: '#tmpl-nf-merge-tag-box-filter',\r\n events: {\r\n \"keyup input\": \"updateFilter\",\r\n },\r\n updateFilter: function( event ) {\r\n\r\n if( /* ENTER */ 13 == event.keyCode ){ // Copied from Keyup Callback.\r\n // Get top listed merge tag.\r\n var firstFilteredTag = jQuery( '#merge-tags-box .merge-tag-list ul li span' ).first().data( 'tag' );\r\n\r\n nfRadio.channel( 'mergeTags' ).request( 'insert:tag', firstFilteredTag );\r\n\r\n // COPIED FROM BELOW\r\n jQuery( '#merge-tags-box' ).css( 'display', 'none' );\r\n jQuery( '#merge-tags-box' ).removeClass();\r\n jQuery( '.merge-tag-focus' ).removeClass( 'merge-tag-focus' );\r\n jQuery( '.merge-tag-focus-overlay' ).removeClass( 'merge-tag-focus-overlay' );\r\n return;\r\n }\r\n var value = this.$el.find( 'input' ).val();\r\n nfRadio.channel( 'merge-tags' ).request( 'filtersearch', value );\r\n }\r\n });\r\n\r\n return view;\r\n} );\n/**\r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'views/app/drawer/mergeTagBox',[], function() {\r\n var view = Marionette.LayoutView.extend({\r\n el: '#merge-tags-box',\r\n template: \"#tmpl-nf-merge-tag-box\",\r\n\r\n regions: {\r\n filter: '.merge-tag-filter',\r\n sections: '.merge-tag-sections',\r\n tags: '.merge-tag-list'\r\n },\r\n });\r\n\r\n return view;\r\n} );\n/**\r\n * @package Ninja Forms builder\r\n * @subpackage Merge Tag Box\r\n * @copyright (c) 2017 WP Ninjas\r\n * @since 3.1\r\n */\r\n\r\ndefine( 'controllers/app/mergeTagBox',[\r\n 'models/app/mergeTagModel',\r\n 'models/app/mergeTagLookupCollection',\r\n 'views/app/drawer/mergeTag',\r\n 'views/app/drawer/mergeTagList',\r\n 'views/app/drawer/mergeTagGroup',\r\n 'views/app/drawer/mergeTagGroupList',\r\n 'views/app/drawer/mergeTagFilter',\r\n 'views/app/drawer/mergeTagBox'\r\n], function(\r\n MergeTagModel,\r\n MergeTagLookupCollection,\r\n MergeTagView,\r\n MergeTagListView,\r\n MergeTagGroupView,\r\n MergeTagGroupListView,\r\n MergeTagFilterView,\r\n MergeTagBoxLayout\r\n) {\r\n var controller = Marionette.Object.extend( {\r\n\r\n caret: 0, // Track the caret position of the current setting's input.\r\n old: '', // THe old merge tag that will be replaced.\r\n\r\n initialize: function(){\r\n\r\n this.listenTo( nfRadio.channel( 'drawer' ), 'render:settingGroup', function(){\r\n jQuery( '.merge-tags' ).off( 'click' );\r\n jQuery( '.merge-tags' ).on( 'click', this.mergeTagsButtonClick );\r\n });\r\n\r\n this.listenTo( nfRadio.channel( 'app' ), 'after:appStart', this.afterAppStart );\r\n this.listenTo( nfRadio.channel( 'app' ), 'before:renderSetting', this.beforeRenderSetting );\r\n this.listenTo( nfRadio.channel( 'drawer' ), 'before:close', this.beforeDrawerClose );\r\n\r\n var that = this;\r\n nfRadio.channel( 'mergeTags' ).reply( 'set:caret', function( position ){\r\n that.caret = position;\r\n });\r\n nfRadio.channel( 'mergeTags' ).reply( 'get:caret', function(){\r\n return that.caret;\r\n });\r\n\r\n var that = this;\r\n nfRadio.channel( 'mergeTags' ).reply( 'set:old', function( value ){\r\n that.old = value;\r\n });\r\n nfRadio.channel( 'mergeTags' ).reply( 'get:old', function(){\r\n return that.old;\r\n });\r\n\r\n nfRadio.channel( 'mergeTags' ).reply( 'insert:tag', this.insertTag.bind( this ) );\r\n\r\n /** OPTION REPEATER */\r\n this.listenTo( nfRadio.channel( 'option-repeater' ), 'add:option', function( model ){\r\n var selector = '#' + model.cid + ' .has-merge-tags input.setting';\r\n jQuery( selector ).on( 'focus', function( event ){\r\n that.focusCallback( event, selector, 'option-repeater' );\r\n });\r\n jQuery( selector ).on( 'keyup', function( event ){\r\n that.keyupCallback( event, selector, 'option-repeater' );\r\n });\r\n jQuery( selector ).siblings( '.nf-list-options .merge-tags' ).off( 'click' );\r\n jQuery( selector ).siblings( '.nf-list-options .merge-tags' ).on( 'click', this.mergeTagsButtonClick );\r\n } );\r\n this.listenTo( nfRadio.channel( 'drawer' ), 'opened', function(){\r\n jQuery( '.nf-list-options .merge-tags' ).off( 'click' );\r\n jQuery( '.nf-list-options .merge-tags' ).on( 'click', this.mergeTagsButtonClick );\r\n } );\r\n\r\n /* CALCULATIONS */\r\n this.listenTo( nfRadio.channel( 'setting-calculations-option' ), 'render:setting', this.renderSetting );\r\n // this.listenTo( nfRadio.channel( 'setting-calculations-option' ), 'render:setting', function( settingModel, dataModel, view ){\r\n // view.$el.find( '.merge-tags' ).on( 'click', this.mergeTagsButtonClick );\r\n // } );\r\n this.listenTo( nfRadio.channel( 'drawer' ), 'opened', function(){\r\n jQuery( '.nf-list-options.calculations .merge-tags' ).off( 'click' );\r\n jQuery( '.nf-list-options.calculations .merge-tags' ).on( 'click', this.mergeTagsButtonClick );\r\n } );\r\n\r\n /* SUMMERNOTE */\r\n this.listenTo( nfRadio.channel( 'summernote' ), 'focus', function( e, selector ) {\r\n that.focusCallback( false, selector, 'rte' );\r\n } );\r\n this.listenTo( nfRadio.channel( 'summernote' ), 'keydown', function( e, selector ){\r\n jQuery( selector ).closest( '.nf-setting' ).find( '.setting' ).summernote( 'saveRange' );\r\n } );\r\n this.listenTo( nfRadio.channel( 'summernote' ), 'keyup', function( e, selector ){\r\n that.keyupCallback( e, selector, 'rte' );\r\n } );\r\n\r\n // When an RTE setting is shown, make sure merge tags are hooked up.\r\n this.listenTo( nfRadio.channel( 'setting-type-rte' ), 'render:setting', function(){\r\n jQuery( '.note-editor .merge-tags' ).off( 'click' );\r\n jQuery( '.note-editor .merge-tags' ).on( 'click', this.mergeTagsButtonClick );\r\n } );\r\n\r\n this.listenTo( nfRadio.channel( 'drawer' ), 'opened', function(){\r\n jQuery( '.note-editor .merge-tags' ).off( 'click' );\r\n jQuery( '.note-editor .merge-tags' ).on( 'click', this.mergeTagsButtonClick );\r\n } );\r\n\r\n jQuery( document ).on( 'keyup', function( event ){\r\n if( 27 == event.keyCode ){\r\n nfRadio.channel( 'mergeTags' ).request( 'insert:tag', '' );\r\n // Copied from KeyupCallback.\r\n jQuery( '#merge-tags-box' ).css( 'display', 'none' );\r\n nfRadio.channel( 'drawer' ).request( 'enable:close' );\r\n jQuery( '#merge-tags-box' ).removeClass();\r\n jQuery( '.merge-tag-focus' ).blur();\r\n jQuery( '.merge-tag-focus' ).removeClass( 'merge-tag-focus' );\r\n jQuery( '.merge-tag-focus-overlay' ).removeClass( 'merge-tag-focus-overlay' );\r\n }\r\n });\r\n\r\n /**\r\n * Listen to the Field Changes (add, delete, update) and update the Merge Tags.\r\n */\r\n this.listenTo( Backbone.Radio.channel( 'fields' ), 'add:field', this.afterAppStart );\r\n this.listenTo( Backbone.Radio.channel( 'fields' ), 'delete:field', this.afterAppStart );\r\n this.listenTo( Backbone.Radio.channel( 'fieldSetting-key' ), 'update:setting', this.afterAppStart );\r\n\r\n /** ... and Calc updates. */\r\n this.listenTo( Backbone.Radio.channel( 'calcs' ), 'update:calc', this.afterAppStart );\r\n\r\n this.listenTo( Backbone.Radio.channel( 'app' ), 'change:currentDomain', this.afterAppStart );\r\n },\r\n\r\n afterAppStart: function() {\r\n\r\n var currentDomain = Backbone.Radio.channel( 'app' ).request( 'get:currentDomain' );\r\n\r\n var mergeTagCollection = nfRadio.channel( 'mergeTags' ).request( 'get:collection' );\r\n var mergeTags = [];\r\n mergeTagCollection.each( function( section ){\r\n\r\n section.get( 'tags' ).each( function( tag ){\r\n\r\n if( 'fields' == currentDomain.get( 'id' ) && '{submission:sequence}' == tag.get( 'tag' ) ) return;\r\n\r\n mergeTags.push({\r\n label: tag.get( 'label' ),\r\n tag: tag.get( 'tag' ),\r\n section: section.get( 'id' )\r\n });\r\n });\r\n });\r\n var layout = new MergeTagBoxLayout();\r\n layout.render();\r\n var tagCollection = new MergeTagLookupCollection( mergeTags );\r\n var mergeTagListView = new MergeTagListView({\r\n collection: tagCollection\r\n });\r\n var mergeTagGroupListView = new MergeTagGroupListView({\r\n collection: mergeTagCollection\r\n });\r\n\r\n layout.getRegion('tags').show(mergeTagListView);\r\n layout.getRegion('sections').show(mergeTagGroupListView);\r\n layout.getRegion('filter').show(new MergeTagFilterView);\r\n },\r\n\r\n beforeRenderSetting: function( settingModel, dataModel ){\r\n if( 'undefined' == typeof settingModel.get( 'use_merge_tags' ) ) return;\r\n if( ! settingModel.get( 'use_merge_tags' ) ) return;\r\n var name = settingModel.get( 'name' );\r\n this.listenTo( nfRadio.channel( 'setting-' + name ), 'render:setting', this.renderSetting );\r\n },\r\n\r\n renderSetting: function( settingModel, dataModel, view ){\r\n\r\n view.$el.find( '.merge-tags' ).off( 'click' );\r\n view.$el.find( '.merge-tags' ).on( 'click', this.mergeTagsButtonClick );\r\n\r\n if( 0 == jQuery( '#merge-tags-box' ).length ) this.afterAppStart();\r\n\r\n // Track Scrolling.\r\n jQuery( '#nf-drawer' ).on( 'scroll', function(){\r\n // COPIED AND MODIFIED FROM FOCUS\r\n if( 0 == jQuery( '.merge-tag-focus' ).length ) return;\r\n\r\n var rteEditor = jQuery( '.merge-tag-focus' ).closest( '.nf-setting' ).find( '.note-editor' );\r\n if( 0 != rteEditor.length ){\r\n var posY = rteEditor.offset().top - jQuery(window).scrollTop();\r\n var height = rteEditor.outerHeight();\r\n } else {\r\n var posY = jQuery('.merge-tag-focus').offset().top - jQuery(window).scrollTop();\r\n var height = jQuery('.merge-tag-focus').outerHeight();\r\n }\r\n\r\n\t // Find out if merge tag box will go below bottom of the page.\r\n\t var tagBoxY = posY + height;\r\n\t var windowHeight = window.innerHeight;\r\n\t var tagBoxHeight = jQuery( '#merge-tags-box' ).outerHeight();\r\n\r\n\t // If merge tag box will render below the bottom of the page,\r\n\t // change it to render above the field\r\n\r\n\t if ( ( tagBoxY + tagBoxHeight ) > windowHeight ) {\r\n tagBoxY = posY - tagBoxHeight;\r\n }\r\n\r\n if ( 0 > tagBoxY ) {\r\n tagBoxY = posY;\r\n }\r\n\r\n jQuery( '#merge-tags-box' ).css( 'top', tagBoxY );\r\n\r\n var boxHeight = jQuery( '#merge-tags-box' ).outerHeight();\r\n jQuery( '#nf-drawer' ).css( 'padding-bottom', boxHeight + 'px' );\r\n\r\n var repeaterRow = jQuery( '.merge-tag-focus' ).closest( '.nf-list-options-tbody' );\r\n if( 0 != repeaterRow.length ){\r\n var left = repeaterRow.offset().left - jQuery(window).scrollLeft();\r\n jQuery( '#merge-tags-box' ).css( 'left', left );\r\n } else {\r\n var posX = jQuery( '.merge-tag-focus' ).closest( '.nf-settings' ).offset().left - jQuery(window).scrollLeft();\r\n jQuery( '#merge-tags-box' ).css( 'left', posX );\r\n jQuery( '#merge-tags-box' ).css( 'width', jQuery( '.merge-tag-focus' ).closest( '.nf-settings' ).width() );\r\n }\r\n });\r\n\r\n // On input focus, move the Merge Tag Box into position.\r\n jQuery( view.el ).find( '.setting' ).on( 'focus', this.focusCallback );\r\n\r\n // TODO: Maybe move to view events.\r\n // On input keyup, maybe show Merge Tag Box.\r\n jQuery( view.el ).find( '.setting' ).on( 'keyup', this.keyupCallback );\r\n },\r\n\r\n // TODO: Maybe move to view class.\r\n beforeDrawerClose: function(){\r\n jQuery( '#merge-tags-box' ).css( 'display', 'none' );\r\n nfRadio.channel( 'drawer' ).request( 'enable:close' );\r\n // jQuery( 'body' ).append( jQuery( '#merge-tags-box' ) );\r\n },\r\n\r\n insertTag: function( tag ) {\r\n\r\n var $input = jQuery( '.merge-tag-focus' );\r\n\r\n if( 0 != $input.closest( '.nf-setting' ).first().find( '.note-editable' ).length ){\r\n $input = $input.closest( '.nf-setting' ).first().find( '.note-editable' );\r\n }\r\n\r\n if( 1 < $input.length ){ $input = $input.first(); }\r\n\r\n if( $input.hasClass( 'note-editable' ) ){\r\n var str = $input.closest( '.nf-setting' ).find( '.setting' ).summernote( 'code' );\r\n } else {\r\n var str = $input.val();\r\n }\r\n\r\n var find = nfRadio.channel( 'mergeTags' ).request( 'get:old' );\r\n var replace = tag;\r\n var caretPos = nfRadio.channel( 'mergeTags' ).request( 'get:caret' );\r\n\r\n var patt = /{([a-zA-Z0-9]|:|_||-})*/g;\r\n\r\n // Loop through matches to find insert/replace index range.\r\n // Reference: http://codepen.io/kjohnson/pen/36c3a782644dfff40fe3c1f05f8739d9?editors=0012\r\n while (match = patt.exec(str)) {\r\n if (find != match[0]) continue; // This isn't the match you are looking for...\r\n var string = str.slice(0, match.index) + replace + str.slice(patt.lastIndex); // Fancy replace for the specifc match, using the index/position.\r\n\r\n if( $input.hasClass( 'note-editable' ) ){\r\n $input.closest( '.nf-setting' ).find( '.setting' ).summernote( 'code', string );\r\n\r\n // Reposition the caret. http://stackoverflow.com/a/6249440 TODO: Determine the appropriate childNode.\r\n var el = $input;\r\n var childNode = null; // Default to first childNode.\r\n _.each( el[0].childNodes, function( node, index ){\r\n if( childNode ) return;\r\n if( ! node.nodeValue && ! node.innerHTML ) return;\r\n if( node.nodeValue ) {\r\n var value = node.nodeValue;\r\n } else if( node.innerHTML ){\r\n var value = node.innerHTML;\r\n }\r\n\r\n if( -1 == value.indexOf(replace) ) return; // Replace not found in this node.\r\n\r\n value = value.replace( /&nbsp;/g, ' ' );\r\n var position = value.indexOf(replace) + find.length;\r\n\r\n /*\r\n * If no caretPos, determine based on the node. ie Merge Tag Button context.\r\n * Note: We can't just check for '{', because they could just be inserting the first tag.\r\n */\r\n if( -1 == caretPos ){\r\n caretPos = value.indexOf( replace ) + 1;\r\n }\r\n\r\n if (caretPos == position) childNode = el[0].childNodes[index];\r\n });\r\n if( ! childNode ) childNode = el[0].childNodes[0];\r\n var offset = caretPos - find.length + replace.length;\r\n var range = document.createRange();\r\n var sel = window.getSelection();\r\n if( 0 != childNode.childNodes.length ) {\r\n try{\r\n range.setStart(childNode.childNodes[0], offset); \r\n } catch( err ) {\r\n console.log( childNode );\r\n console.log( 'error' );\r\n }\r\n \r\n } else {\r\n try {\r\n range.setStart(childNode, offset);\r\n } catch( err ) {\r\n console.log( 'error' );\r\n }\r\n \r\n }\r\n range.collapse(true);\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n\r\n\r\n } else {\r\n $input.val(string); // Update input value with parsed string.\r\n $input.change(); // Trigger a change event after inserting the merge tag so that it saves to the model.\r\n $input.caret(caretPos - find.length + replace.length); // Update Carept Position.\r\n }\r\n\r\n }\r\n\r\n jQuery( '#merge-tags-box' ).css( 'display', 'none' );\r\n nfRadio.channel( 'drawer' ).request( 'enable:close' );\r\n $input.removeClass( 'merge-tag-focus' );\r\n $input.closest( '.merge-tag-focus-overlay' ).removeClass( 'merge-tag-focus-overlay' );\r\n },\r\n\r\n mergeTagsButtonClick: function( e ){\r\n var $this = jQuery( this );\r\n\r\n if ($this.hasClass('open-media-manager')) {\r\n return;\r\n }\r\n\r\n if( $this.siblings().hasClass( 'merge-tag-focus' ) ){\r\n nfRadio.channel( 'mergeTags' ).request( 'insert:tag', '' );\r\n jQuery( '#merge-tags-box' ).css( 'display', 'none' );\r\n nfRadio.channel( 'drawer' ).request( 'enable:close' );\r\n jQuery( '.merge-tag-focus' ).removeClass( 'merge-tag-focus' );\r\n jQuery( '.merge-tag-focus-overlay' ).removeClass( 'merge-tag-focus-overlay' );\r\n return;\r\n }\r\n\r\n if( 0 !== $this.closest( '.nf-setting, .nf-table-row' ).find( '.note-tools' ).length ){\r\n var $inputSetting = $this.closest( '.note-editor' ).siblings( '.setting' ).first();\r\n $this.closest( '.nf-setting' ).find( '.setting' ).summernote( 'insertText', '{' );\r\n // Since we haven't determined the caretPos, set to -1 as a flag to determine later.\r\n nfRadio.channel('mergeTags').request( 'set:caret', -1 );\r\n } else {\r\n var $inputSetting = $this.siblings( '.setting' ).first();\r\n var text = $inputSetting.val() || '';\r\n $inputSetting.val( text + '{' ).change();\r\n nfRadio.channel('mergeTags').request('set:caret', text.length + 1 );\r\n }\r\n\r\n if( $this.parent().hasClass( 'note-tools' ) ){\r\n // $this.closest( '.nf-setting' ).find( '.setting' ).summernote( 'insertText', '{' );\r\n }\r\n\r\n nfRadio.channel('mergeTags').request('set:old', '{' );\r\n\r\n $inputSetting.addClass( 'merge-tag-focus' );\r\n\r\n // Disable browser autocomplete.\r\n var autocomplete = $this.attr( 'autocomplete' );\r\n $this.attr( 'autocomplete', 'off' );\r\n $this.data( 'autocomplete', autocomplete );\r\n\r\n var $overlayElement = $this.closest( '.nf-setting, .nf-table-row' );\r\n if( 0 != $overlayElement.find( '.note-editor' ).length ){\r\n $overlayElement.find('.note-editor' ).addClass('merge-tag-focus-overlay');\r\n } else {\r\n $overlayElement.addClass('merge-tag-focus-overlay');\r\n }\r\n\r\n /**\r\n * TODO: This is a wonky work around for removing Product and Quantity fields from calculation merge tags.\r\n * The merge tag system doesn't currently respect \"exclude\" merge tag settings.\r\n *\r\n * If 'eq' is the textarea next to the merge tag icon, then we're in a calculation setting.\r\n */\r\n if ( 'eq' == jQuery( e.target ).prev( 'textarea' ).data( 'id' ) ) {\r\n var calc = true;\r\n } else {\r\n var calc = false;\r\n }\r\n\r\n // Request that our merge tag box update its tag list, passing whether or not we're in a calculation setting.\r\n nfRadio.channel( 'merge-tags' ).request( 'update:taglist', 'fields', calc );\r\n \r\n jQuery( '#merge-tags-box' ).css( 'display', 'block' );\r\n nfRadio.channel( 'drawer' ).request( 'prevent:close' );\r\n\r\n jQuery( '.merge-tag-focus-overlay' ).off( 'click' );\r\n jQuery( '.merge-tag-focus-overlay' ).on( 'click', function( e ) {\r\n if ( jQuery( e.target ).hasClass( 'note-editor' ) ) {\r\n nfRadio.channel( 'mergeTags' ).request( 'insert:tag', '' );\r\n jQuery( '#merge-tags-box' ).css( 'display', 'none' );\r\n nfRadio.channel( 'drawer' ).request( 'enable:close' );\r\n jQuery( '#merge-tags-box' ).removeClass();\r\n jQuery( '.merge-tag-focus' ).removeClass( 'merge-tag-focus' );\r\n jQuery( '.merge-tag-focus-overlay' ).removeClass( 'merge-tag-focus-overlay' );\r\n }\r\n } );\r\n\r\n setTimeout(function(){\r\n jQuery( '#merge-tags-box' ).find( '.merge-tag-filter' ).find( 'input' ).focus();\r\n }, 500 );\r\n },\r\n\r\n focusCallback: function( e, target, type ){\r\n\r\n var type = type || 'setting';\r\n var $this = ( 'undefined' == typeof target ) ? jQuery( this ) : jQuery( target );\r\n\r\n jQuery( '.merge-tag-focus' ).each(function(index, el){\r\n if( this == el ) return;\r\n el.removeClass( 'merge-tag-focus' );\r\n });\r\n\r\n if( 'rte' == type ) {\r\n var posY = $this.closest( '.nf-setting' ).find( '.note-editor' ).offset().top - jQuery(window).scrollTop();\r\n var height = $this.closest( '.nf-setting' ).find( '.note-editor' ).outerHeight();\r\n } else {\r\n var posY = $this.offset().top - jQuery(window).scrollTop();\r\n var height = $this.outerHeight();\r\n }\r\n\r\n // Find out if merge tag box will go below bottom of the page.\r\n\t var tagBoxY = posY + height;\r\n\t var windowHeight = window.innerHeight;\r\n\t var tagBoxHeight = jQuery( '#merge-tags-box' ).outerHeight();\r\n\r\n\t // If merge tag box will render below the bottom of the page,\r\n // change it to render above the field\r\n\r\n\t if ( ( tagBoxY + tagBoxHeight ) > windowHeight ) {\r\n\t\t tagBoxY = posY - tagBoxHeight;\r\n\t }\r\n\r\n if ( 0 > tagBoxY ) {\r\n tagBoxY = posY;\r\n }\r\n\r\n jQuery( '#merge-tags-box' ).css( 'top', tagBoxY );\r\n\r\n var repeaterRow = $this.closest( '.nf-list-options-tbody' );\r\n if( 0 != repeaterRow.length ) {\r\n var left = repeaterRow.offset().left - jQuery(window).scrollLeft();\r\n jQuery( '#merge-tags-box' ).css( 'left', left );\r\n } else if( 'rte' == type ) {\r\n var posX = $this.closest( '.nf-setting' ).find( '.note-editor' ).offset().left - jQuery(window).scrollLeft();\r\n jQuery( '#merge-tags-box' ).css( 'left', posX );\r\n jQuery( '#merge-tags-box' ).css( 'width', $this.closest( '.nf-setting' ).find( '.note-editor' ).width() );\r\n }\r\n else\r\n {\r\n var posX = jQuery( this ).closest( '.nf-settings' ).offset().left - jQuery(window).scrollLeft();\r\n jQuery( '#merge-tags-box' ).css( 'left', posX );\r\n jQuery( '#merge-tags-box' ).css( 'width', $this.closest( '.nf-settings' ).width() );\r\n }\r\n\r\n var dataID = jQuery( this ).data( 'id' );\r\n if( dataID && 'eq' != dataID ) return;\r\n\r\n // var offset = jQuery( view.el ).find( '.setting' ).parent().outerHeight();\r\n // jQuery( view.el ).find( '.setting' ).parent().append( jQuery( '#merge-tags-box' ) );\r\n // jQuery( '#merge-tags-box' ).css( 'top', offset );\r\n },\r\n\r\n keyupCallback: function( event, target, type ){\r\n var type = type || 'setting';\r\n\r\n if( /* ENTER */ 13 == event.keyCode ){\r\n\r\n // Get top listed merge tag.\r\n var firstFilteredTag = jQuery( '#merge-tags-box .merge-tag-list ul li span' ).first().data( 'tag' );\r\n\r\n nfRadio.channel( 'mergeTags' ).request( 'insert:tag', firstFilteredTag );\r\n\r\n // COPIED FROM BELOW\r\n jQuery( '#merge-tags-box' ).css( 'display', 'none' );\r\n nfRadio.channel( 'drawer' ).request( 'enable:close' );\r\n jQuery( '#merge-tags-box' ).removeClass();\r\n jQuery( '.merge-tag-focus' ).removeClass( 'merge-tag-focus' );\r\n jQuery( '.merge-tag-focus-overlay' ).removeClass( 'merge-tag-focus-overlay' );\r\n\r\n return;\r\n }\r\n\r\n // Get the value.\r\n // var value = jQuery( summernote ).summernote( 'code' );\r\n // Update the value.\r\n // jQuery( summernote ).closest( '.nf-setting' ).find( '.note-editable' ).html( value );\r\n\r\n if( 'undefined' != typeof target ) {\r\n var $this = jQuery(target);\r\n } else {\r\n var $this = jQuery( this );\r\n }\r\n\r\n // TODO: Disable Browser Autocomplete\r\n // $this.attr()\r\n\r\n\r\n var dataID = jQuery( this ).data( 'id' );\r\n if( dataID && 'eq' == dataID ) return;\r\n\r\n // Store the current caret position.\r\n if( 'rte' == type ){\r\n var range = $this.summernote('createRange');\r\n if( range ) {\r\n var caretPos = range.so; // or .eo?\r\n } else {\r\n var caretPos = 0;\r\n }\r\n $this.closest( '.nf-setting' ).find( '.setting' ).summernote( 'saveRange' );\r\n } else {\r\n var caretPos = $this.caret();\r\n }\r\n nfRadio.channel( 'mergeTags' ).request( 'set:caret', caretPos );\r\n\r\n // Find merge tags.\r\n if( 'rte' == type ) {\r\n var mergetags = $this.summernote( 'code' ).match(new RegExp(/{([a-zA-Z0-9]|:|_|-|})*/g));\r\n } else {\r\n var mergetags = $this.val().match(new RegExp(/{([a-zA-Z0-9]|:|_|-|})*/g));\r\n }\r\n\r\n // Filter out closed merge tags.\r\n mergetags = _.filter(mergetags, function(mergetag) {\r\n return -1 == mergetag.indexOf( '}' ); // Filter out \"closed\" merge tags.\r\n });\r\n\r\n // If an open merge tag is found, show the Merge Tag Box, else hide.\r\n if( 0 !== mergetags.length ) {\r\n\r\n nfRadio.channel( 'mergeTags' ).request( 'set:old', mergetags[0] );\r\n \r\n jQuery('#merge-tags-box').css( 'display', 'block' );\r\n nfRadio.channel( 'drawer' ).request( 'prevent:close' );\r\n $this.addClass('merge-tag-focus');\r\n\r\n var boxHeight = jQuery( '#merge-tags-box' ).outerHeight();\r\n jQuery( '#nf-drawer' ).css( 'padding-bottom', boxHeight + 'px' );\r\n\r\n // Disable browser autocomplete.\r\n var autocomplete = $this.attr( 'autocomplete' );\r\n $this.attr( 'autocomplete', 'off' );\r\n $this.data( 'autocomplete', autocomplete );\r\n\r\n var $overlayElement = $this.closest( '.nf-setting, .nf-table-row' );\r\n if( 0 != $overlayElement.find( '.note-editor' ).length ){\r\n $overlayElement.find('.note-editor' ).addClass('merge-tag-focus-overlay');\r\n } else {\r\n $overlayElement.addClass('merge-tag-focus-overlay');\r\n }\r\n\r\n $overlayElement.off( 'click' );\r\n $overlayElement.on( 'click', function( event ){\r\n var elementClasses = jQuery( event.target ).attr( 'class' ) || [];\r\n if( -1 !== elementClasses.indexOf( 'merge-tag-focus-overlay' ) ){\r\n nfRadio.channel( 'mergeTags' ).request( 'insert:tag', '' );\r\n jQuery( '#merge-tags-box' ).css( 'display', 'none' );\r\n nfRadio.channel( 'drawer' ).request( 'enable:close' );\r\n jQuery( '#merge-tags-box' ).removeClass();\r\n jQuery( '.merge-tag-focus' ).removeClass( 'merge-tag-focus' );\r\n jQuery( '.merge-tag-focus-overlay' ).removeClass( 'merge-tag-focus-overlay' );\r\n }\r\n });\r\n\r\n var value = mergetags[0].replace( '{', '' );\r\n } else {\r\n jQuery( '#merge-tags-box' ).css( 'display', 'none' );\r\n nfRadio.channel( 'drawer' ).request( 'enable:close' );\r\n jQuery( '#merge-tags-box' ).removeClass();\r\n jQuery( '.merge-tag-focus' ).removeClass( 'merge-tag-focus' );\r\n jQuery( '.merge-tag-focus-overlay' ).removeClass( 'merge-tag-focus-overlay' );\r\n }\r\n }\r\n\r\n } );\r\n\r\n return controller;\r\n} );\r\n\n/**\r\n * Listens to our app channel for settings views being rendered.\r\n *\r\n * If we're about to render a setting model that's a select and has 'fields' as the 'fill' setting, add all our field models to its options.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/itemSettingFill',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for messages that are fired before a setting view is rendered.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'before:renderSetting', this.beforeRenderSetting );\r\n\t\t},\r\n\r\n\t\tbeforeRenderSetting: function( settingModel, dataModel ) {\r\n\t\t\tif ( 'fields' == settingModel.get( 'fill' ) ) {\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Modify the user's browser history when they click on a domain\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/confirmPublish',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:confirmPublish', this.confirmPublish );\r\n\t\t},\r\n\r\n\t\tconfirmPublish: function() {\r\n\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\t\t\t// Check to see if we need to add a submit button.\r\n\t\t\tif ( 1 == formModel.get( 'settings' ).get( 'add_submit' ) ) {\r\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'add', { type: 'submit', label: 'Submit', order: 9999 } );\r\n\t\t\t}\r\n\t\t\tformModel.set( 'show_publish_options', false );\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:db', 'publish' );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles actions related to settings that utilise the Rich Text Editor\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage App - Settings Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/rte',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// We don't want the RTE setting to re-render when the value changes.\r\n\t\t\tnfRadio.channel( 'setting-type-rte' ).reply( 'renderOnChange', function(){ return false } );\r\n\r\n\t\t\tthis.listenTo( nfRadio.channel( 'rte' ), 'init:settingModel', this.initSettingModel );\r\n\r\n\t\t\t// When an RTE setting is shown, re-render RTE.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'setting-type-rte' ), 'render:setting', this.renderSetting );\r\n\r\n\t\t\t// When an RTE setting view is destroyed, remove our RTE.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'setting-type-rte' ), 'destroy:setting', this.destroySetting );\r\n\r\n\t\t\t// When an element within the RTE is clicked, check to see if we should insert a link.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'setting-type-rte' ), 'click:extra', this.clickExtra );\r\n\r\n\t\t\t// Instantiates the variable that holds the media library frame.\r\n\t\t\tthis.meta_image_frame;\r\n\r\n\t\t\tjQuery.summernote.options.icons = {\r\n\t\t 'align': 'dashicons dashicons-editor-alignleft',\r\n\t\t 'alignCenter': 'dashicons dashicons-editor-aligncenter',\r\n\t\t 'alignJustify': 'dashicons dashicons-editor-justify',\r\n\t\t 'alignLeft': 'dashicons dashicons-editor-alignleft',\r\n\t\t 'alignRight': 'dashicons dashicons-editor-alignright',\r\n\t\t 'indent': 'dashicons dashicons-editor-indent',\r\n\t\t 'outdent': 'dashicons dashicons-editor-outdent',\r\n\t\t // 'arrowsAlt': 'dashicons fa-arrows-alt',\r\n\t\t 'bold': 'dashicons dashicons-editor-bold',\r\n\t\t 'caret': 'dashicons dashicons-arrow-down',\r\n\t\t // 'circle': 'dashicons fa-circle',\r\n\t\t 'close': 'dashicons dashicons-dismiss',\r\n\t\t 'code': 'dashicons dashicons-editor-code',\r\n\t\t 'eraser': 'dashicons dashicons-editor-removeformatting',\r\n\t\t // 'font': 'dashicons fa-font',\r\n\t\t // 'frame': 'dashicons fa-frame',\r\n\t\t 'italic': 'dashicons dashicons-editor-italic',\r\n\t\t 'link': 'dashicons dashicons-admin-links',\r\n\t\t 'unlink': 'dashicons dashicons-editor-unlink',\r\n\t\t 'magic': 'dashicons dashicons-editor-paragraph',\r\n\t\t // 'menuCheck': 'dashicons fa-check',\r\n\t\t 'minus': 'dashicons dashicons-minus',\r\n\t\t 'orderedlist': 'dashicons dashicons-editor-ol',\r\n\t\t // 'pencil': 'dashicons fa-pencil',\r\n\t\t // 'picture': 'dashicons fa-picture-o',\r\n\t\t // 'question': 'dashicons fa-question',\r\n\t\t 'redo': 'dashicons dashicons-redo',\r\n\t\t 'square': 'dashicons fa-square',\r\n\t\t // 'strikethrough': 'dashicons fa-strikethrough',\r\n\t\t // 'subscript': 'dashicons fa-subscript',\r\n\t\t // 'superscript': 'dashicons fa-superscript',\r\n\t\t 'table': 'dashicons dashicons-editor-table',\r\n\t\t // 'textHeight': 'dashicons fa-text-height',\r\n\t\t // 'trash': 'dashicons fa-trash',\r\n\t\t 'underline': 'dashicons dashicons-editor-underline',\r\n\t\t 'undo': 'dashicons dashicons-undo',\r\n\t\t 'unorderedlist': 'dashicons dashicons-editor-ul',\r\n\t\t // 'video': 'dashicons fa-youtube-play'\r\n\t\t }\r\n\r\n\t\t this.currentContext = {};\r\n\t\t},\r\n\r\n\t\tinitSettingModel: function( settingModel ) {\r\n\t\t\tsettingModel.set( 'hide_merge_tags', true );\r\n\t\t},\r\n\r\n\t\tinitRTE: function( settingModel, dataModel, settingView ) {\r\n\t\t\t/*\r\n\t\t\t * Custom Button for links\r\n\t\t\t */\r\n\t\t\tvar that = this;\r\n\t\t\t// var linkButton = this.linkButton();\r\n\t\t\tvar linkButton = function( context ) {\r\n\t\t\t\treturn that.linkButton( context );\r\n\t\t\t}\r\n\t\t\tvar mediaButton = function( context ) {\r\n\t\t\t\treturn that.mediaButton( context );\r\n\t\t\t}\r\n\t\t\tvar mergeTags = this.mergeTags();\r\n\r\n\t\t\tvar toolbar = [\r\n\t\t\t\t[ 'paragraphStyle', ['style'] ],\r\n\t\t\t\t[ 'fontStyle', [ 'bold', 'italic', 'underline','clear' ] ],\r\n\t\t\t\t[ 'lists', [ 'ul', 'ol' ] ],\r\n\t\t\t [ 'paragraph', [ 'paragraph' ] ],\r\n\t\t\t [ 'customGroup', [ 'linkButton', 'unlink' ] ],\r\n\t\t\t [ 'table', [ 'table' ] ],\r\n\t\t\t [ 'actions', [ 'undo', 'redo' ] ],\r\n\t\t\t [ 'tools', [ 'mediaButton', 'mergeTags', 'codeview' ] ]\r\n\t\t\t];\r\n\r\n\t\t\tjQuery( settingView.el ).find( 'div.setting' ).summernote( {\r\n\t\t\t\ttoolbar: toolbar,\r\n\t\t\t\tbuttons: {\r\n\t\t\t\t\tlinkButton: linkButton,\r\n\t\t\t\t\tmergeTags: mergeTags,\r\n\t\t\t\t\tmediaButton: mediaButton\r\n\t\t\t\t},\r\n\t\t\t\theight: 150, //set editable area's height\r\n\t\t\t\tcodemirror: { // codemirror options\r\n\t\t\t\t theme: 'monokai',\r\n\t\t\t\t lineNumbers: true,\r\n lineWrapping: true,\r\n\t\t\t\t callbacks: {\r\n\t\t\t\t \tonBlur: function( editor ) {\r\n\t\t\t\t \t\tvar value = editor.getValue();\r\n\t\t\t\t \t\tthat.updateDataModel( settingModel, dataModel, value );\r\n\t\t\t\t \t}\r\n\t\t\t\t }\r\n\t\t\t\t},\r\n\t\t\t\tprettifyHtml: true,\r\n\t\t\t\tcallbacks: {\r\n\t\t\t\t\tonBlur: function( e, context ) {\r\n\t\t\t\t\t\tvar value = jQuery( this ).summernote( 'code' );\r\n\t\t\t\t\t\tthat.updateDataModel( settingModel, dataModel, value );\r\n nfRadio.channel( 'summernote' ).trigger( 'blur', settingModel, dataModel, value );\r\n\t\t\t\t\t},\r\n onFocus: function( e, context ) {\r\n nfRadio.channel( 'summernote' ).trigger( 'focus', e, this, context );\r\n },\r\n onKeydown: function( e, context ) {\r\n nfRadio.channel( 'summernote' ).trigger( 'keydown', e, this, context );\r\n },\r\n onKeyup: function( e, context ) {\r\n nfRadio.channel( 'summernote' ).trigger( 'keyup', e, this, context );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tupdateDataModel: function( settingModel, dataModel, value ) {\r\n\t\t\tvar name = settingModel.get( 'name' );\r\n\t\t\tvar before = dataModel.get( name );\r\n\t\t\tvar after = value;\r\n\r\n\t\t\tvar changes = {\r\n\t\t\t\tattr: name,\r\n\t\t\t\tbefore: before,\r\n\t\t\t\tafter: after\r\n\t\t\t}\r\n\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: dataModel.get( 'objectType' ),\r\n\t\t\t\tlabel: dataModel.get( 'label' ),\r\n\t\t\t\tchange: 'Changed ' + settingModel.get( 'label' ) + ' from ' + before + ' to ' + after\r\n\t\t\t};\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'changeSetting', dataModel, changes, label );\r\n\r\n\t\t\tdataModel.set( settingModel.get( 'name' ), after );\r\n\t\t},\r\n\r\n\t\trenderSetting: function( settingModel, dataModel, settingView ) {\r\n\t\t\tthis.initRTE( settingModel, dataModel,settingView );\r\n\t\t\tvar linkMenu = jQuery( settingView.el ).find( '.link-button' ).next( '.dropdown-menu' ).find( 'button' );\r\n\t\t\tlinkMenu.replaceWith(function () {\r\n\t\t\t return jQuery( '<div/>', {\r\n\t\t\t class: jQuery( linkMenu ).attr( 'class' ),\r\n\t\t\t html: this.innerHTML\r\n\t\t\t } );\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tdestroySetting: function( settingModel, dataModel, settingView ) {\r\n\t\t\tthis.removeRTE( settingModel, dataModel, settingView );\r\n\t\t},\r\n\r\n\t\tremoveRTE: function( settingModel, dataModel, settingView ) {\r\n\t\t\tjQuery( settingView.el ).find( 'div.setting' ).summernote( 'destroy' );\r\n\t\t},\r\n\r\n\t\tdrawerOpened: function( settingModel, dataModel, settingView ) {\r\n\t\t\tthis.initRTE( settingModel, dataModel, settingView );\r\n\t\t},\r\n\r\n\t\tlinkButton: function( context ) {\r\n\t\t\tvar that = this;\r\n\t\t\tvar ui = jQuery.summernote.ui;\r\n\t\t\tvar linkButton = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-rte-link-button' );\r\n\t\t\tvar linkDropdown = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-rte-link-dropdown' );\r\n\t\t\treturn ui.buttonGroup([\r\n\t\t\t\tui.button({\r\n\t className: 'dropdown-toggle link-button',\r\n\t contents: linkButton({}),\r\n\t tooltip: 'Insert Link',\r\n\t click: function( e ) {\r\n\t \tthat.clickLinkButton( e, context );\r\n\t },\r\n\t data: {\r\n\t toggle: 'dropdown'\r\n\t }\r\n\t }),\r\n\t\t\t\tui.dropdown([\r\n\t ui.buttonGroup({\r\n\t children: [\r\n\t ui.button({\r\n\t contents: linkDropdown({}),\r\n\t tooltip: ''\r\n\t }),\r\n\t ]\r\n\t })\r\n\t ])\r\n\t\t\t]).render();\r\n\t\t},\r\n\r\n\t\tmergeTags: function( context ) {\r\n\t\t\tvar ui = jQuery.summernote.ui;\r\n\t\t\tvar mergeTagsButton = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-rte-merge-tags-button' );\r\n\t\t\treturn ui.button({\r\n\t\t\t\tclassName: 'dropdown-toggle merge-tags',\r\n\t\t\t\tcontents: mergeTagsButton({}),\r\n\t\t\t\ttooltip: 'Merge Tags'\r\n\t\t\t}).render();\r\n\t\t},\r\n\r\n\t\tmediaButton: function( context ) {\r\n\t\t\tvar that = this;\r\n\t\t\tvar ui = jQuery.summernote.ui;\r\n\t\t\tvar mediaButton = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-rte-media-button' );\r\n\t\t\treturn ui.button({\r\n\t className: 'dropdown-toggle',\r\n\t contents: mediaButton({}),\r\n\t tooltip: 'Insert Media',\r\n\t click: function( e ) {\r\n\t \tthat.openMediaManager( e, context );\r\n\t }\r\n\t }).render();\r\n\t\t},\r\n\r\n\t\topenMediaManager: function( e, context ) {\r\n\t\t\tcontext.invoke( 'editor.createRange' );\r\n\t\t\tcontext.invoke( 'editor.saveRange' );\r\n\t\t\tthis.currentContext = context;\r\n\t\t\t\r\n\t\t\t// If the frame already exists, re-open it.\r\n\t\t\tif ( this.meta_image_frame ) {\r\n\t\t\t\tthis.meta_image_frame.open();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Sets up the media library frame\r\n\t\t\tthis.meta_image_frame = wp.media.frames.meta_image_frame = wp.media({\r\n\t\t\t\ttitle: 'Select a file',\r\n\t\t\t\tbutton: { text: 'insert' }\r\n\t\t\t});\r\n\r\n\t\t\tvar that = this;\r\n\r\n\t\t\t// Runs when an image is selected.\r\n\t\t\tthis.meta_image_frame.on('select', function(){\r\n\r\n\t\t\t\t// Grabs the attachment selection and creates a JSON representation of the model.\r\n\t\t\t\tvar media_attachment = that.meta_image_frame.state().get('selection').first().toJSON();\r\n\t\t\t\tthat.insertMedia( media_attachment, context );\r\n\t\t\t});\r\n\r\n\t\t\t// Opens the media library frame.\r\n\t\t\tthis.meta_image_frame.open();\r\n\t\t},\r\n\r\n\t\tclickLinkButton: function ( e, context ) {\r\n\t\t\tvar range = context.invoke( 'editor.createRange' );\r\n\t\t\tcontext.invoke( 'editor.saveRange' );\r\n\t\t\tvar text = range.toString()\r\n\t\t\tthis.currentContext = context;\r\n\r\n\t\t\tjQuery( e.target ).closest( '.note-customGroup > .note-btn-group' ).on ('hide.bs.dropdown', function ( e ) {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\r\n\t\t\tjQuery( e.target ).closest( '.note-customGroup > .note-btn-group' ).on ('shown.bs.dropdown', function ( e ) {\r\n\t\t\t\tjQuery( e.target ).parent().parent().find( '.link-text' ).val( text );\r\n\t\t\t\tjQuery( e.target ).parent().parent().find( '.link-url' ).focus();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tclickExtra: function( e, settingModel, dataModel, settingView ) {\r\n\t\t\tvar textEl = jQuery( e.target ).parent().find( '.link-text' );\r\n\t\t\tvar urlEl = jQuery( e.target ).parent().find( '.link-url' );\r\n\t\t\tvar isNewWindowEl = jQuery( e.target ).parent().find( '.link-new-window' );\r\n\t\t\tthis.currentContext.invoke( 'editor.restoreRange' );\r\n\t\t\tif ( jQuery( e.target ).hasClass( 'insert-link' ) ) {\r\n\t\t\t\tvar text = textEl.val();\r\n\t\t\t\tvar url = urlEl.val();\r\n\t\t\t\tvar isNewWindow = ( isNewWindowEl.prop( 'checked' ) ) ? true: false;\r\n\t\t\t\tif ( 0 != text.length && 0 != url.length ) {\r\n\t\t\t\t\tthis.currentContext.invoke( 'editor.createLink', { text:text, url: url, isNewWindow: isNewWindow } );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttextEl.val( '' );\r\n\t\t\turlEl.val( '' );\r\n\t\t\tisNewWindowEl.prop( 'checked', false );\r\n\t\t\tjQuery( e.target ).closest( 'div.note-btn-group.open' ).removeClass( 'open' );\r\n\t\t},\r\n\r\n\t\tinsertMedia: function( media, context ) {\r\n\t\t\tthis.currentContext.invoke( 'editor.restoreRange' );\r\n\t\t\tif ( 'image' == media.type ) {\r\n\t\t\t\tthis.currentContext.invoke( 'editor.insertImage', media.url );\r\n\t\t\t} else {\r\n\t\t\t\tthis.currentContext.invoke( 'editor.createLink', {\r\n\t\t\t\t\ttext: media.title || media.filename,\r\n\t\t\t\t\turl: media.url\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\r\n\n/**\r\n * Listens to our app channel for settings views being rendered.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/settingFieldSelect',[], function() {\r\n var controller = Marionette.Object.extend( {\r\n\r\n initialize: function() {\r\n\r\n // Bind field key listener to field-select setting type.\r\n this.listenTo( nfRadio.channel( 'field-select' ), 'init:settingModel', this.trackKeyChanges );\r\n\r\n // The first time settingModel and the dataModel meet.\r\n this.listenTo( nfRadio.channel( 'setting-type-field-select' ), 'before:renderSetting', this.beforeRender );\r\n\r\n // Add setting change listener only in drawers with a field-select setting.\r\n this.listenTo( nfRadio.channel( 'field-select' ), 'init:settingModel', function() {\r\n this.listenTo( nfRadio.channel( 'app' ), 'change:setting', this.maybeSwitchToFieldsDomain );\r\n });\r\n\r\n this.listenTo( nfRadio.channel( 'app' ), 'change:currentDomain', this.autoOpenDrawer );\r\n\r\n this.listenTo( nfRadio.channel( 'drawer' ), 'opened', this.filterDrawerContents );\r\n this.listenTo( nfRadio.channel( 'drawer' ), 'closed', this.SwitchToFieldsDomain );\r\n },\r\n\r\n trackKeyChanges: function( settingModel ) {\r\n settingModel.listenTo( nfRadio.channel( 'app' ), 'update:fieldKey', settingModel.updateKey );\r\n\r\n // Update selected field if the selected field's key changes.\r\n this.listenTo( nfRadio.channel( 'app' ), 'replace:fieldKey', this.updateFieldMap );\r\n },\r\n\r\n updateFieldMap: function( dataModel, keyModel, settingModel ) {\r\n\r\n var oldKey = keyModel._previousAttributes[ 'key' ];\r\n var newKey = keyModel.get( 'key' );\r\n\r\n if( 'field-select' == settingModel.get( 'type' ) && dataModel.get( settingModel.get( 'name' ) ) == oldKey ) {\r\n\r\n dataModel.set( settingModel.get( 'name' ), newKey );\r\n }\r\n },\r\n\r\n beforeRender: function( settingModel, dataModel ) {\r\n\r\n var fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\r\n var fieldTypes = settingModel.get( 'field_types' );\r\n\r\n var options = [\r\n {\r\n label: '--',\r\n value: 0\r\n }\r\n ];\r\n _.each( fieldCollection.models, function( field ){\r\n\r\n if( dataModel.cid == field.cid ) return;\r\n\r\n if( 'undefined' != typeof fieldTypes && 0 != fieldTypes.length && ! _.contains( fieldTypes, field.get( 'type' ) ) ) return;\r\n\r\n var fieldFilter = settingModel.get( 'field_filter' );\r\n if( fieldFilter && 'undefined' != typeof fieldFilter[ field.get( 'type' ) ] ) {\r\n var bail = false;\r\n _.each( fieldFilter[ field.get( 'type' ) ], function( value, setting ){\r\n console.log( value + \":\" + field.get( setting ) );\r\n if( value != field.get( setting ) ) bail = true;\r\n } );\r\n if( bail ) return;\r\n }\r\n\r\n var value = field.get( 'key' );\r\n switch ( settingModel.get( 'field_value_format' ) ) {\r\n case 'key':\r\n value = field.get( 'key' );\r\n break;\r\n case 'merge_tag':\r\n default:\r\n value = '{field:' + field.get( 'key' ) + '}';\r\n }\r\n\r\n options.push({\r\n label: field.get( 'label' ),\r\n value: value\r\n });\r\n });\r\n\r\n if( 'undefined' != typeof fieldTypes && 0 != fieldTypes.length ) {\r\n _.each( fieldTypes, function( fieldType ){\r\n\r\n var fieldTypeModel = nfRadio.channel( 'fields' ).request( 'get:type', fieldType );\r\n\r\n options.push({\r\n label: '-- Add ' + fieldTypeModel.get( 'nicename' ) + ' Field',\r\n value: 'addField:' + fieldType,\r\n });\r\n } );\r\n }\r\n\r\n settingModel.set( 'options', options );\r\n },\r\n\r\n maybeSwitchToFieldsDomain: function( e, model, dataModel ) {\r\n\r\n if( 'field-select' != model.get( 'type' ) ) return;\r\n\r\n var name = model.get( 'name' );\r\n var value = dataModel.get( name );\r\n\r\n if( ! value ) return;\r\n\r\n var rubble = value.split( ':' );\r\n\r\n if( 'addField' != rubble[0] ) return;\r\n\r\n this.openDrawer = 'addField';\r\n this.filterDrawer = rubble[1];\r\n\r\n dataModel.set( name, '' );\r\n\r\n this.switchDomain = true;\r\n nfRadio.channel( 'app' ).request( 'close:drawer' );\r\n },\r\n\r\n SwitchToFieldsDomain: function() {\r\n if( this.switchDomain ) {\r\n var fieldDomainModel = nfRadio.channel( 'app' ).request( 'get:domainModel', 'fields' );\r\n nfRadio.channel('app').request('change:currentDomain', null, fieldDomainModel);\r\n this.switchDomain = null;\r\n }\r\n },\r\n\r\n autoOpenDrawer: function() {\r\n if( this.openDrawer ) {\r\n nfRadio.channel( 'app' ).request( 'open:drawer', this.openDrawer );\r\n this.openDrawer = null;\r\n }\r\n },\r\n\r\n filterDrawerContents: function() {\r\n if( this.filterDrawer ) {\r\n nfRadio.channel('drawer-addField').trigger('change:filter', this.filterDrawer);\r\n this.filterDrawer = null;\r\n }\r\n }\r\n });\r\n\r\n return controller;\r\n} );\n/**\r\n * The Field List setting is a container of settings (like the Fieldset setting), in which its children are instantiated.\r\n * Unlike the Fieldset setting, Field List settings are dynamically created based on the list of form fields.\r\n *\r\n * Note: Field references in the dynamic setting names are based on field keys, which may change.\r\n * Unlike regular field key tracking, a new setting needs to be created with the same value as the previous.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Action Settings\r\n * @copyright (c) 2016 WP Ninjas\r\n * @author Kyle B. Johnson\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/settingFieldList',['views/app/drawer/typeSettingFieldset','models/app/settingCollection'], function( fieldsetView, settingCollection ) {\r\n return Marionette.Object.extend( {\r\n\r\n /**\r\n * A reference list of Field List setting models.\r\n */\r\n fieldListSettings: [],\r\n\r\n initialize: function() {\r\n this.listenTo( nfRadio.channel( 'field-list' ), 'init:settingModel', this.registerFieldListSettings );\r\n this.listenTo( nfRadio.channel( 'fields' ), 'update:setting', this.updateFieldListSettingKeys );\r\n nfRadio.channel( 'field-list' ).reply( 'get:settingChildView', this.getSettingChildView, this );\r\n },\r\n\r\n /**\r\n * Build a reference list of Field List setting models for later reference.\r\n *\r\n * @param settingModel\r\n */\r\n registerFieldListSettings: function( settingModel ){\r\n this.fieldListSettings.push( settingModel.get( 'name' ) );\r\n },\r\n\r\n /**\r\n * Field List settings contain field keys in the setting names.\r\n * When a field key changes, so too must the Field List setting name.\r\n *\r\n * @param fieldModel\r\n */\r\n updateFieldListSettingKeys: function( fieldModel ){\r\n\r\n // We are only interested in field key changes.\r\n if( 'undefined' == typeof fieldModel.changed.key ) return;\r\n\r\n var oldKey = fieldModel._previousAttributes.key;\r\n var newKey = fieldModel.changed.key;\r\n\r\n /*\r\n * This is an absolute (functional) mess of nesting. I apologize to my future self, or Kenny.\r\n *\r\n * Each setting of each action model must be checked against each registered Field List setting.\r\n */\r\n var that = this;\r\n _.each( Backbone.Radio.channel( 'actions' ).request( 'get:collection' ).models, function( actionModel ) {\r\n _.each( actionModel.attributes, function( value, setting ) {\r\n var lastChanged = ''; // Used to avoid resetting the change with a duplicate call.\r\n _.each( that.fieldListSettings, function( prefix ) {\r\n if( setting != prefix + '-' + oldKey || lastChanged == oldKey ) return;\r\n var oldValue = actionModel.get( prefix + '-' + oldKey );\r\n actionModel.set( prefix + '-' + newKey, oldValue );\r\n actionModel.set( prefix + '-' + oldKey, 0 );\r\n lastChanged = oldKey;\r\n });\r\n });\r\n });\r\n },\r\n\r\n /**\r\n * Set the view for Field List sub-settings, just like the Fieldset setting.\r\n *\r\n * @param settingModel\r\n * @returns {*}\r\n */\r\n getSettingChildView: function( settingModel ) {\r\n\r\n /**\r\n * Dynamically build field-list settings as needed for the view.\r\n */\r\n\r\n // Filter fields based on the field_types setting property.\r\n var fields = _.filter( nfRadio.channel( 'fields' ).request( 'get:collection' ).models, function( field ) {\r\n return _.contains( settingModel.get( 'field_types' ), field.get( 'type' ) );\r\n });\r\n\r\n // Map fields into setting definitions.\r\n var settings = _.map( fields, function( field ) {\r\n return {\r\n name: settingModel.get( 'name' ) + '-' + field.get( 'key' ),\r\n type: 'toggle',\r\n label: field.get( 'label' ),\r\n width: 'full'\r\n };\r\n });\r\n\r\n settingModel.set( 'settings', new settingCollection( settings ) );\r\n\r\n // return the child view.\r\n return fieldsetView;\r\n },\r\n\r\n });\r\n} );\r\n\n/**\r\n * Listens to our app channel for settings views being rendered.\r\n *\r\n *\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/settingHTML',[], function() {\r\n var controller = Marionette.Object.extend( {\r\n initialize: function() {\r\n\r\n // The first time settingModel and the dataModel meet.\r\n this.listenTo( nfRadio.channel( 'setting-type-html' ), 'before:renderSetting', this.init );\r\n },\r\n\r\n init: function( settingModel, dataModel ) {\r\n\r\n if( 'undefined' == settingModel.get( 'mirror' ) ) return;\r\n\r\n // Listen to a setting change inside of the dataModel.\r\n dataModel.on( 'change:' + settingModel.get( 'mirror' ), this.update, settingModel );\r\n },\r\n\r\n update: function( dataModel, changedSettingValue ) {\r\n\r\n // Mirror the default value setting value.\r\n dataModel.set( this.get( 'name' ), changedSettingValue );\r\n }\r\n });\r\n\r\n return controller;\r\n} );\n/**\r\n * Listens to our app channel for settings views being rendered.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/settingColor',[], function() {\r\n var controller = Marionette.Object.extend( {\r\n initialize: function() {\r\n // We don't want to re-render this setting type when the data changes.\r\n nfRadio.channel( 'setting-type-color' ).reply( 'renderOnChange', this.setRenderFalse );\r\n // We want to close any color pickers before we close our styling tab or drawer.\r\n this.listenTo( nfRadio.channel( 'setting-type-color' ), 'destroy:setting', this.closeColorPickers );\r\n\r\n // The first time settingModel and the dataModel meet.\r\n this.listenTo( nfRadio.channel( 'setting-type-color' ), 'render:setting', this.initColorPicker );\r\n },\r\n\r\n initColorPicker: function( settingModel, dataModel, view ) {\r\n\r\n var name = settingModel.get( 'name' );\r\n var el = jQuery( view.el ).find( 'input' );\r\n\r\n jQuery( el ).wpColorPicker( {\r\n change: function( event, ui ){\r\n nfRadio.channel( 'app' ).request( 'change:setting', event, settingModel, dataModel, ui.color.toString() );\r\n }\r\n } );\r\n },\r\n\r\n setRenderFalse: function() {\r\n return false;\r\n },\r\n\r\n closeColorPickers: function( settingModel, dataModel, view ) {\r\n jQuery( view.el ).find( '.wp-color-picker' ).wpColorPicker( 'close' );\r\n }\r\n });\r\n\r\n return controller;\r\n} );\n/**\r\n * Listens to our app channel for the app to start.\r\n *\r\n * If the form is a new form, then highlight the Add New submenu item.\r\n * Otherwise, append an Edit Form submenu for context.\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2016 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/changeMenu',[], function() {\r\n var controller = Marionette.Object.extend({\r\n\r\n editFormText: '',\r\n\r\n initialize: function () {\r\n this.editFormText = nfAdmin.editFormText || 'Edit Form';\r\n this.listenTo(nfRadio.channel('app'), 'after:appStart', this.changeMenu);\r\n this.listenTo( nfRadio.channel( 'app' ), 'response:updateDB', this.formPublish );\r\n },\r\n\r\n changeMenu: function () {\r\n var form = nfRadio.channel( 'app' ).request( 'get:formModel' );\r\n\r\n if ( this.isNewForm( form.id ) ) {\r\n this.highlightAddNew();\r\n } else {\r\n this.appendEditForm();\r\n }\r\n },\r\n\r\n isNewForm: function( form_id ) {\r\n return isNaN( form_id );\r\n },\r\n\r\n highlightAddNew: function() {\r\n jQuery( '.wp-submenu li' ).removeClass( 'current' );\r\n jQuery( 'a[href=\"admin.php?page=ninja-forms&form_id=new\"]' ).parent().addClass( 'current' );\r\n },\r\n\r\n /**\r\n * Append 'Edit Form'\r\n * When editing a form, add an 'Edit Form' submenu item to\r\n * the WordPress Admin Dashboard menu, specifically under\r\n * the Ninja Forms Menu Item and after the 'Add New' item.\r\n */\r\n appendEditForm: function() {\r\n // Singleton check. Only add this menu item one time.\r\n if ( jQuery( 'li a:contains(\"' + this.editFormText + '\")' ).length > 0 ) return;\r\n\r\n var editFormLinkText, editFormLink, editFormListItem;\r\n\r\n // Create the 'Edit Form' submenu item.\r\n editFormLinkText = document.createTextNode(this.editFormText);\r\n editFormLink = document.createElement(\"a\");\r\n editFormLink.appendChild(editFormLinkText);\r\n\r\n editFormListItem = document.createElement(\"li\");\r\n editFormListItem.appendChild(editFormLink);\r\n editFormListItem.classList.add(\"current\");\r\n\r\n // Remove the `current` class from any existing list items.\r\n jQuery( '.wp-submenu li' ).removeClass( 'current' );\r\n\r\n // Insert the 'Edit Form' item after the 'Add New' item;\r\n jQuery( 'a[href=\"admin.php?page=ninja-forms#new-form\"]' ).parent().after( editFormListItem );\r\n },\r\n\r\n formPublish: function( response ) {\r\n if ( 'publish' !== response.action ) return false;\r\n this.changeMenu();\r\n }\r\n });\r\n\r\n return controller;\r\n});\r\n\n/**\r\n * When we click on a domain link, close the mobile menu.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/mobile',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for clicks on our app menu.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'click:menu', this.closeMobileMenu );\r\n\t\t},\r\n\r\n\t\tcloseMobileMenu: function() {\r\n\t\t\tvar builderEl = nfRadio.channel( 'app' ).request( 'get:builderEl' );\r\n\t\t\tjQuery( builderEl ).removeClass( 'nf-menu-expand' );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Add a jBox notice to the screen.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/notices',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'notices' ).reply( 'add', this.addNotice, this );\r\n\t\t\tnfRadio.channel( 'notices' ).reply( 'close', this.closeNotice, this );\r\n\t\t\tthis.notices = {};\r\n\t\t},\r\n\r\n\t\taddNotice: function( key, msg, options ) {\r\n\r\n\t\t\tvar appDefaults = {\r\n\t\t\t\tcontent: msg,\r\n\t\t\t\tcolor: 'green',\r\n\t\t\t\tzIndex:10000000,\r\n\t\t\t\tconstructOnInit: true,\r\n\t\t\t\tstack: true,\r\n\t\t\t\tanimation: {\r\n\t\t\t\t\topen: 'flip',\r\n\t\t\t\t\tclose: 'flip'\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tvar mobileDefaults = {\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: 'center',\r\n\t\t\t\t\ty: 'top'\r\n\t\t\t\t},\r\n\t\t\t\tanimation: {\r\n\t\t\t\t\topen:'slide:top',\r\n\t\t\t\t\tclose:'slide:left'\r\n\t\t\t\t},\r\n\t\t\t\tautoClose: 2000,\r\n\t\t\t\toffset: {\r\n\t\t\t\t\tx: 0,\r\n\t\t\t\t\ty: 55\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tvar desktopDefaults = {\r\n\t\t\t\tattributes: {\r\n\t\t\t\t\tx: 'left',\r\n\t\t\t\t\ty: 'bottom'\r\n\t\t\t\t},\r\n\t\t\t\tautoClose: 4000\r\n\t\t\t};\r\n\r\n\t\t\tif ( nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\tvar defaults = mobileDefaults;\t\r\n\t\t\t} else {\r\n\t\t\t\tvar defaults = desktopDefaults;\r\n\t\t\t}\r\n\t\t\tdefaults = jQuery.extend( defaults, appDefaults );\r\n\r\n\t\t\tvar options = jQuery.extend( defaults, options );\r\n\t\t\t// console.log( options );\r\n\t\t\tthis.notices[ key ] = new jBox( 'Notice', options );\r\n\t\t},\r\n\r\n\t\tcloseNotice: function( key ) {\r\n\t\t\tif ( 'undefined' != typeof this.notices[ key ] ) {\r\n\t\t\t\tthis.notices[ key ].close();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\topenNotice: function( key ) {\r\n\t\t\tif ( 'undefined' != typeof this.notices[ key ] ) {\r\n\t\t\t\tthis.notices[ key ].open();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Prompt the user to save if they attempt to leave the page with unsaved changes.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2016 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/unloadCheck',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tjQuery( window ).bind( 'beforeunload', this.maybePrompt );\r\n\t\t},\r\n\r\n\t\tmaybePrompt: function( model ) {\r\n\t\t\t// If our app is clean, don't show a warning.\r\n\t\t\tif ( ! nfRadio.channel( 'app' ).request( 'get:setting', 'clean' ) ) {\r\n\t\t\t\treturn 'You have unsaved changes.';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Before we save data to the database (on preview update or publish), we check to see if we have anyone\r\n * that wants to update the 'formContent' form setting. This setting is used on the front-end to allow\r\n * for custom display of form fields. i.e. layout rows.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/formContentFilters',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t/*\r\n\t\t\t * Init our formContent view filter array.\r\n\t\t\t */\r\n\t\t\tthis.viewFilters = [];\r\n\t\t\tthis.saveFilters = [];\r\n\t\t\tthis.loadFilters = [];\r\n\r\n\t\t\t/*\r\n\t\t * Listen for requests to add formContent filters.\r\n\t\t\t */\r\n\r\n\t\t\tnfRadio.channel( 'formContent' ).reply( 'add:viewFilter', this.addViewFilter, this );\r\n\t\t\tnfRadio.channel( 'formContent' ).reply( 'add:saveFilter', this.addSaveFilter, this );\r\n\t\t\tnfRadio.channel( 'formContent' ).reply( 'add:loadFilter', this.addLoadFilter, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Listen for requests to get our formContent filters.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'formContent' ).reply( 'get:viewFilters', this.getViewFilters, this );\r\n\t\t\tnfRadio.channel( 'formContent' ).reply( 'get:saveFilters', this.getSaveFilters, this );\r\n\t\t\tnfRadio.channel( 'formContent' ).reply( 'get:loadFilters', this.getLoadFilters, this );\r\n\t\t\t\r\n\t\t\t/*\r\n\t\t\t * -- DEPRECATED RADIO REPLIES --\r\n\t\t\t * \r\n\t\t\t * The 'fieldContents' channel has been deprecated as of 3.0 (it was present in the RC) in favour of 'formContent'.\r\n\t\t\t * Listen for requests to add new fieldContent filters.\r\n\t\t\t * \r\n\t\t\t * TODO: These radio listeners on the 'fieldContents' channels are here for backwards compatibility and should be removed eventually.\r\n\t\t\t */\r\n\r\n\t\t\tnfRadio.channel( 'fieldContents' ).reply( 'add:viewFilter', this.addViewFilter, this );\r\n\t\t\tnfRadio.channel( 'fieldContents' ).reply( 'add:saveFilter', this.addSaveFilter, this );\r\n\t\t\tnfRadio.channel( 'fieldContents' ).reply( 'add:loadFilter', this.addLoadFilter, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Listen for requests to get our fieldContent filters.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'fieldContents' ).reply( 'get:viewFilters', this.getViewFilters, this );\r\n\t\t\tnfRadio.channel( 'fieldContents' ).reply( 'get:saveFilters', this.getSaveFilters, this );\r\n\t\t\tnfRadio.channel( 'fieldContents' ).reply( 'get:loadFilters', this.getLoadFilters, this );\r\n\t\t\r\n\t\t\t/*\r\n\t\t\t * -- END DEPRECATED --\r\n\t\t\t */\r\n\t\t},\r\n\r\n\t\taddViewFilter: function( callback, priority ) {\r\n\t\t\tthis.viewFilters[ priority ] = callback;\r\n\t\t},\r\n\r\n\t\tgetViewFilters: function() {\r\n\t\t\treturn this.viewFilters;\r\n\t\t},\r\n\r\n\t\taddSaveFilter: function( callback, priority ) {\r\n\t\t\tthis.saveFilters[ priority ] = callback;\r\n\t\t},\r\n\r\n\t\tgetSaveFilters: function() {\r\n\t\t\treturn this.saveFilters;\r\n\t\t},\r\n\r\n\t\taddLoadFilter: function( callback, priority ) {\r\n\t\t\tthis.loadFilters[ priority ] = callback;\r\n\t\t},\r\n\r\n\t\tgetLoadFilters: function() {\r\n\t\t\treturn this.loadFilters;\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles filters for our main content gutter views.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/formContentGutterFilters',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t/*\r\n\t\t\t * Init our gutter view filter array.\r\n\t\t\t */\r\n\t\t\tthis.leftFilters = [];\r\n\t\t\tthis.rightFilters = [];\r\n\t\t\t/*\r\n\t\t * Listen for requests to add gutter filters.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'formContentGutters' ).reply( 'add:leftFilter', this.addLeftFilter, this );\r\n\t\t\tnfRadio.channel( 'formContentGutters' ).reply( 'add:rightFilter', this.addRightFilter, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Listen for requests to get our content gutter filters.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'formContentGutters' ).reply( 'get:leftFilters', this.getLeftFilters, this );\r\n\t\t\tnfRadio.channel( 'formContentGutters' ).reply( 'get:rightFilters', this.getRightFilters, this );\r\n\t\t},\r\n\r\n\t\taddLeftFilter: function( callback, priority ) {\r\n\t\t\tthis.leftFilters[ priority ] = callback;\r\n\t\t},\r\n\r\n\t\taddRightFilter: function( callback, priority ) {\r\n\t\t\tthis.rightFilters[ priority ] = callback;\r\n\t\t},\r\n\r\n\t\tgetLeftFilters: function() {\r\n\t\t\treturn this.leftFilters;\r\n\t\t},\r\n\r\n\t\tgetRightFilters: function() {\r\n\t\t\treturn this.rightFilters;\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Returns a clone of a backbone collection with all the models' attributes looped through so that collections contained within are propely cloned.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/cloneCollectionDeep',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'clone:collectionDeep', this.cloneCollectionDeep, this );\r\n\t\t},\r\n\r\n\t\tcloneCollectionDeep: function( collection ) {\r\n\t\t\tvar models = [];\r\n\t\t\t// Loop through every model in our collection, clone it, and add it to our model array\r\n\t\t\t_.each( collection.models, function( model ) {\r\n\t\t\t\tvar newModel = nfRadio.channel( 'app' ).request( 'clone:modelDeep', model );\r\n\t\t\t\tmodels.push( newModel );\r\n\t\t\t} );\r\n\t\t\t// Create a new instance of our collection\r\n\t\t\treturn new collection.constructor( models, collection.options );\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Tracks which keys have been pressed.\r\n * Currently only used by fields to see if they should duplicate or delete on click.\r\n * (Shift + D + click = delete) (Shift + C + click = duplicate)\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - Edit Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/trackKeyDown',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tkeys: [],\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tvar that = this;\r\n\t\t\t/*\r\n\t\t\t * Track keydowns and store the keys pressed.\r\n\t\t\t */\r\n\t\t\t\r\n\t\t\tjQuery( document ).on( 'keydown', function( e ) {\r\n\t\t\t\tthat.keyDown( e, that );\r\n\t\t\t} );\r\n\r\n\t\t\tjQuery( document ).on( 'keyup', function( e ) {\r\n\t\t\t\tthat.keyUp( e, that );\r\n\t\t\t} );\r\n\r\n\t\t\t/*\r\n\t\t\t * Get the keys currently being pressed, if any\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:keydown', this.getKeyDown, this );\r\n\t\t},\r\n\r\n\t\tkeyDown: function( e, context ) {\r\n\t\t\t/*\r\n\t\t\t * Add our keycode to our keys array.\r\n\t\t\t */\r\n\t\t\tcontext.keys[ e.keyCode ] = e.keyCode;\r\n\t\t},\r\n\r\n\t\tkeyUp: function( e, context ) {\r\n\t\t\t/*\r\n\t\t\t * Remove our keycode from our keys array.\r\n\t\t\t */\r\n\t\t\tif ( -1 != context.keys.indexOf( e.keyCode ) ) {\r\n\t\t\t\tdelete context.keys[ e.keyCode ];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetKeyDown: function() {\r\n\t\t\treturn this.keys;\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Initialize the perfectscroll jQuery plugin\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/perfectScroll',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tmovedPos: false,\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t/*\r\n\t\t\t * When we init the main view, init our perfectscroll\r\n\t\t\t */\r\n\t\t\tthis.listenTo( nfRadio.channel( 'main' ), 'show:main', this.initPerfectScroll );\r\n\r\n\t\t\t/*\r\n\t\t\t * When our drawer opens and closes, change the position of our scroll rail.\r\n\t\t\t */\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'opened', this.moveRail );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'before:closeDrawer', this.resetRail );\r\n\t\t},\r\n\r\n\t\tinitPerfectScroll: function( view ) {\r\n\t\t\tif ( ! nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\tjQuery( view.el ).parent().perfectScrollbar( {\r\n\t\t\t\t\tsuppressScrollX: true\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\r\n\t\t\tjQuery( 'head' ).append( '<style id=\"ps-scrollbar-css\" type=\"text/css\"></style>' );\r\n\t\t},\r\n\r\n\t\tmoveRail: function() {\r\n\t\t\tvar drawerEl = nfRadio.channel( 'app' ).request( 'get:drawerEl' );\r\n\t\t\tvar movedPos = jQuery( drawerEl ).outerWidth();\r\n\r\n\t\t\tjQuery( '#ps-scrollbar-css' ).text( '.ps-scrollbar-moved { right: ' + movedPos + 'px !important; } ' );\r\n\t\t\tjQuery( '#nf-main .ps-scrollbar-y-rail' ).addClass( 'ps-scrollbar-moved ' );\r\n\t\t\t\r\n\t\t},\r\n\r\n\t\tresetRail: function() {\r\n\t\t\tjQuery( '.ps-scrollbar-y-rail' ).removeClass( 'ps-scrollbar-moved ' );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Returns a new setting group collection.\r\n * Used to settings drawers for custom data models (i.e. not fields, actions, or advanced)\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App - Edit Settings Drawer\r\n * @copyright (c) 2016 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/getNewSettingGroupCollection',[ 'models/app/settingGroupCollection' ], function( SettingGroupCollection ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Respond to requests for a new setting group collection\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:settingGroupCollectionDefinition', this.getNewSettingGroupCollection, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Return a new instance of the setting group collection.\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @return backbone.collection\r\n\t\t */\r\n\t\tgetNewSettingGroupCollection: function() {\r\n\t\t\treturn SettingGroupCollection;\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Main App\r\n * @copyright (c) 2017 WP Ninjas\r\n * @since 3.0.30\r\n */\r\ndefine( 'controllers/app/settingMedia',[], function() {\r\n var controller = Marionette.Object.extend( {\r\n initialize: function() {\r\n // When the media button is clicked, open the media manager.\r\n this.listenTo( nfRadio.channel( 'setting-type-media' ), 'click:extra', this.clickExtra );\r\n },\r\n\r\n clickExtra: function( e, settingModel, dataModel, settingView ) {\r\n var textEl = jQuery( e.target ).parent().find( '.setting' );\r\n\r\n if ( jQuery( e.target ).hasClass( 'open-media-manager' ) ) {\r\n // If the frame already exists, re-open it.\r\n if ( this.meta_image_frame ) {\r\n this.meta_image_frame.open();\r\n return;\r\n }\r\n\r\n // Sets up the media library frame\r\n this.meta_image_frame = wp.media.frames.meta_image_frame = wp.media({\r\n title: 'Select a file',\r\n button: { text: 'insert' }\r\n });\r\n\r\n var that = this;\r\n\r\n // Runs when an image is selected.\r\n this.meta_image_frame.on('select', function(){\r\n // Grabs the attachment selection and creates a JSON representation of the model.\r\n var media_attachment = that.meta_image_frame.state().get('selection').first().toJSON();\r\n textEl.val( media_attachment.url ).change();\r\n });\r\n\r\n // Opens the media library frame.\r\n this.meta_image_frame.open();\r\n }\r\n },\r\n });\r\n\r\n return controller;\r\n} );\n/**\r\n * Handles changing our public link when we request a new one or when it's set improperly.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2019 WP Ninjas\r\n * @since UPDATE_VERSION_ON_MERGE\r\n */\r\ndefine( 'controllers/app/publicLink',[], function() {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\tthis.listenTo( nfRadio.channel( 'app' ), 'after:appStart', this.validatePublicLink, this );\r\n nfRadio.channel( 'app' ).reply( 'generate:publicLinkKey', this.newPublicLinkKey, this );\r\n },\r\n \r\n newPublicLinkKey: function() {\r\n var formSettingsDataModel = nfRadio.channel( 'settings' ).request( 'get:settings' );\r\n var public_link_key = nfRadio.channel('app').request('get:formModel').get('id');\r\n for (var i = 0; i < 4; i++) {\r\n var char = Math.random().toString(36).slice(-1);\r\n public_link_key += char;\r\n };\r\n // Apply the public link key to form settings\r\n formSettingsDataModel.set('public_link_key', public_link_key);\r\n return public_link_key;\r\n },\r\n\r\n validatePublicLink: function() {\r\n var formID = nfRadio.channel('app').request('get:formModel').get('id');\r\n var formSettingsDataModel = nfRadio.channel( 'settings' ).request( 'get:settings' );\r\n if ( 'undefined' === typeof formSettingsDataModel.get('public_link_key') ) return false;\r\n if ( 0 === formSettingsDataModel.get( 'public_link_key' ).indexOf( formID ) ) return false;\r\n var public_link_key = this.newPublicLinkKey();\r\n var publicLink = nfAdmin.publicLinkStructure.replace('[FORM_ID]', public_link_key);\r\n formSettingsDataModel.set('public_link', publicLink);\r\n }\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Model that represents our field type section on the add new field drawer.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/fields/typeSectionModel',[], function() {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\tclasses: ''\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Collection that holds our field models.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/fields/typeSectionCollection',['models/fields/typeSectionModel'], function( typeSectionModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: typeSectionModel\r\n\t} );\r\n\treturn collection;\r\n} );\n/**\r\n * Creates and stores a collection of field types. This includes all of the settings shown when editing a field.\r\n *\r\n * 1) Create our settings sections config\r\n * 2) Loops over our preloaded data and adds that to our field type collection\r\n *\r\n * Also responds to requests for data about field types\r\n *\r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/fields/types',[\r\n\t\t'models/app/typeCollection',\r\n\t\t'models/fields/typeSectionCollection'\r\n\t],\r\n\tfunction(\r\n\t\tTypeCollection,\r\n\t\tSectionCollection\r\n\t) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Config for our settings sections\r\n\t\t\tthis.sections = new SectionCollection( fieldTypeSections );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'fields' ), 'init:typeModel', this.registerSection );\r\n\r\n\t\t\t// Create our field type collection\r\n\t\t\tthis.collection = new TypeCollection( fieldTypeData, { type: 'fields' } );\r\n\r\n\t\t\t// Respond to requests to get field type, collection, settings, and sections\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:type', this.getFieldType, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:typeCollection', this.getTypeCollection, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:typeSections', this.getTypeSections, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:savedFields', this.getSavedFields, this );\r\n\r\n\t\t\t// Listen to clicks on field types\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer' ), 'click:fieldType', this.addField );\r\n\t\t},\r\n\r\n\t\tregisterSection: function( typeModel ) {\r\n\t\t\tif ( 'fields' != typeModel.collection.type || ! typeModel.get( 'section' ) ) return;\r\n\r\n\t\t\tthis.sections.get( typeModel.get( 'section' ) ).get( 'fieldTypes' ).push( typeModel.get( 'id' ) );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Return a field type by id\r\n\t\t *\r\n\t\t * @since 3.0\r\n\t\t * @param string \t\t\tid \tfield type\r\n\t\t * @return backbone.model \tfield type model\r\n\t\t */\r\n\t\tgetFieldType: function( id ) {\r\n \treturn this.collection.get( id );\r\n },\r\n\r\n /**\r\n * Return the entire field type collection\r\n *\r\n * @since 3.0\r\n * @param string \t\t\t\tid \t[description]\r\n * @return backbone.collection \tfield type collection\r\n */\r\n\t\tgetTypeCollection: function( id ) {\r\n \treturn this.collection;\r\n },\r\n\r\n /**\r\n * Add a field type to our fields sortable when the field type button is clicked.\r\n *\r\n * @since 3.0\r\n * @param Object e event\r\n * @return void\r\n */\r\n addField: function( e ) {\r\n\t\t\tvar type = jQuery( e.target ).data( 'id' );\r\n\r\n\t\t\tif( e.shiftKey ){\r\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'add:stagedField', type );\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n \tvar fieldModel = nfRadio.channel( 'fields' ).request( 'add', {\r\n\t\t\t\ttype: type,\r\n\r\n\t\t\t\tlabel: nfRadio.channel( 'fields' ).request( 'get:type', type ).get( 'nicename' )\r\n\t\t\t});\r\n\r\n\t\t\tconsole.log( fieldModel );\r\n\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: 'Field',\r\n\t\t\t\tlabel: fieldModel.get( 'label' ),\r\n\t\t\t\tchange: 'Added',\r\n\t\t\t\tdashicon: 'plus-alt'\r\n\t\t\t};\r\n\r\n\t\t\tvar data = {\r\n\t\t\t\tcollection: nfRadio.channel( 'fields' ).request( 'get:collection' )\r\n\t\t\t}\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'addObject', fieldModel, null, label, data );\r\n\r\n\t\t\t// Re-Draw the Field Collection\r\n\t\t\tnfRadio.channel( 'fields' ).request( 'redraw:collection' );\r\n },\r\n\r\n /**\r\n * Return our field type settings sections\r\n *\r\n * @since 3.0\r\n * @return backbone.collection field type settings sections\r\n */\r\n getTypeSections: function() {\r\n return this.sections;\r\n },\r\n\r\n /**\r\n * Return our saved fields\r\n *\r\n * @since 3.0\r\n * @return backbone.collection\r\n */\r\n getSavedFields: function() {\r\n \tthis.sections.get( 'saved' );\r\n }\r\n\t});\r\n\r\n\treturn controller;\r\n} );\r\n\n/**\r\n * Handles the logic for our field type draggables.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - New Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/fields/fieldTypeDrag',[], function( ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen to our field type draggables and run the appropriate function.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'startDrag:type', this.startDrag );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'stopDrag:type', this.stopDrag );\r\n\t\t\t/*\r\n\t\t\t * Respond to requests for our helper clone.\r\n\t\t\t * This is used by other parts of the application to modify what the user is dragging in real-time.\r\n\t\t\t */ \r\n\t\t\tnfRadio.channel( 'drawer-addField' ).reply( 'get:typeHelperClone', this.getCurrentDraggableHelperClone, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we start dragging:\r\n\t\t * get our drawer element\r\n\t\t * set its overflow property to visible !important -> forces the type drag element to be on at the top of the z-index.\r\n\t\t * get our main element\r\n\t\t * est its overflow propery to visible !important -> forces the type drag element to be on top of the z-index.\r\n\t\t * set our dragging helper clone\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param object context \tThis function is going to be called from a draggable. Context is the \"this\" reference to the draggable.\r\n\t\t * @param object ui \tObject sent by jQuery UI draggable.\r\n\t\t * @return void\r\n\t\t */\r\n\t\tstartDrag: function( context, ui ) {\r\n\t\t\tthis.drawerEl = nfRadio.channel( 'app' ).request( 'get:drawerEl' );\r\n\t\t\tthis.mainEl = nfRadio.channel( 'app' ).request( 'get:mainEl' );\r\n\t\t\tjQuery( this.drawerEl )[0].style.setProperty( 'overflow', 'visible', 'important' );\r\n\r\n\t\t\tthis.draggableHelperClone = jQuery( ui.helper ).clone();\r\n\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we stop dragging, reset our overflow property to hidden !important.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param object context \tThis function is going to be called from a draggable. Context is the \"this\" reference to the draggable.\r\n\t\t * @param object ui \tObject sent by jQuery UI draggable.\r\n\t\t * @return {[type]} [description]\r\n\t\t */\r\n\t\tstopDrag: function( context, ui ) {\r\n\t\t\tjQuery( this.drawerEl )[0].style.setProperty( 'overflow', 'hidden', 'important' );\r\n\t\t},\r\n\r\n\t\tgetCurrentDraggableHelperClone: function() {\r\n\t\t\treturn this.draggableHelperClone;\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles the dragging of our field staging area\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - New Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/fields/stagingDrag',[], function( ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen for the start and stop of our field staging dragging\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'startDrag:fieldStaging', this.startDrag );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'stopDrag:fieldStaging', this.stopDrag );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When the user starts dragging the staging area, we have to:\r\n\t\t * set the overflow property of the drawer to visible !important. If we don't, the button goes underneath the main section.\r\n\t\t * set the overflow proerty of the main to visible !important. If we don't, the dragged element goes underneath the drawer.\r\n\t\t * replace our helper with the stacked \"x fields\" template.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t context jQuery UI Draggable\r\n\t\t * @param Object\t ui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\tstartDrag: function( context, ui ) {\r\n\t\t\tthis.drawerEl = nfRadio.channel( 'app' ).request( 'get:drawerEl' );\r\n\t\t\tthis.mainEl = nfRadio.channel( 'app' ).request( 'get:mainEl' );\r\n\t\t\tjQuery( this.drawerEl )[0].style.setProperty( 'overflow', 'visible', 'important' );\r\n\t\t\t// jQuery( this.mainEl )[0].style.setProperty( 'overflow', 'visible', 'important' );\r\n\r\n\t\t\tvar stagedFields = nfRadio.channel( 'fields' ).request( 'get:staging' );\r\n\t\t\tvar html = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-staged-fields-drag' );\r\n\t\t\tjQuery( ui.helper ).html( html( { num: stagedFields.models.length } ) );\r\n\t\t\tjQuery( ui.helper ).prop( 'id', 'nf-staged-fields-drag' );\r\n\t\t\tjQuery( ui.item ).css( 'opacity', '0.7' );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we stop dragging the staging area, we have to set the overflow property to hidden !important\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t context jQuery UI Draggable\r\n\t\t * @param Object\t ui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\tstopDrag: function( context, ui ) {\r\n\t\t\tjQuery( this.drawerEl )[0].style.setProperty( 'overflow', 'hidden', 'important' );\r\n\t\t\t// jQuery( this.mainEl )[0].style.setProperty( 'overflow', 'hidden', 'important' );\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles most things related to our staging area:\r\n * 1) Creates a collection\r\n * 2) Listens for requests to CRUD items from the collection\r\n * 3) Adds our staged fields to the fields sortable when the drawer is closed\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - New Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/fields/staging',['models/fields/stagingCollection'], function( stagingCollection ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Create our staged fields collection\r\n\t\t\tthis.collection = new stagingCollection();\r\n\t\t\t// Respond to requests related to our staging area.\r\n\t\t nfRadio.channel( 'fields' ).reply( 'add:stagedField', this.addStagedField, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'remove:stagedField', this.removeStagedField, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:staging', this.getStagingCollection, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'sort:staging', this.sortStagedFields, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'clear:staging', this.clearStagedFields, this );\r\n\t\t\t// Listen to our remove staged field click event.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'click:removeStagedField', this.removeStagedField );\r\n\t\t\t// Listen to our event that fires just before a drawer is closed.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'before:closeDrawer', this.beforeCloseDrawer );\r\n\t\t},\r\n\r\n\t\tgetStagingCollection: function() {\r\n\t\t\treturn this.collection;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Add a field to our staging area\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param string type Type of field we're adding\r\n\t\t * @return tmpID\r\n\t\t */\r\n\t\taddStagedField: function( type, silent ) {\r\n\t\t\tvar silent = silent || false;\r\n\t\t\t// Get our type model from the string.\r\n\t\t\tvar fieldType = nfRadio.channel( 'fields' ).request( 'get:type', type );\r\n\t\t\t// Our tmp ID is a string with the time appended to make it unique.\r\n\t\t\tvar tmpID = 'nf-staged-field-' + jQuery.now();\r\n\t\t\t// Object that will be added to our staging collection.\r\n\t\t\tvar data = {\r\n\t\t\t\tid: tmpID,\r\n\t\t\t\t// i.e. firstname, textbox, etc.\r\n\t\t\t\tslug: fieldType.get( 'type' ),\r\n\t\t\t\t// i.e. First Name, Textbox, etc.\r\n\t\t\t\tnicename: fieldType.get( 'nicename' ),\r\n\t\t\t\t// i.e. calendar, envelope, etc.\r\n\t\t\t\ticon: fieldType.get( 'icon' )\r\n\t\t\t}\r\n\t\t\t// \r\n\t\t\tvar model = this.collection.add( data );\r\n\r\n\t\t\tif( ! silent ) nfRadio.channel( 'fields').trigger( 'add:stagedField', model );\r\n\r\n\t\t\treturn tmpID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Remove a field from staging\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \t\t\te \tEvent\r\n\t\t * @param Backbone.model \tmodel \tstaged field model to remove\r\n\t\t * @return void\r\n\t\t */\r\n\t\tremoveStagedField: function( e, model ) {\r\n\t\t\tthis.collection.remove( model );\r\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'remove:stagedField', model );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Adds our staged fields to the main fields sortable before the drawer is closed.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tbeforeCloseDrawer: function() {\r\n\t\t\tif ( 0 != this.collection.models.length ) { // Make sure that we have models\r\n\t\t\t\t// Get our field collection.\r\n\t\t\t\tvar fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\r\n\t\t\t\tvar fields = [];\r\n\t\t\t\t// Loop through our staging collection\r\n\t\t\t\t_.each( this.collection.models, function( model ) {\r\n\t\t\t\t\t// Get a tmp ID for our new field.\r\n\t\t\t\t\tvar tmpID = nfRadio.channel( 'fields' ).request( 'get:tmpID' );\r\n\t\t\t\t\t// Create an object that can be added as a model.\r\n\t\t\t\t\tvar tmpField = { id: tmpID, label: model.get( 'nicename' ), type: model.get( 'slug' ) };\r\n\t\t\t\t\t// Add our new field.\r\n\t\t\t\t\tvar newModel = nfRadio.channel( 'fields' ).request( 'add', tmpField, false );\r\n\t\t\t\t\t// Add our field addition to our change log.\r\n\t\t\t\t\tvar label = {\r\n\t\t\t\t\t\tobject: 'Field',\r\n\t\t\t\t\t\tlabel: newModel.get( 'label' ),\r\n\t\t\t\t\t\tchange: 'Added',\r\n\t\t\t\t\t\tdashicon: 'plus-alt'\r\n\t\t\t\t\t};\r\n\t\t\t\t\tvar data = {\r\n\t\t\t\t\t\tcollection: fieldCollection\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'addObject', newModel, null, label, data );\r\n\t\t\t\r\n\t\t\t\t} );\r\n\t\t\t\t// Trigger a reset on our field collection so that our view re-renders\r\n\t\t\t\tfieldCollection.trigger( 'reset', fieldCollection );\r\n\t\t\t\t// Empty the staging collection\r\n\t\t\t\tthis.collection.reset();\r\n\t\t\t}\r\n\t\t\t// Sort our fields.\r\n\t\t\tnfRadio.channel( 'fields' ).request( 'sort:fields', null, null, false );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Sort our staging area by the 'order' attribute.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tsortStagedFields: function() {\r\n\t\t\t// Get our staged fields sortable.\r\n\t\t\tvar sortableEl = nfRadio.channel( 'app' ).request( 'get:stagedFieldsEl' );\r\n\t\t\t// Get the current order using jQuery sortable. Will be an array of IDs: [tmp-blah, tmp-blah]\r\n\t\t\tvar order = jQuery( sortableEl ).sortable( 'toArray' );\r\n\t\t\t// Loop through our models\r\n\t\t\t_.each( this.collection.models, function( field ) {\r\n\t\t\t\t// Search our order array for this field.\r\n\t\t\t\tvar search = field.get( 'id' );\r\n\t\t\t\tvar pos = order.indexOf( search );\r\n\t\t\t\t// Update our staged field model with the new order.\r\n\t\t\t\tfield.set( 'order', pos );\r\n\t\t\t} );\r\n\t\t\t// Sort our staging collection.\r\n\t\t\tthis.collection.sort();\r\n\t\t},\r\n\r\n\t\tclearStagedFields: function() {\r\n\t\t\tthis.collection.reset();\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles actions related to our staged fields sortable.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - New Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/fields/stagingSortable',['models/fields/stagingCollection'], function( stagingCollection ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen to our field type draggables\r\n\t\t\t// this.listenTo( nfRadio.channel( 'drawer-addField' ), 'startDrag:type', this.addActiveClass );\r\n\t\t\t// this.listenTo( nfRadio.channel( 'drawer-addField' ), 'stopDrag:type', this.removeActiveClass );\r\n\t\t\t// Listen to our sortable events\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'receive:stagedFields', this.receiveStagedFields );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'over:stagedFields', this.overStagedFields );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'out:stagedFields', this.outStagedFields );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'start:stagedFields', this.startStagedFields );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'stop:stagedFields', this.stopStagedFields );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Change our dropped field type helper so that it matches the other items in our sortable.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \tui jQuery UI item\r\n\t\t * @return void\r\n\t\t */\r\n\t\treceiveStagedFields: function( ui ) {\r\n\t\t\tif( jQuery( ui.item ).hasClass( 'nf-field-type-draggable' ) ) {\r\n\t\t\t\tvar type = jQuery( ui.item ).data( 'id' );\r\n\t\t\t\tvar tmpID = nfRadio.channel( 'fields' ).request( 'add:stagedField', type );\r\n\t\t\t\tjQuery( ui.helper ).prop( 'id', tmpID );\r\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'sort:staging' );\r\n\t\t\t\tjQuery( ui.helper ).remove();\r\n\t\t\t\tnfRadio.channel( 'drawer-addField' ).trigger( 'drop:fieldType', type );\t\t\t\t\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Add an active class to our sortable when a field type item is dragged\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t */\r\n\t\taddActiveClass: function() {\r\n\t\t\tvar stagedFieldsEl = nfRadio.channel( 'app' ).request( 'get:stagedFieldsEl' );\r\n\t\t\tjQuery( stagedFieldsEl ).addClass( 'nf-droppable-active' );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Remove the active class from our sortable when the field type item is dropped.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tremoveActiveClass: function() {\r\n\t\t\tvar stagedFieldsEl = nfRadio.channel( 'app' ).request( 'get:stagedFieldsEl' );\r\n\t\t\tjQuery( stagedFieldsEl ).removeClass( 'nf-droppable-active' );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When the field type item is dragged over our sortable, we change the helper to match the sortable items.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \te event\r\n\t\t * @param Object \tui jQuery UI Element\r\n\t\t * @return void\r\n\t\t */\r\n\t\toverStagedFields: function( e, ui ) {\r\n\t\t\tif( jQuery( ui.item ).hasClass( 'nf-field-type-draggable' ) ) {\r\n\t\t\t\tvar type = jQuery( ui.item ).data( 'id' );\r\n\t\t\t\tvar fieldType = nfRadio.channel( 'fields' ).request( 'get:type', type );\r\n\t\t\t\tvar nicename = fieldType.get( 'nicename' );\r\n\t\t\t\tthis.currentHelper = ui.helper \r\n\t\t\t\tjQuery( ui.helper ).html( nicename + '<span class=\"dashicons dashicons-dismiss\"></span>' );\r\n\t\t\t\tjQuery( ui.helper ).removeClass( 'nf-field-type-button' ).addClass( 'nf-item-dock' ).css( { 'opacity': '0.8', 'width': '', 'height': '' } );\r\n\t\t\t\tvar sortableEl = nfRadio.channel( 'app' ).request( 'get:stagedFieldsEl' );\r\n\t\t\t\tif ( jQuery( sortableEl ).hasClass( 'ui-sortable' ) ) {\r\n\t\t\t\t\tjQuery( sortableEl ).addClass( 'nf-droppable-hover' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When a field type item is moved away from our sortable, we change the helper to its previous appearance\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \tui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\toutStagedFields: function( ui ) {\r\n\t\t\tif( jQuery( ui.item ).hasClass( 'nf-field-type-draggable' ) ) {\r\n\t\t\t\tvar helperClone = nfRadio.channel( 'drawer-addField' ).request( 'get:typeHelperClone' );\t\r\n\t\t\t\tjQuery( this.currentHelper ).html( jQuery( helperClone ).html() );\r\n\t\t\t\tjQuery( this.currentHelper ).removeClass( 'nf-item-dock' ).addClass( 'nf-field-type-button' );\r\n\t\t\t\tvar sortableEl = nfRadio.channel( 'app' ).request( 'get:stagedFieldsEl' );\r\n\t\t\t\tif ( jQuery( sortableEl ).hasClass( 'ui-sortable' ) ) {\r\n\t\t\t\t\tjQuery( sortableEl ).removeClass( 'nf-droppable-hover' );\r\n\t\t\t\t}\r\n\t\t\t}\t\t\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When a user starts to drag a sortable item, we need to set a few properties on the item and the helper.\r\n\t\t * These keep the original item in place while dragging and changes the opacity of the helper.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t ui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\tstartStagedFields: function( ui ) {\r\n\t\t\tjQuery( ui.item ).show();\r\n\t\t\tjQuery( ui.item ).css( { 'display': 'inline', 'opacity': '0.7' } );\r\n\t\t\tjQuery( ui.helper ).css( 'opacity', '0.5' );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we stop dragging a sortable item, remove our opacity setting and remove the helper item.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t ui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\tstopStagedFields: function( ui ) {\r\n\t\t\tjQuery( ui.item ).css( 'opacity', '' );\r\n\t\t\tjQuery( ui.helper ).remove();\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Filters our field type collection.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields - New Field Drawer\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/fields/filterTypes',['models/fields/typeSectionCollection'], function( fieldTypeSectionCollection ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Listen to our change filter event.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'change:filter', this.filterFieldTypes );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Filter our field types in the add new field drawer\r\n\t\t * \r\n\t\t * Takes a search string and finds any field types that match either the name or alias.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param string\t search \tstring being searched for\r\n\t\t * @param object \t e \tKeyup event\r\n\t\t * @return void\r\n\t\t */\r\n\t\tfilterFieldTypes: function( search, e ) {\r\n\t\t\t// Make sure that we aren't dealing with an empty string.\r\n\t\t\tif ( '' != jQuery.trim( search ) ) {\r\n \t\tvar filtered = [];\r\n \t\t/**\r\n \t\t * Call the function that actually filters our collection,\r\n \t\t * and then loop through our collection, adding each model to our filtered array.\r\n \t\t */\r\n \t\t_.each( this.filterCollection( search ), function( model ) {\r\n \t\t\tfiltered.push( model.get( 'id' ) );\r\n \t\t} );\r\n\r\n \t\t// Create a new Field Type Section collection with the filtered array.\r\n \t\tvar filteredSectionCollection = new fieldTypeSectionCollection( [\r\n\t\t\t\t{ \r\n\t\t\t\t\tid: 'filtered',\r\n\t\t\t\t\tnicename: 'Filtered Fields',\r\n\t\t\t\t\tfieldTypes: filtered\r\n\t\t\t\t}\r\n\t\t\t\t] );\r\n \r\n // Declare array of fields to hide.\r\n\t\t\t\tvar hiddenFields = nfRadio.channel( 'app' ).request( 'update:hiddenFields' ) || [];\r\n\t\t\t\thiddenFields = hiddenFields.concat([\r\n\t\t\t\t\t'product',\r\n\t\t\t\t\t'quantity',\r\n\t\t\t\t\t'shipping',\r\n\t\t\t\t\t'total'\r\n\t\t\t\t]);\r\n\r\n // Search our results of hidden fields.\r\n for ( var i = filteredSectionCollection.models[ 0 ].get( 'fieldTypes' ).length -1; i >= 0; i-- ) {\r\n var target = hiddenFields.indexOf( filteredSectionCollection.models[ 0 ].get( 'fieldTypes' )[ i ] );\r\n // If we find any...\r\n if ( -1 < target ) {\r\n // Remove them from the collection.\r\n filteredSectionCollection.models[ 0 ].get( 'fieldTypes' ).splice( i, 1 );\r\n }\r\n }\r\n\r\n \t\t// Request that our field types filter be applied, passing the collection we created above.\r\n \t\tnfRadio.channel( 'drawer' ).trigger( 'filter:fieldTypes', filteredSectionCollection );\r\n \t\t// If we've pressed the 'enter' key, add the field to staging and clear the filter.\r\n \t\tif ( 'undefined' != typeof e && e.addObject ) {\r\n \t\t\tif ( 0 < filtered.length ) {\r\n \t\t\t\tnfRadio.channel( 'fields' ).request( 'add:stagedField', filtered[0] );\r\n \t\t\t\tnfRadio.channel( 'drawer' ).request( 'clear:filter' );\r\n \t\t\t}\r\n \t\t}\r\n \t} else {\r\n \t\t// Clear our filter if the search text is empty.\r\n \t\tnfRadio.channel( 'drawer' ).trigger( 'clear:filter' );\r\n \t}\r\n },\r\n\r\n /**\r\n * Search our field type collection for the search string.\r\n * \r\n * @since 3.0\r\n * @param string\t search \tstring being searched for\r\n * @return backbone.collection\r\n */\r\n filterCollection: function( search ) {\r\n \tsearch = search.toLowerCase();\r\n \t// Get our list of field types\r\n \tvar collection = nfRadio.channel( 'fields' ).request( 'get:typeCollection' );\r\n \t/*\r\n \t * Backbone collections have a 'filter' method that loops through every model,\r\n \t * waiting for you to return true or false. If you return true, the model is kept.\r\n \t * If you return false, it's removed from the filtered result.\r\n \t */\r\n\t\t\tvar filtered = collection.filter( function( model ) {\r\n\t\t\t\tvar found = false;\r\n\t\t\t\t\r\n\t\t\t\t// If we match either the ID or nicename, return true.\r\n\t\t\t\tif ( model.get( 'type' ).toLowerCase().indexOf( search ) != -1 ) {\r\n\t\t\t\t\tfound = true;\r\n\t\t\t\t} else if ( model.get( 'nicename' ).toLowerCase().indexOf( search ) != -1 ) {\r\n\t\t\t\t\tfound = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t * TODO: Hashtag searching. Doesn't really do anything atm.\r\n\t\t\t\t */\r\n\t\t\t\tif ( model.get( 'tags' ) && 0 == search.indexOf( '#' ) ) {\r\n\t\t\t\t\t_.each( model.get( 'tags' ), function( tag ) {\r\n\t\t\t\t\t\tif ( search.replace( '#', '' ).length > 1 ) {\r\n\t\t\t\t\t\t\tif ( tag.toLowerCase().indexOf( search.replace( '#', '' ) ) != -1 ) {\r\n\t\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If we match any of the aliases, return true.\r\n\t\t\t\tif ( model.get( 'alias' ) ) {\r\n\t\t\t\t\t_.each( model.get( 'alias' ), function( alias ) {\r\n\t\t\t\t\t\tif ( alias.toLowerCase().indexOf( search ) != -1 ) {\r\n\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn found;\r\n\t\t\t} );\r\n\t\t\t// Return our filtered collection.\r\n\t\t\treturn filtered;\r\n }\r\n\t});\r\n\r\n\treturn controller;\r\n} );\ndefine( 'views/fields/preview/element',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-field-input',\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t\r\n\t\t\tvar type = this.model.get('type');\r\n\r\n\t\t\tthis.model.set('value', this.model.get('default'));\r\n\t\t\t\r\n\t\t\tif('date' == type && this.model.get('date_default')){\r\n\t\t\t\tvar format = this.model.get('date_format');\r\n\t\t\t\tif('default' == format || '' == format) format = this.convertDateFormat(nfAdmin.dateFormat);\r\n\t\t\t\tthis.model.set('value', moment().format(format) );\r\n\t\t\t}\r\n\r\n\t\t\tif('phone' == type) type = 'tel';\r\n\t\t\tif('spam' == type) type = 'input';\r\n\t\t\tif('date' == type) type = 'input';\r\n\t\t\tif('confirm' == type) type = 'input';\r\n\t\t\tif('password' == type) type = 'input';\r\n\t\t\tif('passwordconfirm' == type) type = 'input';\r\n\t\t\tif('quantity' == type) type = 'number';\r\n\t\t\tif('terms' == type) type = 'listcheckbox';\r\n\t\t\tif('liststate' == type) type = 'listselect';\r\n\t\t\tif('listcountry' == type) type = 'listselect';\r\n\t\t\tif('listmultiselect' == type) type = 'listselect';\r\n\t\t\tif('save' == type) type = 'submit';\r\n\r\n\t\t\tthis.template = '#tmpl-nf-field-' + type;\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tif(this.model.get('container_class').includes('two-col-list')) {\r\n\t\t\t\tjQuery(this.el).find('> ul').css('display', 'grid');\r\n\t\t\t\tjQuery(this.el).find('> ul').css('grid-template-columns', 'repeat(2, 1fr)');\r\n\t\t\t}\r\n\t\t\tif(this.model.get('container_class').includes('three-col-list')) {\r\n\t\t\t\tjQuery(this.el).find('> ul').css('display', 'grid');\r\n\t\t\t\tjQuery(this.el).find('> ul').css('grid-template-columns', 'repeat(3, 1fr)');\r\n\t\t\t}\r\n\t\t\tif(this.model.get('container_class').includes('four-col-list')) {\r\n\t\t\t\tjQuery(this.el).find('> ul').css('display', 'grid');\r\n\t\t\t\tjQuery(this.el).find('> ul').css('grid-template-columns', 'repeat(4, 1fr)');\r\n\t\t\t}\r\n\t\t},\r\n \r\n\t\ttemplateHelpers: function () {\r\n\t \treturn {\r\n\t \t\trenderClasses: function() {\r\n\t \t\t\t// ...\r\n },\r\n renderPlaceholder: function() {\r\n if('undefined' == typeof this.placeholder) return;\r\n\t\t\t\t\treturn 'placeholder=\"' + jQuery.trim( this.placeholder ) + '\"';\r\n },\r\n maybeDisabled: function() {\r\n if('undefined' == typeof this.disable_input) return;\r\n if(!this.disable_input) return;\r\n return 'disabled=\"disabled\"';\r\n },\r\n maybeRequired: function() {\r\n\t\t\t\t\t// ...\r\n\t\t\t\t},\r\n\t\t\t\tmaybeInputLimit: function() {\r\n\t\t\t\t\t// ...\r\n\t\t\t\t},\r\n\t\t\t\tmaybeDisableAutocomplete: function() {\r\n\t\t\t\t\t// ..\r\n\t\t\t\t},\r\n\t\t\t\tmaybeChecked: function() {\r\n\t\t\t\t\tif('checked' == this.default_value) return ' checked=\"checked\"';\r\n\t\t\t\t},\r\n\t\t\t\trenderOptions: function() {\r\n\t\t\t\t\tswitch(this.type) {\r\n\t\t\t\t\t\tcase 'terms':\r\n\r\n\t\t\t\t\t\t\tif( ! this.taxonomy ){\r\n\t\t\t\t\t\t\t\treturn '(No taxonomy selected)';\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar taxonomyTerms = fieldTypeData.find(function(typeData){\r\n\t\t\t\t\t\t\t\treturn 'terms' == typeData.id;\r\n\t\t\t\t\t\t\t}).settingGroups.find(function(settingGroup){\r\n\t\t\t\t\t\t\t\treturn 'primary' == settingGroup.id;\r\n\t\t\t\t\t\t\t}).settings.find(function(setting){\r\n\t\t\t\t\t\t\t\treturn 'taxonomy_terms' == setting.name;\r\n\t\t\t\t\t\t\t}).settings;\r\n\r\n\t\t\t\t\t\t\tvar attributes = Object.keys(this);\r\n\t\t\t\t\t\t\tvar enabledTaxonomyTerms = attributes.filter(function(attribute){\r\n\t\t\t\t\t\t\t\treturn 0 == attribute.indexOf('taxonomy_term_') && this[attribute];\r\n\t\t\t\t\t\t\t}.bind(this));\r\n\r\n\t\t\t\t\t\t\tif(0 == enabledTaxonomyTerms.length) {\r\n\t\t\t\t\t\t\t\treturn '(No available terms selected)';\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treturn enabledTaxonomyTerms.reduce(function(html, enabledTaxonomyTerm) {\r\n\t\t\t\t\t\t\t\tvar term = taxonomyTerms.find(function(terms){\r\n\t\t\t\t\t\t\t\t\treturn enabledTaxonomyTerm == terms.name;\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tif( 'undefined' == typeof term ) return html;\r\n\t\t\t\t\t\t\t\treturn html += '<li><input type=\"checkbox\"><div>' + term.label + '</div></li>';\r\n\t\t\t\t\t\t\t}.bind(this), '');\r\n\t\t\t\t\t\tcase 'liststate':\r\n\t\t\t\t\t\tcase 'listselect':\r\n\r\n\t\t\t\t\t\t\t// Check if there are any options.\r\n\t\t\t\t\t\t\tif(0 == this.options.models.length) return '';\r\n\r\n\t\t\t\t\t\t\t// Filter by :selected\" options.\r\n\t\t\t\t\t\t\tvar options = this.options.models.filter(function(option){\r\n\t\t\t\t\t\t\t\treturn option.get('selected');\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t// If no option set as \"selected\", then reset the previous filter.\r\n\t\t\t\t\t\t\tif(0 == options.length) options = this.options.models;\r\n\r\n\t\t\t\t\t\t\t// Set the first option to display in the field preview.\r\n\t\t\t\t\t\t\treturn '<option>' + options[0].get('label') + '</option>';\r\n\t\t\t\t\t\tcase 'listmultiselect':\r\n\t\t\t\t\t\t\treturn this.options.models.reduce(function(html, option) {\r\n\t\t\t\t\t\t\t\tvar selected = (option.get('selected')) ? ' selected=\"selected\"' : '';\r\n\t\t\t\t\t\t\t\treturn html += '<option' + selected + '>' + option.get('label') + '</option>';\r\n\t\t\t\t\t\t\t}, '');\r\n\t\t\t\t\t\tcase 'listcheckbox':\r\n\t\t\t\t\t\t\treturn this.options.models.reduce(function(html, option) {\r\n\t\t\t\t\t\t\t\tvar checked = (option.get('selected')) ? ' checked=\"checked\"' : '';\r\n\t\t\t\t\t\t\t\treturn html += '<li><input type=\"checkbox\"' + checked + '><div>' + option.get('label') + '</div></li>';\r\n\t\t\t\t\t\t\t}, '');\r\n\t\t\t\t\t\tcase 'listradio':\r\n\t\t\t\t\t\t\tvar checked = false; // External flag to only select one radio item.\r\n\t\t\t\t\t\t\treturn this.options.models.reduce(function(html, option) {\r\n\t\t\t\t\t\t\t\tchecked = (option.get('selected') && !checked) ? ' checked=\"checked\"' : '';\r\n\t\t\t\t\t\t\t\treturn html += '<li><input type=\"radio\"' + checked + '><div>' + option.get('label') + '</div></li>';\r\n\t\t\t\t\t\t\t}, '');\r\n\t\t\t\t\t\tcase 'listcountry':\r\n\t\t\t\t\t\t\tvar defaultValue = this.default;\r\n\t\t\t\t\t\t\tvar defaultOption = window.fieldTypeData.find(function(data) {\r\n\t\t\t\t\t\t\t\treturn 'listcountry' == data.id;\r\n\t\t\t\t\t\t\t}).settingGroups.find(function(group){\r\n\t\t\t\t\t\t\t\treturn 'primary' == group.id;\r\n\t\t\t\t\t\t\t}).settings.find(function(setting){\r\n\t\t\t\t\t\t\t\treturn 'default' == setting.name;\r\n\t\t\t\t\t\t\t}).options.find(function(option) {\r\n\t\t\t\t\t\t\t\treturn defaultValue == option.value;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tvar optionLabel = ('undefined' !== typeof defaultOption ) ? defaultOption.label : '--';\r\n\t\t\t\t\t\t\treturn '<option>' + optionLabel + '</option>';\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\trenderOtherAttributes: function() {\r\n\t\t\t\t\tvar attributes = [];\r\n\t\t\t\t\tif('listmultiselect' == this.type) {\r\n\t\t\t\t\t\tattributes.push('multiple');\r\n\r\n\t\t\t\t\t\tvar multi_size = this.multi_size || '5';\r\n\t\t\t\t\t\tattributes.push('size=\"' + multi_size + '\"');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn attributes.join(' ');\r\n\t\t\t\t},\r\n\t\t\t\trenderProduct: function() {\r\n\t\t\t\t\t// ...\r\n\t\t\t\t},\r\n\t\t\t\trenderNumberDefault: function() {\r\n\t\t\t\t\treturn this.value;\r\n\t\t\t\t},\r\n\t\t\t\trenderCurrencyFormatting: function() {\r\n\t\t\t\t\t// ...\r\n\t\t\t\t},\r\n\t\t\t\trenderRatings: function() {\r\n\t\t\t\t\tvar ratingOutput = '';\r\n\t\t\t\t\tfor (var i = 0; i < this.number_of_stars; i++) {\r\n\t\t\t\t\t\tratingOutput += '<i class=\"fa fa-star\" aria-hidden=\"true\"></i>&nbsp;';\r\n\t\t\t\t\t }\r\n\t\t\t\t\treturn ratingOutput;\r\n\t\t\t\t}\r\n }\r\n\t\t},\r\n\t\t\r\n convertDateFormat: function( dateFormat ) {\r\n // http://php.net/manual/en/function.date.php\r\n // https://github.com/dbushell/Pikaday/blob/master/README.md#formatting\r\n // Note: Be careful not to add overriding replacements. Order is important here.\r\n\r\n /** Day */\r\n dateFormat = dateFormat.replace( 'D', 'ddd' ); // @todo Ordering issue?\r\n dateFormat = dateFormat.replace( 'd', 'DD' );\r\n dateFormat = dateFormat.replace( 'l', 'dddd' );\r\n dateFormat = dateFormat.replace( 'j', 'D' );\r\n dateFormat = dateFormat.replace( 'N', '' ); // Not Supported\r\n dateFormat = dateFormat.replace( 'S', '' ); // Not Supported\r\n dateFormat = dateFormat.replace( 'w', 'd' );\r\n dateFormat = dateFormat.replace( 'z', '' ); // Not Supported\r\n\r\n /** Week */\r\n dateFormat = dateFormat.replace( 'W', 'W' );\r\n\r\n /** Month */\r\n dateFormat = dateFormat.replace( 'M', 'MMM' ); // \"M\" before \"F\" or \"m\" to avoid overriding.\r\n dateFormat = dateFormat.replace( 'F', 'MMMM' );\r\n dateFormat = dateFormat.replace( 'm', 'MM' );\r\n dateFormat = dateFormat.replace( 'n', 'M' );\r\n dateFormat = dateFormat.replace( 't', '' ); // Not Supported\r\n\r\n // Year\r\n dateFormat = dateFormat.replace( 'L', '' ); // Not Supported\r\n dateFormat = dateFormat.replace( 'o', 'YYYY' );\r\n dateFormat = dateFormat.replace( 'Y', 'YYYY' );\r\n dateFormat = dateFormat.replace( 'y', 'YY' );\r\n\r\n // Time - Not supported\r\n dateFormat = dateFormat.replace( 'a', '' );\r\n dateFormat = dateFormat.replace( 'A', '' );\r\n dateFormat = dateFormat.replace( 'B', '' );\r\n dateFormat = dateFormat.replace( 'g', '' );\r\n dateFormat = dateFormat.replace( 'G', '' );\r\n dateFormat = dateFormat.replace( 'h', '' );\r\n dateFormat = dateFormat.replace( 'H', '' );\r\n dateFormat = dateFormat.replace( 'i', '' );\r\n dateFormat = dateFormat.replace( 's', '' );\r\n dateFormat = dateFormat.replace( 'u', '' );\r\n dateFormat = dateFormat.replace( 'v', '' );\r\n\r\n // Timezone - Not supported\r\n dateFormat = dateFormat.replace( 'e', '' );\r\n dateFormat = dateFormat.replace( 'I', '' );\r\n dateFormat = dateFormat.replace( 'O', '' );\r\n dateFormat = dateFormat.replace( 'P', '' );\r\n dateFormat = dateFormat.replace( 'T', '' );\r\n dateFormat = dateFormat.replace( 'Z', '' );\r\n\r\n // Full Date/Time - Not Supported\r\n dateFormat = dateFormat.replace( 'c', '' );\r\n dateFormat = dateFormat.replace( 'r', '' );\r\n dateFormat = dateFormat.replace( 'u', '' );\r\n\r\n return dateFormat;\r\n }\r\n\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * This is a copy of the 'views/fields/mainContentEmpty.js' file.\r\n * It is also the file that handles dropping new field types on our repeater field.\r\n * \r\n */\r\n\r\ndefine( 'views/fields/preview/repeaterElementEmpty',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-repeater-content-fields-empty',\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\tthis.repeaterFieldModel = data.repeaterFieldModel;\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tjQuery( this.el ).parent().removeClass( 'nf-fields-empty-droppable' ).droppable( 'destroy' );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\t\t},\r\n\r\n\t\tonShow: function() {\r\n\t\t\tif ( jQuery( this.el ).parent().hasClass( 'ui-sortable' ) ) {\r\n\t\t\t\tjQuery( this.el ).parent().sortable( 'destroy' );\r\n\t\t\t}\r\n\t\t\tjQuery( this.el ).parent().addClass( 'nf-fields-empty-droppable' );\r\n\t\t\tlet that = this;\r\n\t\t\tjQuery( this.el ).parent().droppable( {\r\n\t\t\t\taccept: function( draggable ) {\r\n\t\t\t\t\tif ( jQuery( draggable ).hasClass( 'nf-stage' ) || jQuery( draggable ).hasClass( 'nf-field-type-button' ) ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tactiveClass: 'nf-droppable-active',\r\n\t\t\t\thoverClass: 'nf-droppable-hover',\r\n\t\t\t\ttolerance: 'pointer',\r\n\r\n\t\t\t\tover: function( e, ui ) {\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tui.item = ui.draggable;\r\n\t\t\t\t\tjQuery(ui.item).addClass(\"nf-over-repeater\");\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'over:fieldsSortable', ui );\r\n\t\t\t\t},\r\n\t\t\t\tout: function( e, ui ) {\r\n\t\t\t\t\r\n\t\t\t\t\tui.item = ui.draggable;\r\n\t\t\t\t\tjQuery(ui.item).removeClass(\"nf-over-repeater\");\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'out:fieldsSortable', ui );\r\n\t\t\t\t},\r\n\t\t\t\t/**\r\n\t\t\t\t * Handles the dropping of items into our EMPTY repeater field.\r\n\t\t\t\t * \r\n\t\t\t\t */\r\n\t\t\t\tdrop: function( e, ui ) {\r\n\t\t\t\t\tui.item = null != ui.item ? ui.item : ui.draggable;\r\n\t\t\t\t\tnfRadio.channel( 'fields-repeater' ).request( 'add:childField', ui, that, e );\r\n\t\t\t\t},\r\n\t\t\t} );\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Collection View that outputs our repeater field collection to the screen.\r\n */\r\ndefine( 'views/fields/preview/repeaterElementCollection',[ 'views/fields/preview/repeaterElementEmpty' ], function( emptyView ) {\r\n\tvar view = Marionette.CollectionView.extend( {\r\n\t\ttagName: 'div',\r\n\t\temptyView: emptyView,\r\n\r\n\t\tgetChildView: function() {\r\n\t\t\tlet view = nfRadio.channel( 'views' ).request( 'get:fieldItem' );\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\tthis.emptyViewOptions = {\r\n\t\t\t\trepeaterFieldModel: data.repeaterFieldModel,\r\n\t\t\t};\r\n\t\t\tthis.repeaterFieldModel = data.repeaterFieldModel;\r\n\r\n\t\t\tnfRadio.channel( 'fields-repeater' ).reply( 'init:sortable', this.initSortable, this );\r\n\t\t\tnfRadio.channel( 'fields-repeater' ).reply( 'get:sortableEl', this.getSortableEl, this );\r\n\t\t\tnfRadio.channel( 'fields-repeater' ).reply( 'get:repeaterFieldsCollection', this.getRepeaterFieldsCollection, this );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tif ( this.collection.models.length > 0 ) {\r\n\t\t\t\tjQuery( this.el ).addClass( 'nf-field-type-droppable' );\r\n\t\t\t\tvar that = this;\r\n\t\t\t\tthis.initSortable();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * This sortable is a copy with modifications of the main field list sortable.\r\n\t\t * \r\n\t\t * @since version\r\n\t\t * @return {[type]} [description]\r\n\t\t */\r\n\t\tinitSortable: function() {\r\n\t\t\t// If the sortable has already been instantiated, return early.\r\n\t\t\tif ( 'undefined' != typeof jQuery( this.el ).sortable( 'instance' ) ) return false;\r\n\r\n\t\t\tjQuery( this.el ).addClass( 'nf-field-type-droppable' ).addClass( 'nf-fields-sortable' );\r\n\r\n\t\t\tlet that = this;\r\n\t\t\tjQuery( this.el ).sortable( {\r\n\t\t\t\tcontainment: 'parent',\r\n\t\t\t\thelper: 'clone',\r\n\t\t\t\tcancel: '.nf-item-controls',\r\n\t\t\t\tplaceholder: 'nf-fields-sortable-placeholder',\r\n\t\t\t\topacity: 0.95,\r\n\t\t\t\tgrid: [ 5, 5 ],\r\n\t\t\t\tappendTo: '#nf-main',\r\n\t\t\t\tscrollSensitivity: 10,\r\n\t\t\t\t//connectWith would allow drag and drop between fields already in the builder and the repeatable fieldset ( this is currently an issue until we deal with existing data stored)\r\n\t\t\t\t//connectWith: '.nf-fields-sortable', \r\n\r\n\t\t\t\treceive: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'fields-repeater' ).request( 'receive:fields', ui, that, e );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tover: function( e, ui ) {\r\n\t\t\t\t\tjQuery(ui.item).addClass(\"nf-over-repeater\");\r\n\t\t\t\t\tif ( ui.item.dropping ) return;\r\n\t\t\t\t\tnfRadio.channel( 'fields-repeater' ).request( 'over:repeaterField', ui, that, e );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tout: function( e, ui ) {\r\n\t\t\t\t\tjQuery(ui.item).removeClass(\"nf-over-repeater\");\r\n\t\t\t\t\tif ( ui.item.dropping ) return;\r\n\t\t\t\t\tnfRadio.channel( 'fields-repeater' ).request( 'out:repeaterField', ui, that, e );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tstart: function( e, ui ) {\r\n\t\t\t\t\tif ( ui.item.dropping ) return;\r\n\t\t\t\t\tnfRadio.channel( 'fields-repeater' ).request( 'start:repeaterField', ui, that, e );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tremove: function( e, ui ) {\r\n\t\t\t\t\t// The field is removed from repeater Fields collection and a new one is created for main Fields collection from controllers/fields/sortable/js\r\n\t\t\t\t\tlet droppedFieldID = jQuery( ui.item ).data( 'id' );\r\n\t\t\t\t\tlet collection = that.repeaterFieldModel.get( 'fields' );\r\n\t\t\t\t\tlet droppedFieldModel = collection.get( droppedFieldID );\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Remove the field from the repeater field collection making sure we alert the user the field data is being deleted\r\n\t\t\t\t\tnfRadio.channel( 'app' ).trigger( 'click:delete', e, droppedFieldModel );\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t// When we update the sort order of our repeater field children, run our sort function.\r\n\t\t\t\tupdate: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'fields-repeater' ).request( 'update:repeaterField', ui, that, e );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tstop: function( e, ui ) {\r\n\t\t\t\t\tif ( ui.item.dropping ) return;\r\n\t\t\t\t\tnfRadio.channel( 'fields-repeater' ).request( 'stop:repeaterField', ui, that, e );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tdestroySortable: function() {\r\n\t\t\tjQuery( this.el ).sortable( 'destroy' );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we add our first child, we need to init the sortable.\r\n\t\t * \r\n\t\t * @since version\r\n\t\t * @param {[type]} childView [description]\r\n\t\t * @return {[type]} [description]\r\n\t\t */\r\n\t\tonAddChild: function( childView ) {\r\n\t\t\tif ( nfRadio.channel( 'fields' ).request( 'get:adding' ) ) {\r\n\t\t\t\tchildView.$el.hide().show( 'clip' );\r\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'set:adding', false);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Get Element holding child fields\r\n\t\t */\r\n\t\tgetSortableEl: function() {\r\n\t\t\treturn this.el;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Getter for the repeater Fields collection\r\n\t\t */\r\n\t\tgetRepeaterFieldsCollection: function() {\r\n\t\t\treturn this.repeaterFieldModel.get( 'fields' );\r\n\t\t}\r\n\t\t\r\n\t} );\r\n\r\n\treturn view;\r\n} );\r\n\ndefine( 'views/fields/preview/repeaterElementLayout',[ 'views/fields/preview/repeaterElementCollection' ], function( previewRepeaterElementCollectionView ) {\r\n\tvar view = Marionette.LayoutView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-field-repeater',\r\n\r\n\t\tregions: {\r\n\t\t\tfields: '.nf-repeater-fieldsets',\r\n\t\t},\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\tthis.collection = data.collection;\r\n\t\t\tthis.model = data.model;\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\t// Populate the fields region with our collection view.\r\n\t\t\tthis.fields.show( new previewRepeaterElementCollectionView( { collection: this.collection, repeaterFieldModel: this.model } ) );\r\n\t\t},\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/fields/preview/label',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-field-label',\r\n\r\n\t\tinitialize: function( data ) {\r\n\t\t\t// this.$el = jQuery( data.itemView.el ).find( '.nf-realistic-field--label' );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\t// ...\r\n\t\t\t// console.log( jQuery( this.$el ) );\r\n\t\t},\r\n \r\n\t\ttemplateHelpers: function () {\r\n\t \treturn {\r\n\t \t\trenderLabelClasses: function() {\r\n // ...\r\n },\r\n maybeRenderHelp: function() {\r\n // ...\r\n }\r\n }\r\n }\r\n\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/fields/fieldItem',['views/app/itemControls', 'views/fields/preview/element', 'views/fields/preview/repeaterElementLayout', 'views/fields/preview/label'], function( itemControlsView, previewElementView, previewRepeaterElementView, previewLabelView ) {\r\n\tvar view = Marionette.LayoutView.extend({\r\n\t\ttagName: 'div',\r\n\t\ttemplate: '#tmpl-nf-main-content-field',\r\n\t\tdoingShortcut: false,\r\n\r\n\t\tregions: {\r\n\t\t\titemControls: '.nf-item-controls',\r\n\t\t\tpreviewLabel: '.nf-realistic-field--label',\r\n\t\t\tpreviewElement: '.nf-realistic-field--element',\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tthis.model.on( 'change:editActive', this.render, this );\r\n\t\t\tthis.model.on( 'change:label', this.render, this );\r\n\t\t\tthis.model.on( 'change:required', this.render, this );\r\n\t\t\tthis.model.on( 'change:id', this.render, this );\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tthis.model.off( 'change:editActive', this.render );\r\n\t\t\tthis.model.off( 'change:label', this.render );\r\n\t\t\tthis.model.off( 'change:required', this.render );\r\n\t\t\tthis.model.off( 'change:id', this.render );\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\tthis.$el = this.$el.children();\r\n\t\t\tthis.$el.unwrap();\r\n\t\t\tthis.setElement( this.$el );\r\n\r\n\t\t\tthis.itemControls.show( new itemControlsView( { model: this.model } ) );\r\n\t\t\tjQuery( this.el ).disableSelection();\r\n\r\n\t\t\tvar type = this.model.get('type');\r\n\t\t\tif('phone' == type) type = 'tel';\r\n\t\t\tif('spam' == type) type = 'input';\r\n\t\t\tif('date' == type) type = 'input';\r\n\t\t\tif('confirm' == type) type = 'input';\r\n\t\t\tif('password' == type) type = 'input';\r\n\t\t\tif('passwordconfirm' == type) type = 'input';\r\n\t\t\tif('quantity' == type) type = 'number';\r\n\t\t\tif('terms' == type) type = 'listcheckbox';\r\n\t\t\tif('liststate' == type) type = 'listselect';\r\n\t\t\tif('listcountry' == type) type = 'listselect';\r\n\t\t\tif('listmultiselect' == type) type = 'listselect';\r\n\t\t\tif('save' == type) type = 'submit';\r\n\r\n\t\t\t// Only show preview / realisitic fields when not `html`, `hidden`, `note`, or `recaptcha`.\r\n\t\t\tvar previewFieldTypeBlacklist = ['html', 'hidden', 'note', 'recaptcha'];\r\n\t\t\tvar isFieldTypeTemplateAvailable = jQuery('#tmpl-nf-field-' + type).length;\r\n\t\t\tif(-1 == previewFieldTypeBlacklist.indexOf(this.model.get('type')) && isFieldTypeTemplateAvailable) {\r\n\t\t\t\t\r\n\t\t\t\t// If we have a repeater field, then we have to load a specific collection view.\r\n\t\t\t\tif ( 'repeater' == type ) {\r\n\t\t\t\t\tthis.previewElement.show( new previewRepeaterElementView( { collection: this.model.get( 'fields' ), model: this.model } ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.previewElement.show( new previewElementView( { model: this.model } ) );\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// Only show the preview label when not `submit`, or `hr`.\r\n\t\t\t\tvar showLabelFieldTypeBlacklist = ['submit', 'save', 'hr'];\r\n\t\t\t\tif(-1 == showLabelFieldTypeBlacklist.indexOf(this.model.get('type'))) {\r\n\t\t\t\t\tthis.previewLabel.show( new previewLabelView( { model: this.model, itemView: this } ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tjQuery( this.el ).find('.nf-placeholder-label').hide();\r\n\t\t\t}\r\n\r\n\t\t\tif ( nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\tjQuery( this.el ).on( 'taphold', function( e, touch ) {\r\n\t\t\t\t\tif ( ! jQuery( e.target ).hasClass( 'nf-edit-settings' ) ) {\r\n\t\t\t\t\t\tjQuery( this ).addClass( 'ui-sortable-helper drag-selected' );\r\n\t\t\t\t\t\tjQuery( this ).ClassyWiggle( 'start', { degrees: ['.65', '1', '.65', '0', '-.65', '-1', '-.65', '0'], delay: 50 } );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\r\n\t\t\tnfRadio.channel( 'fields-' + type ).trigger( 'render:itemView', this );\r\n\t\t},\r\n\r\n\t\ttemplateHelpers: function () {\r\n\t \treturn {\r\n\t \t\trenderClasses: function() {\r\n\t \t\t\tvar classes = 'nf-field-wrap ' + this.type;\r\n\t \t\t\tif ( this.editActive ) {\r\n\t \t\t\t\tclasses += ' active';\r\n\t \t\t\t}\r\n\t \t\t\treturn classes;\r\n\t \t\t},\r\n\t \t\trenderRequired: function() {\r\n\t \t\t\tif ( 1 == this.required ) {\r\n\t \t\t\t\treturn '<span class=\"required\">*</span>';\r\n\t \t\t\t} else {\r\n\t \t\t\t\treturn '';\r\n\t \t\t\t}\r\n\t \t\t},\r\n\t \t\tgetFieldID: function() {\r\n\t\t\t\t\tif ( jQuery.isNumeric( this.id ) ) {\r\n\t\t\t\t\t\treturn 'field-' + this.id;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn this.id;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\trenderIcon: function() {\r\n\t \t\t\tvar type, icon;\r\n\r\n\t\t\t\t\ttype = nfRadio.channel( 'fields' ).request( 'get:type', this.type );\r\n\r\n\t\t\t\t\ticon = document.createElement( 'span' );\r\n\t\t\t\t\ticon.classList.add( 'fa', 'fa-' + type.get( 'icon' ) );\r\n\r\n\t\t\t\t\treturn icon.outerHTML;\r\n\t\t\t\t},\r\n\t\t\t\tlabelPosition: function() {\r\n\t\t\t\t\treturn this.label_pos;\r\n\t\t\t\t},\r\n\t\t\t\trenderDescriptionText: function() {\r\n\t\t\t\t\treturn jQuery.trim(this.desc_text);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'mouseover .nf-item-control': 'mouseoverItemControl',\r\n\t\t\t'mousedown': 'maybeShortcut',\r\n\t\t\t'click': 'maybeClickEdit',\r\n\t\t\t'singletap': 'maybeTapEdit',\r\n\t\t\t'swipeleft': 'swipeLeft',\r\n\t\t\t'swiperight': 'swipeRight',\r\n\t\t\t'tapend': 'tapend'\r\n\t\t},\r\n\r\n\t\tmaybeClickEdit: function( e ) {\r\n\t\t\tif ( this.doingShortcut ) {\r\n\t\t\t\tthis.doingShortcut = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif ( ( jQuery( e.target ).parent().hasClass( 'nf-fields-sortable' ) || jQuery( e.target ).parent().hasClass( 'nf-field-wrap' ) || jQuery( e.target ).hasClass( 'nf-field-wrap' ) ) && ! nfRadio.channel( 'app' ).request( 'is:mobile' ) ) {\r\n\t\t\t\tjQuery( ':focus' ).blur();\r\n\t\t\t\tnfRadio.channel( 'app' ).trigger( 'click:edit', e, this.model );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tmaybeShortcut: function( e ) {\r\n\t\t\tvar keys = nfRadio.channel( 'app' ).request( 'get:keydown' );\r\n\t\t\t/*\r\n\t\t\t * If the shift key isn't held down, return.\r\n\t\t\t */\r\n\t\t\tif ( -1 == keys.indexOf( 16 ) ) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\t/*\r\n\t\t\t * If we are pressing D, delete this field.\r\n\t\t\t */\r\n\t\t\tif ( -1 != keys.indexOf( 68 ) ) {\r\n\t\t\t\tnfRadio.channel( 'app' ).trigger( 'click:delete', e, this.model );\r\n\t\t\t\tthis.doingShortcut = true;\r\n\t\t\t\treturn false;\r\n\t\t\t} else if ( -1 != keys.indexOf( 67 ) ) {\r\n\t\t\t\tthis.doingShortcut = true;\r\n\t\t\t\tnfRadio.channel( 'app' ).trigger( 'click:duplicate', e, this.model );\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tmaybeTapEdit: function( e ) {\r\n\t\t\tif ( jQuery( e.target ).parent().hasClass( 'nf-fields-sortable' ) ) {\r\n\t\t\t\tnfRadio.channel( 'app' ).trigger( 'click:edit', e, this.model );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tswipeLeft: function( e, touch ) {\r\n\t\t\tjQuery( touch.startEvnt.target ).closest( 'div' ).find( '.nf-item-duplicate' ).show();\r\n\t\t\tjQuery( touch.startEvnt.target ).closest( 'div' ).find( '.nf-item-delete' ).show();\r\n\t\t},\r\n\r\n\t\tswipeRight: function( e, touch ) {\r\n\t\t\tjQuery( touch.startEvnt.target ).closest( 'div' ).find( '.nf-item-duplicate' ).hide();\r\n\t\t\tjQuery( touch.startEvnt.target ).closest( 'div' ).find( '.nf-item-delete' ).hide();\r\n\t\t},\r\n\r\n\t\ttapend: function( e, touch ) {\r\n\t\t\tjQuery( this.el ).ClassyWiggle( 'stop' );\r\n\t\t\tjQuery( this.el ).removeClass( 'ui-sortable-helper drag-selected' );\r\n\t\t},\r\n\r\n\t\tremove: function(){\r\n\t\t\tif ( nfRadio.channel( 'fields' ).request( 'get:removing' ) ) {\r\n\t\t\t\tthis.$el.hide( 'clip', function(){\r\n\t\t\t\t\tjQuery( this ).remove();\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.$el.remove();\r\n\t\t\t}\r\n\r\n\t\t\tnfRadio.channel( 'fields' ).request( 'set:removing', false );\r\n\t\t},\r\n\r\n\t\tmouseoverItemControl: function( e ) {\r\n\t\t\tjQuery( this.el ).find( '.nf-item-control' ).css( 'display', '' );\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn view;\r\n} );\n/**\r\n * Handles all the actions/functions related to our main field sortable.\r\n * All of the actual logic for our sortable is held here; the view just calls it using nfRadio.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/fields/sortable',['models/fields/fieldModel', 'views/fields/fieldItem'], function(FieldModel, FieldItemView) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// When our field type buttons are dragged, we need to add or remove the active (blue) class.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'startDrag:type', this.addActiveClass );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'stopDrag:type', this.removeActiveClass );\r\n\t\t\t// When our field staging is dragged, we need to add or remove the active (blue) class.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'startDrag:fieldStaging', this.addActiveClass );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'drawer-addField' ), 'stopDrag:fieldStaging', this.removeActiveClass );\r\n\t\t\t\r\n\t\t\t/*\r\n\t\t\t * Handles all the events fired by our sortable:\r\n\t\t\t * receive - dropped from type button or staging\r\n\t\t\t * over - dragging within or over the sortable\r\n\t\t\t * out - leaving the sortable\r\n\t\t\t * stop - stopped sorting/dragging\r\n\t\t\t * start - started sorting/dragging\r\n\t\t\t * update - stopped sorting/dragging and order has changed\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'receive:fieldsSortable', this.receiveFieldsSortable, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'over:fieldsSortable', this.overfieldsSortable, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'out:fieldsSortable', this.outFieldsSortable, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'stop:fieldsSortable', this.stopFieldsSortable, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'start:fieldsSortable', this.startFieldsSortable, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'update:fieldsSortable', this.updateFieldsSortable, this );\r\n\t\t\tnfRadio.channel( 'app' ).reply( 'receive:repeaterField', this.receiveRepeaterField, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Add the active class to our sortable so that its border is blue.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\taddActiveClass: function() {\r\n\t\t\tvar sortableEl = nfRadio.channel( 'fields' ).request( 'get:sortableEl' );\r\n\t\t\tjQuery( sortableEl ).addClass( 'nf-droppable-active' );\t\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Remove the active class from our sortable\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tremoveActiveClass: function() {\r\n\t\t\tvar sortableEl = nfRadio.channel( 'fields' ).request( 'get:sortableEl' );\r\n\t\t\tjQuery( sortableEl ).removeClass( 'nf-droppable-active' );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Fires when we drop a field type button or staging onto our sortable\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \tui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\treceiveFieldsSortable: function( ui ) {\r\n\t\t\t//Check for fields coming from a repeater field\r\n\t\t\tui = this.receiveRepeaterField(ui);\r\n\t\t\t/*\r\n\t\t\t * We have to do different things if we're dealing with a field type button or staging area.\r\n\t\t\t */ \r\n\t\t\tif( jQuery( ui.item ).hasClass( 'nf-field-type-draggable' ) ) { // Field Type Button\r\n\t\t\t\t// Get our type string\r\n\t\t\t\tvar type = jQuery( ui.item ).data( 'id' );\r\n\t\t\t\t// Add a field (returns the tmp ID )\r\n\t\t\t\tvar tmpID = this.addField( type, false );\r\n\t\t\t\t/*\r\n\t\t\t\t * Update our helper id to the tmpID.\r\n\t\t\t\t * We do this so that when we sort, we have the proper ID.\r\n\t\t\t\t */ \r\n\t\t\t\tjQuery( ui.helper ).prop( 'id', tmpID );\r\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'sort:fields' );\r\n\t\t\t\t// Remove the helper. Gets rid of a weird type artifact.\r\n\t\t\t\tjQuery( ui.helper ).remove();\r\n\t\t\t\t// Trigger a drop field type event.\r\n\t\t\t\tnfRadio.channel( 'fields' ).trigger( 'drop:fieldType', type, tmpID );\r\n\r\n\t\t\t} else if ( jQuery( ui.item ).hasClass( 'nf-stage' ) ) { // Staging\r\n\t\t\t\t// Later, we want to reference 'this' context, so we define it here.\r\n\t\t\t\tvar that = this;\r\n\t\t\t\t// Make sure that our staged fields are sorted properly.\t\r\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'sort:staging' );\r\n\t\t\t\t// Grab our staged fields.\r\n\t\t\t\tvar stagedFields = nfRadio.channel( 'fields' ).request( 'get:staging' );\r\n\t\t\t\t// Get our current field order.\r\n\t\t\t\tvar sortableEl = nfRadio.channel( 'fields' ).request( 'get:sortableEl' );\r\n\t\t\t\t\r\n\t\t\t\tif ( jQuery( sortableEl ).hasClass( 'ui-sortable' ) ) { // Sortable isn't empty\r\n\t\t\t\t\t// If we're dealing with a sortable that isn't empty, get the order.\r\n\t\t\t\t\tvar order = jQuery( sortableEl ).sortable( 'toArray' );\r\n\t\t\t\t} else { // Sortable is empty\r\n\t\t\t\t\t// Sortable is empty, all we care about is our staged field draggable.\r\n\t\t\t\t\tvar order = ['nf-staged-fields-drag'];\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// Get the index of our droped element.\r\n\t\t\t\tvar insertedAt = order.indexOf( 'nf-staged-fields-drag' );\r\n\r\n\t\t\t\t// Loop through each staged fields model and insert a field.\r\n\t\t\t\tvar tmpIDs = [];\r\n\t\t\t\t_.each( stagedFields.models, function( field, index ) {\r\n\t\t\t\t\t// Add our field.\r\n\t\t\t\t\tvar tmpID = that.addField( field.get( 'slug' ) );\r\n\t\t\t\t\t// Add this newly created field to our order array.\r\n\t\t\t\t\torder.splice( insertedAt + index, 0, tmpID );\r\n\t\t\t\t} );\r\n\r\n\t\t\t\t// Remove our dropped element from our order array.\r\n\t\t\t\tvar insertedAt = order.indexOf( 'nf-staged-fields-drag' );\r\n\t\t\t\torder.splice( insertedAt, 1 );\r\n\t\t\t\t// Sort our fields\r\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'sort:fields', order );\r\n\t\t\t\t// Clear our staging\r\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'clear:staging' );\r\n\t\t\t\t// Remove our helper. Fixes a weird artifact.\r\n\t\t\t\tjQuery( ui.helper ).remove();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Add a field.\r\n\t\t * Builds the object necessary to add a field to the field model collection.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param string \ttype field type\r\n\t\t * @param boolean \tsilent add silently\r\n\t\t * @return string \ttmpID\r\n\t\t */\r\n\t\taddField: function( type, silent ) {\r\n\t\t\t// Default to false\r\n\t\t\tsilent = silent || false;\r\n\t\t\t// Get our field type model\r\n\t\t\tvar fieldType = nfRadio.channel( 'fields' ).request( 'get:type', type ); \r\n\t\t\t// Get our tmp ID\r\n\t\t\tvar tmpID = nfRadio.channel( 'fields' ).request( 'get:tmpID' );\r\n\t\t\t// Add our field\r\n\t\t\tvar newModel = nfRadio.channel( 'fields' ).request( 'add', { id: tmpID, label: fieldType.get( 'nicename' ), type: type }, silent );\r\n\t\t\t// Add our field addition to our change log.\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: 'Field',\r\n\t\t\t\tlabel: newModel.get( 'label' ),\r\n\t\t\t\tchange: 'Added',\r\n\t\t\t\tdashicon: 'plus-alt'\r\n\t\t\t};\r\n\r\n\t\t\tvar data = {\r\n\t\t\t\tcollection: nfRadio.channel( 'fields' ).request( 'get:collection' )\r\n\t\t\t}\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'addObject', newModel, null, label, data );\r\n\r\n\t\t\treturn tmpID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When the user drags a field type or staging over our sortable, we need to modify the helper.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \tui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\toverfieldsSortable: function( ui ) {\r\n\t\t\tif( jQuery( ui.item ).hasClass( 'nf-field-type-draggable' ) ) { // Field Type\r\n\t\t\t\t// String type\r\n\t\t\t\tvar type = jQuery( ui.helper ).data( 'id' );\r\n\t\t\t\t// Get our field type model.\r\n\t\t\t\tvar fieldType = nfRadio.channel( 'fields' ).request( 'get:type', type );\r\n\t\t\t\t// Get our field type nicename.\r\n\t\t\t\tvar label = fieldType.get( 'nicename' );\r\n\t\t\t\t// Get our sortable element.\r\n\t\t\t\tvar sortableEl = nfRadio.channel( 'fields' ).request( 'get:sortableEl' );\r\n\t\t\t\t// Get our fieldwidth.\r\n\t\t\t\tvar fieldWidth = jQuery( sortableEl ).width();\r\n\t\t\t\t// Set our currentHelper to an object var so that we can access it later.\r\n\t\t\t\tthis.currentHelper = ui.helper;\r\n\r\n\t\t\t\t// Render a fieldItemView using a mock fieldModel.\r\n\t\t\t\tvar fieldModel = new FieldModel({ label: fieldType.get( 'nicename' ), type: type });\r\n\t\t\t\tvar fieldItemView = new FieldItemView({model:fieldModel});\r\n\t\t\t\tvar renderedFieldItemView = fieldItemView.render();\r\n\t\t\t\tvar fieldTypeEl = renderedFieldItemView.$el[0];\r\n\t\t\t\tjQuery( ui.helper ).html( fieldTypeEl.outerHTML );\r\n\r\n\t\t\t} else if ( jQuery( ui.item ).hasClass( 'nf-stage' ) ) { // Staging\r\n\t\t\t\t// Get our sortable, and if it's initialized add our hover class.\r\n\t\t\t\tvar sortableEl = nfRadio.channel( 'fields' ).request( 'get:sortableEl' );\r\n\t\t\t\tif ( jQuery( sortableEl ).hasClass( 'ui-sortable' ) ) {\r\n\t\t\t\t\tjQuery( sortableEl ).addClass( 'nf-droppable-hover' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When the user moves a draggable outside of the sortable, we need to change the helper.\r\n\t\t * This returns the item to its pre-over state.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \tui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\toutFieldsSortable: function( ui ) {\r\n\t\t\tif( jQuery( ui.item ).hasClass( 'nf-field-type-draggable' ) ) { // Field Type\r\n\t\t\t\t/*\r\n\t\t\t\t * Get our helper clone.\r\n\t\t\t\t * This will let us access the previous label and classes of our helper.\r\n\t\t\t\t */ \r\n\t\t\t\tvar helperClone = nfRadio.channel( 'drawer-addField' ).request( 'get:typeHelperClone' );\r\n\t\t\t\t// Set our helper label, remove our sortable class, and add the type class back to the type draggable.\r\n\t\t\t\tjQuery( this.currentHelper ).html( jQuery( helperClone ).html() );\r\n\t\t\t\tjQuery( this.currentHelper ).removeClass( 'nf-field-wrap' ).addClass( 'nf-field-type-button' ).css( { 'width': '', 'height': '' } );\r\n\t\t\t\t// Get our sortable and if it has been intialized, remove the droppable hover class.\r\n\t\t\t\tvar sortableEl = nfRadio.channel( 'fields' ).request( 'get:sortableEl' );\r\n\t\t\t\tif ( jQuery( sortableEl ).hasClass( 'ui-sortable' ) ) {\r\n\t\t\t\t\tjQuery( sortableEl ).removeClass( 'nf-droppable-hover' );\r\n\t\t\t\t}\r\n\t\t\t} else if ( jQuery( ui.item ).hasClass( 'nf-stage' ) ) { // Staging\r\n\t\t\t\t// If we've initialized our sortable, remove the droppable hover class.\r\n\t\t\t\tvar sortableEl = nfRadio.channel( 'fields' ).request( 'get:sortableEl' );\r\n\t\t\t\tif ( jQuery( sortableEl ).hasClass( 'ui-sortable' ) ) {\r\n\t\t\t\t\tjQuery( sortableEl ).removeClass( 'nf-droppable-hover' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we stop dragging in the sortable:\r\n\t\t * remove our opacity setting\r\n\t\t * remove our ui helper\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \tui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\tstopFieldsSortable: function( ui ) {\r\n\t\t\tjQuery( ui.item ).css( 'opacity', '' );\r\n\t\t\tjQuery( ui.helper ).remove();\r\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'sortable:stop', ui );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we start dragging in the sortable:\r\n\t\t * add an opacity setting of 0.5\r\n\t\t * show our item (jQuery hides the original item by default)\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \tui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\tstartFieldsSortable: function( ui ) {\r\n\t\t\t// If we aren't dragging an item in from types or staging, update our change log.\r\n\t\t\tif( ! jQuery( ui.item ).hasClass( 'nf-field-type-draggable' ) && ! jQuery( ui.item ).hasClass( 'nf-stage' ) ) { \r\n\t\t\t\t\r\n\t\t\t\t// Maintain origional visibility during drag/sort.\r\n\t\t\t\tjQuery( ui.item ).show();\r\n\r\n\t\t\t\t// Determine helper based on builder/layout type.\r\n\t\t\t\tif(jQuery(ui.item).hasClass('nf-field-wrap')){\r\n\t\t\t\t\tvar newHelper = jQuery(ui.item).clone();\r\n\t\t\t\t} else if(jQuery(ui.item).parent().hasClass('layouts-cell')) {\r\n\t\t\t\t\tvar newHelper = $parentHelper.clone();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar newHelper = jQuery(ui.item).clone();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Remove unecessary item controls from helper.\r\n\t\t\t\tnewHelper.find('.nf-item-controls').remove();\r\n\r\n\t\t\t\t// Update helper with clone's content.\r\n\t\t\t\tjQuery( ui.helper ).html( newHelper.html() );\r\n\r\n\t\t\t\tjQuery( ui.helper ).css( 'opacity', '0.5' );\r\n\t\t\t\t\r\n\t\t\t\t// Add de-emphasize origional.\r\n\t\t\t\tjQuery( ui.item ).css( 'opacity', '0.25' );\r\n\t\t\t}\r\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'sortable:start', ui );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Sort our fields when we change the order.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \tui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\tupdateFieldsSortable: function( ui, sortable ) {\r\n\t\t\t\r\n\t\t\tnfRadio.channel( 'fields' ).request( 'sort:fields' );\r\n\r\n\t\t\t// If we aren't dragging an item in from types or staging, update our change log.\r\n\t\t\tif( ! jQuery( ui.item ).hasClass( 'nf-field-type-draggable' ) && ! jQuery( ui.item ).hasClass( 'nf-stage' ) ) { \r\n\r\n\t\t\t\tvar fieldCollection = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\t\t\t\tvar dragFieldID = jQuery( ui.item ).prop( 'id' ).replace( 'field-', '' );\r\n\t\t\t\tvar dragModel = fieldCollection.get( dragFieldID );\r\n\r\n\t\t\t\t// Add our change event to the change tracker.\r\n\t\t\t\tvar data = { fields: [] };\r\n\t\t\t\t_.each( fieldCollection.models, function( field ) {\r\n\t\t\t\t\tvar oldPos = field._previousAttributes.order;\r\n\t\t\t\t\tvar newPos = field.get( 'order' );\r\n\t\t\t\t\t\r\n\t\t\t\t\tdata.fields.push( {\r\n\t\t\t\t\t\tmodel: field,\r\n\t\t\t\t\t\tattr: 'order',\r\n\t\t\t\t\t\tbefore: oldPos,\r\n\t\t\t\t\t\tafter: newPos\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t} );\r\n\r\n\t\t\t\tvar label = {\r\n\t\t\t\t\tobject: 'Field',\r\n\t\t\t\t\tlabel: dragModel.get( 'label' ),\r\n\t\t\t\t\tchange: 'Re-ordered from ' + dragModel._previousAttributes.order + ' to ' + dragModel.get( 'order' ),\r\n\t\t\t\t\tdashicon: 'sort'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'sortFields', dragModel, null, label, data );\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\treceiveRepeaterField: function( ui ){\r\n\t\t\t//If the field was already saved as a Repeater child field we'll delete it and create a new one for the main collection\r\n\t\t\tif( String( jQuery( ui.item ).data('id') ).indexOf('.') !== -1){\r\n\t\t\t\tjQuery( ui.item ).removeClass('nf-field-wrap');\r\n\t\t\t\tlet type = jQuery( ui.item ).attr('class');\r\n\t\t\t\tjQuery( ui.item ).data('id', type);\r\n\t\t\t\tjQuery( ui.item ).addClass('nf-field-type-draggable');\r\n\t\t\t}\r\n\r\n\t\t\treturn ui;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Handles interactions with our field collection.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/fields/data',['models/fields/fieldCollection', 'models/fields/fieldModel'], function( fieldCollection, fieldModel ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tadding: false,\r\n\t\tremoving: false,\r\n\t\t\r\n\t\tinitialize: function() {\r\n\t\t\t// Load our field collection from our localized form data\r\n\t\t\tthis.collection = new fieldCollection( preloadedFormData.fields );\r\n\t\t\t// Set our removedIDs to an empty object. This will be populated when a field is removed so that we can add it to our 'deleted_fields' object.\r\n\t\t\tthis.collection.removedIDs = {};\r\n\r\n\t\t\t// Respond to requests for data about fields and to update/change/delete fields from our collection.\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:collection', this.getFieldCollection, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:field', this.getField, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'redraw:collection', this.redrawFieldCollection, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:tmpID', this.getTmpFieldID, this );\r\n\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'add', this.addField, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'delete', this.deleteField, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'sort:fields', this.sortFields, this );\r\n\r\n\t\t\t/*\r\n\t\t\t * Respond to requests to set our 'adding' and 'removing' state. This state is used to track whether or not\r\n\t\t\t * we should run animations in our fields collection.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:adding', this.getAdding, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'set:adding', this.setAdding, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:removing', this.getRemoving, this );\r\n\t\t\tnfRadio.channel( 'fields' ).reply( 'set:removing', this.setRemoving, this );\r\n\t\t},\r\n\r\n\t\tgetFieldCollection: function() {\r\n\t\t\treturn this.collection;\r\n\t\t},\r\n\r\n\t\tredrawFieldCollection: function() {\r\n\t\t\tthis.collection.trigger( 'reset', this.collection );\r\n\t\t},\r\n\r\n\t\tgetField: function( id ) {\r\n\t\t\tif ( this.collection.findWhere( { key: id } ) ) {\r\n\t\t\t\t/*\r\n\t\t\t\t * First we check to see if a key matches what we were sent.\r\n\t\t\t\t */\t\t\t\t\r\n\t\t\t\treturn this.collection.findWhere( { key: id } );\r\n\t\t\t} else {\r\n\t\t\t\t/*\r\n\t\t\t\t * If it doesn't, we try to return an ID that matches.\r\n\t\t\t\t */\r\n\t\t\t\treturn this.collection.get( id );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Add a field to our collection. If silent is passed as true, no events will trigger.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object \tdata \t\t\tfield data to insert\r\n\t\t * @param bool \t\tsilent \t\t\tprevent events from firing as a result of adding\r\n\t\t * @param bool \trenderTrigger\tshould this cause the view to re-render?\r\n\t\t * @param string \taction\t\t\taction context - are we performing a higher level action? i.e. duplicate\r\n\t\t */\r\n\t\taddField: function( data, silent, renderTrigger, action ) {\r\n\r\n\t\t\t/*\r\n\t\t\t * Set our fields 'adding' value to true. This enables our add field animation.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'fields' ).request( 'set:adding', true );\r\n\r\n\t\t\tsilent = silent || false;\r\n\t\t\taction = action || '';\r\n\t\t\trenderTrigger = ( 'undefined' == typeof renderTrigger ) ? true : renderTrigger;\r\n\r\n\t\t\tif ( false === data instanceof Backbone.Model ) {\r\n\t\t\t\tif ( 'undefined' == typeof ( data.id ) ) {\r\n\t\t\t\t\tdata.id = this.getTmpFieldID();\r\n\t\t\t\t}\r\n\t\t\t\tvar model = new fieldModel( data );\r\n\t\t\t} else {\r\n\t\t\t\tvar model = data;\r\n\t\t\t}\r\n\r\n\t\t\t/*\r\n\t\t\t * TODO: Add an nfRadio message filter for the model variable.\r\n\t\t\t * Currently, we manually replace for saved fields; this should be moved to a separate controller.\r\n\t\t\t * \r\n\t\t\t * If we're adding a saved field, make sure that we set the type to the parentType.\r\n\t\t\t */\r\n\r\n\t\t\tif ( jQuery.isNumeric( model.get( 'type' ) ) ) {\r\n\t\t\t\tvar savedType = nfRadio.channel( 'fields' ).request( 'get:type', model.get( 'type' ) );\r\n\t\t\t\tmodel.set( 'type', savedType.get( 'parentType' ) );\r\n\t\t\t}\r\n\r\n\t\t\tvar newModel = this.collection.add( model, { silent: silent } );\r\n\t\t\t\r\n\t\t\t// Set our 'clean' status to false so that we get a notice to publish changes\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:setting', 'clean', false );\r\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'add:field', model );\r\n\t\t\tif ( renderTrigger ) {\r\n\t\t\t\tnfRadio.channel( 'fields' ).trigger( 'render:newField', newModel, action );\r\n\t\t\t}\r\n\t\t\tif( 'duplicate' == action ){\r\n nfRadio.channel( 'fields' ).trigger( 'render:duplicateField', newModel, action );\r\n\t\t\t}\r\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'after:addField', model );\r\n\t\t\t\r\n\t\t\treturn model;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Update a field setting by ID\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param int \t\tid field id\r\n\t\t * @param string \tname setting name\r\n\t\t * @param mixed \tvalue setting value\r\n\t\t * @return void\r\n\t\t */\r\n\t\tupdateFieldSetting: function( id, name, value ) {\r\n\t\t\tvar fieldModel = this.collection.get( id );\r\n\t\t\tfieldModel.set( name, value );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Get our fields sortable EL\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Array \torder optional order array like: [field-1, field-4, field-2]\r\n\t\t * @return void\r\n\t\t */\r\n\t\tsortFields: function( order, ui, updateDB ) {\r\n\t\t\tif ( null == updateDB ) {\r\n\t\t\t\tupdateDB = true;\r\n\t\t\t}\r\n\t\t\t// Get our sortable element\r\n\t\t\tvar sortableEl = nfRadio.channel( 'fields' ).request( 'get:sortableEl' );\r\n\t\t\tif ( jQuery( sortableEl ).hasClass( 'ui-sortable' ) ) { // Make sure that sortable is enabled\r\n\t\t\t\t// JS ternerary for setting our order\r\n\t\t\t\tvar order = order || jQuery( sortableEl ).sortable( 'toArray' );\r\n\r\n\t\t\t\t// Loop through all of our fields and update their order value\r\n\t\t\t\t_.each( this.collection.models, function( field ) {\r\n\t\t\t\t\t// Get our current position.\r\n\t\t\t\t\tvar oldPos = field.get( 'order' );\r\n\t\t\t\t\tvar id = field.get( 'id' );\r\n\t\t\t\t\tif ( jQuery.isNumeric( id ) ) {\r\n\t\t\t\t\t\tvar search = 'field-' + id;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar search = id;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Get the index of our field inside our order array\r\n\t\t\t\t\tvar newPos = order.indexOf( search ) + 1;\r\n\t\t\t\t\tfield.set( 'order', newPos );\r\n\t\t\t\t} );\r\n\t\t\t\tthis.collection.sort();\r\n\r\n\t\t\t\tif ( updateDB ) {\r\n\t\t\t\t\t// Set our 'clean' status to false so that we get a notice to publish changes\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'update:setting', 'clean', false );\r\n\t\t\t\t\t// Update our preview\r\n\t\t\t\t\tnfRadio.channel( 'app' ).request( 'update:db' );\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Delete a field from our collection.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \tmodel \tfield model to be deleted\r\n\t\t * @return void\r\n\t\t */\r\n\t\tdeleteField: function( model ) {\r\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'delete:field', model );\r\n\t\t\tthis.removing = true;\r\n\t\t\tthis.collection.remove( model );\r\n\r\n\t\t\t// Set our 'clean' status to false so that we get a notice to publish changes\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:setting', 'clean', false );\r\n\t\t\tnfRadio.channel( 'app' ).request( 'update:db' );\r\n\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Return a new tmp id for our fields.\r\n\t\t * Gets the field collection length, adds 1, then returns that prepended with 'tmp-'.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return string\r\n\t\t */\r\n\t\tgetTmpFieldID: function() {\r\n\t\t\tvar tmpNum = this.collection.tmpNum;\r\n\t\t\tthis.collection.tmpNum++;\r\n\t\t\treturn 'tmp-' + tmpNum;\r\n\t\t},\r\n\r\n\t\tgetAdding: function() {\r\n\t\t\treturn this.adding;\r\n\t\t},\r\n\r\n\t\tsetAdding: function( val ) {\r\n\t\t\tthis.adding = val;\r\n\t\t},\r\n\r\n\t\tgetRemoving: function() {\r\n\t\t\treturn this.removing;\r\n\t\t},\r\n\r\n\t\tsetRemoving: function( val ) {\r\n\t\t\tthis.removing = val;\r\n\t\t}\r\n\t});\r\n\r\n\treturn controller;\r\n} );\n/**\r\n * Model for our repeater option.\r\n * \r\n * @package Ninja App builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/optionRepeaterModel',[], function() {\r\n\tvar model = Backbone.Model.extend( {\r\n\t\tdefaults: {\r\n\t\t\terrors: {},\r\n max_options: 0,\r\n\t\t},\r\n\r\n\t\tinitialize: function() {\r\n\t\t\t// When we add errors to the option row, run a function.\r\n\t\t\tthis.on( 'change:errors', this.changeErrors, this );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we change the errors on our model, check to see if we should add or remove \r\n\t\t * the error from the setting that this option is a part of.\r\n\t\t *\r\n\t\t * Adding an error to the setting model simply disables the drawer and other\r\n\t\t * navigation. As long as we have one option with an error, it should be set to true.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @return void\r\n\t\t */\r\n\t\tchangeErrors: function( model ) {\r\n\t\t\t/*\r\n\t\t\t * The errors attribute will be an object, so if we don't have any keys, it's empty.\r\n\t\t\t * If we have an empty object, check to see if we can remove the error from our setting model.\r\n\t\t\t */\r\n\r\n\t\t\tif ( 0 == _.size( model.get( 'errors' ) ) ) {\r\n\t\t\t\t/*\r\n\t\t\t\t * Loop through our collection to see if we have any other errors.\r\n\t\t\t\t */\r\n\t\t\t\tvar errorsFound = false;\r\n\t\t\t\t_.each( model.collection.models, function( opt ) {\r\n\t\t\t\t\tif ( 0 != _.size( opt.get( 'errors' ) ) ) {\r\n\t\t\t\t\t\terrorsFound = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\tif ( ! errorsFound ) {\r\n\t\t\t\t\tmodel.collection.settingModel.set( 'error', false );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t/*\r\n\t\t\t\t * We have errors, so make sure that the setting model has an error set.\r\n\t\t\t\t */\r\n\t\t\t\tmodel.collection.settingModel.set( 'error', true );\r\n\t\t\t}\r\n\t\t}\r\n\t} );\r\n\t\r\n\treturn model;\r\n} );\n/**\r\n * Model that represents our list options.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage Fields\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'models/app/optionRepeaterCollection',['models/app/optionRepeaterModel'], function( listOptionModel ) {\r\n\tvar collection = Backbone.Collection.extend( {\r\n\t\tmodel: listOptionModel,\r\n\t\tcomparator: function( model ){\r\n\t\t\treturn parseInt( model.get( 'order' ) );\r\n\t\t},\r\n\r\n\t\tinitialize: function( models, options ) {\r\n\t\t\t// Listen to the 'sort' event\r\n\t\t\tthis.on( 'sort', this.changeCollection, this );\r\n\t\t\t// Listen to the 'add' event\r\n\t\t\tthis.on( 'add', this.addOption, this );\r\n\t\t\tthis.settingModel = options.settingModel;\r\n\t\t},\r\n\r\n\t\tchangeCollection: function() {\r\n\t\t\t// Trigger a 'sort:options' event so that our field model can update\r\n\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'sort:options', this );\r\n\r\n\t\t\tif ('undefined' !== typeof this.settingModel ) {\r\n\t\t\t\tnfRadio.channel('option-repeater-' + this.settingModel.get('name')).trigger('sort:options', this);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\taddOption: function( model, collection ) {\r\n\t\t\tmodel.set( 'settingModel', this.settingModel );\r\n\t\t}\r\n\t} );\r\n\treturn collection;\r\n} );\ndefine( 'views/app/drawer/optionRepeaterError',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'div',\r\n\t\tclassName: 'nf-error',\r\n\t\ttemplate: '#tmpl-nf-edit-setting-option-repeater-error',\r\n\r\n\t\ttemplateHelpers: function() {\r\n\t\t\tvar that = this;\r\n\t\t\treturn {\r\n\t\t\t\trenderErrors: function() {\r\n\t\t\t\t if ( 'undefined' != typeof that.errors ) {\r\n \t\t\t\t\treturn that.errors[ Object.keys( errors )[0] ];\r\n \t\t\t\t\t} else {\r\n \t\t\t\t\t\treturn '';\r\n \t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/app/drawer/optionRepeaterOption',['views/app/drawer/optionRepeaterError'], function( ErrorView ) {\r\n var view = Marionette.LayoutView.extend({\r\n tagName: 'div',\r\n className: 'nf-table-row',\r\n template: '#tmpl-nf-edit-setting-option-repeater-default-row',\r\n id: function() {\r\n return this.model.cid;\r\n },\r\n\r\n regions: {\r\n error: '.nf-option-error'\r\n },\r\n\r\n initialize: function( data ) {\r\n this.settingModel = data.settingModel;\r\n this.dataModel = data.dataModel;\r\n this.collection = data.collection;\r\n this.columns = data.columns;\r\n this.parentView = data.parentView;\r\n this.model.on( 'change:errors', this.renderErrors, this );\r\n\r\n // Removed because the re-render was breaking tag insertion for merge tags.\r\n // this.model.on( 'change', this.render, this );\r\n\r\n if ( 'undefined' != typeof this.settingModel.get( 'tmpl_row' ) ) {\r\n this.template = '#' + this.settingModel.get( 'tmpl_row' );\r\n }\r\n\r\n this.hasErrors = false;\r\n },\r\n\r\n onBeforeDestroy: function() { \r\n this.model.off( 'change', this.render );\r\n this.model.off( 'change:errors', this.renderErrors );\r\n },\r\n\r\n onBeforeRender: function() {\r\n /*\r\n * We want to escape any HTML being output for our label.\r\n */\r\n if ( this.model.get( 'label' ) ) {\r\n var label = this.model.get( 'label' );\r\n this.model.set( 'label', _.escape( label ), { silent: true } );\r\n }\r\n \r\n },\r\n\r\n onRender: function() {\r\n nfRadio.channel( 'mergeTags' ).request( 'init', this );\r\n /*\r\n * Send out a radio message.\r\n */\r\n nfRadio.channel( 'setting-' + this.settingModel.get( 'name' ) + '-option' ).trigger( 'render:setting', this.model, this.dataModel, this );\r\n /*\r\n * We want to unescape any HTML being output for our label.\r\n */\r\n if ( this.model.get( 'label' ) ) {\r\n var label = this.model.get( 'label' );\r\n this.model.set( 'label', _.unescape( label ), { silent: true } );\r\n }\r\n },\r\n\r\n onShow: function() {\r\n if ( this.model.get( 'new' ) ) {\r\n jQuery( this.el ).find( 'input:first' ).focus();\r\n this.model.set( 'new', false );\r\n }\r\n },\r\n\r\n events: {\r\n 'change .setting': 'changeOption',\r\n 'click .nf-delete': 'deleteOption',\r\n 'keyup': 'keyupOption'\r\n },\r\n\r\n changeOption: function( e ) {\r\n nfRadio.channel( 'option-repeater' ).trigger( 'change:option', e, this.model, this.dataModel, this.settingModel, this );\r\n },\r\n\r\n deleteOption: function( e ) {\r\n nfRadio.channel( 'option-repeater' ).trigger( 'click:deleteOption', this.model, this.collection, this.dataModel, this );\r\n },\r\n\r\n keyupOption: function( e ) {\r\n this.maybeAddOption( e );\r\n nfRadio.channel( 'option-repeater' ).trigger( 'keyup:option', e, this.model, this.dataModel, this.settingModel, this )\r\n nfRadio.channel( 'option-repeater-' + this.settingModel.get( 'name' ) ).trigger( 'keyup:option', e, this.model, this.dataModel, this.settingModel, this )\r\n },\r\n\r\n maybeAddOption: function( e ) {\r\n if ( 13 == e.keyCode && 'calculations' != this.settingModel.get( 'name' ) ) {\r\n nfRadio.channel( 'option-repeater' ).trigger( 'click:addOption', this.collection, this.dataModel, this );\r\n jQuery( this.parentView.children.findByIndex(this.parentView.children.length - 1).el ).find( '[data-id=\"label\"]' ).focus();\r\n }\r\n },\r\n\r\n renderErrors: function() {\r\n \r\n // if ( jQuery.isEmptyObject( this.model.get( 'errors' ) ) ) {\r\n // return false;\r\n // }\r\n\r\n /*\r\n * We don't want to redraw the entire row, which would remove focus from the eq textarea,\r\n * so we add and remove error classes manually.\r\n */\r\n if ( 0 == Object.keys( this.model.get( 'errors' ) ) ) {\r\n if ( this.hasErrors ) {\r\n this.error.empty();\r\n jQuery( this.el ).removeClass( 'nf-error' );\r\n }\r\n } else {\r\n this.hasErrors = true;\r\n this.error.show( new ErrorView( { model: this.model } ) );\r\n jQuery( this.el ).addClass( 'nf-error' );\r\n }\r\n },\r\n\r\n templateHelpers: function() {\r\n var that = this;\r\n return {\r\n getColumns: function() {\r\n var columns = that.columns;\r\n if(!nfAdmin.devMode){\r\n delete columns.value;\r\n delete columns.calc;\r\n }\r\n return columns;\r\n },\r\n renderFieldSelect: function( dataID, value ){\r\n var initialOption, select, emptyContainer, label;\r\n\r\n var fields = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\r\n initialOption = document.createElement( 'option' );\r\n initialOption.value = '';\r\n initialOption.label = '--';\r\n initialOption.innerHTML = '--';\r\n\r\n select = document.createElement( 'select' );\r\n select.classList.add( 'setting' );\r\n select.setAttribute( 'data-id', dataID );\r\n select.appendChild( initialOption );\r\n\r\n fields.each( function( field ){\r\n var option = document.createElement( 'option' );\r\n if ( value == field.get( 'key' ) ) {\r\n option.setAttribute( 'selected', 'selected' );\r\n }\r\n option.value = field.get( 'key' );\r\n option.innerHTML = field.formatLabel();\r\n option.label = field.formatLabel();\r\n select.appendChild( option );\r\n });\r\n\r\n label = document.createElement( 'label' );\r\n label.classList.add( 'nf-select' );\r\n label.appendChild( select );\r\n\r\n // Select Lists need an empty '<div></div>' for styling purposes.\r\n emptyContainer = document.createElement( 'div' );\r\n emptyContainer.style.bottom = '6px';\r\n label.appendChild( emptyContainer );\r\n\r\n // The template requires a string.\r\n return label.innerHTML;\r\n },\r\n renderNonSaveFieldSelect: function( dataID, value ){\r\n var initialOption, select, emptyContainer, label;\r\n\r\n var fields = nfRadio.channel( 'fields' ).request( 'get:collection' );\r\n\r\n initialOption = document.createElement( 'option' );\r\n initialOption.value = '';\r\n initialOption.label = '--';\r\n initialOption.innerHTML = '--';\r\n\r\n select = document.createElement( 'select' );\r\n select.classList.add( 'setting' );\r\n select.setAttribute( 'data-id', dataID );\r\n select.appendChild( initialOption );\r\n\r\n // Build a lookup table for fields we want to remove from our fields list.\r\n var removeFieldsLookup = [ 'html', 'submit', 'hr',\r\n 'recaptcha', 'spam', 'creditcard', 'creditcardcvc',\r\n 'creditcardexpiration', 'creditcardfullname',\r\n 'creditcardnumber', 'creditcardzip' ];\r\n\r\n fields.each( function( field ){\r\n // Check for the field type in our lookup array and...\r\n if( jQuery.inArray( field.get( 'type' ), removeFieldsLookup ) !== -1 ) {\r\n // Return if the type is in our lookup array.\r\n return '';\r\n }\r\n\r\n var option = document.createElement( 'option' );\r\n if ( value == field.get( 'key' ) ) {\r\n option.setAttribute( 'selected', 'selected' );\r\n }\r\n option.value = field.get( 'key' );\r\n option.innerHTML = field.formatLabel();\r\n option.label = field.formatLabel();\r\n select.appendChild( option );\r\n });\r\n\r\n label = document.createElement( 'label' );\r\n label.classList.add( 'nf-select' );\r\n label.appendChild( select );\r\n\r\n // Select Lists need an empty '<div></div>' for styling purposes.\r\n emptyContainer = document.createElement( 'div' );\r\n emptyContainer.style.bottom = '6px';\r\n label.appendChild( emptyContainer );\r\n\r\n // The template requires a string.\r\n return label.innerHTML;\r\n },\r\n renderOptions: function( column, value ) {\r\n\r\n if( 'undefined' == typeof that.options.columns[ column ] ) return;\r\n\r\n var select = document.createElement( 'select' );\r\n \r\n _.each( that.options.columns[ column ].options, function( option ){\r\n var optionNode = document.createElement( 'option' );\r\n if ( value === option.value ) {\r\n optionNode.setAttribute( 'selected', 'selected' );\r\n }\r\n optionNode.setAttribute( 'value', option.value );\r\n optionNode.setAttribute( 'label', option.label );\r\n optionNode.innerText = option.label;\r\n select.appendChild( optionNode );\r\n });\r\n\r\n // The template only needs the options.\r\n return select.innerHTML;\r\n }\r\n\r\n }\r\n }\r\n\r\n });\r\n\r\n return view;\r\n} );\r\n\ndefine( 'views/app/drawer/optionRepeaterEmpty',[], function() {\r\n\tvar view = Marionette.ItemView.extend({\r\n\t\ttagName: 'tr',\r\n\t\ttemplate: '#tmpl-nf-edit-setting-option-repeater-empty'\r\n\t});\r\n\r\n\treturn view;\r\n} );\ndefine( 'views/app/drawer/optionRepeaterComposite',['views/app/drawer/optionRepeaterOption', 'views/app/drawer/optionRepeaterEmpty', 'models/app/optionRepeaterCollection'], function( listOptionView, listEmptyView, listOptionCollection ) {\r\n\tvar view = Marionette.CompositeView.extend( {\r\n\t\ttemplate: '#tmpl-nf-edit-setting-option-repeater-wrap',\r\n\t\tchildView: listOptionView,\r\n\t\temptyView: listEmptyView,\r\n\t\treorderOnSort: false,\r\n\r\n\t\tinitialize: function( data ) {\r\n\r\n\t\t\t/*\r\n\t\t\t * Our options are stored in our database as objects, not collections.\r\n\t\t\t * Before we attempt to render them, we need to convert them to a collection if they aren't already one.\r\n\t\t\t */ \r\n\t\t\tvar optionCollection = data.dataModel.get( this.model.get( 'name' ) );\r\n\r\n\t\t\tif ( false == optionCollection instanceof Backbone.Collection ) {\r\n\t\t\t\toptionCollection = new listOptionCollection( [], { settingModel: this.model } );\r\n\t\t\t\toptionCollection.add( data.dataModel.get( this.model.get( 'name' ) ) );\r\n\t\t\t\tdata.dataModel.set( this.model.get( 'name' ), optionCollection, { silent: true } );\r\n\t\t\t}\r\n\r\n\t\t\tthis.collection = optionCollection;\r\n\t\t\tthis.dataModel = data.dataModel;\r\n\t\t\tthis.childViewOptions = { parentView: this, settingModel: this.model, collection: this.collection, dataModel: data.dataModel, columns: this.model.get( 'columns' ) };\r\n\r\n\t\t\tvar deps = this.model.get( 'deps' );\r\n\t\t\tif ( deps ) {\r\n\t\t\t\tfor ( var name in deps ) {\r\n\t\t\t\t if ( deps.hasOwnProperty( name ) ) {\r\n\t\t\t\t \tthis.dataModel.on( 'change:' + name, this.render, this );\r\n\t\t\t\t }\r\n\t\t\t\t}\r\n\t\t\t}\r\n this.listenTo( nfRadio.channel( 'option-repeater' ), 'added:option', this.maybeHideNew );\r\n this.listenTo( nfRadio.channel( 'option-repeater' ), 'removed:option', this.maybeHideNew );\r\n\t\t},\r\n\r\n\t\tonBeforeDestroy: function() {\r\n\t\t\tvar deps = this.model.get( 'deps' );\r\n\t\t\tif ( deps ) {\r\n\t\t\t\tfor (var name in deps) {\r\n\t\t\t\t if ( deps.hasOwnProperty( name ) ) {\r\n\t\t\t\t \tthis.dataModel.off( 'change:' + name, this.render );\r\n\t\t\t\t }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonRender: function() {\r\n\t\t\t// this.$el = this.$el.children();\r\n\t\t\t// this.$el.unwrap();\r\n\t\t\t// this.setElement( this.$el );\r\n\r\n\t\t\t// this.$el = this.$el.children();\r\n\t\t\t// this.$el.unwrap();\r\n\t\t\t// this.setElement( this.$el );\r\n\t\t\r\n\t\t\tvar that = this;\r\n\t\t\tjQuery( this.el ).find( '.nf-list-options-tbody' ).sortable( {\r\n\t\t\t\thandle: '.handle',\r\n\t\t\t\thelper: 'clone',\r\n\t\t\t\tplaceholder: 'nf-list-options-sortable-placeholder',\r\n\t\t\t\tforcePlaceholderSize: true,\r\n\t\t\t\topacity: 0.95,\r\n\t\t\t\ttolerance: 'pointer',\r\n\r\n\t\t\t\tstart: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'option-repeater' ).request( 'start:optionSortable', ui );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tstop: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'option-repeater' ).request( 'stop:optionSortable', ui );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tupdate: function( e, ui ) {\r\n\t\t\t\t\tnfRadio.channel( 'option-repeater' ).request( 'update:optionSortable', ui, this, that );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n that.setupTooltip();\r\n that.maybeHideNew( that.collection );\r\n\r\n\t\t\t/*\r\n\t\t\t * Send out a radio message.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'render:setting', this.model, this.dataModel, this );\r\n\t\t\r\n\t\t},\r\n\r\n\t\tonAttach: function() {\r\n \r\n\t\t\tvar importLink = jQuery( this.el ).find( '.nf-open-import-tooltip' );\r\n\t\t\tvar jBox = jQuery( importLink ).jBox( 'Tooltip', {\r\n title: '<h3>Please enter your options below:</h3>',\r\n content: ( \"1\" == nfAdmin.devMode ? jQuery( this.el ).find( '.nf-dev-import-options' ) : jQuery( this.el ).find( '.nf-import-options' ) ),\r\n trigger: 'click',\r\n closeOnClick: 'body',\r\n closeButton: 'box',\r\n offset: { x: 20, y: 0 },\r\n addClass: 'import-options',\r\n\r\n onOpen: function() {\r\n \tvar that = this;\r\n \tsetTimeout( function() { jQuery( that.content ).find( 'textarea' ).focus(); }, 200 );\r\n }\r\n } );\r\n\r\n\t\t\tjQuery( this.el ).find( '.nf-import' ).on( 'click', { view: this, jBox: jBox }, this.clickImport );\r\n\r\n\t\t\t/*\r\n\t\t\t * Send out a radio message.\r\n\t\t\t */\r\n\t\t\tnfRadio.channel( 'setting-' + this.model.get( 'name' ) ).trigger( 'attach:setting', this.model, this.dataModel, this );\r\n\t\t\tnfRadio.channel( 'setting-type-' + this.model.get( 'type' ) ).trigger( 'attach:setting', this.model, this.dataModel, this );\r\n\t\t},\r\n \r\n /**\r\n * Function to append jBox modals to each tooltip element in the option repeater.\r\n */\r\n setupTooltip: function() {\r\n // For each .nf-help in the option repeater...\r\n jQuery( this.el ).find( '.nf-list-options' ).find( '.nf-help' ).each(function() {\r\n // Get the content.\r\n var content = jQuery(this).next('.nf-help-text');\r\n // Declare the modal.\r\n jQuery( this ).jBox( 'Tooltip', {\r\n content: content,\r\n maxWidth: 200,\r\n theme: 'TooltipBorder',\r\n trigger: 'click',\r\n closeOnClick: true\r\n })\r\n });\r\n },\r\n\r\n\t\ttemplateHelpers: function () {\r\n\t\t\tvar that = this;\r\n\r\n\t \treturn {\r\n\t \t\trenderHeaders: function() {\r\n // If this is a Field...\r\n // AND If the type includes 'list'...\r\n if ( 'Field' == that.dataModel.get( 'objectType' ) && -1 !== that.dataModel.get( 'type' ).indexOf( 'list' ) ) {\r\n // Declare help text.\r\n var helpText, helpTextContainer, helpIcon, helpIconLink, helpTextWrapper;\r\n\r\n helpText = document.createTextNode( nfi18n.valueChars );\r\n helpTextContainer = document.createElement( 'div' );\r\n helpTextContainer.classList.add( 'nf-help-text' );\r\n helpTextContainer.appendChild( helpText );\r\n\r\n helpIcon = document.createElement( 'span' );\r\n helpIcon.classList.add( 'dashicons', 'dashicons-admin-comments' );\r\n helpIconLink = document.createElement( 'a' );\r\n helpIconLink.classList.add( 'nf-help' );\r\n helpIconLink.setAttribute( 'href', '#' );\r\n helpIconLink.setAttribute( 'tabindex', '-1' );\r\n helpIconLink.appendChild( helpIcon );\r\n\r\n helpTextWrapper = document.createElement( 'span' );\r\n helpTextWrapper.appendChild( helpIconLink );\r\n helpTextWrapper.appendChild( helpTextContainer );\r\n\r\n\t\t\t\t\t\t// Append the help text to the 'value' header.\r\n\t\t\t\t\t\tif('undefined' !== typeof that.model.get('columns') ){\r\n\t\t\t\t\t\t\tif('undefined' !== typeof that.model.get('columns').value ){\r\n\t\t\t\t\t\t\t\tif ( -1 == that.model.get('columns').value.header.indexOf( helpTextWrapper.innerHTML ) ) {\r\n\t\t\t\t\t\t\t\t\tthat.model.get('columns').value.header += helpTextWrapper.innerHTML;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n }\r\n\t \t\t\tvar columns, beforeColumns, afterColumns;\r\n\r\n\t \t\t\tbeforeColumns = document.createElement( 'div' );\r\n\r\n\t \t\t\tcolumns = document.createElement( 'span' );\r\n\t \t\t\tcolumns.appendChild( beforeColumns );\r\n\r\n\t\t\t\t\tif(!nfAdmin.devMode){\r\n\t\t\t\t\t\tdelete this.columns.value;\r\n\t\t\t\t\t\tdelete this.columns.calc;\r\n\t\t\t\t\t}\r\n\r\n\t \t\t\t_.each( this.columns, function( col ) {\r\n\t \t\t\t\tvar headerText, headerContainer;\r\n\r\n\t \t\t\t\t// Use a fragment to support HTML in the col.header property, ie Dashicons.\r\n headerText = document.createRange().createContextualFragment( col.header );\r\n\t \t\t\t\theaderContainer = document.createElement( 'div' );\r\n\t \t\t\t\theaderContainer.appendChild( headerText );\r\n\r\n\t \t\t\t\tcolumns.appendChild( headerContainer );\r\n\t \t\t\t} );\r\n\r\n afterColumns = document.createElement( 'div' );\r\n columns.appendChild( afterColumns );\r\n\r\n\t\t\t\t\treturn columns.innerHTML;\r\n\t\t\t\t},\r\n\r\n\t \t\trenderSetting: function() {\r\n\t \t\t\tvar setting = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-edit-setting-' + this.type );\r\n\t\t\t\t\treturn setting( this );\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderClasses: function() {\r\n\t\t\t\t\tvar classes = '';\r\n\t\t\t\t\tif ( 'undefined' != typeof this.width ) {\r\n\t\t\t\t\t\tclasses += this.width;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclasses += ' one-half';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( this.error ) {\r\n\t\t\t\t\t\tclasses += ' nf-error';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn classes;\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderVisible: function() {\r\n\t\t\t\t\tif ( this.deps ) {\r\n\t\t\t\t\t\tfor (var name in this.deps) {\r\n\t\t\t\t\t\t if ( this.deps.hasOwnProperty( name ) ) {\r\n\t\t\t\t\t\t if ( that.dataModel.get( name ) !== this.deps[ name ] ) {\r\n\t\t\t\t\t\t \treturn 'style=\"display:none;\"';\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t\t }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t \t\t\treturn '';\r\n\t \t\t},\r\n\r\n\t\t\t\trenderError: function() {\r\n\t\t\t\t\tif ( this.error ) {\r\n\t\t\t\t\t\treturn this.error;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t},\r\n\r\n\t\t\t\trenderFieldsetClasses: function() {\r\n\t\t\t\t\treturn that.model.get( 'name' );\r\n\t\t\t\t},\r\n\r\n\t\t\t\tcurrencySymbol: function() {\r\n\t\t\t\t\treturn nfRadio.channel( 'settings' ).request( 'get:setting', 'currency' ) || nfi18n.currency_symbol;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tattachHtml: function( collectionView, childView ) {\r\n\t\t\tjQuery( collectionView.el ).find( '.nf-list-options-tbody' ).append( childView.el );\r\n\t\t\tnfRadio.channel( 'mergeTags' ).request( 'init', this );\r\n\t\t},\r\n\r\n\t\tevents: {\r\n\t\t\t'click .nf-add-new': 'clickAddOption',\r\n\t\t\t'click .extra': 'clickExtra'\r\n\t\t},\r\n \r\n maybeHideNew: function( collection ) {\r\n\t\t\tif( 'undefined' == typeof collection.settingModel ) return false;\r\n var limit = collection.settingModel.get( 'max_options' );\r\n if( 0 !== limit && collection.models.length >= ( limit ) ) {\r\n jQuery(this.el).find('.nf-add-new').addClass('disabled');\r\n } else {\r\n jQuery(this.el).find('.nf-add-new').removeClass('disabled');\r\n }\r\n },\r\n\r\n\t\tclickAddOption: function( e ) {\r\n\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'click:addOption', this.collection, this.dataModel );\r\n\t\t\tjQuery( this.children.findByIndex(this.children.length - 1).el ).find( '[data-id=\"label\"]' ).focus();\r\n\t\t},\r\n\r\n\t\tclickExtra: function( e ) {\r\n\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'click:extra', e, this.collection, this.dataModel );\r\n\t\t\tnfRadio.channel( 'option-repeater-' + this.model.get( 'name' ) ).trigger( 'click:extra', e, this.model, this.collection, this.dataModel );\r\n\t\t},\r\n\r\n\t\tclickImport: function( e ) {\r\n\t\t\tvar textarea = jQuery( e.data.jBox.content ).find( 'textarea' );\r\n\t\t\tvar value = textarea.val().trimLeft().trimRight();\r\n\t\t\t/*\r\n\t\t\t * Return early if we have no strings.\r\n\t\t\t */\r\n\t\t\tif ( 0 == value.length ) {\r\n\t\t\t\te.data.jBox.close();\r\n\t\t\t\treturn false;\r\n\t\t\t}\t\t\t\r\n\t\t\t/*\r\n\t\t\t * Split our value based on new lines.\r\n\t\t\t */\r\n\r\n\t\t\tvar lines = value.split(/\\n/);\r\n\t\t\tif ( _.isArray( lines ) ) {\r\n\t\t\t\t/*\r\n\t\t\t\t * Loop over \r\n\t\t\t\t */\r\n\t\t\t\t_.each( lines, function( line ) {\r\n\t\t\t\t\tvar row = line.split( ',' );\r\n\t\t\t\t\tvar label = row[0];\r\n\t\t\t\t\tvar value = row[1] || jQuery.slugify( label, { separator: '-' } );\r\n\t\t\t\t\tvar calc = row[2] || '';\r\n\r\n\t\t\t\t\tlabel = label.trimLeft().trimRight();\r\n\t\t\t\t\tvalue = value.trimLeft().trimRight();\r\n\t\t\t\t\tcalc = calc.trimLeft().trimRight();\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Add our row to the collection\r\n\t\t\t\t\t */\r\n\t\t\t\t\tvar model = e.data.view.collection.add( { label: row[0], value: value, calc: calc } );\r\n\t\t\t\t\t// Add our field addition to our change log.\r\n\t\t\t\t\tvar label = {\r\n\t\t\t\t\t\tobject: 'field',\r\n\t\t\t\t\t\tlabel: row[0],\r\n\t\t\t\t\t\tchange: 'Option Added',\r\n\t\t\t\t\t\tdashicon: 'plus-alt'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'addListOption', model, null, label );\r\n\t\t\t\t\tnfRadio.channel( 'option-repeater-' + e.data.view.model.get( 'name' ) ).trigger( 'add:option', model );\r\n\t\t\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'add:option', model );\r\n\t\t\t\t\tnfRadio.channel( 'app' ).trigger( 'update:setting', model );\r\n\t\t\t\t}, this );\r\n\t\t\t\t/*\r\n\t\t\t\t * Set our state to unclean so that the user can publish.\r\n\t\t\t\t */\r\n\t\t\t} else {\r\n\t\t\t\t/*\r\n\t\t\t\t * TODO: Error Handling Here\r\n\t\t\t\t */\r\n\t\t\t}\r\n\t\t\ttextarea.val( '' );\r\n\t\t\te.data.jBox.close();\r\n\t\t},\r\n\t} );\r\n\r\n\treturn view;\r\n} );\r\n\n/**\r\n * Handles tasks associated with our option-repeater.\r\n * \r\n * Return our repeater child view.\r\n *\r\n * Also listens for changes to the options settings.\r\n * \r\n * @package Ninja Forms builder\r\n * @subpackage App\r\n * @copyright (c) 2015 WP Ninjas\r\n * @since 3.0\r\n */\r\ndefine( 'controllers/app/optionRepeater',['models/app/optionRepeaterModel', 'models/app/optionRepeaterCollection', 'views/app/drawer/optionRepeaterComposite'], function( listOptionModel, listOptionCollection, listCompositeView ) {\r\n\tvar controller = Marionette.Object.extend( {\r\n\t\tinitialize: function() {\r\n\t\t\t// Respond to requests for the childView for list type fields.\r\n\t\t\tnfRadio.channel( 'option-repeater' ).reply( 'get:settingChildView', this.getSettingChildView, this );\r\n\t\t\t\r\n\t\t\t// Listen for changes to our list options.\r\n\t\t\tthis.listenTo( nfRadio.channel( 'option-repeater' ), 'change:option', this.changeOption );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'option-repeater' ), 'click:addOption', this.addOption );\r\n\t\t\tthis.listenTo( nfRadio.channel( 'option-repeater' ), 'click:deleteOption', this.deleteOption );\r\n\r\n\t\t\t// Respond to requests related to our list options sortable.\r\n\t\t\tnfRadio.channel( 'option-repeater' ).reply( 'update:optionSortable', this.updateOptionSortable, this );\r\n\t\t\tnfRadio.channel( 'option-repeater' ).reply( 'stop:optionSortable', this.stopOptionSortable, this );\r\n\t\t\tnfRadio.channel( 'option-repeater' ).reply( 'start:optionSortable', this.startOptionSortable, this );\r\n\t\t\r\n\t\t\t/**\r\n\t\t\t * When we init our setting model, we need to convert our array/objects into collections/models\r\n\t\t\t */\r\n\t\t\tthis.listenTo( nfRadio.channel( 'option-repeater' ), 'init:dataModel', this.convertSettings );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Update an option value in our model.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t\t\te event\r\n\t\t * @param backbone.model \tmodel option model\r\n\t\t * @param backbone.model \tdataModel\r\n\t\t * @return void\r\n\t\t */\r\n\t\tchangeOption: function( e, model, dataModel, settingModel, optionView ) {\r\n\t\t\tvar name = jQuery( e.target ).data( 'id' );\r\n\t\t\tif ( 'selected' == name ) {\r\n\t\t\t\tif ( jQuery( e.target ).prop( 'checked' ) ) {\r\n\t\t\t\t\tvar value = 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar value = 0;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tvar value = jQuery( e.target ).val();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvar before = model.get( name );\r\n\t\t\t\r\n\t\t\tmodel.set( name, value );\r\n\t\t\t// Trigger an update on our dataModel\r\n\t\t\tthis.triggerDataModel( model, dataModel );\r\n\r\n\t\t\tvar after = value;\r\n\t\t\t\r\n\t\t\tvar changes = {\r\n\t\t\t\tattr: name,\r\n\t\t\t\tbefore: before,\r\n\t\t\t\tafter: after\r\n\t\t\t}\r\n\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: dataModel.get( 'objectType' ),\r\n\t\t\t\tlabel: dataModel.get( 'label' ),\r\n\t\t\t\tchange: 'Option ' + model.get( 'label' ) + ' ' + name + ' changed from ' + before + ' to ' + after\r\n\t\t\t};\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'changeSetting', model, changes, label );\r\n\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'update:option', model, dataModel, settingModel, optionView );\r\n\t\t\tnfRadio.channel( 'option-repeater-option-' + name ).trigger( 'update:option', e, model, dataModel, settingModel, optionView );\r\n\t\t\tnfRadio.channel( 'option-repeater-' + settingModel.get( 'name' ) ).trigger( 'update:option', model, dataModel, settingModel, optionView );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Add an option to our list\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.collection \tcollection \tlist option collection\r\n\t\t * @param backbone.model \t\tdataModel\r\n\t\t * @return void\r\n\t\t */\r\n\t\taddOption: function( collection, dataModel ) {\r\n\t\t\tvar modelData = {\r\n\t\t\t\torder: collection.length,\r\n\t\t\t\tnew: true,\r\n\t\t\t\toptions: {}\r\n\t\t\t};\r\n\t\t\t/**\r\n\t\t\t * If we don't actually have a 'settingModel' duplicated fields\r\n\t\t\t * can't add options until publish and the builder is reloaded.\r\n\t\t\t * If we ignore the code if we don't have settingsModel, then it\r\n\t\t\t * works.\r\n\t\t\t */\r\n\t\t\tif ( 'undefined' !== typeof collection.settingModel ) {\r\n\t\t\t\tvar limit = collection.settingModel.get( 'max_options' );\r\n\t\t\t\tif ( 0 !== limit && collection.models.length >= limit ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t_.each( collection.settingModel.get( 'columns' ), function ( col, key ) {\r\n\t\t\t\t\tmodelData[ key ] = col.default;\r\n\r\n\t\t\t\t\tif ( 'undefined' != typeof col.options ) {\r\n\t\t\t\t\t\tmodelData.options[ key ] = col.options;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tvar model = new listOptionModel( modelData );\r\n\t\t\tcollection.add( model );\r\n\r\n\t\t\t// Add our field addition to our change log.\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: dataModel.get( 'objectType' ),\r\n\t\t\t\tlabel: dataModel.get( 'label' ),\r\n\t\t\t\tchange: 'Option Added',\r\n\t\t\t\tdashicon: 'plus-alt'\r\n\t\t\t};\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'addListOption', model, null, label );\r\n\r\n\t\t\tif ( 'undefined' !== typeof collection.settingModel ) {\r\n\t\t\t\tnfRadio.channel('option-repeater-' + collection.settingModel.get('name')).trigger('add:option', model);\r\n\t\t\t}\r\n\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'add:option', model );\r\n\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'added:option', collection );\r\n\t\t\tthis.triggerDataModel( model, dataModel );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Delete an option from our list\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \t\tmodel list option model\r\n\t\t * @param backbone.collection \tcollection \tlist option collection\r\n\t\t * @param backbone.model \t\tdataModel\r\n\t\t * @return void\r\n\t\t */\r\n\t\tdeleteOption: function( model, collection, dataModel ) {\r\n\t\t\tvar newModel = nfRadio.channel( 'app' ).request( 'clone:modelDeep', model );\r\n\r\n\t\t\t// Add our field deletion to our change log.\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: dataModel.get( 'objectType' ),\r\n\t\t\t\tlabel: dataModel.get( 'label' ),\r\n\t\t\t\tchange: 'Option ' + newModel.get( 'label' ) + ' Removed',\r\n\t\t\t\tdashicon: 'dismiss'\r\n\t\t\t};\r\n\r\n\t\t\tvar data = {\r\n\t\t\t\tcollection: collection\r\n\t\t\t}\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'removeListOption', newModel, null, label, data );\r\n\t\t\t\r\n\t\t\tvar changeCollection = nfRadio.channel( 'changes' ).request( 'get:collection' );\r\n\t\t\tvar results = changeCollection.where( { model: model } );\r\n\r\n\t\t\t_.each( results, function( changeModel ) {\r\n\t\t\t\tif ( 'object' == typeof changeModel.get( 'data' ) ) {\r\n\t\t\t\t\t_.each( changeModel.get( 'data' ), function( dataModel ) {\r\n\t\t\t\t\t\tif ( dataModel.model == dataModel ) {\r\n\t\t\t\t\t\t\tdataModel.model = newModel;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t\tchangeModel.set( 'model', newModel );\r\n\t\t\t\tchangeModel.set( 'disabled', true );\r\n\t\t\t} );\r\n\r\n\t\t\tcollection.remove( model );\r\n\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'remove:option', model );\r\n\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'removed:option', collection );\r\n\t\t\tnfRadio.channel( 'option-repeater-' + collection.settingModel.get( 'name' ) ).trigger( 'remove:option', model );\r\n\t\t\tthis.triggerDataModel( model, dataModel );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Creates an arbitrary value on our collection, then clones and updates that collection.\r\n\t\t * This forces a change event to be fired on the dataModel where the list option collection data is stored.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.collection \tcollection \tlist option collection\r\n\t\t * @param backbone.model \t\tdataModel\r\n\t\t * @return void\r\n\t\t */\r\n\t\ttriggerDataModel: function( model, dataModel ) {\r\n\t\t\tnfRadio.channel( 'app' ).trigger( 'update:setting', model );\t\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Return our list composite view to the setting collection view.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param backbone.model \tmodel \tsettings model\r\n\t\t * @return void\r\n\t\t */\r\n\t\tgetSettingChildView: function( model ) {\r\n\t\t\treturn listCompositeView;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we sort our list options, change the order in our option model and trigger a change.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object\t \t\tsortable \tjQuery UI element\r\n\t\t * @param backbone.view \tsetting \tSetting view\r\n\t\t * @return void\r\n\t\t */\r\n\t\tupdateOptionSortable: function( ui, sortable, setting ) {\r\n\t\t\tvar newOrder = jQuery( sortable ).sortable( 'toArray' );\r\n\t\t\tvar dragModel = setting.collection.get( { cid: jQuery( ui.item ).prop( 'id' ) } );\r\n\t\t\tvar data = {\r\n\t\t\t\tcollection: setting.collection,\r\n\t\t\t\tobjModels: []\r\n\t\t\t};\r\n\r\n\t\t\t_.each( newOrder, function( cid, index ) {\r\n\t\t\t\tvar optionModel = setting.collection.get( { cid: cid } );\r\n\t\t\t\tvar oldPos = optionModel.get( 'order' );\r\n\t\t\t\toptionModel.set( 'order', index );\r\n\t\t\t\tvar newPos = index;\r\n\r\n\t\t\t\tdata.objModels.push( {\r\n\t\t\t\t\tmodel: optionModel,\r\n\t\t\t\t\tattr: 'order',\r\n\t\t\t\t\tbefore: oldPos,\r\n\t\t\t\t\tafter: newPos\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\t\t\t\r\n\t\t\tsetting.collection.sort( { silent: true } );\r\n\t\t\t\r\n\t\t\tvar label = {\r\n\t\t\t\tobject: setting.dataModel.get( 'objectType' ),\r\n\t\t\t\tlabel: setting.dataModel.get( 'label' ),\r\n\t\t\t\tchange: 'Option ' + dragModel.get( 'label' ) + ' re-ordered from ' + dragModel._previousAttributes.order + ' to ' + dragModel.get( 'order' ),\r\n\t\t\t\tdashicon: 'sort'\r\n\t\t\t};\r\n\r\n\t\t\tnfRadio.channel( 'changes' ).request( 'register:change', 'sortListOptions', dragModel, null, label, data );\r\n\t\t\tthis.triggerDataModel( dragModel, setting.dataModel );\r\n\t\t\tnfRadio.channel( 'option-repeater' ).trigger( 'sort:option', dragModel, setting );\r\n\t\t\tnfRadio.channel( 'option-repeater-' + setting.model.get( 'name' ) ).trigger( 'sort:option', dragModel, setting );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we stop sorting our list options, reset our item opacity.\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Object ui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\tstopOptionSortable: function( ui ) {\r\n\t\t\tjQuery( ui.item ).css( 'opacity', '' );\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * When we start sorting our list options, remove containing divs and set our item opacity to 0.5\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Objects ui jQuery UI element\r\n\t\t * @return void\r\n\t\t */\r\n\t\tstartOptionSortable: function( ui ) {\r\n\t\t\tjQuery( ui.placeholder ).find( 'div' ).remove();\r\n\t\t\tjQuery( ui.item ).css( 'opacity', '0.5' ).show();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Convert settings from an array/object to a collection/model\r\n\t\t * \r\n\t\t * @since 3.0\r\n\t\t * @param Backbone.Model dataModel\r\n\t\t * @param Backbone.Model settingModel\r\n\t\t * @return void\r\n\t\t */\r\n\t\tconvertSettings: function( dataModel, settingModel ) {\r\n\t\t\t/*\r\n\t\t\t * Our options are stored in our database as objects, not collections.\r\n\t\t\t * Before we attempt to render them, we need to convert them to a collection if they aren't already one.\r\n\t\t\t */ \r\n\t\t\tvar optionCollection = dataModel.get( settingModel.get( 'name' ) );\r\n\r\n\t\t\tif ( false == optionCollection instanceof Backbone.Collection ) {\r\n\t\t\t\toptionCollection = new listOptionCollection( [], { settingModel: settingModel } );\r\n\t\t\t\toptionCollection.add( dataModel.get( settingModel.get( 'name' ) ) );\r\n\t\t\t\tdataModel.set( settingModel.get( 'name' ), optionCollection, { silent: true } );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t});\r\n\r\n\treturn controller;\r\n} );\ndefine( 'views/app/drawer/imageOptionRepeaterOption',['views/app/drawer/optionRepeaterError'], function( ErrorView ) {\r\n var view = Marionette.LayoutView.extend({\r\n tagName: 'div',\r\n className: 'nf-table-row',\r\n template: '#tmpl-nf-edit-setting-image-option-repeater-default-row',\r\n id: function() {\r\n return this.model.cid;\r\n },\r\n\r\n regions: {\r\n error: '.nf-option-error'\r\n },\r\n\r\n initialize: function( data ) {\r\n this.settingModel = data.settingModel;\r\n this.dataModel = data.dataModel;\r\n this.collection = data.collection;