This commit is contained in:
2021-11-29 21:18:18 +03:00
parent 7c096e52d3
commit 8be41809a5
6 changed files with 71 additions and 32 deletions
+1 -1
View File
@@ -58,7 +58,7 @@ kit.PluginManager.register('bsToastService', function(module, exports, require,
desc: desc, desc: desc,
date: new Date() date: new Date()
}; };
support.setKit(toastNode, 'toast', toast); support.setNodeData(toastNode, 'toast', toast);
this.container.appendChild(toastNode); this.container.appendChild(toastNode);
toast.show(); toast.show();
this.onShow.eachCall(this, toast, toastNode); this.onShow.eachCall(this, toast, toastNode);
+8
View File
@@ -64,6 +64,7 @@ logger-item__key {
padding-right: 5px; padding-right: 5px;
white-space: nowrap; white-space: nowrap;
color: var(--logger-color-key, #909090); color: var(--logger-color-key, #909090);
background-color: var(--logger-color-content-key, transparent);
} }
logger-item__key:empty { logger-item__key:empty {
display: none; display: none;
@@ -75,6 +76,7 @@ logger-item__value {
flex: 1 0 0; flex: 1 0 0;
white-space: pre-wrap; white-space: pre-wrap;
color: var(--logger-color-value, #c1c1c1); color: var(--logger-color-value, #c1c1c1);
background-color: var(--logger-color-content-value, transparent);
} }
logger-item__value * { logger-item__value * {
font-size: inherit !important; font-size: inherit !important;
@@ -84,6 +86,12 @@ logger-item__value * {
} }
.kit-logger-row--critical {
--logger-color-key: #fff;
--logger-color-content-key: var(--logger-color-error);
--logger-color-value: #fff;
--logger-color-content-value: var(--logger-color-error);
}
.kit-logger-row--error { .kit-logger-row--error {
--logger-color-key: var(--logger-color-error); --logger-color-key: var(--logger-color-error);
--logger-color-value: var(--logger-color-error); --logger-color-value: var(--logger-color-error);
+5 -20
View File
@@ -438,8 +438,7 @@ __PluginManager__.register('menu',function(module, exports, require, global) {
this.node = document.createElement('a'); this.node = document.createElement('a');
this.node.style.position = 'relative'; this.node.style.position = 'relative';
this.node.dataset.parentId = this.parentId; this.node.dataset.parentId = this.parentId;
this.node.kit = this.node.kit || {}; support.setNodeData(this.node, 'menuItem', this);
this.node.kit.menuItem = this;
}; };
/** /**
@@ -627,23 +626,12 @@ __PluginManager__.register('menu',function(module, exports, require, global) {
}; };
/** /**
* @param node HTMLElement * @param selector HTMLElement | string
* @param content HTMLElement | string * @param content HTMLElement | string
* @param isText boolean
* @return boolean * @return boolean
*/ */
MenuItem.prototype.setContent = function(node, content, isText = false){ MenuItem.prototype.setContent = function(selector, content){
if(!(node instanceof Element)) { support.innerHtml(selector, content);
return false;
}
while (node.firstChild) {
node.removeChild(node.firstChild);
}
if((content instanceof Element) || isText) {
node.append(content);
} else {
node.innerHTML = content;
}
return true; return true;
}; };
@@ -655,10 +643,7 @@ __PluginManager__.register('menu',function(module, exports, require, global) {
if(typeof options === 'string') { if(typeof options === 'string') {
options = document.querySelector(options); options = document.querySelector(options);
} }
if((options instanceof HTMLElement) && options.kit && options.kit.menu) { return support.getNodeData(options, MENU_PLUGIN_NAME) || new Menu(options, items);
return options.kit.menu;
}
return new Menu(options, items);
}; };
var getActiveMenuDataList = function(){ var getActiveMenuDataList = function(){
+46 -7
View File
@@ -90,7 +90,12 @@ __PluginManager__.register('support', function(module, exports, require, global)
function isElement(value) { function isElement(value) {
return value instanceof Element; return value instanceof Element;
} }
function isNodeList(value) {
return value instanceof NodeList;
}
function isDomObject(o) {
return isNode(o) || isElement(o) || isNodeList(o);
}
/** /**
* @param selector * @param selector
* @return Element * @return Element
@@ -99,7 +104,7 @@ __PluginManager__.register('support', function(module, exports, require, global)
if(isString(selector) && selector !== '') { if(isString(selector) && selector !== '') {
return document.querySelector(selector); return document.querySelector(selector);
} }
if(isNode(selector) || isElement(selector)) { if(isNode(selector)) {
return selector; return selector;
} }
return null; return null;
@@ -123,18 +128,29 @@ __PluginManager__.register('support', function(module, exports, require, global)
return null!=c&&"undefined"!=typeof Symbol&&c[Symbol.hasInstance]?!!c[Symbol.hasInstance](o):o instanceof c return null!=c&&"undefined"!=typeof Symbol&&c[Symbol.hasInstance]?!!c[Symbol.hasInstance](o):o instanceof c
} }
function makeNode(html = '') { function makeNode(html = '') {
if(isNode(html)) {
return html;
}
var nodeWrap = document.createElement('div'); var nodeWrap = document.createElement('div');
nodeWrap.innerHTML = html; nodeWrap.innerHTML = html;
var r = nodeWrap.firstElementChild; var r = nodeWrap.firstElementChild;
r.remove(); r.remove();
return r; return r;
} }
function setKit(node, key, value) { function makeNodeList(html = '') {
if(isNodeList(html)) {
return html;
}
var nodeWrap = document.createElement('div');
nodeWrap.innerHTML = html;
return nodeWrap.childNodes;
}
function setNodeData(node, key, value) {
if(!isElement(node)) return false; if(!isElement(node)) return false;
node.kit = node.kit || {}; node.kit = node.kit || {};
node.kit[key] = value; node.kit[key] = value;
} }
function getKit(node, key) { function getNodeData(node, key) {
if(!isElement(node)) return null; if(!isElement(node)) return null;
if(node.hasOwnProperty('kit') && node.kit.hasOwnProperty(key)) { if(node.hasOwnProperty('kit') && node.kit.hasOwnProperty(key)) {
return node.kit[key]; return node.kit[key];
@@ -155,6 +171,27 @@ __PluginManager__.register('support', function(module, exports, require, global)
} }
return args; return args;
} }
function innerHtml(wrap, content) {
var wrapNode = getNode(wrap);
if(!isElement(wrapNode)) {
return false;
}
while (wrapNode.firstChild) {
wrapNode.removeChild(wrapNode.firstChild);
}
if(isNode(content)) {
wrapNode.append(content);
} else if(isNodeList(content)) {
content.forEach(function(node){
wrapNode.append(node);
});
} else {
wrapNode.innerHTML = content;
}
return true;
}
/** /**
* @memberOf kit * @memberOf kit
*/ */
@@ -177,11 +214,13 @@ __PluginManager__.register('support', function(module, exports, require, global)
extend, extend,
isA, isA,
makeNode, makeNode,
setKit, setNodeData,
getKit, getNodeData,
toNumber, toNumber,
definePropertyGet, definePropertyGet,
args2array args2array,
innerHtml,
makeNodeList
}; };
return module.exports = support; return module.exports = support;
+4 -4
View File
@@ -9,19 +9,19 @@ use \Wt\Core\Templater\Tools as TemplaterTools;
foreach ((array)$arParams['SRCSET_LIST'] as $srcset) { foreach ((array)$arParams['SRCSET_LIST'] as $srcset) {
$webp = new Webp($_SERVER['DOCUMENT_ROOT'] . $srcset['src']); $webp = new Webp($_SERVER['DOCUMENT_ROOT'] . $srcset['src']);
if($webp->make()->isSuccess()) { if($webp->make()->isSuccess()) {
?><source srcset="<?=$webp->getPathOut(true)?>" type="image/webp"<?if($srcset['media']){?> media="<?=TemplaterTools::safeHtmlAttr($srcset['media'])?>"<?}?>><? ?><source srcset="<?=TemplaterTools::safeUrl($webp->getPathOut(true))?>" type="image/webp"<?if($srcset['media']){?> media="<?=TemplaterTools::safeHtmlAttr($srcset['media'])?>"<?}?>><?
} }
?> ?>
<source srcset="<?=$srcset['src']?>" type="<?=$webp->mime?>"<?if($srcset['media']){?> media="<?=TemplaterTools::safeHtmlAttr($srcset['media'])?>"<?}?>> <source srcset="<?=TemplaterTools::safeUrl($srcset['src'])?>" type="<?=$webp->mime?>"<?if($srcset['media']){?> media="<?=TemplaterTools::safeHtmlAttr($srcset['media'])?>"<?}?>>
<? <?
} }
$webp = new Webp($_SERVER['DOCUMENT_ROOT'] . $arParams['SRC']); $webp = new Webp($_SERVER['DOCUMENT_ROOT'] . $arParams['SRC']);
if($webp->make()->isSuccess()) { if($webp->make()->isSuccess()) {
?><source srcset="<?=$webp->getPathOut(true)?>" type="image/webp"><? ?><source srcset="<?=TemplaterTools::safeUrl($webp->getPathOut(true))?>" type="image/webp"><?
} }
?> ?>
<img class="kit-img"<?if($arParams['SRC']) {?> src="<?=$arParams['SRC']?>"<?}?> alt="<?=TemplaterTools::safeHtmlAttr($arParams['ALT'])?>"<? <img class="kit-img"<?if($arParams['SRC']) {?> src="<?=TemplaterTools::safeUrl($arParams['SRC'])?>"<?}?> alt="<?=TemplaterTools::safeHtmlAttr($arParams['ALT'])?>"<?
if($arParams['TITLE']) { if($arParams['TITLE']) {
?> title="<?=TemplaterTools::safeHtmlAttr($arParams['TITLE'])?>"<? ?> title="<?=TemplaterTools::safeHtmlAttr($arParams['TITLE'])?>"<?
} }
+7
View File
@@ -432,6 +432,13 @@ $APPLICATION->ShowHead();
'LABEL' => 'kit-field--check-mark-material', 'LABEL' => 'kit-field--check-mark-material',
]); ?> ]); ?>
</div> </div>
<div class="flex-list-item"><?
$inputFile = new \Wt\Core\Form\InputFile($fieldName = 'FIELD_INPUT_FILE');
$inputFile->multiple = true;
$inputFile->hint = 'Поле для ввода файлов';
$inputFile->render();
?>
</div>
</div> </div>