`) if(item.value != null) { $item.data('value',item.value) } if(item.type != null) { $item.data('type',item.type) } if(item.key != null) { $item.data('key',item.key) } if(item.image != null) { $item.data('image', item.image) } if(item.tip != null) { $item.data('tip', item.tip) } if(item.html != null) { $item.find('label').html(item.html) } if(multiselect) { if(selectable) { var chkd = selected.filter(function (o) { return o.id == item.id }).length > 0 var $checkbox = $(``) if (chkd.value != null) { $checkbox.data('value', chkd.value) } if (chkd.type != null) { $checkbox.data('type', chkd.type) } if (chkd.key != null) { $checkbox.data('key', chkd.key) } if (chkd.image != null) { $checkbox.data('image', chkd.image) } if (chkd.tip != null) { $checkbox.data('tip', chkd.tip) } $item.prepend($checkbox) } if(editable) { var $input = $(``) $input.on('click',function(e,d) { e.stopPropagation() return false }) $input.on('keyup',function(e,d) { e.stopPropagation() var id = $(this).data('id') var item = items.filter(function (o) { return o.id == id ? o : null })[0] var select = selected.filter(function (o) { return o.id == id ? o : null })[0] if (select) { select.value = $(this).val() select.html = `${select.text}: ${select.value}` save_selected() render_input_selected() } if (item) { item.value = $(this).val() } return false }) $item.append($input) } $item.on('click',function(e) { e.preventDefault() }) } $item.on('keypress', function (e) { if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault() $item.trigger('click') } }) $item.on('click', function () { var item = $(this).data() if(disabled_feature) { return } if (item.disabled != null && item.disabled) { return } if(editable) { item.value = $(this).find('input[type=text]').val() item.html = `${item.text}: ${item.value}` } if (selected.filter(function (o) { return o.id == item.id }).length == 0) { if (!multiselect) { selected = [] } setTimeout(function () { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', 'checked') }, 50) if($.trim(item.group)) { var matchGroup = selected.filter(function (o) { return o.group == item.group }) if(matchGroup && matchGroup.length) { $dropdown_results.find(`input[data-id="${matchGroup[0].id}"]`).prop('checked', false).attr('checked', null) } selected = selected.filter(function (o) { return o.group != item.group }) } selected.push(item) render_input_selected() save_selected() if (!multiselect) { close_dropdown() } if(show_search && !show_text) { $search.focus() } else if(show_input) { $textinput.focus() } $this.trigger('~change', { items: selected, item:{id:item.id} }) if(!multiselect) { if(selected.length) { $this.trigger('~singlechange', selected[0]) } else { $this.trigger('~singlechange', null) } if (single_select_reset) { setTimeout(function () { $this.trigger('~reset') }, 100) } } } else if(show_clear || !show_pills) { selected = selected.filter(function (o) { return o.id != item.id }) setTimeout(function () { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', false).attr('checked', null) }, 50) render_input_selected() save_selected() $this.trigger('~change', { items: selected,item:{id:item.id} }) if (!multiselect) { if (selected.length) { $this.trigger('~singlechange', selected[0]) } else { $this.trigger('~singlechange', null) } if (single_select_reset) { setTimeout(function () { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') $btn_arrow.show() $btn_options.hide() }, 1000) } } } }) if(item.disabled_feature) { statuscast.ui.disabledfeaturetip($item) } return $item } //////////////////////////////////////////////////////////////////////////// function close_dropdown() { $search.val('') $dropdown.hide() dropdownopen = false if(selected.length==0) { $btn_arrow.show() $btn_options.hide() } else { $btn_arrow.show() } $dropdown_results.empty() if (!ajax_enabled) { $dropdown_results.append(items.map(create_item)) } $this.removeClass('active') } //////////////////////////////////////////////////////////////////////////// function open_dropdown() { if(!multiselect || show_clear) { $btn_arrow.hide() $btn_options.show() } $this.addClass('active') $input.scrollTop(0) $dropdown.show() dropdownopen = true if(show_search && !show_text) { $search.focus() } else if(show_input) { $textinput.focus() } if(ajax_enabled) { $loading.show() $search.attr('placeholder', 'Loading...') ajax_page = 1 ajax_cursor = "" ajax_loading = true statuscast.ajax.form(ajax_items, Object.assign(JSON.parse(JSON.stringify(ajax_args)),Object.assign({ page: ajax_page, size: ajax_size }, $this.triggerHandler("~ajax") || {}))).then(function(d) { ajax_loading = false ajax_pages = d.pages ajax_cursor = d.cursor $search.attr('placeholder', 'Search') $loading.hide() items = d.items $dropdown_results.empty() $dropdown_results.append(items.map(create_item)) }) } } //////////////////////////////////////////////////////////////////////////// function render_items() { $dropdown_results.empty() $dropdown_results.append(items.map(create_item)) } //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// $dropdown.on('scroll', statuscast.fn.debounce(function (e) { if (ajax_enabled && !ajax_loading) { var el = $dropdown.get(0) if ((ajax_page < ajax_pages || (ajax_cursor != "" && ajax_cursor != null)) && (el.scrollHeight - el.scrollTop - el.clientHeight < 100)) { ajax_loading = true var val = $.trim($search.val()).toLowerCase() ajax_page++ $loading.show() $search.attr('placeholder', 'Loading...') statuscast.ajax.form(ajax_items,Object.assign(JSON.parse(JSON.stringify(ajax_args)),Object.assign({ page: ajax_page, size: ajax_size, search: val, cursor: ajax_cursor }, $this.triggerHandler("~ajax") || {}))).then(function (d) { ajax_loading = false ajax_cursor = d.cursor $loading.hide() $search.attr('placeholder', 'Search') items.concat(d.items) $dropdown_results.append(d.items.map(create_item)) }) } } }, 100, false)) //////////////////////////////////////////////////////////////////////////// $search.on('keyup', statuscast.fn.debounce(function () { var val = $.trim($search.val()).toLowerCase() if (ajax_enabled) { $loading.show() $search.attr('placeholder','Loading...') ajax_page = 1 ajax_cursor = "" ajax_loading = true statuscast.ajax.form(ajax_items, Object.assign({ page: ajax_page, size: ajax_size, search: val, cursor:ajax_cursor }, $this.triggerHandler("~ajax") || {})).then(function (d) { ajax_loading = false ajax_pages = d.pages ajax_cursor = d.cursor $loading.hide() $search.attr('placeholder', 'Search') items = d.items $dropdown_results.empty() $dropdown_results.append(items.map(create_item)) }) } else { $dropdown_results.empty() if (val == "") { $dropdown_results.append(items.map(create_item)) } else { $dropdown_results.append(items.filter(function (o) { return o.text.toLowerCase().includes(val) ? o : null }).map(create_item)) } } }, (ajax_enabled ? 500 : 100))) //////////////////////////////////////////////////////////////////////////// $textinput.on('keyup', function (e,d) { if (e.which == 13) { var val = $.trim($(this).val()) if (input_regex != '') { var r = new RegExp(input_regex) if( !(r.test(val) ) ) { statuscast.notify.error('invalid email address') return } } selected.push({id:val,text:val}) render_input_selected() save_selected() $(this).val('') } }) //////////////////////////////////////////////////////////////////////////// $this.on('click', function (e, d) { e.stopPropagation() return false }) //////////////////////////////////////////////////////////////////////////// $this.on('~set-text', function (e, d) { $input.val(d) }) //////////////////////////////////////////////////////////////////////////// $this.on('~get-text', function (e, d) { return $input.val() }) //////////////////////////////////////////////////////////////////////////// $this.on('~reset',function(e,d) { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') $btn_arrow.show() $btn_options.hide() }) //////////////////////////////////////////////////////////////////////////// $this.on('~select',function(e,d) { var item = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false)||( d.value != null ? o.value==d.value: false)||( d.text != null ? o.text==d.text: false)) ? o : null })[0] if(item != null && selected.filter(function(o){return o.id == item.id ? o:null}).length == 0) { if(!multiselect) { selected=[] } selected.push(item) render_input_selected() save_selected() if(multiselect) { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', 'checked') } if(dropdownopen) { $btn_arrow.hide() $btn_options.show() } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~unselect',function(e,d) { var item = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false)||( d.value != null ? o.value==d.value: false)) ? o : null })[0] if(item != null && selected.filter(function(o){return o.id == item.id ? o:null}).length != 0) { if(!multiselect) { selected=[] } selected = selected.filter(function (o) { return o.id != d.id }) render_input_selected() save_selected() if(multiselect) { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', false) } if(dropdownopen) { $btn_arrow.hide() $btn_options.show() } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~singleselect',function(e,d) { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') var item = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false)||( d.value != null ? o.value==d.value: false)) ? o : null })[0] if(item != null && selected.filter(function(o){return o.id == item.id ? o:null}).length == 0) { selected.push(item) render_input_selected() save_selected() if(multiselect) { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', 'checked') } if(dropdownopen) { $btn_arrow.hide() $btn_options.show() } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~append',function(e,d) { items.push(d) }) //////////////////////////////////////////////////////////////////////////// $this.on('~removeitem',function(e,d) { items = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false) || ( d.value != null ? o.value==d.value: false)) ? null : o }) selected = selected.filter(function (o) { return ((d.id !=null ? o.id == d.id : false) || ( d.value != null ? o.value==d.value: false)) ? null : o }) render_input_selected() save_selected() }) //////////////////////////////////////////////////////////////////////////// $this.on('~destroy',function(e,d) { items = [] selected = [] render_input_selected() render_items() if (selected.length > 0 && !multiselect && show_clear) { $btn_options.show() } save_selected() }) //////////////////////////////////////////////////////////////////////////// $this.on('~set',function(e,d) { items = d.items selected = d.selected || [] render_input_selected() render_items() if (selected.length > 0 && !multiselect && show_clear) { $btn_options.show() } save_selected() }) //////////////////////////////////////////////////////////////////////////// $this.on('~value',function(e,d) { if(d != null) { $input.val(d) } else { return $input.val() } }) //////////////////////////////////////////////////////////////////////////// $input.on('keypress',function(e) { close_dropdown() }) //////////////////////////////////////////////////////////////////////////// $input.on('click','.btn-remove_group',function(e) { e.preventDefault() $(this).parent().remove() var gid = $(this).data('id') selected = selected.filter(function(o){return (o.id !== gid ? o : null)}) save_selected() $this.trigger('~change', { items: selected, item:{id:gid} }) if (!multiselect) { if (selected.length) { $this.trigger('~singlechange', selected[0]) } else { $this.trigger('~singlechange', null) } } return false }) //////////////////////////////////////////////////////////////////////////// $this.on('~clear',function(e,d) { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') if( !(d != null && d.cognito == true) ) { $this.trigger('~change', { items: [] }) if (!multiselect) { $this.trigger('~singlechange', null) } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~close',function(e,d) { if (multiselect) { $dropdown_menu.dropdown('toggle') } else { $this.trigger('~clear',d) close_dropdown() } }) //////////////////////////////////////////////////////////////////////////// $this.on('~enable',function(e,d) { disabled = false $input.removeClass('disabled') $btn_arrow.removeClass('disabled') }) //////////////////////////////////////////////////////////////////////////// $this.on('~disable',function(e,d) { disabled = true $input.addClass('disabled') $btn_arrow.addClass('disabled') }) //////////////////////////////////////////////////////////////////////////// $this.on('~disable-item',function(e,d) { for(var i = 0;i < items.length; i++) { if(items[i].id == d.id) { items[i].text = d.text || items[i].text items[i].disabled = true } } render_items() }) //////////////////////////////////////////////////////////////////////////// $this.on('~enable-items',function(e,d) { for(var i = 0;i < items.length; i++) { if((d.items.indexOf(items[i].id) >= 0)) { delete items[i].disabled } } render_items() }) //////////////////////////////////////////////////////////////////////////// $this.on('~enable-item',function(e,d) { for(var i = 0;i < items.length; i++) { if(items[i].id == d.id) { items[i].text = d.text || items[i].text delete items[i].disabled } } render_items() }) //////////////////////////////////////////////////////////////////////////// $this.on('~disable-items',function(e,d) { for(var i = 0;i < items.length; i++) { items[i].disabled = d.items.indexOf(items[i].id) >= 0 } render_items() }) //////////////////////////////////////////////////////////////////////////// $dropdown.on('click', function (e) { e.stopPropagation() $dropdown_menu.removeClass('open show') return false }) //////////////////////////////////////////////////////////////////////////// $btn_options.on('click', function (e) { e.stopPropagation() if(multiselect) { if(show_clear) { if(!disabled_feature) { $this.trigger('~clear') close_dropdown() } } else { $dropdown_menu.dropdown('toggle') } } else { if(!disabled_feature) { $this.trigger('~clear') } close_dropdown() } }) //////////////////////////////////////////////////////////////////////////// $btn_arrow.on('click', function (e) { e.stopPropagation() $input.trigger('click') return false }) //////////////////////////////////////////////////////////////////////////// $input.on('click', function (e) { e.stopPropagation() if (!disabled) { if (dropdownopen) { $this.parent().trigger('click') return false } $this.parent().trigger('click') open_dropdown() } return false }) //////////////////////////////////////////////////////////////////////////// $btn_arrow.on('keypress',function(e) { if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault() $input.trigger('click') $dropdown.find('.search-result-item:first').focus() } }) //////////////////////////////////////////////////////////////////////////// $btn_options.on('keypress',function(e) { if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault() $btn_options.trigger('click') } }) //////////////////////////////////////////////////////////////////////////// $('body').on('click', close_dropdown) //////////////////////////////////////////////////////////////////////////// render_input_selected() render_items() if (selected.length > 0 && show_clear) { $btn_options.show() } save_selected() statuscast.ui.disabledfeaturetip(`#${id} .disabledfeaturetip`) //////////////////////////////////////////////////////////////////////////// } if (typeof $ !== 'undefined') { FDfUluGMMJUy_yitCljPavA() } else { document.addEventListener('DOMContentLoaded', FDfUluGMMJUy_yitCljPavA) }
`) if(item.value != null) { $item.data('value',item.value) } if(item.type != null) { $item.data('type',item.type) } if(item.key != null) { $item.data('key',item.key) } if(item.image != null) { $item.data('image', item.image) } if(item.tip != null) { $item.data('tip', item.tip) } if(item.html != null) { $item.find('label').html(item.html) } if(multiselect) { if(selectable) { var chkd = selected.filter(function (o) { return o.id == item.id }).length > 0 var $checkbox = $(``) if (chkd.value != null) { $checkbox.data('value', chkd.value) } if (chkd.type != null) { $checkbox.data('type', chkd.type) } if (chkd.key != null) { $checkbox.data('key', chkd.key) } if (chkd.image != null) { $checkbox.data('image', chkd.image) } if (chkd.tip != null) { $checkbox.data('tip', chkd.tip) } $item.prepend($checkbox) } if(editable) { var $input = $(``) $input.on('click',function(e,d) { e.stopPropagation() return false }) $input.on('keyup',function(e,d) { e.stopPropagation() var id = $(this).data('id') var item = items.filter(function (o) { return o.id == id ? o : null })[0] var select = selected.filter(function (o) { return o.id == id ? o : null })[0] if (select) { select.value = $(this).val() select.html = `${select.text}: ${select.value}` save_selected() render_input_selected() } if (item) { item.value = $(this).val() } return false }) $item.append($input) } $item.on('click',function(e) { e.preventDefault() }) } $item.on('keypress', function (e) { if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault() $item.trigger('click') } }) $item.on('click', function () { var item = $(this).data() if(disabled_feature) { return } if (item.disabled != null && item.disabled) { return } if(editable) { item.value = $(this).find('input[type=text]').val() item.html = `${item.text}: ${item.value}` } if (selected.filter(function (o) { return o.id == item.id }).length == 0) { if (!multiselect) { selected = [] } setTimeout(function () { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', 'checked') }, 50) if($.trim(item.group)) { var matchGroup = selected.filter(function (o) { return o.group == item.group }) if(matchGroup && matchGroup.length) { $dropdown_results.find(`input[data-id="${matchGroup[0].id}"]`).prop('checked', false).attr('checked', null) } selected = selected.filter(function (o) { return o.group != item.group }) } selected.push(item) render_input_selected() save_selected() if (!multiselect) { close_dropdown() } if(show_search && !show_text) { $search.focus() } else if(show_input) { $textinput.focus() } $this.trigger('~change', { items: selected, item:{id:item.id} }) if(!multiselect) { if(selected.length) { $this.trigger('~singlechange', selected[0]) } else { $this.trigger('~singlechange', null) } if (single_select_reset) { setTimeout(function () { $this.trigger('~reset') }, 100) } } } else if(show_clear || !show_pills) { selected = selected.filter(function (o) { return o.id != item.id }) setTimeout(function () { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', false).attr('checked', null) }, 50) render_input_selected() save_selected() $this.trigger('~change', { items: selected,item:{id:item.id} }) if (!multiselect) { if (selected.length) { $this.trigger('~singlechange', selected[0]) } else { $this.trigger('~singlechange', null) } if (single_select_reset) { setTimeout(function () { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') $btn_arrow.show() $btn_options.hide() }, 1000) } } } }) if(item.disabled_feature) { statuscast.ui.disabledfeaturetip($item) } return $item } //////////////////////////////////////////////////////////////////////////// function close_dropdown() { $search.val('') $dropdown.hide() dropdownopen = false if(selected.length==0) { $btn_arrow.show() $btn_options.hide() } else { $btn_arrow.show() } $dropdown_results.empty() if (!ajax_enabled) { $dropdown_results.append(items.map(create_item)) } $this.removeClass('active') } //////////////////////////////////////////////////////////////////////////// function open_dropdown() { if(!multiselect || show_clear) { $btn_arrow.hide() $btn_options.show() } $this.addClass('active') $input.scrollTop(0) $dropdown.show() dropdownopen = true if(show_search && !show_text) { $search.focus() } else if(show_input) { $textinput.focus() } if(ajax_enabled) { $loading.show() $search.attr('placeholder', 'Loading...') ajax_page = 1 ajax_cursor = "" ajax_loading = true statuscast.ajax.form(ajax_items, Object.assign(JSON.parse(JSON.stringify(ajax_args)),Object.assign({ page: ajax_page, size: ajax_size }, $this.triggerHandler("~ajax") || {}))).then(function(d) { ajax_loading = false ajax_pages = d.pages ajax_cursor = d.cursor $search.attr('placeholder', 'Search') $loading.hide() items = d.items $dropdown_results.empty() $dropdown_results.append(items.map(create_item)) }) } } //////////////////////////////////////////////////////////////////////////// function render_items() { $dropdown_results.empty() $dropdown_results.append(items.map(create_item)) } //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// $dropdown.on('scroll', statuscast.fn.debounce(function (e) { if (ajax_enabled && !ajax_loading) { var el = $dropdown.get(0) if ((ajax_page < ajax_pages || (ajax_cursor != "" && ajax_cursor != null)) && (el.scrollHeight - el.scrollTop - el.clientHeight < 100)) { ajax_loading = true var val = $.trim($search.val()).toLowerCase() ajax_page++ $loading.show() $search.attr('placeholder', 'Loading...') statuscast.ajax.form(ajax_items,Object.assign(JSON.parse(JSON.stringify(ajax_args)),Object.assign({ page: ajax_page, size: ajax_size, search: val, cursor: ajax_cursor }, $this.triggerHandler("~ajax") || {}))).then(function (d) { ajax_loading = false ajax_cursor = d.cursor $loading.hide() $search.attr('placeholder', 'Search') items.concat(d.items) $dropdown_results.append(d.items.map(create_item)) }) } } }, 100, false)) //////////////////////////////////////////////////////////////////////////// $search.on('keyup', statuscast.fn.debounce(function () { var val = $.trim($search.val()).toLowerCase() if (ajax_enabled) { $loading.show() $search.attr('placeholder','Loading...') ajax_page = 1 ajax_cursor = "" ajax_loading = true statuscast.ajax.form(ajax_items, Object.assign({ page: ajax_page, size: ajax_size, search: val, cursor:ajax_cursor }, $this.triggerHandler("~ajax") || {})).then(function (d) { ajax_loading = false ajax_pages = d.pages ajax_cursor = d.cursor $loading.hide() $search.attr('placeholder', 'Search') items = d.items $dropdown_results.empty() $dropdown_results.append(items.map(create_item)) }) } else { $dropdown_results.empty() if (val == "") { $dropdown_results.append(items.map(create_item)) } else { $dropdown_results.append(items.filter(function (o) { return o.text.toLowerCase().includes(val) ? o : null }).map(create_item)) } } }, (ajax_enabled ? 500 : 100))) //////////////////////////////////////////////////////////////////////////// $textinput.on('keyup', function (e,d) { if (e.which == 13) { var val = $.trim($(this).val()) if (input_regex != '') { var r = new RegExp(input_regex) if( !(r.test(val) ) ) { statuscast.notify.error('invalid email address') return } } selected.push({id:val,text:val}) render_input_selected() save_selected() $(this).val('') } }) //////////////////////////////////////////////////////////////////////////// $this.on('click', function (e, d) { e.stopPropagation() return false }) //////////////////////////////////////////////////////////////////////////// $this.on('~set-text', function (e, d) { $input.val(d) }) //////////////////////////////////////////////////////////////////////////// $this.on('~get-text', function (e, d) { return $input.val() }) //////////////////////////////////////////////////////////////////////////// $this.on('~reset',function(e,d) { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') $btn_arrow.show() $btn_options.hide() }) //////////////////////////////////////////////////////////////////////////// $this.on('~select',function(e,d) { var item = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false)||( d.value != null ? o.value==d.value: false)||( d.text != null ? o.text==d.text: false)) ? o : null })[0] if(item != null && selected.filter(function(o){return o.id == item.id ? o:null}).length == 0) { if(!multiselect) { selected=[] } selected.push(item) render_input_selected() save_selected() if(multiselect) { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', 'checked') } if(dropdownopen) { $btn_arrow.hide() $btn_options.show() } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~unselect',function(e,d) { var item = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false)||( d.value != null ? o.value==d.value: false)) ? o : null })[0] if(item != null && selected.filter(function(o){return o.id == item.id ? o:null}).length != 0) { if(!multiselect) { selected=[] } selected = selected.filter(function (o) { return o.id != d.id }) render_input_selected() save_selected() if(multiselect) { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', false) } if(dropdownopen) { $btn_arrow.hide() $btn_options.show() } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~singleselect',function(e,d) { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') var item = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false)||( d.value != null ? o.value==d.value: false)) ? o : null })[0] if(item != null && selected.filter(function(o){return o.id == item.id ? o:null}).length == 0) { selected.push(item) render_input_selected() save_selected() if(multiselect) { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', 'checked') } if(dropdownopen) { $btn_arrow.hide() $btn_options.show() } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~append',function(e,d) { items.push(d) }) //////////////////////////////////////////////////////////////////////////// $this.on('~removeitem',function(e,d) { items = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false) || ( d.value != null ? o.value==d.value: false)) ? null : o }) selected = selected.filter(function (o) { return ((d.id !=null ? o.id == d.id : false) || ( d.value != null ? o.value==d.value: false)) ? null : o }) render_input_selected() save_selected() }) //////////////////////////////////////////////////////////////////////////// $this.on('~destroy',function(e,d) { items = [] selected = [] render_input_selected() render_items() if (selected.length > 0 && !multiselect && show_clear) { $btn_options.show() } save_selected() }) //////////////////////////////////////////////////////////////////////////// $this.on('~set',function(e,d) { items = d.items selected = d.selected || [] render_input_selected() render_items() if (selected.length > 0 && !multiselect && show_clear) { $btn_options.show() } save_selected() }) //////////////////////////////////////////////////////////////////////////// $this.on('~value',function(e,d) { if(d != null) { $input.val(d) } else { return $input.val() } }) //////////////////////////////////////////////////////////////////////////// $input.on('keypress',function(e) { close_dropdown() }) //////////////////////////////////////////////////////////////////////////// $input.on('click','.btn-remove_group',function(e) { e.preventDefault() $(this).parent().remove() var gid = $(this).data('id') selected = selected.filter(function(o){return (o.id !== gid ? o : null)}) save_selected() $this.trigger('~change', { items: selected, item:{id:gid} }) if (!multiselect) { if (selected.length) { $this.trigger('~singlechange', selected[0]) } else { $this.trigger('~singlechange', null) } } return false }) //////////////////////////////////////////////////////////////////////////// $this.on('~clear',function(e,d) { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') if( !(d != null && d.cognito == true) ) { $this.trigger('~change', { items: [] }) if (!multiselect) { $this.trigger('~singlechange', null) } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~close',function(e,d) { if (multiselect) { $dropdown_menu.dropdown('toggle') } else { $this.trigger('~clear',d) close_dropdown() } }) //////////////////////////////////////////////////////////////////////////// $this.on('~enable',function(e,d) { disabled = false $input.removeClass('disabled') $btn_arrow.removeClass('disabled') }) //////////////////////////////////////////////////////////////////////////// $this.on('~disable',function(e,d) { disabled = true $input.addClass('disabled') $btn_arrow.addClass('disabled') }) //////////////////////////////////////////////////////////////////////////// $this.on('~disable-item',function(e,d) { for(var i = 0;i < items.length; i++) { if(items[i].id == d.id) { items[i].text = d.text || items[i].text items[i].disabled = true } } render_items() }) //////////////////////////////////////////////////////////////////////////// $this.on('~enable-items',function(e,d) { for(var i = 0;i < items.length; i++) { if((d.items.indexOf(items[i].id) >= 0)) { delete items[i].disabled } } render_items() }) //////////////////////////////////////////////////////////////////////////// $this.on('~enable-item',function(e,d) { for(var i = 0;i < items.length; i++) { if(items[i].id == d.id) { items[i].text = d.text || items[i].text delete items[i].disabled } } render_items() }) //////////////////////////////////////////////////////////////////////////// $this.on('~disable-items',function(e,d) { for(var i = 0;i < items.length; i++) { items[i].disabled = d.items.indexOf(items[i].id) >= 0 } render_items() }) //////////////////////////////////////////////////////////////////////////// $dropdown.on('click', function (e) { e.stopPropagation() $dropdown_menu.removeClass('open show') return false }) //////////////////////////////////////////////////////////////////////////// $btn_options.on('click', function (e) { e.stopPropagation() if(multiselect) { if(show_clear) { if(!disabled_feature) { $this.trigger('~clear') close_dropdown() } } else { $dropdown_menu.dropdown('toggle') } } else { if(!disabled_feature) { $this.trigger('~clear') } close_dropdown() } }) //////////////////////////////////////////////////////////////////////////// $btn_arrow.on('click', function (e) { e.stopPropagation() $input.trigger('click') return false }) //////////////////////////////////////////////////////////////////////////// $input.on('click', function (e) { e.stopPropagation() if (!disabled) { if (dropdownopen) { $this.parent().trigger('click') return false } $this.parent().trigger('click') open_dropdown() } return false }) //////////////////////////////////////////////////////////////////////////// $btn_arrow.on('keypress',function(e) { if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault() $input.trigger('click') $dropdown.find('.search-result-item:first').focus() } }) //////////////////////////////////////////////////////////////////////////// $btn_options.on('keypress',function(e) { if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault() $btn_options.trigger('click') } }) //////////////////////////////////////////////////////////////////////////// $('body').on('click', close_dropdown) //////////////////////////////////////////////////////////////////////////// render_input_selected() render_items() if (selected.length > 0 && show_clear) { $btn_options.show() } save_selected() statuscast.ui.disabledfeaturetip(`#${id} .disabledfeaturetip`) //////////////////////////////////////////////////////////////////////////// } if (typeof $ !== 'undefined') { FlWUy0feVkKZMhLZFGlTQ() } else { document.addEventListener('DOMContentLoaded', FlWUy0feVkKZMhLZFGlTQ) }
`) if(item.value != null) { $item.data('value',item.value) } if(item.type != null) { $item.data('type',item.type) } if(item.key != null) { $item.data('key',item.key) } if(item.image != null) { $item.data('image', item.image) } if(item.tip != null) { $item.data('tip', item.tip) } if(item.html != null) { $item.find('label').html(item.html) } if(multiselect) { if(selectable) { var chkd = selected.filter(function (o) { return o.id == item.id }).length > 0 var $checkbox = $(``) if (chkd.value != null) { $checkbox.data('value', chkd.value) } if (chkd.type != null) { $checkbox.data('type', chkd.type) } if (chkd.key != null) { $checkbox.data('key', chkd.key) } if (chkd.image != null) { $checkbox.data('image', chkd.image) } if (chkd.tip != null) { $checkbox.data('tip', chkd.tip) } $item.prepend($checkbox) } if(editable) { var $input = $(``) $input.on('click',function(e,d) { e.stopPropagation() return false }) $input.on('keyup',function(e,d) { e.stopPropagation() var id = $(this).data('id') var item = items.filter(function (o) { return o.id == id ? o : null })[0] var select = selected.filter(function (o) { return o.id == id ? o : null })[0] if (select) { select.value = $(this).val() select.html = `${select.text}: ${select.value}` save_selected() render_input_selected() } if (item) { item.value = $(this).val() } return false }) $item.append($input) } $item.on('click',function(e) { e.preventDefault() }) } $item.on('keypress', function (e) { if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault() $item.trigger('click') } }) $item.on('click', function () { var item = $(this).data() if(disabled_feature) { return } if (item.disabled != null && item.disabled) { return } if(editable) { item.value = $(this).find('input[type=text]').val() item.html = `${item.text}: ${item.value}` } if (selected.filter(function (o) { return o.id == item.id }).length == 0) { if (!multiselect) { selected = [] } setTimeout(function () { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', 'checked') }, 50) if($.trim(item.group)) { var matchGroup = selected.filter(function (o) { return o.group == item.group }) if(matchGroup && matchGroup.length) { $dropdown_results.find(`input[data-id="${matchGroup[0].id}"]`).prop('checked', false).attr('checked', null) } selected = selected.filter(function (o) { return o.group != item.group }) } selected.push(item) render_input_selected() save_selected() if (!multiselect) { close_dropdown() } if(show_search && !show_text) { $search.focus() } else if(show_input) { $textinput.focus() } $this.trigger('~change', { items: selected, item:{id:item.id} }) if(!multiselect) { if(selected.length) { $this.trigger('~singlechange', selected[0]) } else { $this.trigger('~singlechange', null) } if (single_select_reset) { setTimeout(function () { $this.trigger('~reset') }, 100) } } } else if(show_clear || !show_pills) { selected = selected.filter(function (o) { return o.id != item.id }) setTimeout(function () { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', false).attr('checked', null) }, 50) render_input_selected() save_selected() $this.trigger('~change', { items: selected,item:{id:item.id} }) if (!multiselect) { if (selected.length) { $this.trigger('~singlechange', selected[0]) } else { $this.trigger('~singlechange', null) } if (single_select_reset) { setTimeout(function () { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') $btn_arrow.show() $btn_options.hide() }, 1000) } } } }) if(item.disabled_feature) { statuscast.ui.disabledfeaturetip($item) } return $item } //////////////////////////////////////////////////////////////////////////// function close_dropdown() { $search.val('') $dropdown.hide() dropdownopen = false if(selected.length==0) { $btn_arrow.show() $btn_options.hide() } else { $btn_arrow.show() } $dropdown_results.empty() if (!ajax_enabled) { $dropdown_results.append(items.map(create_item)) } $this.removeClass('active') } //////////////////////////////////////////////////////////////////////////// function open_dropdown() { if(!multiselect || show_clear) { $btn_arrow.hide() $btn_options.show() } $this.addClass('active') $input.scrollTop(0) $dropdown.show() dropdownopen = true if(show_search && !show_text) { $search.focus() } else if(show_input) { $textinput.focus() } if(ajax_enabled) { $loading.show() $search.attr('placeholder', 'Loading...') ajax_page = 1 ajax_cursor = "" ajax_loading = true statuscast.ajax.form(ajax_items, Object.assign(JSON.parse(JSON.stringify(ajax_args)),Object.assign({ page: ajax_page, size: ajax_size }, $this.triggerHandler("~ajax") || {}))).then(function(d) { ajax_loading = false ajax_pages = d.pages ajax_cursor = d.cursor $search.attr('placeholder', 'Search') $loading.hide() items = d.items $dropdown_results.empty() $dropdown_results.append(items.map(create_item)) }) } } //////////////////////////////////////////////////////////////////////////// function render_items() { $dropdown_results.empty() $dropdown_results.append(items.map(create_item)) } //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// $dropdown.on('scroll', statuscast.fn.debounce(function (e) { if (ajax_enabled && !ajax_loading) { var el = $dropdown.get(0) if ((ajax_page < ajax_pages || (ajax_cursor != "" && ajax_cursor != null)) && (el.scrollHeight - el.scrollTop - el.clientHeight < 100)) { ajax_loading = true var val = $.trim($search.val()).toLowerCase() ajax_page++ $loading.show() $search.attr('placeholder', 'Loading...') statuscast.ajax.form(ajax_items,Object.assign(JSON.parse(JSON.stringify(ajax_args)),Object.assign({ page: ajax_page, size: ajax_size, search: val, cursor: ajax_cursor }, $this.triggerHandler("~ajax") || {}))).then(function (d) { ajax_loading = false ajax_cursor = d.cursor $loading.hide() $search.attr('placeholder', 'Search') items.concat(d.items) $dropdown_results.append(d.items.map(create_item)) }) } } }, 100, false)) //////////////////////////////////////////////////////////////////////////// $search.on('keyup', statuscast.fn.debounce(function () { var val = $.trim($search.val()).toLowerCase() if (ajax_enabled) { $loading.show() $search.attr('placeholder','Loading...') ajax_page = 1 ajax_cursor = "" ajax_loading = true statuscast.ajax.form(ajax_items, Object.assign({ page: ajax_page, size: ajax_size, search: val, cursor:ajax_cursor }, $this.triggerHandler("~ajax") || {})).then(function (d) { ajax_loading = false ajax_pages = d.pages ajax_cursor = d.cursor $loading.hide() $search.attr('placeholder', 'Search') items = d.items $dropdown_results.empty() $dropdown_results.append(items.map(create_item)) }) } else { $dropdown_results.empty() if (val == "") { $dropdown_results.append(items.map(create_item)) } else { $dropdown_results.append(items.filter(function (o) { return o.text.toLowerCase().includes(val) ? o : null }).map(create_item)) } } }, (ajax_enabled ? 500 : 100))) //////////////////////////////////////////////////////////////////////////// $textinput.on('keyup', function (e,d) { if (e.which == 13) { var val = $.trim($(this).val()) if (input_regex != '') { var r = new RegExp(input_regex) if( !(r.test(val) ) ) { statuscast.notify.error('invalid email address') return } } selected.push({id:val,text:val}) render_input_selected() save_selected() $(this).val('') } }) //////////////////////////////////////////////////////////////////////////// $this.on('click', function (e, d) { e.stopPropagation() return false }) //////////////////////////////////////////////////////////////////////////// $this.on('~set-text', function (e, d) { $input.val(d) }) //////////////////////////////////////////////////////////////////////////// $this.on('~get-text', function (e, d) { return $input.val() }) //////////////////////////////////////////////////////////////////////////// $this.on('~reset',function(e,d) { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') $btn_arrow.show() $btn_options.hide() }) //////////////////////////////////////////////////////////////////////////// $this.on('~select',function(e,d) { var item = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false)||( d.value != null ? o.value==d.value: false)||( d.text != null ? o.text==d.text: false)) ? o : null })[0] if(item != null && selected.filter(function(o){return o.id == item.id ? o:null}).length == 0) { if(!multiselect) { selected=[] } selected.push(item) render_input_selected() save_selected() if(multiselect) { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', 'checked') } if(dropdownopen) { $btn_arrow.hide() $btn_options.show() } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~unselect',function(e,d) { var item = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false)||( d.value != null ? o.value==d.value: false)) ? o : null })[0] if(item != null && selected.filter(function(o){return o.id == item.id ? o:null}).length != 0) { if(!multiselect) { selected=[] } selected = selected.filter(function (o) { return o.id != d.id }) render_input_selected() save_selected() if(multiselect) { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', false) } if(dropdownopen) { $btn_arrow.hide() $btn_options.show() } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~singleselect',function(e,d) { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') var item = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false)||( d.value != null ? o.value==d.value: false)) ? o : null })[0] if(item != null && selected.filter(function(o){return o.id == item.id ? o:null}).length == 0) { selected.push(item) render_input_selected() save_selected() if(multiselect) { $dropdown_results.find(`input[data-id="${item.id}"]`).prop('checked', true).attr('checked', 'checked') } if(dropdownopen) { $btn_arrow.hide() $btn_options.show() } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~append',function(e,d) { items.push(d) }) //////////////////////////////////////////////////////////////////////////// $this.on('~removeitem',function(e,d) { items = items.filter(function (o) { return ((d.id !=null ? o.id == d.id : false) || ( d.value != null ? o.value==d.value: false)) ? null : o }) selected = selected.filter(function (o) { return ((d.id !=null ? o.id == d.id : false) || ( d.value != null ? o.value==d.value: false)) ? null : o }) render_input_selected() save_selected() }) //////////////////////////////////////////////////////////////////////////// $this.on('~destroy',function(e,d) { items = [] selected = [] render_input_selected() render_items() if (selected.length > 0 && !multiselect && show_clear) { $btn_options.show() } save_selected() }) //////////////////////////////////////////////////////////////////////////// $this.on('~set',function(e,d) { items = d.items selected = d.selected || [] render_input_selected() render_items() if (selected.length > 0 && !multiselect && show_clear) { $btn_options.show() } save_selected() }) //////////////////////////////////////////////////////////////////////////// $this.on('~value',function(e,d) { if(d != null) { $input.val(d) } else { return $input.val() } }) //////////////////////////////////////////////////////////////////////////// $input.on('keypress',function(e) { close_dropdown() }) //////////////////////////////////////////////////////////////////////////// $input.on('click','.btn-remove_group',function(e) { e.preventDefault() $(this).parent().remove() var gid = $(this).data('id') selected = selected.filter(function(o){return (o.id !== gid ? o : null)}) save_selected() $this.trigger('~change', { items: selected, item:{id:gid} }) if (!multiselect) { if (selected.length) { $this.trigger('~singlechange', selected[0]) } else { $this.trigger('~singlechange', null) } } return false }) //////////////////////////////////////////////////////////////////////////// $this.on('~clear',function(e,d) { selected = [] render_input_selected() save_selected() $dropdown_results.find(`.search-result-item`).css('text-decoration', 'unset') if( !(d != null && d.cognito == true) ) { $this.trigger('~change', { items: [] }) if (!multiselect) { $this.trigger('~singlechange', null) } } }) //////////////////////////////////////////////////////////////////////////// $this.on('~close',function(e,d) { if (multiselect) { $dropdown_menu.dropdown('toggle') } else { $this.trigger('~clear',d) close_dropdown() } }) //////////////////////////////////////////////////////////////////////////// $this.on('~enable',function(e,d) { disabled = false $input.removeClass('disabled') $btn_arrow.removeClass('disabled') }) //////////////////////////////////////////////////////////////////////////// $this.on('~disable',function(e,d) { disabled = true $input.addClass('disabled') $btn_arrow.addClass('disabled') }) //////////////////////////////////////////////////////////////////////////// $this.on('~disable-item',function(e,d) { for(var i = 0;i < items.length; i++) { if(items[i].id == d.id) { items[i].text = d.text || items[i].text items[i].disabled = true } } render_items() }) //////////////////////////////////////////////////////////////////////////// $this.on('~enable-items',function(e,d) { for(var i = 0;i < items.length; i++) { if((d.items.indexOf(items[i].id) >= 0)) { delete items[i].disabled } } render_items() }) //////////////////////////////////////////////////////////////////////////// $this.on('~enable-item',function(e,d) { for(var i = 0;i < items.length; i++) { if(items[i].id == d.id) { items[i].text = d.text || items[i].text delete items[i].disabled } } render_items() }) //////////////////////////////////////////////////////////////////////////// $this.on('~disable-items',function(e,d) { for(var i = 0;i < items.length; i++) { items[i].disabled = d.items.indexOf(items[i].id) >= 0 } render_items() }) //////////////////////////////////////////////////////////////////////////// $dropdown.on('click', function (e) { e.stopPropagation() $dropdown_menu.removeClass('open show') return false }) //////////////////////////////////////////////////////////////////////////// $btn_options.on('click', function (e) { e.stopPropagation() if(multiselect) { if(show_clear) { if(!disabled_feature) { $this.trigger('~clear') close_dropdown() } } else { $dropdown_menu.dropdown('toggle') } } else { if(!disabled_feature) { $this.trigger('~clear') } close_dropdown() } }) //////////////////////////////////////////////////////////////////////////// $btn_arrow.on('click', function (e) { e.stopPropagation() $input.trigger('click') return false }) //////////////////////////////////////////////////////////////////////////// $input.on('click', function (e) { e.stopPropagation() if (!disabled) { if (dropdownopen) { $this.parent().trigger('click') return false } $this.parent().trigger('click') open_dropdown() } return false }) //////////////////////////////////////////////////////////////////////////// $btn_arrow.on('keypress',function(e) { if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault() $input.trigger('click') $dropdown.find('.search-result-item:first').focus() } }) //////////////////////////////////////////////////////////////////////////// $btn_options.on('keypress',function(e) { if (e.key === ' ' || e.key === 'Spacebar') { e.preventDefault() $btn_options.trigger('click') } }) //////////////////////////////////////////////////////////////////////////// $('body').on('click', close_dropdown) //////////////////////////////////////////////////////////////////////////// render_input_selected() render_items() if (selected.length > 0 && show_clear) { $btn_options.show() } save_selected() statuscast.ui.disabledfeaturetip(`#${id} .disabledfeaturetip`) //////////////////////////////////////////////////////////////////////////// } if (typeof $ !== 'undefined') { FrbxM_mTNnkuUHF5VGyPjaA() } else { document.addEventListener('DOMContentLoaded', FrbxM_mTNnkuUHF5VGyPjaA) }