@table-bro/native 1.1.0 → 1.2.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/README.md +21 -2
- package/dist/table-bro.native.d.ts +52 -24
- package/dist/table-bro.native.esm.js +39 -38
- package/dist/table-bro.native.esm.js.map +1 -1
- package/dist/table-bro.native.min.css +1 -1
- package/dist/table-bro.native.umd.js +38 -37
- package/dist/table-bro.native.umd.js.map +1 -1
- package/package.json +16 -3
- package/styles/mixins/_visually-hidden.scss +14 -0
- package/styles/skin/shared/mixins/_shared.scss +2 -10
- package/styles/skin/vanilla-js/native/components/bootstrap-based/_toolbar.scss +8 -0
- package/styles/skin/vanilla-js/native/table-bro/_button.scss +20 -0
- package/styles/skin/vanilla-js/native/table-bro/_progress-bar.scss +21 -0
- package/styles/skin/vanilla-js/native/table-bro/_toolbar.scss +12 -0
- package/styles/skin/vanilla-js/shared/_skin.scss +6 -0
- package/styles/skin/vanilla-js/shared/components/material-based/_sort-header.scss +24 -9
|
@@ -1,33 +1,34 @@
|
|
|
1
|
-
if(typeof exports!=`object`&&typeof define!=`function`&&typeof TableBro>`u`)throw Error(`@table-bro/native: load the @table-bro/core script before the skin script, the TableBro global is missing.`);(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@table-bro/core")):typeof define==`function`&&define.amd?define([`exports`,`@table-bro/core`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.TableBroNative={},e.TableBro))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let{
|
|
2
|
-
<div ${this.css?`class="${
|
|
1
|
+
if(typeof exports!=`object`&&typeof define!=`function`&&typeof TableBro>`u`)throw Error(`@table-bro/native: load the @table-bro/core script before the skin script, the TableBro global is missing.`);(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@table-bro/core")):typeof define==`function`&&define.amd?define([`exports`,`@table-bro/core`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.TableBroNative={},e.TableBro))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let n={},r=/* @__PURE__ */ new Set;function i(e){n={...n,...e},r.forEach(e=>e.renderEmpty())}var a=class extends t.BroHTMLElement{template(){let e=this.col?.name,t=e&&this.row?.[e];return this.empty=!(Array.isArray(t)&&t.length),this.items=this.empty?[this.emptyText()]:t,this.items.map(()=>this.tagHTML).join(``)}row;col;config;items=[];empty=!1;fitting;rendered=!1;render(){this.insertAdjacentHTML(`afterbegin`,this.template()),Array.from(this.children).forEach((e,t)=>this.renderTag(e,this.items[t]))}renderEmpty(){this.empty&&this.firstElementChild&&(this.items=[this.emptyText()],this.renderTag(this.firstElementChild,this.items[0]))}renderTag(e,t){this.col?.html?e.innerHTML=t:e.textContent=t}emptyText(){return n.empty??this.config?.texts.noItems??`No data`}connectedCallback(){r.add(this),this.rendered?this.renderEmpty():(this.rendered=!0,this.render()),this.fitting=new AbortController,(0,t.fitCellItems)(this,this.fitting.signal)}disconnectedCallback(){r.delete(this),this.fitting?.abort()}};let{escape:o}=t.BroHTML;var s=class extends t.BroHTMLElement{template(){this.css=this.config.components.switch?.css,this.checked=this.getAttribute(`checked`);let e=this.checked===`true`;return`
|
|
2
|
+
<div ${this.css?`class="${o(this.css.div.className)}"`:``}>
|
|
3
3
|
<input type="checkbox"
|
|
4
|
-
${this.css?`class="${
|
|
4
|
+
${this.css?`class="${o(this.css.div.input.className)}"`:``}
|
|
5
5
|
role="switch"
|
|
6
6
|
${e?` checked`:``}>
|
|
7
|
-
</div>`}config;col;checked;css;rendered=!1;events(){let e=this.querySelector(`input`),t=this.getAttribute(`name`);e.setAttribute(`aria-label`,this.col?.title??``),e.addEventListener(`change`,()=>{t&&this.dispatchEvent(new CustomEvent(`action`,{detail:t}))})}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.events()}connectedCallback(){this.rendered||(this.rendered=!0,this.render())}};let{escape:
|
|
8
|
-
<nav class="${
|
|
9
|
-
<div class="${
|
|
7
|
+
</div>`}config;col;checked;css;rendered=!1;events(){let e=this.querySelector(`input`),t=this.getAttribute(`name`);e.setAttribute(`aria-label`,this.col?.title??``),e.addEventListener(`change`,()=>{t&&this.dispatchEvent(new CustomEvent(`action`,{detail:t}))})}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.events()}connectedCallback(){this.rendered||(this.rendered=!0,this.render())}};let{escape:c}=t.BroHTML;var l=class extends t.BroHTMLElement{template(){this.css=this.config.components.toolbar.css;let e=this.css.nav.div?.className?`${this.css.nav.div.className} ${this.contentClassName}`:this.contentClassName;return`
|
|
8
|
+
<nav class="${c(this.css.nav.className)}">
|
|
9
|
+
<div class="${c(e)}">
|
|
10
10
|
<!-- toolbar content -->
|
|
11
11
|
</div>
|
|
12
|
-
</nav>`}config;contentClassName=`bro-toolbar-content`;css;render(){this.insertAdjacentHTML(`afterbegin`,this.template())}appendToolbarContent(...e){this.firstChild||this.render(),this.querySelector(`.${this.contentClassName}`)?.append(...e)}};let{
|
|
12
|
+
</nav>`}config;contentClassName=`bro-toolbar-content`;css;render(){this.insertAdjacentHTML(`afterbegin`,this.template())}appendToolbarContent(...e){this.firstChild||this.render(),this.querySelector(`.${this.contentClassName}`)?.append(...e)}};let{escape:u}=t.BroHTML;var d=class extends t.BroHTMLElement{template(){this.css=this.config.components.toolbarMain.css,this.toolbarTitle=this.config.toolbarTitle;let e=this.css.navbarCollapse.ul.className?`${this.css.navbarCollapse.ul.className} ${this.contentClassName}`:this.contentClassName;return`
|
|
13
13
|
<!--bro-toolbar-->
|
|
14
14
|
<span class="bro-toolbar-title-space"></span>
|
|
15
|
-
<span class="${
|
|
15
|
+
<span class="${u(this.css.toolbarTitle.className)}">${u(this.toolbarTitle)}</span>
|
|
16
16
|
|
|
17
17
|
<span class="bro-toolbar-space"></span>
|
|
18
18
|
|
|
19
|
-
<div class="${
|
|
20
|
-
<ul class="${
|
|
19
|
+
<div class="${u(this.css.navbarCollapse.className)} bro-toolbar-buttons">
|
|
20
|
+
<ul class="${u(e)}">
|
|
21
21
|
<!-- search-button -->
|
|
22
22
|
<!-- buttons -->
|
|
23
23
|
</ul>
|
|
24
24
|
</div>
|
|
25
|
-
<!--/bro-toolbar-->`}config;contentClassName=`bro-navbar-nav`;toolbarTitle;css;navContentEl;rendered=!1;events(){this.addEventListener(`click`,e=>{e.preventDefault()}),this.navContentEl.children[0].addEventListener(`click`,()=>{this.dispatchEvent(new CustomEvent(t.events.toolbarEvent,{bubbles:!0,composed:!0,detail:t.events.toolbarSearchOpenEvent}))})}render(){let e=
|
|
26
|
-
<li class="${
|
|
27
|
-
<a class="${
|
|
28
|
-
|
|
25
|
+
<!--/bro-toolbar-->`}config;contentClassName=`bro-navbar-nav`;toolbarTitle;css;navContentEl;rendered=!1;events(){this.addEventListener(`click`,e=>{e.preventDefault()}),this.addEventListener(`keydown`,e=>{let t=e.target.closest?.(`a[role="button"]`);e.key===` `&&!e.repeat&&!e.defaultPrevented&&t&&(e.preventDefault(),t.click())}),this.navContentEl.children[0].addEventListener(`click`,()=>{this.dispatchEvent(new CustomEvent(t.events.toolbarEvent,{bubbles:!0,composed:!0,detail:t.events.toolbarSearchOpenEvent}))})}render(){let e=this.dom.createElement(this.config.components.toolbar.selector);e.setAttribute(`class`,`bro-toolbar`),e.config=this.config,this.appendChild(e);let t=this.dom.createElement(`div`);t.insertAdjacentHTML(`afterbegin`,this.template()),e.appendToolbarContent(...Array.from(t.children)),this.appendToolbarContent(this.renderSearchButton(),...this.renderButtons()),this.querySelectorAll(this.config.components.dropdown?.selector).forEach(e=>{e.replaceWith(e.children[0])}),this.events()}connectedCallback(){(0,t.isPrerendered)(this)||this.rendered||(this.rendered=!0,this.render())}appendToolbarContent(...e){this.navContentEl||=this.querySelector(`.${this.contentClassName}`),this.navContentEl.append(...e)}get dom(){return new t.BroDom(this.ownerDocument)}templateToolbarButton(e,n,r,i){let a=n===this.config.texts.buttonRole?` aria-hidden="true"`:``,o=e&&n?`<span class="${u(t.broVisuallyHidden)}"${a}> ${u(n)}</span>`:``;return this.dom.createFromHTML(`
|
|
26
|
+
<li class="${u(this.css.navbarCollapse.ul.li.className)}">
|
|
27
|
+
<a class="${u(this.css.navbarCollapse.ul.li.a.className)}${i?` ${u(i)}`:``}" href=""
|
|
28
|
+
role="button">
|
|
29
|
+
${r||``}${u(e)}${o}
|
|
29
30
|
</a>
|
|
30
|
-
</li>`)}renderSearchButton(){let e=
|
|
31
|
+
</li>`)}renderSearchButton(){let e=this.dom.createElement(this.config.components.button.selector);this.config.components.toolbarMain.beforeRender?.(e,this.config.texts.search);let t=e.getAttribute(`button-title`)??``;return this.templateToolbarButton(t,this.config.texts.searchRole(this.config.toolbarTitle),e.iconHTML,`bro-toolbar-button-search`)}renderButtons(){return(this.config.components.toolbarMain.buttons??[]).map(e=>{if(e.mode===`navbar-dropdown`){let n=this.dom.createElement(this.config.components.dropdown?.selector);return n.config=this.config,n.setAttribute(`mode`,`navbar-dropdown`),n.setAttribute(`button-title`,e.buttonTitle),n.setAttribute(`options`,JSON.stringify(e.options)),n.addEventListener(`value`,e=>{this.dispatchEvent(new CustomEvent(t.events.toolbarEvent,{bubbles:!0,composed:!0,detail:e.detail}))}),n}{let n=this.templateToolbarButton(e.buttonTitle,this.config.texts.buttonRole,e.iconHTML);return n.querySelector(`a`)?.addEventListener(`click`,()=>{this.dispatchEvent(new CustomEvent(t.events.toolbarEvent,{bubbles:!0,composed:!0,detail:e.eventType}))}),n}})}};let{escape:f}=t.BroHTML;var p=class extends t.BroHTMLElement{template(){this.label=this.getAttribute(`label`)||``,this.buttonClassName=this.getAttribute(`button-class`),this.buttonTitle=this.getAttribute(`button-title`)||``,this.iconHTML=this.getAttribute(`icon-html`)||this.iconHTML,this.mode=this.getAttribute(`mode`)||`button`,this.eventType=this.getAttribute(`event-type`)||`action`;let e=this.buttonClassName?` class="${f(this.buttonClassName)}"`:``,t=!this.buttonTitle&&this.label?` aria-label="${f(this.label)}"`:``,n=`${f(this.buttonTitle)}${this.iconHTML?`${this.buttonTitle?` `:``}${this.iconHTML}`:``}`;return this.mode===`link`?`
|
|
31
32
|
<a${e} href=""
|
|
32
33
|
role="button"${t}>
|
|
33
34
|
${n}
|
|
@@ -35,14 +36,14 @@ if(typeof exports!=`object`&&typeof define!=`function`&&typeof TableBro>`u`)thro
|
|
|
35
36
|
<button${e}
|
|
36
37
|
type="button"${t}>
|
|
37
38
|
${n}
|
|
38
|
-
</button>`}label;buttonClassName;buttonTitle;iconHTML;mode;eventType;events(){let e=this.children[0];e.addEventListener(`click`,n=>{(0,t.dispatchAction)(e,this.eventType),n.preventDefault()}),this.mode===`link`&&e.addEventListener(`keydown`,t=>{t.key===` `&&!t.repeat&&(t.preventDefault(),e.click())})}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.events()}connectedCallback(){this.firstChild||this.render()}};let{escape:
|
|
39
|
-
<span class="${t.broCellSelectors.ellipsisContainer}${this.containerClassName?` ${
|
|
39
|
+
</button>`}label;buttonClassName;buttonTitle;iconHTML;mode;eventType;events(){let e=this.children[0];e.addEventListener(`click`,n=>{(0,t.dispatchAction)(e,this.eventType),n.preventDefault()}),this.mode===`link`&&e.addEventListener(`keydown`,t=>{t.key===` `&&!t.repeat&&(t.preventDefault(),e.click())})}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.events()}connectedCallback(){this.firstChild||this.render()}};let{escape:m,text:h}=t.BroHTML;var g=class extends t.BroHTMLElement{template(){return this.containerClassName=this.getAttribute(`container-class`),this.value=this.getAttribute(`value`)||``,`
|
|
40
|
+
<span class="${t.broCellSelectors.ellipsisContainer}${this.containerClassName?` ${m(this.containerClassName)}`:``}">
|
|
40
41
|
<span class="${t.broCellSelectors.ellipsis}"></span>
|
|
41
|
-
</span>`}row;col;config;containerClassName;tooltip;value;release;released=!1;rendered=!1;render(){this.insertAdjacentHTML(`afterbegin`,this.template());let e=this.querySelector(`.${t.broCellSelectors.ellipsis}`);this.col?.html?(e.innerHTML=this.value,this.tooltip=
|
|
42
|
+
</span>`}row;col;config;containerClassName;tooltip;value;release;released=!1;rendered=!1;render(){this.insertAdjacentHTML(`afterbegin`,this.template());let e=this.querySelector(`.${t.broCellSelectors.ellipsis}`);this.col?.html?(e.innerHTML=this.value,this.tooltip=h(this.value)):(e.textContent=this.value,this.tooltip=this.value),this.afterRender()}connectedCallback(){this.rendered?this.released&&(this.released=!1,this.afterRender()):(this.rendered=!0,this.render())}disconnectedCallback(){queueMicrotask(()=>{this.isConnected||(typeof this.release==`function`&&this.release(),this.release=void 0,this.released=!0)})}afterRender(){let e=this.children[0];this.config.components.textEllipsis.afterRender&&(this.release=this.config.components.textEllipsis.afterRender(e,this.tooltip))}};let{escape:_}=t.BroHTML;var v=class extends t.BroHTMLElement{template(){this.arrowPosition=this.getAttribute(`arrow-position`)||`after`,this.sortId=this.getAttribute(`sort-id`)||``,this.dataType=this.getAttribute(`data-type`)||``,this.headerTitle=this.getAttribute(`header-title`)||``,this.iconHTML=this.getAttribute(`icon-html`)||``,this.tooltip=this.getAttribute(`tooltip`)||``;let e=``;this.arrowPosition===`before`&&(e+=` bro-sort-header-position-before`),e+=` bro-sort-header-descending`;let t=this.headerTitle?` role="button" tabindex="0"`:``;return`
|
|
42
43
|
<div class="bro-sort-header-container${e}"${t}>
|
|
43
|
-
<div class="bro-sort-header-content">${
|
|
44
|
+
<div class="bro-sort-header-content">${_(this.headerTitle)}</div>
|
|
44
45
|
<div class="bro-sort-header-arrow" aria-hidden="true">${this.iconHTML}</div>
|
|
45
|
-
</div>`}static get observedAttributes(){return[`tooltip`]}config;arrowPosition;headerTitle;dataType;iconHTML;sortId;tooltip;_activeSort;direction=``;release;released=!1;rendered=!1;events(){let e=this.children[0];this.headerTitle&&(e.addEventListener(`blur`,()=>{e.classList.remove(`bro-sort-header-recently-cleared-ascending`)}),e.addEventListener(`keydown`,t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e.click())}),e.addEventListener(`click`,()=>{this.direction===``?(this.direction=`desc`,e.classList.add(`bro-sort-header-sorted`),e.classList.remove(`bro-sort-header-recently-cleared-ascending`)):this.direction===`desc`?(this.direction=`asc`,e.classList.remove(`bro-sort-header-descending`)):this.direction===`asc`&&(this.direction=``,e.classList.remove(`bro-sort-header-sorted`),e.classList.add(`bro-sort-header-descending`),e.classList.add(`bro-sort-header-recently-cleared-ascending`)),(0,t.dispatchAction)(this,t.events.filtersSortEvent,{sortKey:this.sortId,sortDirection:this.direction||void 0})}))}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.afterRender(),this.events()}get activeSort(){return this._activeSort}set activeSort(e){this._activeSort=e;let t=this.children[0];this.direction!==``&&e?.sortKey!==this.sortId&&t&&(this.direction=``,t.classList.remove(`bro-sort-header-sorted`),t.classList.add(`bro-sort-header-descending`))}connectedCallback(){this.rendered?this.released&&(this.released=!1,this.afterRender()):(this.rendered=!0,this.render())}disconnectedCallback(){queueMicrotask(()=>{this.isConnected||(typeof this.release==`function`&&this.release(),this.release=void 0,this.released=!0)})}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(this.tooltip=n||``,typeof this.release==`function`&&this.release(),this.release=void 0,this.isConnected?this.afterRender():this.released=!0)}afterRender(){let e=this.children[0];this.release=this.config.components.sortHeader.afterRender?.(e,this.tooltip)}};
|
|
46
|
+
</div>`}static get observedAttributes(){return[`tooltip`]}config;arrowPosition;headerTitle;dataType;iconHTML;sortId;tooltip;_activeSort;direction=``;release;released=!1;rendered=!1;events(){let e=this.children[0];this.headerTitle&&(e.addEventListener(`blur`,()=>{e.classList.remove(`bro-sort-header-recently-cleared-ascending`)}),e.addEventListener(`keydown`,t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e.click())}),e.addEventListener(`click`,()=>{this.direction===``?(this.direction=`desc`,e.classList.add(`bro-sort-header-sorted`),e.classList.remove(`bro-sort-header-recently-cleared-ascending`)):this.direction===`desc`?(this.direction=`asc`,e.classList.remove(`bro-sort-header-descending`)):this.direction===`asc`&&(this.direction=``,e.classList.remove(`bro-sort-header-sorted`),e.classList.add(`bro-sort-header-descending`),e.classList.add(`bro-sort-header-recently-cleared-ascending`)),(0,t.dispatchAction)(this,t.events.filtersSortEvent,{sortKey:this.sortId,sortDirection:this.direction||void 0})}))}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.afterRender(),this.events()}get activeSort(){return this._activeSort}set activeSort(e){this._activeSort=e;let t=this.children[0];this.direction!==``&&e?.sortKey!==this.sortId&&t&&(this.direction=``,t.classList.remove(`bro-sort-header-sorted`),t.classList.add(`bro-sort-header-descending`))}connectedCallback(){(0,t.isPrerendered)(this)||(this.rendered?this.released&&(this.released=!1,this.afterRender()):(this.rendered=!0,this.render()))}disconnectedCallback(){queueMicrotask(()=>{this.isConnected||(typeof this.release==`function`&&this.release(),this.release=void 0,this.released=!0)})}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(this.tooltip=n||``,typeof this.release==`function`&&this.release(),this.release=void 0,this.isConnected?this.afterRender():this.released=!0)}afterRender(){let e=this.children[0];this.config.prerender||(this.release=this.config.components.sortHeader.afterRender?.(e,this.tooltip))}};
|
|
46
47
|
/**
|
|
47
48
|
* @license
|
|
48
49
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -50,12 +51,12 @@ if(typeof exports!=`object`&&typeof define!=`function`&&typeof TableBro>`u`)thro
|
|
|
50
51
|
* Use of this source code is governed by an MIT-style license that can be
|
|
51
52
|
* found in the LICENSE file at https://angular.dev/license
|
|
52
53
|
*/
|
|
53
|
-
let{escape:
|
|
54
|
+
let{escape:y}=t.BroHTML,b={"bro-button":p,"bro-paginator":class extends t.BroHTMLElement{template(){this.disabled=this.getAttribute(`disabled`)===`true`||!1,this.length=Number(this.getAttribute(`length`))||0,this.pageIndex=Math.max(Number(this.getAttribute(`page-index`))||0,0),this.pageSize=Number(this.getAttribute(`page-size`)),this.showFirstLastButtons=this.getAttribute(`show-first-last-buttons`)!==`false`,this.parsePageSizeOptions();let e=this.texts=this.config.texts,t=this.config.components.paginator.css?.ul,n=t?.className?` class="${y(t.className)}"`:``,r=t?.li?.className?` class="${y(t.li.className)}"`:``,i=t?.li?.a?.className?`${y(t.li.a.className)} `:``;return this.dropdownSelector=this.config.components.dropdown?.selector,`
|
|
54
55
|
<div class="bro-paginator-outer-container">
|
|
55
56
|
<div class="bro-paginator-inner-container">
|
|
56
57
|
<div class="bro-paginator-page-size">
|
|
57
58
|
<div class="bro-paginator-page-size-label">
|
|
58
|
-
${
|
|
59
|
+
${y(e.itemsPerPage)}
|
|
59
60
|
</div>
|
|
60
61
|
|
|
61
62
|
${this.pageSizeDropdown?.length?``:this.templatePageSizeValue()}
|
|
@@ -63,51 +64,51 @@ let{escape:g}=t.BroHTML,_={"bro-button":u,"bro-paginator":class extends t.BroHTM
|
|
|
63
64
|
|
|
64
65
|
<div class="bro-paginator-range-actions">
|
|
65
66
|
<div class="bro-paginator-range-label" aria-live="polite">
|
|
66
|
-
${
|
|
67
|
+
${y(e.rangeLabel(this.pageIndex,this.pageSize,this.length))}
|
|
67
68
|
</div>
|
|
68
69
|
|
|
69
|
-
<nav aria-label="${
|
|
70
|
+
<nav aria-label="${y(e.pageNavigation)}">
|
|
70
71
|
<ul${n}>
|
|
71
72
|
${this.showFirstLastButtons?`
|
|
72
73
|
<li${r}>
|
|
73
74
|
<a class="${i}bro-paginator-navigation-first" href=""
|
|
74
|
-
aria-label="${
|
|
75
|
+
aria-label="${y(e.firstPage)}">${y(e.first)}</a>
|
|
75
76
|
</li>`:``}
|
|
76
77
|
|
|
77
78
|
<li${r}>
|
|
78
79
|
<a class="${i}bro-paginator-navigation-previous" href=""
|
|
79
|
-
aria-label="${
|
|
80
|
+
aria-label="${y(e.previousPage)}">${y(e.previous)}</a>
|
|
80
81
|
</li>
|
|
81
82
|
|
|
82
83
|
<li${r}>
|
|
83
84
|
<a class="${i}bro-paginator-navigation-next" href=""
|
|
84
|
-
aria-label="${
|
|
85
|
+
aria-label="${y(e.nextPage)}">${y(e.next)}</a>
|
|
85
86
|
</li>
|
|
86
87
|
|
|
87
88
|
${this.showFirstLastButtons?`
|
|
88
89
|
<li${r}>
|
|
89
90
|
<a class="${i}bro-paginator-navigation-last" href=""
|
|
90
|
-
aria-label="${
|
|
91
|
+
aria-label="${y(e.lastPage)}">${y(e.last)}</a>
|
|
91
92
|
</li>`:``}
|
|
92
93
|
</ul>
|
|
93
94
|
</nav>
|
|
94
95
|
</div>
|
|
95
96
|
</div>
|
|
96
|
-
</div>`}static get observedAttributes(){return[`page-index`,`page-size`,`length`,`page-size-options`,`disabled`]}config;disabled;length;pageIndex;pageSize;pageSizeOptions;showFirstLastButtons;page;eventName=`page`;firstEl;previousEl;nextEl;lastEl;pageSizeEl;pageSizeValueEl;rangeLabelEl;dropdownSelector;texts;pageSizeDropdown;rendered=!1;events(){this.previousEl=this.querySelector(`.bro-paginator-navigation-previous`),this.nextEl=this.querySelector(`.bro-paginator-navigation-next`),this.previousEl.addEventListener(`click`,e=>{e.preventDefault(),this.hasPreviousPage()&&this.navigate(this.pageIndex-1)}),this.nextEl.addEventListener(`click`,e=>{e.preventDefault(),this.hasNextPage()&&this.navigate(this.pageIndex+1)}),this.showFirstLastButtons&&(this.firstEl=this.querySelector(`.bro-paginator-navigation-first`),this.lastEl=this.querySelector(`.bro-paginator-navigation-last`),this.firstEl.addEventListener(`click`,e=>{e.preventDefault(),this.hasPreviousPage()&&this.navigate(0)}),this.lastEl.addEventListener(`click`,e=>{e.preventDefault(),this.hasNextPage()&&this.navigate(this.getNumberOfPages()-1)}))}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.pageSizeDropdown?.length&&(this.pageSizeEl=this.querySelector(`.bro-paginator-page-size`),this.renderPageSizeDropdown()),this.events(),this.renderNavigationState()}connectedCallback(){this.rendered||(this.rendered=!0,this.render())}attributeChangedCallback(e,t,n){this.texts&&((e===`page-index`||e===`page-size`||e===`length`)&&(this.rangeLabelEl||=this.querySelector(`.bro-paginator-range-label`),this.pageSizeValueEl||=this.querySelector(`.bro-paginator-page-size-value`),e===`page-index`&&(this.pageIndex=+n),e===`page-size`&&(this.pageSize=+n,this.pageSizeOptions.length||(this.pageSizeValueEl.innerText=n)),e===`length`&&(this.length=+n),this.rangeLabelEl.textContent=this.texts.rangeLabel(this.pageIndex,this.pageSize,this.length),this.renderNavigationState()),e===`page-size-options`&&(this.parsePageSizeOptions(),this.unrenderPageSizeControls(),this.pageSizeEl||=this.querySelector(`.bro-paginator-page-size`),this.pageSizeDropdown?.length?this.renderPageSizeDropdown():(this.renderPageSizeValue(),this.setAttribute(`disabled`,`true`))),e===`disabled`&&this.setDisabledState(n===`true`))}hasPreviousPage(){return this.pageIndex>=1&&this.pageSize!=0}hasNextPage(){let e=this.getNumberOfPages()-1;return this.pageIndex<e&&this.pageSize!=0}getNumberOfPages(){return this.pageSize?Math.ceil(this.length/this.pageSize):0}parsePageSizeOptions(){if(this.getAttribute(`page-size-options`))try{this.pageSizeOptions=JSON.parse(this.getAttribute(`page-size-options`)).map(e=>+e),this.pageSizeDropdown=this.pageSizeOptions.map(e=>({value:e.toString(),title:e.toString()}))}catch(e){this.pageSizeOptions=[],this.config.debug&&console.log(e)}}templatePageSizeValue(){return`<div class="bro-paginator-page-size-value">${this.pageSize}</div>`}unrenderPageSizeControls(){let e=this.querySelector(this.dropdownSelector);e&&e.remove();let t=this.querySelector(`.bro-paginator-page-size-value`);t&&t.remove()}renderPageSizeDropdown(){let e=
|
|
97
|
-
<select name="${
|
|
98
|
-
<option value="" hidden>${
|
|
97
|
+
</div>`}static get observedAttributes(){return[`page-index`,`page-size`,`length`,`page-size-options`,`disabled`]}config;disabled;length;pageIndex;pageSize;pageSizeOptions;showFirstLastButtons;page;eventName=`page`;firstEl;previousEl;nextEl;lastEl;pageSizeEl;pageSizeValueEl;rangeLabelEl;dropdownSelector;texts;pageSizeDropdown;rendered=!1;events(){this.previousEl=this.querySelector(`.bro-paginator-navigation-previous`),this.nextEl=this.querySelector(`.bro-paginator-navigation-next`),this.previousEl.addEventListener(`click`,e=>{e.preventDefault(),this.hasPreviousPage()&&this.navigate(this.pageIndex-1)}),this.nextEl.addEventListener(`click`,e=>{e.preventDefault(),this.hasNextPage()&&this.navigate(this.pageIndex+1)}),this.showFirstLastButtons&&(this.firstEl=this.querySelector(`.bro-paginator-navigation-first`),this.lastEl=this.querySelector(`.bro-paginator-navigation-last`),this.firstEl.addEventListener(`click`,e=>{e.preventDefault(),this.hasPreviousPage()&&this.navigate(0)}),this.lastEl.addEventListener(`click`,e=>{e.preventDefault(),this.hasNextPage()&&this.navigate(this.getNumberOfPages()-1)}))}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.pageSizeDropdown?.length&&(this.pageSizeEl=this.querySelector(`.bro-paginator-page-size`),this.renderPageSizeDropdown()),this.events(),this.renderNavigationState()}connectedCallback(){(0,t.isPrerendered)(this)||this.rendered||(this.rendered=!0,this.render())}attributeChangedCallback(e,t,n){this.texts&&((e===`page-index`||e===`page-size`||e===`length`)&&(this.rangeLabelEl||=this.querySelector(`.bro-paginator-range-label`),this.pageSizeValueEl||=this.querySelector(`.bro-paginator-page-size-value`),e===`page-index`&&(this.pageIndex=+n),e===`page-size`&&(this.pageSize=+n,this.pageSizeOptions.length||(this.pageSizeValueEl.innerText=n)),e===`length`&&(this.length=+n),this.rangeLabelEl.textContent=this.texts.rangeLabel(this.pageIndex,this.pageSize,this.length),this.renderNavigationState()),e===`page-size-options`&&(this.parsePageSizeOptions(),this.unrenderPageSizeControls(),this.pageSizeEl||=this.querySelector(`.bro-paginator-page-size`),this.pageSizeDropdown?.length?this.renderPageSizeDropdown():(this.renderPageSizeValue(),this.setAttribute(`disabled`,`true`))),e===`disabled`&&this.setDisabledState(n===`true`))}hasPreviousPage(){return this.pageIndex>=1&&this.pageSize!=0}hasNextPage(){let e=this.getNumberOfPages()-1;return this.pageIndex<e&&this.pageSize!=0}getNumberOfPages(){return this.pageSize?Math.ceil(this.length/this.pageSize):0}parsePageSizeOptions(){if(this.getAttribute(`page-size-options`))try{this.pageSizeOptions=JSON.parse(this.getAttribute(`page-size-options`)).map(e=>+e),this.pageSizeDropdown=this.pageSizeOptions.map(e=>({value:e.toString(),title:e.toString()}))}catch(e){this.pageSizeOptions=[],this.config.debug&&console.log(e)}}templatePageSizeValue(){return`<div class="bro-paginator-page-size-value">${this.pageSize}</div>`}unrenderPageSizeControls(){let e=this.querySelector(this.dropdownSelector);e&&e.remove();let t=this.querySelector(`.bro-paginator-page-size-value`);t&&t.remove()}renderPageSizeDropdown(){let e=new t.BroDom(this.ownerDocument).createElement(this.dropdownSelector);e.config=this.config,e.setAttribute(`mode`,`select`),e.setAttribute(`button-title`,this.pageSize.toString()),e.setAttribute(`options`,JSON.stringify(this.pageSizeDropdown)),e.setAttribute(`label`,this.texts.itemsPerPage),e.setAttribute(`disabled`,this.disabled.toString()),this.eventsPageSize(e),this.pageSizeEl.append(e)}eventsPageSize(e){e.addEventListener(`value`,e=>{let t=e.detail;this.changePageSize(+t),this.setAttribute(`page-size`,t)})}renderPageSizeValue(){this.pageSizeEl.insertAdjacentHTML(`beforeend`,this.templatePageSizeValue())}setDisabledState(e){this.disabled=e;let t=this.querySelector(this.dropdownSelector);t&&t.setAttribute(`disabled`,e.toString()),this.renderNavigationState()}renderNavigationState(){let e=this.disabled||!this.hasPreviousPage(),t=this.disabled||!this.hasNextPage();[[this.firstEl,e],[this.previousEl,e],[this.nextEl,t],[this.lastEl,t]].forEach(([e,t])=>{t?(e?.parentElement?.classList.add(`disabled`),e?.setAttribute(`aria-disabled`,`true`)):(e?.parentElement?.classList.remove(`disabled`),e?.removeAttribute(`aria-disabled`))})}navigate(e){let t=this.pageIndex;e!==t&&(this.pageIndex=e,this.setAttribute(`page-index`,this.pageIndex.toString()),this.emitPageEvent(t))}changePageSize(e){let t=this.pageIndex*this.pageSize,n=this.pageIndex;this.pageIndex=Math.floor(t/e)||0,this.pageSize=e,this.emitPageEvent(n)}emitPageEvent(e){this.page={previousPageIndex:e,pageIndex:this.pageIndex,pageSize:this.pageSize,length:this.length},this.dispatchEvent(new CustomEvent(this.eventName,{bubbles:!0,composed:!0,detail:this.page}))}},"bro-sort-header":v,"bro-text-ellipsis":g,"bro-toolbar":l,"bro-toolbar-main":d};function x(){S(`bro-switch`,s)}function S(e,t,n=typeof customElements<`u`?customElements:void 0){n&&!n.get(e)&&n.define(e,t)}function C(e,t){let n=[];Object.entries(b).forEach(([e,r])=>{let i=t.get(e);i?i!==r&&n.push(e):t.define(e,r)}),n.length&&console.warn(`${e}: ${n.join(`, `)} are already defined by another vanilla skin bundle, so this skin uses its elements. Load one vanilla skin bundle per page.`)}var w=class extends a{tagHTML=`<mark></mark>`};let{escape:T}=t.BroHTML;var E=class extends t.BroHTMLElement{template(){this.buttonTitle=this.getAttribute(`button-title`)||``,this.name=this.getAttribute(`name`)||`action`,this.mode=this.getAttribute(`mode`)||`dropdown`;try{this.options=JSON.parse(this.getAttribute(`options`))}catch(e){this.options=[],this.config.debug&&console.log(e)}let e=this.getAttribute(`label`)||this.buttonTitle,t=e?` aria-label="${T(e)}"`:``;return this.mode===`select`||this.mode===`dropdown`?`
|
|
98
|
+
<select name="${T(this.name)}"${t}>
|
|
99
|
+
<option value="" hidden>${T(this.buttonTitle)}</option>
|
|
99
100
|
${this.templateDropdown(this.options)}
|
|
100
101
|
</select>`:`
|
|
101
102
|
<li class="bro-nav-item bro-dropdown">
|
|
102
|
-
<select name="${
|
|
103
|
-
<option value="" hidden>${
|
|
103
|
+
<select name="${T(this.name)}"${t}>
|
|
104
|
+
<option value="" hidden>${T(this.buttonTitle)}</option>
|
|
104
105
|
${this.templateDropdown(this.options)}
|
|
105
106
|
</select>
|
|
106
|
-
</li>`}static get observedAttributes(){return[`disabled`]}config;buttonTitle;name;mode;options;eventName=`value`;dropdownToggleEl;rendered=!1;events(){let e=this.querySelector(`select`),t=this.mode===`navbar-dropdown`,n=!1,r=null;this.dropdownToggleEl=e,this.renderDisabled();let i=n=>{r=null,t&&(e.selectedIndex=0),this.dispatchEvent(new CustomEvent(this.eventName,{bubbles:!0,composed:!0,detail:n}))};t&&(e.addEventListener(`pointerdown`,()=>{n=!1}),e.addEventListener(`keydown`,e=>{n=e.key!==`Enter`,e.key===`Enter`&&r!==null&&i(r)}),e.addEventListener(`blur`,()=>{r!==null&&(r=null,e.selectedIndex=0)})),e.addEventListener(`change`,()=>{t&&n?r=e.value:i(e.value)})}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.events()}connectedCallback(){this.rendered||(this.rendered=!0,this.render())}attributeChangedCallback(e){e===`disabled`&&this.dropdownToggleEl&&this.renderDisabled()}templateDropdown(e){return`
|
|
107
|
+
</li>`}static get observedAttributes(){return[`disabled`]}config;buttonTitle;name;mode;options;eventName=`value`;dropdownToggleEl;rendered=!1;events(){let e=this.querySelector(`select`),t=this.mode===`navbar-dropdown`,n=!1,r=null;this.dropdownToggleEl=e,this.renderDisabled();let i=n=>{r=null,t&&(e.selectedIndex=0),this.dispatchEvent(new CustomEvent(this.eventName,{bubbles:!0,composed:!0,detail:n}))};t&&(e.addEventListener(`pointerdown`,()=>{n=!1}),e.addEventListener(`keydown`,e=>{n=e.key!==`Enter`,e.key===`Enter`&&r!==null&&i(r)}),e.addEventListener(`blur`,()=>{r!==null&&(r=null,e.selectedIndex=0)})),e.addEventListener(`change`,()=>{t&&n?r=e.value:i(e.value)})}render(){this.insertAdjacentHTML(`afterbegin`,this.template()),this.events()}connectedCallback(){(0,t.isPrerendered)(this)||this.rendered||(this.rendered=!0,this.render())}attributeChangedCallback(e){e===`disabled`&&this.dropdownToggleEl&&this.renderDisabled()}templateDropdown(e){return`
|
|
107
108
|
${e.map(e=>{if(`value`in e&&`title`in e)return`
|
|
108
|
-
<option value="${
|
|
109
|
+
<option value="${T(e.value)}">${T(e.title)}</option>`;if(`divider`in e)return`
|
|
109
110
|
<hr>`;if(`header`in e)return`
|
|
110
|
-
<optgroup label="${
|
|
111
|
+
<optgroup label="${T(e.header)}"></optgroup>`}).join(``)}`}renderDisabled(){this.dropdownToggleEl.toggleAttribute(`disabled`,this.getAttribute(`disabled`)===`true`)}};let{escape:D}=t.BroHTML;var O=class extends t.BroHTMLElement{template(){this.color=this.getAttribute(`color`)||``,this.mode=this.getAttribute(`mode`)||`indeterminate`;let e=this.mode===`indeterminate`;return this.value=(e?100:this.getAttribute(`value`)||0).toString(),`
|
|
111
112
|
<progress ${e?``:`value="${this.value}"`}
|
|
112
|
-
max="${e?``:100}" aria-label="${
|
|
113
|
+
max="${e?``:100}" aria-label="${D(this.config.texts.loadingProgress)}"></progress>`}static get observedAttributes(){return[`value`]}config;color;mode;value;rendered=!1;valueEl;render(){this.insertAdjacentHTML(`afterbegin`,this.template())}connectedCallback(){(0,t.isPrerendered)(this)||this.rendered||(this.rendered=!0,this.render())}attributeChangedCallback(e,t,n){this.mode===`determinate`&&e===`value`&&(this.valueEl||=this.querySelector(`progress`),this.valueEl.value=+n)}};let k={css:{table:{thead:{tr:{className:`bro-header-row`,th:{className:`bro-header-cell`}}},tbody:{tr:{className:`bro-row`,td:{className:`bro-cell`}}}},shadow:{className:`shadow-lg`}},components:{button:{selector:`bro-button`,iconSelector:`.bro-button-toggle`,beforeRender:(e,t)=>{e.setAttribute(`mode`,`link`),e.setAttribute(`button-title`,t),e.setAttribute(`icon-html`,`<span class="bro-button-toggle"></span>`)}},dropdown:{selector:`bro-nv-dropdown`},filterDrawer:{beforeRender:e=>{e.iconHTML=`×`,e.setAttribute(`button-class`,`bro-nav-link`),e.setAttribute(`mode`,`link`)}},paginator:{selector:`bro-paginator`,css:{ul:{className:`bro-pagination`,li:{className:`bro-page-item`,a:{className:`bro-page-link`}}}}},progressBar:{selector:`bro-nv-progress-bar`},sortHeader:{selector:`bro-sort-header`,contentSelector:`.bro-sort-header-content`,beforeRender:(e=>{e.setAttribute(`icon-html`,`<span class="bro-button-icon">▼</span>`)}),afterRender:(e,t)=>{e.setAttribute(`title`,t)}},state:{states:{loading:[`🚀`,`Loading`],"no-data":[`💔`,`No data`],"not-found":[`🔦`,`No records found`],fail:[`😕`,`Failed`]}},switch:{selector:`bro-switch`,css:{div:{className:`bro-form-check bro-form-switch`,input:{className:`bro-form-check-input`}}}},textEllipsis:{selector:`bro-text-ellipsis`,afterRender:(e,t)=>{e.setAttribute(`title`,t)}},toolbar:{selector:`bro-toolbar`,css:{nav:{className:`bro-navbar bro-navbar-expand`}}},toolbarMain:{selector:`bro-toolbar-main`,css:{toolbarTitle:{className:`bro-navbar-brand`},navbarCollapse:{className:`bro-navbar-collapse`,ul:{li:{className:`bro-nav-item`,a:{className:`bro-nav-link`}}}}},beforeRender:(e,t)=>{e.setAttribute(`button-title`,t)}},toolbarSearch:{beforeRender:(e,t)=>{e.iconHTML=`←`,e.setAttribute(`button-class`,`bro-nav-link`),e.setAttribute(`mode`,`link`),t.iconHTML=`×`,t.setAttribute(`button-class`,`bro-nav-link`),t.setAttribute(`mode`,`link`)}}},elements:{"bro-nv-tags":`withTags`,"bro-switch":`withSwitch`},defineElements:e=>{C(`@table-bro/native`,e),S(`bro-nv-dropdown`,E,e),S(`bro-nv-progress-bar`,O,e)}};typeof customElements<`u`&&k.defineElements(customElements),(0,t.registerSkin)(`nv`,k);function A(e={}){i(e.texts??{}),S(`bro-nv-tags`,w)}e.BroNativeTagsComponent=w,e.BroSwitchComponent=s,e.nativeSkinConfig=k,e.setTagsTexts=i,e.withSwitch=x,e.withTags=A});
|
|
113
114
|
//# sourceMappingURL=table-bro.native.umd.js.map
|