Кому интересно, нашёл решение как получить системные иконки в своём виджете.
Может кому то пригодится.
В форме после public function init() {
Добавляем
$tpl = cmsTemplate::getInstance();
$url = '/admin/settings/theme/' . cmsConfig::get('http_template') . '/icon_list';
$tpl->addBottom(<<<HTML
<script>
(function(\$){
var SPINNER =
'<div style="display:flex; align-items:center; justify-content:center; height:220px;">' +
'<div class="spinner-border" role="status" aria-hidden="true"></div>' +
'</div>';
function ov(){
var \$ov = \$("#icmsIconOverlay");
if (\$ov.length) return \$ov;
\$ov = \$(
'<div id="icmsIconOverlay" style="display:none; position:fixed; inset:0; z-index:99999;">' +
'<div class="b" style="position:absolute; inset:0; background:rgba(0,0,0,.45)"></div>' +
'<div class="w" style="position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:min(1100px,94vw); height:min(720px,92vh); background:#fff; border-radius:12px; overflow:hidden; box-shadow:0 20px 60px rgba(0,0,0,.35)">' +
'<div style="display:flex; justify-content:space-between; padding:10px 12px; border-bottom:1px solid #eee;">' +
'<div style="font-weight:600">Выбор иконки</div>' +
'<button type="button" class="x btn btn-sm btn-light">×</button>' +
'</div>' +
'<div class="c" style="height:calc(100% - 49px); overflow:auto; padding:12px;"></div>' +
'</div>' +
'</div>'
);
\$("body").append(\$ov);
\
$ov.on
("click", ".b,.x", function(){ \
$ov.hide
().find
(".c").empty(); });
return \$ov;
}
function iconName(el){
var \$el = \$(el);
var d = \$el.data();
if (d.icon) return String(d.icon);
if (d.name) return String(d.name);
if (d.value) return String(d.value);
var oc = \$el.attr("onclick") || "";
var m = oc.match(/["']([a-z]+:[a-z0-9\\-]+)["']/i);
return m ? m[1] : "";
}
\$(document).on("click", "a.icms-icon-select", function(e){
e.preventDefault();
window.__icms_icon_target = \$(this)
.closest(".field, .form-group, .icms-field, td, .row, .icms-form-field, form")
.find("input[type=text], input[type=search]").first();
var url = \$(this).data("href") || \$(this).attr("href");
var \$ov = ov();
\$ov.show().find(".c").html(SPINNER);
\$.get(url, function(html){
\$ov.find(".c").html(html).find("[onclick]").removeAttr("onclick");
});
});
\$(document).on("click", "#icmsIconOverlay .c a, #icmsIconOverlay .c button, #icmsIconOverlay .c [role=button], #icmsIconOverlay .c i, #icmsIconOverlay .c svg", function(e){
var icon = iconName(this);
if (!icon) return;
e.preventDefault();
e.stopPropagation();
window.__icms_icon_target.val(icon).trigger("change");
\$("#icmsIconOverlay").hide().find(".c").empty();
});
})(window.jQuery);
</script>
HTML);
И само поле
new fieldString('icon', [
'title' => LANG_CP_MENU_ITEM_ICON,
'suffix' => '<a href="' . $url . '" class="icms-icon-select" data-href="' . $url . '"><span>' . LANG_CP_ICON_SELECT . '</span></a>',
]),
Если кто знает решение иное, прошу сказать как.