PluginProbe
Orderable – Restaurant & Food Ordering System / 1.19.0
Orderable – Restaurant & Food Ordering System v1.19.0
0.1.4 0.1.5 0.2.0 1.0.0 1.1.0 1.1.1 1.10.0 1.10.1 1.11.0 1.12.0 1.12.1 1.12.2 1.13.0 1.14.0 1.15.0 1.16.0 1.17.0 1.17.1 1.18.0 1.19.0 1.19.1 1.19.2 1.2.0 1.20.0 1.20.1 All 44 releases
orderable / inc / modules / layouts / source / admin / js / layouts.js

layouts.js in Orderable – Restaurant & Food Ordering System 1.19.0, at inc/modules/layouts/source/admin/js/layouts.js

140 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 ( function ( $, document ) {
2 'use strict';
3
4 var orderable_layouts = {
5 /**
6 * On doc ready.
7 */
8 on_ready() {
9 orderable_layouts.builder.init();
10 },
11
12 /**
13 * Helper functions.
14 */
15 helpers: {
16 /**
17 * Get field type.
18 * @param $field
19 */
20 get_field_type( $field ) {
21 const tag = $field.get( 0 ).tagName;
22
23 if ( 'SELECT' === tag ) {
24 return 'select';
25 }
26 return $field.attr( 'type' );
27 },
28
29 /**
30 * Strip "orderable_" prefix.
31 *
32 * @param string
33 * @return {*}
34 */
35 strip_prefix( string ) {
36 return string.replace( 'orderable_', '' );
37 },
38 },
39
40 /**
41 * Builder.
42 */
43 builder: {
44 /**
45 * Init builder.
46 */
47 init() {
48 orderable_layouts.builder.watch();
49 },
50
51 /**
52 * Watch builder fields.
53 */
54 watch() {
55 $( document.body ).on(
56 'change',
57 '#orderable-layout-settings-metabox input, #orderable-layout-settings-metabox select',
58 function () {
59 let $parent = $( this ).closest(
60 '#orderable-layout-settings-metabox'
61 ),
62 data = {},
63 reload_preview = true;
64
65 $parent
66 .find(
67 '.form-field > input, .form-field > select:enabled'
68 )
69 .each( function ( index, field ) {
70 let $field = $( field ),
71 type =
72 orderable_layouts.helpers.get_field_type(
73 $field
74 ),
75 value = '';
76
77 if ( 'checkbox' === type ) {
78 value = $( this ).is( ':checked' );
79 } else if (
80 'select' === type &&
81 'multiple' === $field.attr( 'multiple' )
82 ) {
83 value = $field.val();
84 } else {
85 value = $field.val();
86 }
87
88 // Has a "pro_" prefix.
89 if (
90 typeof value === 'string' &&
91 0 === value.indexOf( 'pro_' )
92 ) {
93 reload_preview = false;
94
95 $( document.body ).trigger(
96 'orderable-pro-modal'
97 );
98 }
99
100 data[
101 orderable_layouts.helpers.strip_prefix(
102 this.name.replace( '[]', '' )
103 )
104 ] = value;
105 } );
106
107 if ( reload_preview ) {
108 orderable_layouts.builder.reload_preview( data );
109 }
110 }
111 );
112 },
113
114 /**
115 * Reload preview.
116 *
117 * @param preview_data
118 */
119 reload_preview( preview_data ) {
120 const data = {
121 action: 'orderable_preview',
122 data: preview_data,
123 };
124
125 $.post( ajaxurl, data, function ( response ) {
126 if ( ! response.success ) {
127 return;
128 }
129
130 $(
131 '#orderable-layout-preview-metabox .orderable-main-wrap'
132 ).html( response.data.shortcode );
133 } );
134 },
135 },
136 };
137
138 $( document ).ready( orderable_layouts.on_ready );
139 } )( jQuery, document );
140