7 lines
19 KiB
JavaScript
7 lines
19 KiB
JavaScript
(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[6055],{5641:()=>{},21249:()=>{},94897:()=>{},22358:(t,e,s)=>{"use strict";s.d(e,{controlError:()=>r});s(5641);var o=s(20497),i=s(68587),l=s(23127);class n{constructor(t,{addFocusEvents:e=!0,addErrorOnElement:o=!0,leftMessageAlign:i=!1,maxWidth:n,doNotShowIcon:r=!1}={}){function h(t,e){return t.some(t=>e.test(t))}let d=l(t);const a=d.hasClass("tv-control-checkbox__input"),c=d.hasClass("tv-control-radio__input"),p=d.hasClass("tv-control-number-input"),u=h(d.attr("class").split(/\s+/),/^.+--size_small$/),_=h(d.attr("class").split(/\s+/),/^.+--size_large$/);this.options={smallMode:u,addErrorOnElement:o,maxWidth:n},a&&(d=d.closest(".tv-control-checkbox")),c&&(d=d.closest(".tv-control-radio-group")),this.errors={},this.$control=d;const g=d.get(0);d.data("tv-control-material")?this.$toWrap=d.data("tv-control-material").$el:"tvControlErrorWrap"in g.dataset?this.$toWrap=l(g.dataset.tvControlErrorWrap):d.data("tv-control-error-wrap")?this.$toWrap=d.data("tv-control-error-wrap"):this.$toWrap=d,this.$toWrap.parent().hasClass("tv-control-error")||this.$toWrap.wrap(`<div class="tv-control-error ${p?"tv-control-error--for-number-input":""}"></div>`),this.$el=this.$toWrap.parent(),a&&this.$el.addClass("tv-control-error--msg_left"),u&&this.$el.addClass("tv-control-error--size_small"),_&&this.$el.addClass("tv-control-error--size_large"),a||r||(this.$icon=this.$el.find(".tv-control-error__icon"),this.$icon.length||(this.$icon=l(`<span class="tv-control-error__icon">${l("<div>").append(l(s(53870)).attr("focusable","false")).html()}</span>`).appendTo(this.$el)),d.data("tv-control-material")&&this.$icon.addClass("tv-control-error__icon--material-input")),this.$widthControlWrapper=this.$el.find(".tv-control-error__width-control-wrapper"),this.$widthControlWrapper.length||(this.$widthControlWrapper=l('<div class="tv-control-error__width-control-wrapper">').appendTo(this.$el)),this.$widthControlWrapper.css("width",this.options.maxWidth),i&&this.$widthControlWrapper.addClass("tv-control-error__width-control-wrapper--from-left"),this.$messages=this.$el.find(".tv-control-error__messages"),this.$messages.length||(this.$messages=l('<span class="tv-control-error__messages"></span>').appendTo(this.$widthControlWrapper)),d.on("focus",()=>{this.$el.addClass("i-focus"),d.removeClass("i-error"),e&&d.on("keyup.tv-control-error",t=>{9!==t.keyCode&&16!==t.keyCode&&(this.clear().render(),this.$el.removeClass("i-focus"),d.off("keyup.tv-control-error"))})}),d.on("blur",()=>{this.$el.removeClass("i-focus"),this.hasErrors()&&d.addClass("i-error")})}add({id:t,message:e}){return this.errors[t]=e,this}remove({id:t}){return delete this.errors[t],this}clear(){return this.errors={},this}hasErrors(){return!!Object.keys(this.errors).length}render(){this.emptyTimeout&&clearTimeout(this.emptyTimeout);var t=Object.keys(this.errors);if(t.length){this.$messages.empty(),this.$el.addClass("i-error"),this.options.addErrorOnElement&&this.$control.addClass("i-error")
|
||
;for(var e=0;e<t.length;e++)this.errors[t[e]]&&l(`<span class="tv-control-error__message">${this.errors[t[e]]}</span>`).appendTo(this.$messages)}else this.$el.removeClass("i-error"),this.$control.removeClass("i-error"),this.emptyTimeout=setTimeout(()=>{this.$messages.empty()},i.dur);return this}}function r(t,e){return new n(l(t),e)}l.fn.tvControlError=(0,o.createTvBlockWithInstance)("tv-control-error",(function(t,e){return new n(t,e)}))},8250:(t,e,s)=>{"use strict";var o=s(28353),i=s(32563),l=(s(21249),s(20497)),n=(s(56479),s(94897),s(30812));var r=s(23127);class h{constructor(t,e={}){this.$el=t,this.$wrap=e.$wrap||t.find(".tv-dropdown-behavior__button"),this.$body=e.$body||t.find(".tv-dropdown-behavior__body"),this.notCloseWithCtrl=!!e.notCloseWithCtrl&&e.notCloseWithCtrl,this.closeWithEsc=void 0===e.closeWithEsc||e.closeWithEsc,this.closeWithEsc&&this.$el.attr("tabIndex",0),(t.data("scroll")||e.scroll)&&(this.$scroll=this.$body.find(".tv-dropdown-behavior__scroll"),this.$inScroll=this.$scroll.find(".tv-dropdown-behavior__inscroll"),this.scroll=new n.SidebarCustomScroll(this.$scroll[0],this.$inScroll[0],{showTopShadow:!1,showBottomShadow:!1}),this.$scrollBar=r(this.scroll.getScrollBar()),this.$scrollBar&&this.$scrollBar.on("mousedown.tv-dropdown-view-scroll",()=>{this.offClickOutside(),r(document).on("mouseup.tv-dropdown-view-scroll",()=>{this.onClickOutside(),r(document).off("mouseup.tv-dropdown-view-scroll")})})),(t.data("adaptBody")||e.adaptBody)&&(this._adaptBody=!0),(t.data("adaptOnlyInScrollHeight")||e.adaptOnlyInScrollHeight)&&(this._adaptOnlyInScrollHeight=!0),this._fitScreen=t.data("fitScreen")||e.fitScreen,this._maxHeight=t.data("maxHeight")||e.maxHeight,this._dropdownWidth=t.data("dropdownWidth")||e.dropdownWidth,this._boundingElement=e.boundingElement,this.$wrap.add(t.find(".js-dropdown-toggle")).on("click",t=>{r(t.currentTarget).hasClass("js-prevent-dropdown")||this.toggle()}),this._checkIgnoreClickOutside=[]}toggle(){this.opened?this.close(!0):this.open()}open(){this.opened||this.disabled||this.readonly||(this.$el.trigger("beforeOpenMenu"),this.$body.removeClass("i-hidden").addClass("i-opened"),this.$wrap.addClass("i-dropped"),this.$el.addClass("i-opened"),"horz"===this._fitScreen&&this.fitHorizontally(),this._adaptBody&&this.adaptBody(),this.onClickOutside(),this.$el.trigger("updateScroll"),this.$el.trigger("afterOpenMenu"),this.opened=!0,this.closeWithEsc&&this.$el.on("keypress keyup",t=>{27===t.keyCode&&this.close(!0)}))}onClickOutside(){setTimeout(()=>{this.$body.on("clickoutside",t=>{this._checkIgnoreClickOutside.length&&this._checkIgnoreClickOutside.some(e=>e(t))||this.close(!0)})},0)}offClickOutside(){this.$body.off("clickoutside")}setCheckIgnoreClickOutside(t){this._checkIgnoreClickOutside.push(t)}dropCheckIgnoreClickOutside(t){var e=this._checkIgnoreClickOutside.indexOf(t);-1!==e&&this._checkIgnoreClickOutside.splice(e,1)}close(t=!1){!this.opened||this.disabled||this.readonly||!t&&this.notCloseWithCtrl&&(window.event.ctrlKey||window.event.metaKey)||(this.offClickOutside(),
|
||
this.$wrap.removeClass("i-dropped"),this.$el.trigger("beforeCloseMenu"),this.$body.removeClass("i-opened").addClass("i-hidden"),this.$el.removeClass("i-opened"),this.closeWithEsc&&this.$el.off("keypress keyup"),this.opened=!1,this.$el.trigger("afterCloseMenu"))}isOpened(){return this.opened}updateScroll(){this.scroll&&(this.scroll.updateScrollBar(),this.scroll.scrollToStart())}enable(){this.$wrap.removeClass("i-disabled"),this.disabled=!1}disable(){this.$wrap.addClass("i-disabled"),this.disabled=!0}setReadonly(t){this.readonly=t}adaptBody(){const t=this.$body,e=this.$wrap.get(0).getBoundingClientRect(),s=this._boundingElement?this._boundingElement.getBoundingClientRect():{top:0,bottom:window.innerHeight,height:window.innerHeight},o=parseFloat(t.css("padding-top")),i=parseFloat(t.css("padding-bottom")),l=this.$inScroll.outerHeight(!0)+o+i;if(this.scroll&&this.scroll.scrollToStart(),this._adaptOnlyInScrollHeight){const o=t.find(".js-dropdown-dummy"),l=o?parseFloat(o.css("padding-bottom"))+parseFloat(o.css("margin-bottom")):0,n=e.top+e.height+l;return void this.$el.find(".tv-dropdown-behavior__scroll").css("maxHeight",s.bottom-i-n-25)}const n=this._maxHeight||l,r=e.top+n+25<=s.bottom,h=s.top+15+n<=e.bottom;let d,a=this._maxHeight||"auto";if(r)d=-o;else if(h)d=-n+e.height+i;else{d=-e.top+s.top+15;const t=s.height-15-25;n>t&&(a=t)}t.css("top",d),t.height(a),this._dropdownWidth&&t.width(this._dropdownWidth)}fitHorizontally(){this.$body.css("marginLeft",0);const t=document.body.getBoundingClientRect(),e=parseFloat(r(document.body).css("paddingRight")),s=this.$body.offset();s.right=s.left+this.$body.outerWidth();const o=Math.max(Math.min(0,t.right-e-s.right),t.left-s.left);o&&this.$body.css("marginLeft",o)}destroy(){this.scroll&&this.scroll.destroy(),this.offClickOutside(),this.$el.find(".js-dropdown-toggle").off("click"),this.$wrap.off("click")}}r.fn.tvDropdown=(0,l.createTvBlockWithInstance)("tv-dropdown",(function(t,e={}){return new h(t,e)}));var d=s(23127),a=s(13398),c=s(25977);const p={wrap:'<span class="tv-control-select__wrap tv-dropdown-behavior {{ class }}{{# touch }} tv-control-select__wrap--touch{{/ touch }}{{# disabled }} i-disabled{{/ disabled }}{{# readonly }} tv-control-select__wrap--readonly{{/ readonly}}"><span class="tv-control-select__control{{^ touch }} tv-dropdown-behavior__button{{/ touch }}{{# disabled }} i-disabled{{/ disabled }}"><span class="tv-control-select__control-inner"></span></span>{{^ touch }}<span class="tv-control-select__dropdown tv-dropdown-behavior__body {{ dropdown_class }} i-hidden"><span class="tv-control-select__scroll tv-dropdown-behavior__scroll"><span class="tv-dropdown-behavior__inscroll">{{> route }}</span></span></span>{{/ touch }}<span class="tv-control-select__caret js-dropdown-toggle"></span></span>',route:"{{# items }}{{# option }}{{> option }}{{/ option }}{{^ option }}{{# optgroup }}{{> optgroup }}{{/ optgroup }}{{/ option }}{{/ items }}",
|
||
optgroup:'{{# label }}<span class="tv-dropdown-behavior__item tv-control-select__optgroup-label">{{ label }}</span>{{/ label }}{{> route }}{{# separator }}<hr class="tv-control-select__optgroup-separator">{{/ separator }}',option:`<span data-id="{{ id }}" class="tv-dropdown-behavior__item tv-control-select__option{{# disabled }} i-disabled{{/ disabled }}">\n\t\t\t<span class="tv-control-select__option-wrap">\n\t\t\t{{# multiple }}\n\t\t\t\t<span class="tv-control-checkbox">\n\t\t\t\t\t<input class="tv-control-checkbox__input" type="checkbox" {{# selected }} checked{{/ selected }}>\n\t\t\t\t\t<span class="tv-control-checkbox__box">${s(4135)}</span>\n\t\t\t\t\t<span class="tv-control-checkbox__ripple js-ripple"></span>\n\t\t\t\t</span>\n\t\t\t\t<span class="tv-control-checkbox__label">{{ label }}</span>\n\t\t\t{{/ multiple }}\n\t\t\t{{^ multiple }}\n\t\t\t\t{{ label }}\n\t\t\t{{/ multiple }}\n\t\t\t</span>\n\t\t</span>`};class u{constructor(t={}){this._options=Object.assign({noAnimation:!0},t),this.touch=i.mobiletouch,this.$select=this._options.$select,this._selectElement=this.$select[0],this.multiple=Boolean(this.$select.attr("multiple")),this._minDisplayCount=this._options.minDisplayCount||1,this._emptyString=this._options.emptyString||(0,o.t)("Nothing selected",{context:"combobox_input"}),this._defaultPlaceHoder=this._options.defaultPlaceHoder||!1,this.disabled=Boolean(this.$select.is(":disabled")),this.readonly=this._options.readonly,this.options=[],this.filterQuery=[],this.items=this._parseDomItems(this.$select),this._render(),t.initialValue&&this.val(t.initialValue),this.$el.insertBefore(this.$select),this.$select.detach().addClass("i-inited").appendTo(this.$el)}val(t){this.multiple?this._setMultipleValues(t):this._setSingleValue(this._findOption(t))}enable(){this.disabled=!1,this.$el.add(this.$dropdown).removeClass("i-disabled"),this.touch||(this.$el.tvDropdown("enable"),this.$control.attr("tabindex",this.$select.attr("tabindex")||0))}disable(){this.disabled=!0,this.$el.add(this.$dropdown).addClass("i-disabled"),this.touch||(this.$el.tvDropdown("disable"),this.$control.removeAttr("tabindex"))}setReadonly(t){this.readonly=t,this.$el.toggleClass("tv-control-select__wrap--readonly",t),this.$controlInner.toggleClass("tv-control-select__control-inner--readonly",t),this.$el.tvDropdown("setReadonly",t)}toggle(){this.disabled||this.readonly||(this.touch?this.$select.click():this.$el.tvDropdown("toggle"))}open(){this.disabled||this.readonly||(this.touch?this.$select.click():this.$el.tvDropdown("open"))}close(){this.disabled||this.readonly||(this.touch?this.$select.click():(this._focusOption(this._selectElement.selectedIndex),this.$el.tvDropdown("close")))}destroy(){this.$select.off("change"),this.$dropdown&&this.$dropdown.off("click"),this.$select.removeClass("i-inited").insertBefore(this.$el),this.$el.tvDropdown("destroy"),this.$el.remove()}updateItems(){this.options=[],this.items=this._parseDomItems(this.$select);const t=this._renderDropdown();if(!this.touch){this.$dropdown.find(".tv-control-select__option").remove()
|
||
;const e=this.$dropdown.find(".tv-dropdown-behavior__inscroll");this.$options=t.find(".tv-control-select__option");for(let t=0;t<this.$options.length;t++){const s=d(this.$options[t]),o=s.data("id");this.options[o]&&(this.options[o].$el=s,e.append(s))}}this.multiple?(this._updateSelectBoxTitle(),this._updateCheckBoxes()):this._updateSingleView(this._selectElement.selectedIndex)}_focusOption(t){const e=this.options[t].$el;if(this._focusedOption=t,!this.touch){if(this._clearFocus(),e.addClass("i-active"),!this.dropdownScroll||!this.opened)return;const t=this.dropdownScroll.currentPosition(),s=e.outerHeight(),o=e.position().top,i=this.dropdownScroll.getContainerHeightWithoutHeader(),l=-t+i<o+s;o<-t?this.dropdownScroll.scrollTo(o):l&&this.dropdownScroll.scrollTo(o+s)}}_setSingleValue(t){const e=this.options[t].value;(this.$select.val()&&this.$select.val().toString())!==e.toString()&&this.$select.val(e).trigger("change")}_updateSingleView(t){const e=this.options[t];e&&(this._focusOption(t),this._selectElement.selectedIndex=t,this.$controlInner.text(e.label),this.$controlInner.toggleClass("tv-control-select__control-inner--option-disabled",e.disabled))}_toggleOption(t){const e=this.options[t].value,s=this.$select.val()||[],o=s.indexOf(e);if(-1!==o)s.splice(o,1);else if(s.length){const t=this.options[this._findOption(e)].id,o=s.find(e=>this.options[this._findOption(e)].id>t);s.splice(o?s.indexOf(o):0,0,e)}else s.push(e);this._setMultipleValues(s)}_updateCheckBoxes(){const t=this.$select.val()||[];for(let e=0;e<this.items.length;e++){const s=this.items[e];s.$el.find(".tv-control-checkbox__input").prop("checked",-1!==t.indexOf(s.value))}}_updateSelectBoxTitle(){const t=this.$select.val()||[];if(t.length&&!this._defaultPlaceHoder)if(t.length===this.items.length)this.$controlInner.text((0,o.t)("All items",{context:"combobox_input"}));else if(t.length>this._minDisplayCount)this.$controlInner.text((0,o.t)("{number} item",{plural:"{number} items",count:t.length,context:"combobox_input"}).format(t.length));else{const e=t.map(t=>this.options[this._findOption(t)].label);this.$controlInner.text(e.join(", "))}else this.$controlInner.text(this._emptyString)}_setMultipleValues(t){this.$select.find("option").prop("selected",!1);for(let e=0;e<t.length;e++){const s=t[e];this.$select.find(`option[value="${s}"]`).prop("selected",!0)}this.$select.trigger("change")}_clearFocus(){this.$options.removeClass("i-active")}_findOption(t){const e=Object.keys(this.options);for(let s=0;s<e.length;s++)if(this.options[e[s]].value.toString()===t.toString())return this.options[e[s]].id}_parseDomItems(t){const e=t.children(),s=[];for(let t=0;t<e.length;t++){const o=d(e[t]);let i;"optgroup"===o.prop("tagName").toLowerCase()?i={optgroup:!0,separator:Boolean(this._options.showOptgroupSeparators),label:o.attr("label"),items:this._parseDomItems(o)}:"option"===o.prop("tagName").toLowerCase()&&(i={id:o[0].index,option:!0,label:o.text().replace(/\//g,"$&"),value:o.attr("value"),disabled:o.is(":disabled")},this.options[i.id]=i),s.push(i)}return s}_render(){
|
||
if(this.$el=this._renderDropdown(),this.$control=this.$el.find(".tv-control-select__control"),this.$controlInner=this.$el.find(".tv-control-select__control-inner"),!this.touch){this.$dropdown=this.$el.find(".tv-control-select__dropdown"),this.$options=this.$el.find(".tv-control-select__option");for(let t=0;t<this.$options.length;t++){const e=d(this.$options[t]),s=e.data("id");this.options[s]&&(this.options[s].$el=e)}}this.multiple?(this._updateSelectBoxTitle(),this._updateCheckBoxes()):(-1===this._selectElement.selectedIndex&&(this._selectElement.selectedIndex=0),this._updateSingleView(this._selectElement.selectedIndex)),this.$select.on("change",t=>{this.multiple?(this._updateSelectBoxTitle(),this._updateCheckBoxes()):this._updateSingleView(this._findOption(this.$select.val()))}),this.touch||(this.$el.tvDropdown({scroll:!0,adaptBody:!0,boundingElement:this._options.boundingElement,maxHeight:this._options.maxHeight,dropdownWidth:this._options.dropdownWidth,noAnimation:this._options.noAnimation,closeWithEsc:this._options.closeWithEsc}),this.dropdownScroll=this.$el.tvDropdown("get","scroll"),this.$dropdown.on("click",".tv-control-select__option",t=>{const e=parseInt(d(t.currentTarget).data("id"));this.options[e]&&!this.options[e].disabled&&(this.multiple?this._toggleOption(e):(this._setSingleValue(e),this.close()))}),this.$el.on("beforeOpenMenu",()=>{this.opened=!0}),this.$el.on("afterCloseMenu",()=>{this.opened=!1,this.filterQuery=[],this.multiple||this._focusedOption.toString()===this._selectElement.selectedIndex.toString()||this._focusOption(this._selectElement.selectedIndex),this.multiple&&this._clearFocus()}),this.$el.on("click",()=>{this.$control.focus()}),this.$el.on("keydown",t=>{this._filter(t)}),this.disabled?this.disable():this.enable())}_renderDropdown(){return d(a.render(p.wrap,{items:this.items,class:this.$select.attr("class"),touch:this.touch,multiple:this.multiple,disabled:this.disabled,readonly:this.readonly,dropdown_class:this._options.addDropdownClass},p)).removeClass("tv-control-select")}_filter(t){if(9===t.which)return void this.close();if(13===t.which&&!this.opened)return;if((40===t.which||32===t.which)&&!this.opened)return this.open(),void t.preventDefault();t.preventDefault(),this.opened||this.open();const e=String.fromCharCode(t.which).toLowerCase();if(e&&-1===[9,13,27,38,40].indexOf(t.which)){this.filterQuery.push(e);const t=this.filterQuery.join("");let s;const o=Object.keys(this.options);for(let e=0;e<o.length;e++)if(0===this.options[o[e]].label.toLowerCase().indexOf(t)&&!this.options[o[e]].disabled){s=this.options[o[e]].id;break}void 0!==s&&this._focusOption(s),this.clearFilter&&clearTimeout(this.clearFilter),this.clearFilter=setTimeout(()=>{this.filterQuery=[]},500)}32!==t.which&&13!==t.which||!this.opened||(this.multiple?this._toggleOption(this._focusedOption):(this._setSingleValue(this._focusedOption),this.close(),this.$el.one("keyup",t=>t.stopPropagation())));const s=t=>{let e;if(this.options[this._focusedOption]){
|
||
const s=this.options[this._focusedOption].$el[t](this.$dropdown,".tv-control-select__option:not(.i-disabled)");e=s.length?s.data("id"):this._focusedOption}else e=this.$options.first(".tv-control-select__option:not(.i-disabled)").data("id");return e};40===t.which&&(this.filterQuery=[],this._focusOption(s("nextUntil"))),38===t.which&&(this.filterQuery=[],this._focusOption(s("prevUntil"))),27===t.which&&this.close()}}d.fn.tvControlSelect=(0,l.createTvBlockWithInstance)("tv-control-select",(function(t,e={}){return new u(c.extend(e,{$select:t}))}))},53870:t=>{t.exports='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 508.52 508.52" enable-background="new 0 0 508.52 508.52"><path d="M254.26 0c-140.415 0-254.26 113.845-254.26 254.26s113.845 254.26 254.26 254.26 254.26-113.845 254.26-254.26-113.845-254.26-254.26-254.26zm0 412.664c-17.544 0-31.782-14.239-31.782-31.782 0-17.576 14.239-31.782 31.782-31.782s31.782 14.207 31.782 31.782c0 17.543-14.238 31.782-31.782 31.782zm31.782-126.622c0 17.544-14.239 31.782-31.782 31.782s-31.782-14.239-31.782-31.782v-158.912c0-17.544 14.239-31.782 31.782-31.782s31.782 14.239 31.782 31.782v158.912z"/></svg>'}}]); |