This commit is contained in:
root
2025-11-13 19:52:28 +03:00
parent 8aeeb05b7d
commit 807dec3b6c
4646 changed files with 163445 additions and 626017 deletions

View File

@@ -10,6 +10,7 @@ this.BX.UI.Vue3 = this.BX.UI.Vue3 || {};
<Switcher
:is-checked="myBoolData"
:is-disabled="isDisabled"
@check="myBoolData = true"
@uncheck="myBoolData = false"
:options="{
@@ -28,6 +29,10 @@ this.BX.UI.Vue3 = this.BX.UI.Vue3 || {};
type: Boolean,
required: true
},
isDisabled: {
type: Boolean,
default: false
},
options: {
/** @type SwitcherOptions */
type: Object,
@@ -42,6 +47,9 @@ this.BX.UI.Vue3 = this.BX.UI.Vue3 || {};
isChecked() {
this.switcher.check(this.isChecked, false);
},
isDisabled() {
this.switcher.setDisabled(this.isDisabled);
},
options(newOptions, oldOptions) {
if (this.isOptionsEqual(newOptions, oldOptions)) {
return;
@@ -58,6 +66,7 @@ this.BX.UI.Vue3 = this.BX.UI.Vue3 || {};
this.switcher = new ui_switcher.Switcher({
...this.options,
checked: this.isChecked,
disabled: this.isDisabled,
handlers: {
// checked for when the switcher is made off and unchecked for when the switcher is made on
// it looks like a bug, but I'm not sure

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
{"version":3,"file":"switcher.bundle.map.js","names":["this","BX","UI","Vue3","exports","main_core","ui_switcher","Switcher","name","emits","props","isChecked","type","Boolean","required","options","Object","default","switcher","mounted","renderSwitcher","watch","check","newOptions","oldOptions","isOptionsEqual","Dom","clean","$refs","container","methods","checked","handlers","$emit","unchecked","renderTo","keys","length","key","value","entries","hasOwn","template","Components"],"sources":["switcher.bundle.js"],"mappings":"AACAA,KAAKC,GAAKD,KAAKC,IAAM,CAAC,EACtBD,KAAKC,GAAGC,GAAKF,KAAKC,GAAGC,IAAM,CAAC,EAC5BF,KAAKC,GAAGC,GAAGC,KAAOH,KAAKC,GAAGC,GAAGC,MAAQ,CAAC,GACrC,SAAUC,EAAQC,EAAUC,GAC5B,aAiBA,MAAMC,EAAW,CACfC,KAAM,WACNC,MAAO,CAAC,QAAS,WACjBC,MAAO,CACLC,UAAW,CACTC,KAAMC,QACNC,SAAU,MAEZC,QAAS,CAEPH,KAAMI,OACNC,QAAS,CAAC,IAGdC,SAAU,KACV,OAAAC,GACEnB,KAAKoB,gBACP,EACAC,MAAO,CACL,SAAAV,GACEX,KAAKkB,SAASI,MAAMtB,KAAKW,UAAW,MACtC,EACA,OAAAI,CAAQQ,EAAYC,GAClB,GAAIxB,KAAKyB,eAAeF,EAAYC,GAAa,CAC/C,MACF,CAGAxB,KAAKkB,SAAW,KAChBb,EAAUqB,IAAIC,MAAM3B,KAAK4B,MAAMC,WAC/B7B,KAAKoB,gBACP,GAEFU,QAAS,CACP,cAAAV,GACEpB,KAAKkB,SAAW,IAAIZ,EAAYC,SAAS,IACpCP,KAAKe,QACRgB,QAAS/B,KAAKW,UACdqB,SAAU,CAGRD,QAAS,KAEP/B,KAAKkB,SAASI,MAAMtB,KAAKW,UAAW,OACpCX,KAAKiC,MAAM,UAAU,EAEvBC,UAAW,KAETlC,KAAKkB,SAASI,MAAMtB,KAAKW,UAAW,OACpCX,KAAKiC,MAAM,QAAQ,KAIzBjC,KAAKkB,SAASiB,SAASnC,KAAK4B,MAAMC,UACpC,EACA,cAAAJ,CAAeF,EAAYC,GACzB,GAAIR,OAAOoB,KAAKb,GAAYc,SAAWrB,OAAOoB,KAAKZ,GAAYa,OAAQ,CACrE,OAAO,KACT,CACA,IAAK,MAAOC,EAAKC,KAAUvB,OAAOwB,QAAQjB,GAAa,CACrD,IAAKP,OAAOyB,OAAOjB,EAAYc,GAAM,CACnC,OAAO,KACT,CACA,GAAIC,IAAUf,EAAWc,GAAM,CAC7B,OAAO,KACT,CACF,CACA,IAAK,MAAOA,EAAKC,KAAUvB,OAAOwB,QAAQhB,GAAa,CACrD,IAAKR,OAAOyB,OAAOlB,EAAYe,GAAM,CACnC,OAAO,KACT,CACA,GAAIC,IAAUhB,EAAWe,GAAM,CAC7B,OAAO,KACT,CACF,CACA,OAAO,IACT,GAEFI,SAAU,2BAGZtC,EAAQG,SAAWA,CAEpB,EArGA,CAqGGP,KAAKC,GAAGC,GAAGC,KAAKwC,WAAa3C,KAAKC,GAAGC,GAAGC,KAAKwC,YAAc,CAAC,EAAG1C,GAAGA,GAAGC","ignoreList":[]}
{"version":3,"file":"switcher.bundle.map.js","names":["this","BX","UI","Vue3","exports","main_core","ui_switcher","Switcher","name","emits","props","isChecked","type","Boolean","required","isDisabled","default","options","Object","switcher","mounted","renderSwitcher","watch","check","setDisabled","newOptions","oldOptions","isOptionsEqual","Dom","clean","$refs","container","methods","checked","disabled","handlers","$emit","unchecked","renderTo","keys","length","key","value","entries","hasOwn","template","Components"],"sources":["switcher.bundle.js"],"mappings":"AACAA,KAAKC,GAAKD,KAAKC,IAAM,CAAC,EACtBD,KAAKC,GAAGC,GAAKF,KAAKC,GAAGC,IAAM,CAAC,EAC5BF,KAAKC,GAAGC,GAAGC,KAAOH,KAAKC,GAAGC,GAAGC,MAAQ,CAAC,GACrC,SAAUC,EAAQC,EAAUC,GAC5B,aAkBA,MAAMC,EAAW,CACfC,KAAM,WACNC,MAAO,CAAC,QAAS,WACjBC,MAAO,CACLC,UAAW,CACTC,KAAMC,QACNC,SAAU,MAEZC,WAAY,CACVH,KAAMC,QACNG,QAAS,OAEXC,QAAS,CAEPL,KAAMM,OACNF,QAAS,CAAC,IAGdG,SAAU,KACV,OAAAC,GACEpB,KAAKqB,gBACP,EACAC,MAAO,CACL,SAAAX,GACEX,KAAKmB,SAASI,MAAMvB,KAAKW,UAAW,MACtC,EACA,UAAAI,GACEf,KAAKmB,SAASK,YAAYxB,KAAKe,WACjC,EACA,OAAAE,CAAQQ,EAAYC,GAClB,GAAI1B,KAAK2B,eAAeF,EAAYC,GAAa,CAC/C,MACF,CAGA1B,KAAKmB,SAAW,KAChBd,EAAUuB,IAAIC,MAAM7B,KAAK8B,MAAMC,WAC/B/B,KAAKqB,gBACP,GAEFW,QAAS,CACP,cAAAX,GACErB,KAAKmB,SAAW,IAAIb,EAAYC,SAAS,IACpCP,KAAKiB,QACRgB,QAASjC,KAAKW,UACduB,SAAUlC,KAAKe,WACfoB,SAAU,CAGRF,QAAS,KAEPjC,KAAKmB,SAASI,MAAMvB,KAAKW,UAAW,OACpCX,KAAKoC,MAAM,UAAU,EAEvBC,UAAW,KAETrC,KAAKmB,SAASI,MAAMvB,KAAKW,UAAW,OACpCX,KAAKoC,MAAM,QAAQ,KAIzBpC,KAAKmB,SAASmB,SAAStC,KAAK8B,MAAMC,UACpC,EACA,cAAAJ,CAAeF,EAAYC,GACzB,GAAIR,OAAOqB,KAAKd,GAAYe,SAAWtB,OAAOqB,KAAKb,GAAYc,OAAQ,CACrE,OAAO,KACT,CACA,IAAK,MAAOC,EAAKC,KAAUxB,OAAOyB,QAAQlB,GAAa,CACrD,IAAKP,OAAO0B,OAAOlB,EAAYe,GAAM,CACnC,OAAO,KACT,CACA,GAAIC,IAAUhB,EAAWe,GAAM,CAC7B,OAAO,KACT,CACF,CACA,IAAK,MAAOA,EAAKC,KAAUxB,OAAOyB,QAAQjB,GAAa,CACrD,IAAKR,OAAO0B,OAAOnB,EAAYgB,GAAM,CACnC,OAAO,KACT,CACA,GAAIC,IAAUjB,EAAWgB,GAAM,CAC7B,OAAO,KACT,CACF,CACA,OAAO,IACT,GAEFI,SAAU,2BAGZzC,EAAQG,SAAWA,CAEpB,EA9GA,CA8GGP,KAAKC,GAAGC,GAAGC,KAAK2C,WAAa9C,KAAKC,GAAGC,GAAGC,KAAK2C,YAAc,CAAC,EAAG7C,GAAGA,GAAGC","ignoreList":[]}

View File

@@ -1,2 +1,2 @@
this.BX=this.BX||{};this.BX.UI=this.BX.UI||{};this.BX.UI.Vue3=this.BX.UI.Vue3||{};(function(e,t,s){"use strict";const i={name:"Switcher",emits:["check","uncheck"],props:{isChecked:{type:Boolean,required:true},options:{type:Object,default:{}}},switcher:null,mounted(){this.renderSwitcher()},watch:{isChecked(){this.switcher.check(this.isChecked,false)},options(e,s){if(this.isOptionsEqual(e,s)){return}this.switcher=null;t.Dom.clean(this.$refs.container);this.renderSwitcher()}},methods:{renderSwitcher(){this.switcher=new s.Switcher({...this.options,checked:this.isChecked,handlers:{checked:()=>{this.switcher.check(this.isChecked,false);this.$emit("uncheck")},unchecked:()=>{this.switcher.check(this.isChecked,false);this.$emit("check")}}});this.switcher.renderTo(this.$refs.container)},isOptionsEqual(e,t){if(Object.keys(e).length!==Object.keys(t).length){return false}for(const[s,i]of Object.entries(e)){if(!Object.hasOwn(t,s)){return false}if(i!==t[s]){return false}}for(const[s,i]of Object.entries(t)){if(!Object.hasOwn(e,s)){return false}if(i!==e[s]){return false}}return true}},template:'<a ref="container"></a>'};e.Switcher=i})(this.BX.UI.Vue3.Components=this.BX.UI.Vue3.Components||{},BX,BX.UI);
this.BX=this.BX||{};this.BX.UI=this.BX.UI||{};this.BX.UI.Vue3=this.BX.UI.Vue3||{};(function(e,t,s){"use strict";const i={name:"Switcher",emits:["check","uncheck"],props:{isChecked:{type:Boolean,required:true},isDisabled:{type:Boolean,default:false},options:{type:Object,default:{}}},switcher:null,mounted(){this.renderSwitcher()},watch:{isChecked(){this.switcher.check(this.isChecked,false)},isDisabled(){this.switcher.setDisabled(this.isDisabled)},options(e,s){if(this.isOptionsEqual(e,s)){return}this.switcher=null;t.Dom.clean(this.$refs.container);this.renderSwitcher()}},methods:{renderSwitcher(){this.switcher=new s.Switcher({...this.options,checked:this.isChecked,disabled:this.isDisabled,handlers:{checked:()=>{this.switcher.check(this.isChecked,false);this.$emit("uncheck")},unchecked:()=>{this.switcher.check(this.isChecked,false);this.$emit("check")}}});this.switcher.renderTo(this.$refs.container)},isOptionsEqual(e,t){if(Object.keys(e).length!==Object.keys(t).length){return false}for(const[s,i]of Object.entries(e)){if(!Object.hasOwn(t,s)){return false}if(i!==t[s]){return false}}for(const[s,i]of Object.entries(t)){if(!Object.hasOwn(e,s)){return false}if(i!==e[s]){return false}}return true}},template:'<a ref="container"></a>'};e.Switcher=i})(this.BX.UI.Vue3.Components=this.BX.UI.Vue3.Components||{},BX,BX.UI);
//# sourceMappingURL=switcher.bundle.map.js

View File

@@ -6,6 +6,7 @@ Example:
<Switcher
:is-checked="myBoolData"
:is-disabled="isDisabled"
@check="myBoolData = true"
@uncheck="myBoolData = false"
:options="{
@@ -24,6 +25,10 @@ export const Switcher = {
type: Boolean,
required: true,
},
isDisabled: {
type: Boolean,
default: false,
},
options: {
/** @type SwitcherOptions */
type: Object,
@@ -39,6 +44,9 @@ export const Switcher = {
isChecked(): void {
this.switcher.check(this.isChecked, false);
},
isDisabled(): void {
this.switcher.setDisabled(this.isDisabled);
},
options(newOptions, oldOptions): void {
if (this.isOptionsEqual(newOptions, oldOptions))
{
@@ -57,6 +65,7 @@ export const Switcher = {
{
...this.options,
checked: this.isChecked,
disabled: this.isDisabled,
handlers: {
// checked for when the switcher is made off and unchecked for when the switcher is made on
// it looks like a bug, but I'm not sure

View File

@@ -73,21 +73,43 @@ this.BX.Vue3 = this.BX.Vue3 || {};
* @subpackage ui
* @copyright 2001-2025 Bitrix
*/
const handlersMap = new WeakMap();
const hint = {
async mounted(element, {
mounted(element, {
value
}) {
var _getParams$interactiv;
if (!value) {
return;
}
main_core.Event.bind(element, 'mouseenter', () => onMouseEnter(element, getParams(value)));
const isInteractive = (_getParams$interactiv = getParams(value).interactivity) != null ? _getParams$interactiv : false;
main_core.Event.bind(element, 'mouseleave', () => hideTooltip(isInteractive));
main_core.Event.bind(element, 'click', () => hideTooltip());
updateEvents(element, value);
},
updated(element, {
value
}) {
updateEvents(element, value);
},
beforeUnmount(element) {
unbindEvents(element);
}
};
let showTimeout = null;
function updateEvents(element, params) {
unbindEvents(element);
if (params) {
const handlers = {
mouseenter: () => onMouseEnter(element, getParams(params)),
mouseleave: () => {
var _getParams$interactiv;
return hideTooltip((_getParams$interactiv = getParams(params).interactivity) != null ? _getParams$interactiv : false);
},
click: () => hideTooltip()
};
handlersMap.set(element, handlers);
Object.entries(handlers).forEach(([event, handler]) => main_core.Event.bind(element, event, handler));
}
}
function unbindEvents(element) {
var _handlersMap$get;
Object.entries((_handlersMap$get = handlersMap.get(element)) != null ? _handlersMap$get : {}).forEach(([event, handler]) => main_core.Event.unbind(element, event, handler));
handlersMap.delete(element);
}
function onMouseEnter(element, params) {
var _params$timeout;
clearTimeouts();

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
{"version":3,"file":"hint.bundle.map.js","names":["this","BX","Vue3","exports","ui_hint","main_core","main_popup","_","t","_t","_getText","babelHelpers","classPrivateFieldLooseKey","Tooltip","constructor","Object","defineProperty","value","_getText2","popup","cursorOnPopup","show","element","params","_params$popupOptions","_this$popup","hide","popupOptions","id","Date","now","bindElement","bindOptions","position","content","Tag","render","classPrivateFieldLooseBase","darkMode","autoHide","cacheable","animation","Popup","interactivity","getPopupContainer","Event","bind","isInteractive","setTimeout","close","_this$popup2","Type","isStringFilled","isUndefined","dataset","hintHtml","Text","encode","html","text","tooltip","hint","mounted","_getParams$interactiv","onMouseEnter","getParams","hideTooltip","showTimeout","_params$timeout","clearTimeouts","showTooltip","timeout","clearTimeout","isFunction","Directives","Main"],"sources":["hint.bundle.js"],"mappings":"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","ignoreList":[]}
{"version":3,"file":"hint.bundle.map.js","names":["this","BX","Vue3","exports","ui_hint","main_core","main_popup","_","t","_t","_getText","babelHelpers","classPrivateFieldLooseKey","Tooltip","constructor","Object","defineProperty","value","_getText2","popup","cursorOnPopup","show","element","params","_params$popupOptions","_this$popup","hide","popupOptions","id","Date","now","bindElement","bindOptions","position","content","Tag","render","classPrivateFieldLooseBase","darkMode","autoHide","cacheable","animation","Popup","interactivity","getPopupContainer","Event","bind","isInteractive","setTimeout","close","_this$popup2","Type","isStringFilled","isUndefined","dataset","hintHtml","Text","encode","html","text","tooltip","handlersMap","WeakMap","hint","mounted","updateEvents","updated","beforeUnmount","unbindEvents","showTimeout","handlers","mouseenter","onMouseEnter","getParams","mouseleave","_getParams$interactiv","hideTooltip","click","set","entries","forEach","event","handler","_handlersMap$get","get","unbind","delete","_params$timeout","clearTimeouts","showTooltip","timeout","clearTimeout","isFunction","Directives","Main"],"sources":["hint.bundle.js"],"mappings":"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","ignoreList":[]}

View File

@@ -1,11 +1,11 @@
this.BX=this.BX||{};this.BX.Vue3=this.BX.Vue3||{};(function(e,t,i,n){"use strict";let o=e=>e,s;var u=babelHelpers.classPrivateFieldLooseKey("getText");class p{constructor(){Object.defineProperty(this,u,{value:r});this.popup=null;this.cursorOnPopup=false}show(e,t){var p,r;this.hide(false);const l={id:`bx-vue-hint-${Date.now()}`,bindElement:e,bindOptions:{position:t.position==="top"?"top":"bottom"},content:i.Tag.render(s||(s=o`
this.BX=this.BX||{};this.BX.Vue3=this.BX.Vue3||{};(function(e,t,n,i){"use strict";let o=e=>e,s;var u=babelHelpers.classPrivateFieldLooseKey("getText");class p{constructor(){Object.defineProperty(this,u,{value:r});this.popup=null;this.cursorOnPopup=false}show(e,t){var p,r;this.hide(false);const l={id:`bx-vue-hint-${Date.now()}`,bindElement:e,bindOptions:{position:t.position==="top"?"top":"bottom"},content:n.Tag.render(s||(s=o`
<span class='ui-hint-content'>${0}</span>
`),babelHelpers.classPrivateFieldLooseBase(this,u)[u](e,t)),darkMode:true,autoHide:true,cacheable:false,animation:"fading",...(p=t.popupOptions)!=null?p:null};this.popup=new n.Popup(l);this.popup.show();if(t.interactivity&&(r=this.popup)!=null&&r.getPopupContainer()){i.Event.bind(this.popup.getPopupContainer(),"mouseenter",(()=>{this.cursorOnPopup=true}));i.Event.bind(this.popup.getPopupContainer(),"mouseleave",(()=>{this.cursorOnPopup=false;this.hide(true)}))}}hide(e){if(e){setTimeout((()=>{if(this.popup&&this.popup.getPopupContainer()&&!this.cursorOnPopup){this.popup.close()}}),100)}else{var t;(t=this.popup)==null?void 0:t.close()}}}function r(e,t){if(i.Type.isStringFilled(t)&&i.Type.isUndefined(e.dataset.hintHtml)){return i.Text.encode(t)}return t.html||i.Text.encode(t.text)||t}const l=new p;
`),babelHelpers.classPrivateFieldLooseBase(this,u)[u](e,t)),darkMode:true,autoHide:true,cacheable:false,animation:"fading",...(p=t.popupOptions)!=null?p:null};this.popup=new i.Popup(l);this.popup.show();if(t.interactivity&&(r=this.popup)!=null&&r.getPopupContainer()){n.Event.bind(this.popup.getPopupContainer(),"mouseenter",(()=>{this.cursorOnPopup=true}));n.Event.bind(this.popup.getPopupContainer(),"mouseleave",(()=>{this.cursorOnPopup=false;this.hide(true)}))}}hide(e){if(e){setTimeout((()=>{if(this.popup&&this.popup.getPopupContainer()&&!this.cursorOnPopup){this.popup.close()}}),100)}else{var t;(t=this.popup)==null?void 0:t.close()}}}function r(e,t){if(n.Type.isStringFilled(t)&&n.Type.isUndefined(e.dataset.hintHtml)){return n.Text.encode(t)}return t.html||n.Text.encode(t.text)||t}const l=new p;
/**
* Hint Vue directive
*
* @package bitrix
* @subpackage ui
* @copyright 2001-2025 Bitrix
*/const a={async mounted(e,{value:t}){var n;if(!t){return}i.Event.bind(e,"mouseenter",(()=>h(e,b(t))));const o=(n=b(t).interactivity)!=null?n:false;i.Event.bind(e,"mouseleave",(()=>v(o)));i.Event.bind(e,"click",(()=>v()))}};let c=null;function h(e,t){var i;f();c=setTimeout((()=>d(e,t)),(i=t.timeout)!=null?i:0)}function d(e,t){f();l.show(e,t)}function v(e){f();l.hide(e)}function f(){clearTimeout(c)}function b(e){return i.Type.isFunction(e)?e():e}e.hint=a})(this.BX.Vue3.Directives=this.BX.Vue3.Directives||{},BX,BX,BX.Main);
*/const a=new WeakMap;const c={mounted(e,{value:t}){d(e,t)},updated(e,{value:t}){d(e,t)},beforeUnmount(e){f(e)}};let h=null;function d(e,t){f(e);if(t){const i={mouseenter:()=>v(e,B(t)),mouseleave:()=>{var e;return m((e=B(t).interactivity)!=null?e:false)},click:()=>m()};a.set(e,i);Object.entries(i).forEach((([t,i])=>n.Event.bind(e,t,i)))}}function f(e){var t;Object.entries((t=a.get(e))!=null?t:{}).forEach((([t,i])=>n.Event.unbind(e,t,i)));a.delete(e)}function v(e,t){var n;P();h=setTimeout((()=>b(e,t)),(n=t.timeout)!=null?n:0)}function b(e,t){P();l.show(e,t)}function m(e){P();l.hide(e)}function P(){clearTimeout(h)}function B(e){return n.Type.isFunction(e)?e():e}e.hint=c})(this.BX.Vue3.Directives=this.BX.Vue3.Directives||{},BX,BX,BX.Main);
//# sourceMappingURL=hint.bundle.map.js

View File

@@ -22,23 +22,47 @@ import 'ui.hint';
import { tooltip, type HintParams } from './tooltip';
export type { HintParams };
export const hint = {
async mounted(element: HTMLElement, { value }: { value: HintParams | Function }): Promise<void>
{
if (!value)
{
return;
}
const handlersMap = new WeakMap();
Event.bind(element, 'mouseenter', () => onMouseEnter(element, getParams(value)));
const isInteractive = getParams(value).interactivity ?? false;
Event.bind(element, 'mouseleave', () => hideTooltip(isInteractive));
Event.bind(element, 'click', () => hideTooltip());
export const hint = {
mounted(element: HTMLElement, { value }: { value: HintParams | Function }): void
{
updateEvents(element, value);
},
updated(element: HTMLElement, { value }: { value: HintParams | Function }): void
{
updateEvents(element, value);
},
beforeUnmount(element: HTMLElement): void
{
unbindEvents(element);
},
};
let showTimeout = null;
function updateEvents(element: HTMLElement, params: HintParams | Function): void
{
unbindEvents(element);
if (params)
{
const handlers = {
mouseenter: () => onMouseEnter(element, getParams(params)),
mouseleave: () => hideTooltip(getParams(params).interactivity ?? false),
click: () => hideTooltip(),
};
handlersMap.set(element, handlers);
Object.entries(handlers).forEach(([event, handler]) => Event.bind(element, event, handler));
}
}
function unbindEvents(element: HTMLElement): void
{
Object.entries(handlersMap.get(element) ?? {}).forEach(([event, handler]) => Event.unbind(element, event, handler));
handlersMap.delete(element);
}
function onMouseEnter(element: HTMLElement, params: HintParams): void
{
clearTimeouts();