tsgrid-ui 2.7.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +229 -0
- package/dist/base.d.ts +148 -0
- package/dist/base.es6.js +11 -0
- package/dist/base.es6.js.map +1 -0
- package/dist/chunks/chunk-26XP2XU3.js +1795 -0
- package/dist/chunks/chunk-26XP2XU3.js.map +1 -0
- package/dist/chunks/chunk-3NYH6545.js +2423 -0
- package/dist/chunks/chunk-3NYH6545.js.map +1 -0
- package/dist/chunks/chunk-BIB3X2TW.js +1638 -0
- package/dist/chunks/chunk-BIB3X2TW.js.map +1 -0
- package/dist/chunks/chunk-DXZJHS4M.js +1283 -0
- package/dist/chunks/chunk-DXZJHS4M.js.map +1 -0
- package/dist/chunks/chunk-EVZMMVXO.js +1212 -0
- package/dist/chunks/chunk-EVZMMVXO.js.map +1 -0
- package/dist/chunks/chunk-GJD5NFWQ.js +2305 -0
- package/dist/chunks/chunk-GJD5NFWQ.js.map +1 -0
- package/dist/chunks/chunk-IYF3Q7GX.js +127 -0
- package/dist/chunks/chunk-IYF3Q7GX.js.map +1 -0
- package/dist/chunks/chunk-OFASTA2A.js +2980 -0
- package/dist/chunks/chunk-OFASTA2A.js.map +1 -0
- package/dist/chunks/chunk-OMLGN735.js +677 -0
- package/dist/chunks/chunk-OMLGN735.js.map +1 -0
- package/dist/chunks/chunk-WKSLGUB3.js +1127 -0
- package/dist/chunks/chunk-WKSLGUB3.js.map +1 -0
- package/dist/chunks/chunk-YBY52G2U.js +849 -0
- package/dist/chunks/chunk-YBY52G2U.js.map +1 -0
- package/dist/field.d.ts +329 -0
- package/dist/field.es6.js +11 -0
- package/dist/field.es6.js.map +1 -0
- package/dist/form.d.ts +162 -0
- package/dist/form.es6.js +14 -0
- package/dist/form.es6.js.map +1 -0
- package/dist/layout.d.ts +108 -0
- package/dist/layout.es6.js +13 -0
- package/dist/layout.es6.js.map +1 -0
- package/dist/locale.d.ts +30 -0
- package/dist/locale.es6.js +7 -0
- package/dist/locale.es6.js.map +1 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/popup.d.ts +92 -0
- package/dist/popup.es6.js +18 -0
- package/dist/popup.es6.js.map +1 -0
- package/dist/query-CKGg5Ugv.d.ts +81 -0
- package/dist/sidebar.d.ts +138 -0
- package/dist/sidebar.es6.js +11 -0
- package/dist/sidebar.es6.js.map +1 -0
- package/dist/tabs.d.ts +63 -0
- package/dist/tabs.es6.js +11 -0
- package/dist/tabs.es6.js.map +1 -0
- package/dist/toolbar.d.ts +97 -0
- package/dist/toolbar.es6.js +11 -0
- package/dist/toolbar.es6.js.map +1 -0
- package/dist/tooltip.d.ts +322 -0
- package/dist/tooltip.es6.js +18 -0
- package/dist/tooltip.es6.js.map +1 -0
- package/dist/tsgrid-ui.css +2 -2
- package/dist/tsgrid-ui.d.ts +16 -2004
- package/dist/tsgrid-ui.es6.js +7750 -23831
- package/dist/tsgrid-ui.es6.js.map +1 -1
- package/dist/tsgrid-ui.es6.min.js +28 -28
- package/dist/tsgrid-ui.js +103 -25
- package/dist/tsgrid-ui.min.css +2 -2
- package/dist/tsgrid-ui.min.js +24 -24
- package/dist/tsutils-message-CogFtVtO.d.ts +82 -0
- package/dist/utils.d.ts +418 -0
- package/dist/utils.es6.js +14 -0
- package/dist/utils.es6.js.map +1 -0
- package/package.json +26 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tstabs.ts"],"sourcesContent":["/**\n * Part of TsUi 2.0 library\n * - Dependencies: mQuery, TsUtils, TsBase, TsTooltip\n *\n * == 2.0 changes\n * - CSP - fixed inline events\n * - removed jQuery dependency\n * - observeResize for the box\n * - refactored w2events\n * - scrollIntoView - removed callback\n * - scroll, scrollIntoView return promise\n * - animateInsert, animateClose - returns a promise\n * - add, insert return a promise\n * - onMouseEnter, onMouseLeave, onMouseDown, onMouseUp\n */\n\nimport { TsBase } from './tsbase.js'\nimport { TsUi, TsUtils } from './tsutils.js'\nimport { query as _queryRaw, Query } from './query.js'\nimport { TsTooltip } from './tstooltip.js'\n// any: query() returns Query|void; cast once here for clean chaining\nconst query = _queryRaw as (selector: unknown, context?: unknown) => Query\n\nclass TsTabs extends TsBase {\n declare box: HTMLElement | null\n declare name: string\n // any: targeted-any per typing_policy; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n active: any\n reorder: boolean\n flow: string\n tooltip: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tabs: any[] // any: tab objects have dynamic shape\n routeData: Record<string, unknown>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n last: any // any: accumulates reordering state, observeResize, moving bag\n right: string\n style: string\n tab_template: Record<string, unknown>\n // any: targeted-any per typing_policy; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(options: any) { // any: options bag — mixed type at construction time\n super(options.name)\n this.box = null // DOM Element that holds the element\n this.name = '' // unique name for TsUi\n this.active = null\n this.reorder = false\n this.flow = 'down' // can be down or up\n this.tooltip = 'top|left' // can be top, bottom, left, right\n this.tabs = []\n this.routeData = {} // data for dynamic routes\n this.last = {} // placeholder for internal variables\n this.right = ''\n this.style = ''\n this['onClick'] = null\n this['onMouseEnter'] = null // mouse enter and leave\n this['onMouseLeave'] = null\n this['onMouseDown'] = null\n this['onMouseUp'] = null\n this['onClose'] = null\n this['onRender'] = null\n this['onRefresh'] = null\n this['onResize'] = null\n this['onDestroy'] = null\n this.tab_template = {\n id: null,\n text: null,\n icon: null,\n route: null,\n hidden: false,\n disabled: false,\n closable: false,\n tooltip: null,\n style: '',\n onClick: null,\n onRefresh: null,\n onClose: null\n }\n const tabs = options.tabs\n delete options.tabs\n // mix in options\n Object.assign(this, options)\n // add item via method to makes sure item_template is applied\n if (Array.isArray(tabs)) this.add(tabs)\n // need to reassign back to keep it in config\n options.tabs = tabs\n\n // render if box specified\n if (typeof this.box == 'string') this.box = query(this.box).get(0) as HTMLElement\n if (this.box) this.render(this.box)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n add(tab: any): Promise<any> { // any: tab object has dynamic shape\n return this.insert(null, tab)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n insert(id: any, tabs: any): Promise<any> { // any: tab objects and ids are heterogeneous\n if (!Array.isArray(tabs)) tabs = [tabs]\n // assume it is array\n const proms: Promise<void>[] = []\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tabs.forEach((tab: any) => { // any: tab object shape is dynamic\n // checks\n if (tab.id == null) {\n console.log(`ERROR: The parameter \"id\" is required but not supplied. (obj: ${this.name})`)\n return\n }\n if (!TsUtils.checkUniqueId(tab.id, this.tabs, 'tabs', this.name)) return\n // add tab\n const it = Object.assign({}, this.tab_template, tab)\n if (id == null) {\n this.tabs.push(it)\n proms.push(this.animateInsert(null, it))\n } else {\n const middle = this.get(id, true)\n const before = this.tabs[middle].id\n this.tabs.splice(middle, 0, it)\n proms.push(this.animateInsert(before, it))\n }\n })\n return Promise.all(proms)\n }\n\n // any: array of heterogeneous runtime values; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n remove(...ids: any[]) {\n let effected = 0\n ids.forEach(it => {\n const tab = this.get(it)\n if (!tab) return\n effected++\n // remove from array\n this.tabs.splice(this.get(tab.id, true), 1)\n // remove from screen\n query(this.box).find(`#tabs_${this.name}_tab_${TsUtils.escapeId(tab.id)}`).remove()\n })\n this.resize()\n return effected\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n select(id: any): boolean { // any: id can be string or number\n if (this.active == id || this.get(id) == null) return false\n this.active = id\n this.refresh()\n return true\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(id: any, tab: any): boolean { // any: tab partial update object\n const index = this.get(id, true)\n if (index == null) return false\n TsUtils.extend(this.tabs[index], tab)\n this.refresh(id)\n return true\n }\n\n // any: parameter typed any — runtime dispatch by call site; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(id?: any, returnIndex?: boolean): any {\n if (arguments.length === 0) {\n const all = []\n for (let i1 = 0; i1 < this.tabs.length; i1++) {\n if (this.tabs[i1].id != null) {\n all.push(this.tabs[i1].id)\n }\n }\n return all\n } else {\n for (let i2 = 0; i2 < this.tabs.length; i2++) {\n if (this.tabs[i2].id == id) { // need to be == since id can be numeric\n return (returnIndex === true ? i2 : this.tabs[i2])\n }\n }\n }\n return null\n }\n\n // any: array of heterogeneous runtime values; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n show(...ids: any[]) {\n // any: array of heterogeneous runtime values; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const effected: any[] = []\n ids.forEach(it => {\n const tab = this.get(it)\n if (!tab || tab.hidden === false) return\n tab.hidden = false\n effected.push(tab.id)\n })\n setTimeout(() => { effected.forEach(it => { this.refresh(it); this.resize() }) }, 15) // needs timeout\n return effected\n }\n\n // any: array of heterogeneous runtime values; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n hide(...ids: any[]) {\n // any: array of heterogeneous runtime values; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const effected: any[] = []\n ids.forEach(it => {\n const tab = this.get(it)\n if (!tab || tab.hidden === true) return\n tab.hidden = true\n effected.push(tab.id)\n })\n setTimeout(() => { effected.forEach(it => { this.refresh(it); this.resize() }) }, 15) // needs timeout\n return effected\n }\n\n // any: array of heterogeneous runtime values; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n enable(...ids: any[]) {\n // any: array of heterogeneous runtime values; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const effected: any[] = []\n ids.forEach(it => {\n const tab = this.get(it)\n if (!tab || tab.disabled === false) return\n tab.disabled = false\n effected.push(tab.id)\n })\n setTimeout(() => { effected.forEach(it => { this.refresh(it) }) }, 15) // needs timeout\n return effected\n }\n\n // any: array of heterogeneous runtime values; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n disable(...ids: any[]) {\n // any: array of heterogeneous runtime values; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const effected: any[] = []\n ids.forEach(it => {\n const tab = this.get(it)\n if (!tab || tab.disabled === true) return\n tab.disabled = true\n effected.push(tab.id)\n })\n setTimeout(() => { effected.forEach(it => { this.refresh(it) }) }, 15) // needs timeout\n return effected\n }\n\n dragMove(event: MouseEvent): void {\n if (!this.last.reordering) return\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n const info = this.last.moving\n const tab = this.tabs[info.index]\n const next = _find(info.index, 1)\n const prev = _find(info.index, -1)\n const $el = query(this.box).find('#tabs_'+ this.name + '_tab_'+ TsUtils.escapeId(tab.id))\n if (info.divX > 0 && next) {\n const $nextEl = query(this.box).find('#tabs_'+ this.name + '_tab_'+ TsUtils.escapeId(next.id))\n let width1 = ($el.get(0) as HTMLElement).clientWidth\n let width2 = ($nextEl.get(0) as HTMLElement).clientWidth\n if (width1 < width2) {\n width1 = Math.floor(width1 / 3)\n width2 = width2 - width1\n } else {\n width1 = Math.floor(width2 / 3)\n width2 = width2 - width1\n }\n if (info.divX > width2) {\n const index = this.tabs.indexOf(next)\n this.tabs.splice(info.index, 0, this.tabs.splice(index, 1)[0]) // reorder in the array\n info.$tab.before($nextEl.get(0))\n info.$tab.css('opacity', 0)\n Object.assign(this.last.moving, {\n index: index,\n divX: -width1,\n x: event.pageX + width1,\n left: info.left + info.divX + width1\n })\n return\n }\n }\n if (info.divX < 0 && prev) {\n const $prevEl = query(this.box).find('#tabs_'+ this.name + '_tab_'+ TsUtils.escapeId(prev.id))\n let width1 = ($el.get(0) as HTMLElement).clientWidth\n let width2 = ($prevEl.get(0) as HTMLElement).clientWidth\n if (width1 < width2) {\n width1 = Math.floor(width1 / 3)\n width2 = width2 - width1\n } else {\n width1 = Math.floor(width2 / 3)\n width2 = width2 - width1\n }\n if (Math.abs(info.divX) > width2) {\n const index = this.tabs.indexOf(prev)\n this.tabs.splice(info.index, 0, this.tabs.splice(index, 1)[0]) // reorder in the array\n $prevEl.before(info.$tab)\n info.$tab.css('opacity', 0)\n Object.assign(info, {\n index: index,\n divX: width1,\n x: event.pageX - width1,\n left: info.left + info.divX - width1\n })\n return\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _find(ind: number, inc: number): any { // any: tab objects have dynamic shape\n ind += inc\n const tab = self.tabs[ind]\n if (tab && tab.hidden) {\n return _find(ind, inc)\n }\n return tab\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mouseAction(action: string, id: any, event: MouseEvent): void { // any: id can be string or number\n const tab = this.get(id)\n const edata = this.trigger('mouse' + action, { target: id, tab, object: tab, originalEvent: event })\n if (edata.isCancelled === true || tab?.disabled || tab?.hidden) return\n switch (action) {\n case 'Enter':\n this.tooltipShow(id)\n break\n case 'Leave':\n this.tooltipHide(id)\n break\n case 'Down':\n this.initReorder(id, event)\n break\n case 'Up':\n break\n }\n edata.finish()\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tooltipShow(id: any): void { // any: tab id can be string or number\n const tab = this.get(id)\n const el = query(this.box).find('#tabs_'+ this.name + '_tab_'+ TsUtils.escapeId(id)).get(0) as HTMLElement\n if (this.tooltip == null || tab?.disabled || this.last.reordering) {\n return\n }\n const pos = this.tooltip\n let txt = tab?.tooltip\n if (typeof txt == 'function') txt = txt.call(this, tab)\n TsTooltip.show({\n anchor: el,\n name: this.name + '_tooltip',\n html: txt,\n position: pos\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tooltipHide(_id: any): void { // any: id used for routing only, not checked here\n if (this.tooltip == null) return\n TsTooltip.hide(this.name + '_tooltip')\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTabHTML(id: any): string | false { // any: tab id can be string or number\n const index = this.get(id, true)\n const tab = this.tabs[index]\n if (tab == null) return false\n if (tab.text == null && tab.caption != null) tab.text = tab.caption\n if (tab.tooltip == null && tab.hint != null) tab.tooltip = tab.hint // for backward compatibility\n if (tab.caption != null) {\n console.log('NOTICE: tabs tab.caption property is deprecated, please use tab.text. Tab -> ', tab)\n }\n if (tab.hint != null) {\n console.log('NOTICE: tabs tab.hint property is deprecated, please use tab.tooltip. Tab -> ', tab)\n }\n\n let text = tab.text\n if (typeof text == 'function') text = text.call(this, tab)\n if (text == null) text = ''\n\n let closable = ''\n let addStyle = ''\n if (tab.hidden) { addStyle += 'display: none;' }\n if (tab.disabled) { addStyle += 'opacity: 0.2;' }\n if (tab.closable && !tab.disabled) {\n closable = `<div class=\"tsg-tab-close tsg-eaction ${this.active === tab.id ? 'active' : ''}\"\n data-mousedown=\"stop\" data-mouseup=\"clickClose|${tab.id}|event\">\n </div>`\n }\n let icon = ''\n if (tab.icon) {\n icon = `<span class=\"tsg-tab-icon ${tab.icon}\"></span>`\n }\n return `\n <div id=\"tabs_${this.name}_tab_${tab.id}\" style=\"${addStyle} ${tab.style}\"\n class=\"tsg-tab tsg-eaction ${this.active === tab.id ? 'active' : ''} ${tab.closable ? 'closable' : ''} ${tab.class ? tab.class : ''}\"\n data-mouseenter=\"mouseAction|Enter|${tab.id}|event]\"\n data-mouseleave=\"mouseAction|Leave|${tab.id}|event]\"\n data-mousedown=\"mouseAction|Down|${tab.id}|event\"\n data-mouseup=\"mouseAction|Up|${tab.id}|event\"\n data-click=\"click|${tab.id}|event\">\n ${icon + TsUtils.lang(text) + closable}\n </div>`\n }\n\n // any: callback parameter — caller signature varies; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refresh(id?: any) {\n const time = Date.now()\n if (this.flow == 'up') {\n query(this.box).addClass('tsg-tabs-up')\n } else {\n query(this.box).removeClass('tsg-tabs-up')\n }\n // event before\n const edata = this.trigger('refresh', { target: (id != null ? id : this.name), object: this.get(id) })\n if (edata.isCancelled === true) return\n if (id == null) {\n // refresh all\n for (let i = 0; i < this.tabs.length; i++) {\n this.refresh(this.tabs[i].id)\n }\n } else {\n // create or refresh only one item\n const selector = '#tabs_'+ this.name +'_tab_'+ TsUtils.escapeId(id)\n const $tab = query(this.box).find(selector)\n const tabHTML = this.getTabHTML(id)\n if ($tab.length === 0) {\n if (tabHTML) query(this.box).find('#tabs_'+ this.name +'_right').before(tabHTML as string)\n } else {\n if (query(this.box).find('.tab-animate-insert').length == 0) {\n if (tabHTML) $tab.replace(tabHTML as string)\n }\n }\n TsUtils.bindEvents(query(this.box).find(`${selector}, ${selector} .tsg-eaction`), this)\n }\n // right html\n query(this.box).find('#tabs_'+ this.name +'_right').html(this.right)\n // event after\n edata.finish()\n // this.resize();\n return Date.now() - time\n }\n\n // any: callback parameter — caller signature varies; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override render(box?: any) {\n const time = Date.now()\n if (typeof box == 'string') box = query(box).get(0)\n // event before\n const edata = this.trigger('render', { target: this.name, box: box ?? this.box })\n if (edata.isCancelled === true) return\n // default action\n if (box != null) {\n this.unmount() // clean previous control\n this.box = box\n }\n if (!this.box) return false\n // render all buttons\n const html =`\n <div class=\"tsg-tabs-line\"></div>\n <div class=\"tsg-scroll-wrapper tsg-eaction\" data-mousedown=\"resize\">\n <div id=\"tabs_${this.name}_right\" class=\"tsg-tabs-right\">${this.right}</div>\n </div>\n <div class=\"tsg-scroll-left tsg-eaction\" data-click='[\"scroll\",\"left\"]'></div>\n <div class=\"tsg-scroll-right tsg-eaction\" data-click='[\"scroll\",\"right\"]'></div>`\n query(this.box)\n .attr('name', this.name)\n .addClass('tsg-reset tsg-tabs')\n .html(html)\n if (query(this.box).length > 0) {\n (query(this.box)[0] as HTMLElement).style.cssText += this.style\n }\n TsUtils.bindEvents(query(this.box).find('.tsg-eaction'), this)\n // observe div resize\n this.last.observeResize = new ResizeObserver(() => { this.resize() })\n this.last.observeResize.observe(this.box)\n // event after\n edata.finish()\n this.refresh()\n this.resize()\n return Date.now() - time\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n initReorder(id: any, event: MouseEvent): void { // any: id can be string or number\n if (!this.reorder) return\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n const $tab = query(this.box).find('#tabs_' + this.name + '_tab_' + TsUtils.escapeId(id))\n const tabIndex = this.get(id, true)\n const $ghost = query(($tab.get(0) as HTMLElement).cloneNode(true))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let edata: any // any: TsEvent instance returned by trigger(); typed generically\n $ghost.attr('id', '#tabs_' + this.name + '_tab_ghost')\n this.last.moving = {\n index: tabIndex,\n indexFrom: tabIndex,\n $tab: $tab,\n $ghost: $ghost,\n divX: 0,\n left: ($tab.get(0) as HTMLElement).getBoundingClientRect().left,\n parentX: (query(this.box).get(0) as HTMLElement).getBoundingClientRect().left,\n x: event.pageX,\n opacity: $tab.css('opacity')\n }\n\n query(document)\n .off('.w2uiTabReorder')\n .on('mousemove.w2uiTabReorder', function (event: Event) {\n const mouseEvent = event as MouseEvent\n if (!self.last.reordering) {\n // event before\n edata = self.trigger('reorder', { target: self.tabs[tabIndex].id, indexFrom: tabIndex, tab: self.tabs[tabIndex] })\n if (edata.isCancelled === true) return\n\n TsTooltip.hide(self.name + '_tooltip')\n self.last.reordering = true\n $ghost.addClass('moving')\n $ghost.css({\n 'pointer-events': 'none',\n 'position': 'absolute',\n 'left': ($tab.get(0) as HTMLElement).getBoundingClientRect().left\n })\n $tab.css('opacity', 0)\n query(self.box).find('.tsg-scroll-wrapper').append($ghost.get(0) as HTMLElement)\n query(self.box).find('.tsg-tab-close').hide()\n }\n self.last.moving.divX = mouseEvent.pageX - self.last.moving.x\n $ghost.css('left', (self.last.moving.left - self.last.moving.parentX + self.last.moving.divX) + 'px')\n self.dragMove(mouseEvent)\n })\n .on('mouseup.w2uiTabReorder', function () {\n query(document).off('.w2uiTabReorder')\n $ghost.css({\n 'transition': '0.1s',\n 'left': (self.last.moving.$tab.get(0) as HTMLElement).getBoundingClientRect().left - self.last.moving.parentX\n })\n query(self.box).find('.tsg-tab-close').show()\n $ghost.remove()\n $tab.css({ opacity: self.last.moving.opacity })\n // self.render()\n if (self.last.reordering) {\n edata.finish({ indexTo: self.last.moving.index })\n }\n self.last.reordering = false\n })\n }\n\n // any: callback parameter — caller signature varies; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n scroll(direction?: any, instant?: any) {\n return new Promise<void>((resolve, _reject) => {\n const scrollBox = query(this.box).find('.tsg-scroll-wrapper')\n const scrollBoxEl = scrollBox.get(0) as HTMLElement\n const scrollLeft = scrollBoxEl.scrollLeft\n const right = scrollBox.find('.tsg-tabs-right').get(0) as HTMLElement\n const width1 = (scrollBox.parent().get(0) as HTMLElement).getBoundingClientRect().width\n const width2 = scrollLeft + right.offsetLeft + right.clientWidth\n\n switch (direction) {\n case 'left': {\n let scroll = scrollLeft - width1 + 50 // 35 is width of both button\n if (scroll <= 0) scroll = 0\n scrollBoxEl.scrollTo({ top: 0, left: scroll, behavior: instant ? 'auto' : 'smooth' })\n break\n }\n case 'right': {\n let scroll = scrollLeft + width1 - 50 // 35 is width of both button\n if (scroll >= width2 - width1) scroll = width2 - width1\n scrollBoxEl.scrollTo({ top: 0, left: scroll, behavior: instant ? 'auto' : 'smooth' })\n break\n }\n }\n setTimeout(() => { this.resize(); resolve() }, instant ? 0 : 350)\n })\n }\n\n // any: callback parameter — caller signature varies; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n scrollIntoView(id?: any, instant?: any) {\n return new Promise<void>((resolve, _reject) => {\n if (id == null) id = this.active\n const tab = this.get(id)\n if (tab == null) return\n const tabEl = query(this.box).find('#tabs_' + this.name + '_tab_' + TsUtils.escapeId(id)).get(0) as HTMLElement\n tabEl.scrollIntoView({ block: 'start', inline: 'center', behavior: instant ? 'auto' : 'smooth' })\n setTimeout(() => { this.resize(); resolve() }, instant ? 0 : 500)\n })\n }\n\n resize() {\n const time = Date.now()\n if (this.box == null) return\n // event before\n const edata = this.trigger('resize', { target: this.name })\n if (edata.isCancelled === true) return\n\n // show hide overflow buttons\n if (this.box != null) {\n const box = query(this.box)\n box.find('.tsg-scroll-left, .tsg-scroll-right').hide()\n const scrollBox = box.find('.tsg-scroll-wrapper').get(0) as HTMLElement\n const $right = box.find('.tsg-tabs-right')\n const boxWidth = (box.get(0) as HTMLElement).getBoundingClientRect().width\n const itemsWidth = ($right.length > 0 ? ($right[0] as HTMLElement).offsetLeft + ($right[0] as HTMLElement).clientWidth : 0)\n if (boxWidth < itemsWidth) {\n // we have overflown content\n if (scrollBox.scrollLeft > 0) {\n box.find('.tsg-scroll-left').show()\n }\n if (boxWidth < itemsWidth - scrollBox.scrollLeft) {\n box.find('.tsg-scroll-right').show()\n }\n }\n }\n // event after\n edata.finish()\n return Date.now() - time\n }\n\n destroy() {\n // event before\n const edata = this.trigger('destroy', { target: this.name })\n if (edata.isCancelled === true) return\n // clean up\n if (query(this.box).find('#tabs_'+ this.name + '_right').length > 0) {\n this.unmount()\n }\n delete TsUi[this.name]\n // event after\n edata.finish()\n }\n\n override unmount(): void {\n super.unmount()\n this.last.observeResize?.disconnect()\n }\n\n // ===================================================\n // -- Internal Event Handlers\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n click(id: any, event?: MouseEvent): false | void { // any: id can be string or number\n if (event && query(event.target).hasClass('tsg-tab-close')) {\n // do not consider click on close button as tab click\n return\n }\n const tab = this.get(id)\n if (tab == null || tab.disabled || this.last.reordering) return false\n // event before\n const edata = this.trigger('click', { target: id, tab: tab, object: tab, originalEvent: event })\n if (edata.isCancelled === true) return\n // default action\n query(this.box).find('#tabs_'+ this.name +'_tab_'+ TsUtils.escapeId(this.active)).removeClass('active')\n this.active = tab.id\n query(this.box).find('#tabs_'+ this.name +'_tab_'+ TsUtils.escapeId(this.active)).addClass('active')\n // route processing\n if (typeof tab.route == 'string') {\n let route = tab.route !== '' ? String('/'+ tab.route).replace(/\\/{2,}/g, '/') : ''\n const info = TsUtils.parseRoute(route)\n if (info.keys.length > 0) {\n for (let k = 0; k < info.keys.length; k++) {\n const key = info.keys[k]\n if (key == null || this.routeData[key.name] == null) continue\n route = route.replace((new RegExp(':'+ key.name, 'g')), this.routeData[key.name] as string)\n }\n }\n setTimeout(() => { window.location.hash = route }, 1)\n }\n // event after\n edata.finish()\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n clickClose(id: any, event?: MouseEvent): false | void { // any: id can be string or number\n const tab = this.get(id)\n if (tab == null || tab.disabled) return false\n // event before\n const edata = this.trigger('close', { target: id, object: tab, tab, originalEvent: event })\n if (edata.isCancelled === true) return\n this.animateClose(id).then(() => {\n this.remove(id)\n edata.finish()\n this.refresh()\n })\n event?.stopPropagation()\n }\n\n // any: callback parameter — caller signature varies; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n animateClose(id?: any) {\n return new Promise<void>((resolve, _reject) => {\n const $tab = query(this.box).find('#tabs_'+ this.name +'_tab_'+ TsUtils.escapeId(id))\n const width = ($tab.get(0) as HTMLElement).clientWidth || 0\n const anim = `<div class=\"tab-animate-close\" style=\"display: inline-block; flex-shrink: 0; width: ${width}px; transition: width 0.25s\"></div>`\n const $anim = $tab.replace(anim)\n setTimeout(() => { $anim.css({ width: '0px' }) }, 1)\n setTimeout(() => {\n $anim.remove()\n this.resize()\n resolve()\n }, 500)\n })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n animateInsert(id: any, tab: any): Promise<void> { // any: id/tab objects have dynamic shape\n return new Promise<void>((resolve, _reject) => {\n let $before = query(this.box).find('#tabs_'+ this.name +'_tab_'+ TsUtils.escapeId(id))\n const tabHTML = this.getTabHTML(tab.id)\n // any: cast-to-any for dynamic dispatch; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const $tab = (_queryRaw as any).html(tabHTML) as Query\n if ($before.length == 0) {\n $before = query(this.box).find('#tabs_tabs_right')\n $before.before($tab)\n this.resize()\n } else {\n $tab.css({ opacity: 0 })\n // first insert tab on the right to get its proper dimentions\n query(this.box).find('#tabs_tabs_right').before($tab.get(0) as HTMLElement)\n const $tmp = query(this.box).find('#' + $tab.attr('id'))\n const width = ($tmp.get(0) as HTMLElement)?.clientWidth ?? 0\n // insert animation div\n // any: cast-to-any for dynamic dispatch; TsTabs tab item shape is user-defined at runtime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const $anim = (_queryRaw as any).html('<div class=\"tab-animate-insert\" style=\"flex-shrink: 0; width: 0; transition: width 0.25s\"></div>') as Query\n $before.before($anim)\n // hide tab and move it in the right position\n $tab.hide()\n $anim.before($tab[0] as HTMLElement)\n setTimeout(() => { $anim.css({ width: width + 'px' }) }, 1)\n setTimeout(() => {\n $anim.remove()\n ;($tab.css({ opacity: 1 }) as unknown as Query).show()\n this.refresh(tab.id)\n this.resize()\n resolve()\n }, 500)\n }\n })\n }\n}\nexport { TsTabs }"],"mappings":"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","names":["query","tab","event"]}
|