@aquera/nile-elements 0.1.57 → 0.1.58

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.
Files changed (67) hide show
  1. package/README.md +3 -0
  2. package/demo/index.html +1 -1
  3. package/dist/index.cjs.js +1 -1
  4. package/dist/index.esm.js +1 -1
  5. package/dist/index.js +240 -90
  6. package/dist/internal/resizable-table-helper.cjs.js +2 -0
  7. package/dist/internal/resizable-table-helper.cjs.js.map +1 -0
  8. package/dist/internal/resizable-table-helper.esm.js +1 -0
  9. package/dist/internal/resizable-table-styles.cjs.js +2 -0
  10. package/dist/internal/resizable-table-styles.cjs.js.map +1 -0
  11. package/dist/internal/resizable-table-styles.esm.js +120 -0
  12. package/dist/nile-table-body/index.cjs.js +1 -1
  13. package/dist/nile-table-body/index.esm.js +1 -1
  14. package/dist/nile-table-body/nile-table-body.cjs.js +1 -1
  15. package/dist/nile-table-body/nile-table-body.cjs.js.map +1 -1
  16. package/dist/nile-table-body/nile-table-body.css.cjs.js +1 -1
  17. package/dist/nile-table-body/nile-table-body.css.cjs.js.map +1 -1
  18. package/dist/nile-table-body/nile-table-body.css.esm.js +4 -2
  19. package/dist/nile-table-body/nile-table-body.esm.js +3 -2
  20. package/dist/nile-table-cell-item/index.cjs.js +1 -1
  21. package/dist/nile-table-cell-item/index.esm.js +1 -1
  22. package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js +1 -1
  23. package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js.map +1 -1
  24. package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js +1 -1
  25. package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js.map +1 -1
  26. package/dist/nile-table-cell-item/nile-table-cell-item.css.esm.js +20 -3
  27. package/dist/nile-table-cell-item/nile-table-cell-item.esm.js +8 -3
  28. package/dist/nile-table-header-item/index.cjs.js +1 -1
  29. package/dist/nile-table-header-item/index.esm.js +1 -1
  30. package/dist/nile-table-header-item/nile-table-header-item.cjs.js +1 -1
  31. package/dist/nile-table-header-item/nile-table-header-item.cjs.js.map +1 -1
  32. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js +1 -1
  33. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js.map +1 -1
  34. package/dist/nile-table-header-item/nile-table-header-item.css.esm.js +7 -2
  35. package/dist/nile-table-header-item/nile-table-header-item.esm.js +9 -8
  36. package/dist/src/internal/resizable-table-helper.d.ts +59 -0
  37. package/dist/src/internal/resizable-table-helper.js +111 -0
  38. package/dist/src/internal/resizable-table-helper.js.map +1 -0
  39. package/dist/src/internal/resizable-table-styles.d.ts +16 -0
  40. package/dist/src/internal/resizable-table-styles.js +137 -0
  41. package/dist/src/internal/resizable-table-styles.js.map +1 -0
  42. package/dist/src/nile-table-body/nile-table-body.css.js +3 -0
  43. package/dist/src/nile-table-body/nile-table-body.css.js.map +1 -1
  44. package/dist/src/nile-table-body/nile-table-body.d.ts +2 -0
  45. package/dist/src/nile-table-body/nile-table-body.js +10 -0
  46. package/dist/src/nile-table-body/nile-table-body.js.map +1 -1
  47. package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js +19 -1
  48. package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js.map +1 -1
  49. package/dist/src/nile-table-cell-item/nile-table-cell-item.d.ts +3 -0
  50. package/dist/src/nile-table-cell-item/nile-table-cell-item.js +27 -8
  51. package/dist/src/nile-table-cell-item/nile-table-cell-item.js.map +1 -1
  52. package/dist/src/nile-table-header-item/nile-table-header-item.css.js +6 -0
  53. package/dist/src/nile-table-header-item/nile-table-header-item.css.js.map +1 -1
  54. package/dist/src/nile-table-header-item/nile-table-header-item.d.ts +3 -0
  55. package/dist/src/nile-table-header-item/nile-table-header-item.js +22 -15
  56. package/dist/src/nile-table-header-item/nile-table-header-item.js.map +1 -1
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/package.json +2 -2
  59. package/src/internal/resizable-table-helper.ts +151 -0
  60. package/src/internal/resizable-table-styles.ts +144 -0
  61. package/src/nile-table-body/nile-table-body.css.ts +3 -0
  62. package/src/nile-table-body/nile-table-body.ts +9 -0
  63. package/src/nile-table-cell-item/nile-table-cell-item.css.ts +19 -1
  64. package/src/nile-table-cell-item/nile-table-cell-item.ts +22 -5
  65. package/src/nile-table-header-item/nile-table-header-item.css.ts +6 -0
  66. package/src/nile-table-header-item/nile-table-header-item.ts +11 -5
  67. package/vscode-html-custom-data.json +15 -4
@@ -1 +1 @@
1
- {"version":3,"file":"nile-table-header-item.cjs.js","sources":["../../../src/nile-table-header-item/nile-table-header-item.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n CSSResultArray,\n TemplateResult,\n} from 'lit';\nimport { customElement, state, property } from 'lit/decorators.js';\nimport { styles } from './nile-table-header-item.css';\nimport NileElement from '../internal/nile-element';\nimport { HasSlotController } from '../internal/slot';\n\n/**\n * Nile icon component.\n *\n * @tag nile-table-header-item\n *\n */\n@customElement('nile-table-header-item')\nexport class NileTableHeaderItem extends NileElement {\n private readonly hasSlotController = new HasSlotController(this, '[default]');\n /**\n * The styles for TableHeaderItem\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n /** Enables the sort functionality. */\n @property({ type: Boolean, reflect: true }) havesort = false;\n\n /** Enables the sort functionality. */\n @property({ type: Boolean, reflect: true }) havefilter = false;\n\n /** Places the icon . */\n @property({ type: String, reflect: true, attribute: 'icon-name' }) iconName =\n '';\n\n @state() sorting_ct = 0;\n\n /* #endregion */\n\n /* #region Methods */\n\n /**\n * Render method\n * @slot This is a slot test\n */\n private handleSort(e: any) {\n this.sorting_ct++;\n let curr_sort_string = this.hasSlotController.host.innerHTML;\n const order = ['normal', 'asc', 'des'];\n this.emit('nile-click-sort', {\n value: { curr_sort_string, order: order[this.sorting_ct % 3] },\n });\n }\n\n private handleSearch(e: any) {\n this.emit('nile-search', { value: e.detail.value });\n }\n\n public render(): TemplateResult {\n return html` ${this.hasSlotController.test('[default]')\n ? html`\n <div class=\"header__item__wrapper\" part=\"nile__table-header-cell\">\n <div class=\"headers\">\n <slot> </slot>\n ${this.havesort && this.sorting_ct % 3 === 0\n ? html`<nile-icon\n name=\"sortdown\"\n size=\"16\"\n @click=${this.handleSort}\n class=\"hover__arrow\"\n ></nile-icon>`\n : null}\n ${this.havesort && this.sorting_ct % 3 === 1\n ? html`<nile-icon\n name=\"sortdown\"\n size=\"16\"\n @click=${this.handleSort}\n ></nile-icon>`\n : null}\n ${this.havesort && this.sorting_ct % 3 === 2\n ? html`<nile-icon\n name=\"sortup\"\n size=\"16\"\n @click=${this.handleSort}\n ></nile-icon>`\n : null}\n ${this.iconName\n ? html` <nile-icon name=\"${this.iconName}\" size=\"16\"></nile-icon>`\n : html``}\n ${this.havefilter\n ? html` <nile-popover title=\"Filter\" placement=\"bottom\">\n <nile-icon name=\"filter\" size=\"16\" slot=\"anchor\"></nile-icon>\n <nile-input\n placeholder=\"Search\"\n @nile-input=${this.handleSearch}\n part=\"filter__search\"\n ></nile-input>\n <slot name=\"filter__content\" part=\"filter__content\"></slot>\n </nile-popover>`\n : html``}\n </div>\n </div>`\n : null}`;\n }\n /* #endregion */\n}\n\nexport default NileTableHeaderItem;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-table-header-item': NileTableHeaderItem;\n }\n}\n"],"names":["NileTableHeaderItem","_r","a","constructor","this","hasSlotController","HasSlotController","havesort","havefilter","iconName","sorting_ct","_this","_inherits","_createClass","key","value","handleSort","e","curr_sort_string","host","innerHTML","emit","order","handleSearch","detail","render","html","_templateObject","_taggedTemplateLiteral","test","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","get","styles","NileElement","__decorate","property","type","Boolean","reflect","prototype","String","attribute","state","_export","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"nile-table-header-item.cjs.js","sources":["../../../src/nile-table-header-item/nile-table-header-item.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n CSSResultArray,\n TemplateResult,\n} from 'lit';\nimport { customElement, state, property } from 'lit/decorators.js';\nimport { styles } from './nile-table-header-item.css';\nimport NileElement from '../internal/nile-element';\nimport { HasSlotController } from '../internal/slot';\nimport { createResizeHandler } from '../internal/resizable-table-helper';\n\n/**\n * Nile icon component.\n *\n * @tag nile-table-header-item\n *\n */\n@customElement('nile-table-header-item')\nexport class NileTableHeaderItem extends NileElement {\n private readonly hasSlotController = new HasSlotController(this, '[default]');\n /**\n * The styles for TableHeaderItem\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n /** Enables the sort functionality. */\n @property({ type: Boolean, reflect: true }) havesort = false;\n\n /** Enables the sort functionality. */\n @property({ type: Boolean, reflect: true }) havefilter = false;\n\n /** Places the icon . */\n @property({ type: String, reflect: true, attribute: 'icon-name' }) iconName =\n '';\n\n /** Enables the resize functionality. */\n @property({ type: Boolean, reflect: true }) resizable = false;\n\n @state() sorting_ct = 0;\n\n /* #endregion */\n\n /* #region Methods */\n\n /**\n * Render method\n * @slot This is a slot test\n */\n private handleSort(e: any) {\n this.sorting_ct++;\n let curr_sort_string = this.hasSlotController.host.innerHTML;\n const order = ['normal', 'asc', 'des'];\n this.emit('nile-click-sort', {\n value: { curr_sort_string, order: order[this.sorting_ct % 3] },\n });\n }\n\n private handleSearch(e: any) {\n this.emit('nile-search', { value: e.detail.value });\n }\n\n private handleResizeStart = createResizeHandler(this, 50);\n\n public render(): TemplateResult {\n return html`\n <div class=\"header__item__wrapper\" part=\"nile__table-header-cell\">\n <div class=\"headers\">\n <slot> </slot>\n ${this.havesort && this.sorting_ct % 3 === 0\n ? html`<nile-icon\n name=\"sortdown\"\n size=\"16\"\n @click=${this.handleSort}\n class=\"hover__arrow\"\n ></nile-icon>`\n : null}\n ${this.havesort && this.sorting_ct % 3 === 1\n ? html`<nile-icon\n name=\"sortdown\"\n size=\"16\"\n @click=${this.handleSort}\n ></nile-icon>`\n : null}\n ${this.havesort && this.sorting_ct % 3 === 2\n ? html`<nile-icon\n name=\"sortup\"\n size=\"16\"\n @click=${this.handleSort}\n ></nile-icon>`\n : null}\n ${this.iconName\n ? html` <nile-icon name=\"${this.iconName}\" size=\"16\"></nile-icon>`\n : html``}\n ${this.havefilter\n ? html` <nile-popover title=\"Filter\" placement=\"bottom\">\n <nile-icon name=\"filter\" size=\"16\" slot=\"anchor\"></nile-icon>\n <nile-input\n placeholder=\"Search\"\n @nile-input=${this.handleSearch}\n part=\"filter__search\"\n ></nile-input>\n <slot name=\"filter__content\" part=\"filter__content\"></slot>\n </nile-popover>`\n : html``}\n </div>\n ${this.resizable \n ? html`<div class=\"resizer\" @mousedown=${this.handleResizeStart}></div>`\n : null}\n </div>`;\n }\n}\n\nexport default NileTableHeaderItem;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-table-header-item': NileTableHeaderItem;\n }\n}\n"],"names":["NileTableHeaderItem","_n","c","this","hasSlotController","HasSlotController","havesort","havefilter","iconName","resizable","sorting_ct","handleResizeStart","createResizeHandler","_this","_inherits","_createClass","key","value","handleSort","e","curr_sort_string","host","innerHTML","emit","order","handleSearch","detail","render","html","_templateObject","_taggedTemplateLiteral","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","get","styles","NileElement","__decorate","property","type","Boolean","reflect","prototype","String","attribute","state","_export","customElement"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- System.register(["lit"],function(_export,_context){"use strict";var i,_templateObject,e;function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}return{setters:[function(_lit){i=_lit.css;}],execute:function execute(){_export("s",e=i(_templateObject||(_templateObject=_taggedTemplateLiteral(["\n :host {\n --cell-min-width: auto;\n --cell-width: auto;\n display: table-cell;\n box-sizing: border-box;\n }\n \n .header__item__wrapper{\n min-width:var(--cell-min-width);\n width:var(--cell-width);\n display:flex;\n align-items:center;\n box-sizing: border-box;\n padding: var(--nile-spacing-spacing-lg) var(--nile-spacing-spacing-3xl);\n min-height: 44px;\n height: 44px;\n }\n\n .headers {\n overflow:hidden;\n display: flex;\n align-items: center;\n height: auto;\n width: 100%;\n gap: 8px;\n color: var(--nile-colors-gray-light-mode-600);\n font-family: var(--nile-font-family-serif);\n font-feature-settings: 'clig' off, 'liga' off;\n font-size: var(--nile-type-scale-2);\n font-weight: 500;\n font-style: normal;\n /* line-height: var(--nile-type-scale-5); */\n line-height: normal;\n }\n\n nile-icon {\n cursor: pointer;\n }\n\n .sorting__icons {\n display: flex;\n flex-direction: column;\n align-items: centre;\n }\n\n .sorting__icons nile-icon:hover {\n opacity: 0.4;\n }\n\n .hover__arrow {\n opacity: 0;\n }\n\n .headers:hover .hover__arrow {\n opacity: 0.3;\n }\n"]))));}};});
1
+ System.register(["lit","../internal/resizable-table-styles.cjs.js"],function(_export,_context){"use strict";var i,e,l,_templateObject,t;function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}return{setters:[function(_lit){i=_lit.css;},function(_internalResizableTableStylesCjsJs){e=_internalResizableTableStylesCjsJs.c;l=_internalResizableTableStylesCjsJs.h;}],execute:function execute(){_export("s",t=i(_templateObject||(_templateObject=_taggedTemplateLiteral(["\n :host {\n --cell-min-width: auto;\n --cell-width: auto;\n display: table-cell;\n box-sizing: border-box;\n }\n \n .header__item__wrapper{\n min-width:var(--cell-min-width);\n width:var(--cell-width);\n display:flex;\n align-items:center;\n box-sizing: border-box;\n padding: var(--nile-spacing-spacing-lg) var(--nile-spacing-spacing-3xl);\n min-height: 44px;\n height: 44px;\n }\n\n .headers {\n overflow:hidden;\n display: flex;\n align-items: center;\n height: auto;\n width: 100%;\n gap: 8px;\n color: var(--nile-colors-gray-light-mode-600);\n font-family: var(--nile-font-family-serif);\n font-feature-settings: 'clig' off, 'liga' off;\n font-size: var(--nile-type-scale-2);\n font-weight: 500;\n font-style: normal;\n /* line-height: var(--nile-type-scale-5); */\n line-height: normal;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n nile-icon {\n cursor: pointer;\n }\n\n .sorting__icons {\n display: flex;\n flex-direction: column;\n align-items: centre;\n }\n\n .sorting__icons nile-icon:hover {\n opacity: 0.4;\n }\n\n .hover__arrow {\n opacity: 0;\n }\n\n .headers:hover .hover__arrow {\n opacity: 0.3;\n }\n\n ","\n ","\n"])),e,l));}};});
2
2
  //# sourceMappingURL=nile-table-header-item.css.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nile-table-header-item.css.cjs.js","sources":["../../../src/nile-table-header-item/nile-table-header-item.css.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * TableHeaderItem CSS\n */\nexport const styles = css`\n :host {\n --cell-min-width: auto;\n --cell-width: auto;\n display: table-cell;\n box-sizing: border-box;\n }\n \n .header__item__wrapper{\n min-width:var(--cell-min-width);\n width:var(--cell-width);\n display:flex;\n align-items:center;\n box-sizing: border-box;\n padding: var(--nile-spacing-spacing-lg) var(--nile-spacing-spacing-3xl);\n min-height: 44px;\n height: 44px;\n }\n\n .headers {\n overflow:hidden;\n display: flex;\n align-items: center;\n height: auto;\n width: 100%;\n gap: 8px;\n color: var(--nile-colors-gray-light-mode-600);\n font-family: var(--nile-font-family-serif);\n font-feature-settings: 'clig' off, 'liga' off;\n font-size: var(--nile-type-scale-2);\n font-weight: 500;\n font-style: normal;\n /* line-height: var(--nile-type-scale-5); */\n line-height: normal;\n }\n\n nile-icon {\n cursor: pointer;\n }\n\n .sorting__icons {\n display: flex;\n flex-direction: column;\n align-items: centre;\n }\n\n .sorting__icons nile-icon:hover {\n opacity: 0.4;\n }\n\n .hover__arrow {\n opacity: 0;\n }\n\n .headers:hover .hover__arrow {\n opacity: 0.3;\n }\n`;\n\nexport default [styles];\n"],"names":["styles","css","_templateObject","_taggedTemplateLiteral"],"mappings":"oTAYaA,CAAAA,CAASC,CAAG,CAAAC,eAAA,GAAAA,eAAA,CAAAC,sBAAA"}
1
+ {"version":3,"file":"nile-table-header-item.css.cjs.js","sources":["../../../src/nile-table-header-item/nile-table-header-item.css.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\nimport { resizableHeaderStyles, headerResizerStyles } from '../internal/resizable-table-styles';\n\n/**\n * TableHeaderItem CSS\n */\nexport const styles = css`\n :host {\n --cell-min-width: auto;\n --cell-width: auto;\n display: table-cell;\n box-sizing: border-box;\n }\n \n .header__item__wrapper{\n min-width:var(--cell-min-width);\n width:var(--cell-width);\n display:flex;\n align-items:center;\n box-sizing: border-box;\n padding: var(--nile-spacing-spacing-lg) var(--nile-spacing-spacing-3xl);\n min-height: 44px;\n height: 44px;\n }\n\n .headers {\n overflow:hidden;\n display: flex;\n align-items: center;\n height: auto;\n width: 100%;\n gap: 8px;\n color: var(--nile-colors-gray-light-mode-600);\n font-family: var(--nile-font-family-serif);\n font-feature-settings: 'clig' off, 'liga' off;\n font-size: var(--nile-type-scale-2);\n font-weight: 500;\n font-style: normal;\n /* line-height: var(--nile-type-scale-5); */\n line-height: normal;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n nile-icon {\n cursor: pointer;\n }\n\n .sorting__icons {\n display: flex;\n flex-direction: column;\n align-items: centre;\n }\n\n .sorting__icons nile-icon:hover {\n opacity: 0.4;\n }\n\n .hover__arrow {\n opacity: 0;\n }\n\n .headers:hover .hover__arrow {\n opacity: 0.3;\n }\n\n ${resizableHeaderStyles}\n ${headerResizerStyles}\n`;\n\nexport default [styles];\n"],"names":["styles","css","_templateObject","_taggedTemplateLiteral","resizableHeaderStyles","headerResizerStyles"],"mappings":"ieAaaA,EAASC,CAAG,CAAAC,eAAA,GAAAA,eAAA,CAAAC,sBAAA,6vCA4DrBC,CAAAA,CACAC,CAAAA"}
@@ -1,4 +1,4 @@
1
- import{css as i}from"lit";const e=i`
1
+ import{css as e}from"lit";import{c as i,h as l}from"../internal/resizable-table-styles.esm.js";const t=e`
2
2
  :host {
3
3
  --cell-min-width: auto;
4
4
  --cell-width: auto;
@@ -32,6 +32,8 @@ import{css as i}from"lit";const e=i`
32
32
  font-style: normal;
33
33
  /* line-height: var(--nile-type-scale-5); */
34
34
  line-height: normal;
35
+ text-overflow: ellipsis;
36
+ white-space: nowrap;
35
37
  }
36
38
 
37
39
  nile-icon {
@@ -55,4 +57,7 @@ import{css as i}from"lit";const e=i`
55
57
  .headers:hover .hover__arrow {
56
58
  opacity: 0.3;
57
59
  }
58
- `;export{e as s};
60
+
61
+ ${i}
62
+ ${l}
63
+ `;export{t as s};
@@ -1,25 +1,25 @@
1
- import{__decorate as e}from"tslib";import{html as t}from"lit";import{property as i,state as l,customElement as s}from"lit/decorators.js";import{s as n}from"./nile-table-header-item.css.esm.js";import{N as r}from"../internal/nile-element.esm.js";import{H as o}from"../internal/slot.esm.js";let a=class extends r{constructor(){super(...arguments),this.hasSlotController=new o(this,"[default]"),this.havesort=!1,this.havefilter=!1,this.iconName="",this.sorting_ct=0}static get styles(){return[n]}handleSort(e){this.sorting_ct++;let t=this.hasSlotController.host.innerHTML;this.emit("nile-click-sort",{value:{curr_sort_string:t,order:["normal","asc","des"][this.sorting_ct%3]}})}handleSearch(e){this.emit("nile-search",{value:e.detail.value})}render(){return t` ${this.hasSlotController.test("[default]")?t`
1
+ import{__decorate as e}from"tslib";import{html as i}from"lit";import{property as t,state as s,customElement as l}from"lit/decorators.js";import{s as r}from"./nile-table-header-item.css.esm.js";import{N as n}from"../internal/nile-element.esm.js";import{H as o}from"../internal/slot.esm.js";import{c as a}from"../internal/resizable-table-helper.esm.js";import"../internal/resizable-table-styles.esm.js";let c=class extends n{constructor(){super(...arguments),this.hasSlotController=new o(this,"[default]"),this.havesort=!1,this.havefilter=!1,this.iconName="",this.resizable=!1,this.sorting_ct=0,this.handleResizeStart=a(this,50)}static get styles(){return[r]}handleSort(e){this.sorting_ct++;let i=this.hasSlotController.host.innerHTML;this.emit("nile-click-sort",{value:{curr_sort_string:i,order:["normal","asc","des"][this.sorting_ct%3]}})}handleSearch(e){this.emit("nile-search",{value:e.detail.value})}render(){return i`
2
2
  <div class="header__item__wrapper" part="nile__table-header-cell">
3
3
  <div class="headers">
4
4
  <slot> </slot>
5
- ${this.havesort&&this.sorting_ct%3==0?t`<nile-icon
5
+ ${this.havesort&&this.sorting_ct%3==0?i`<nile-icon
6
6
  name="sortdown"
7
7
  size="16"
8
8
  @click=${this.handleSort}
9
9
  class="hover__arrow"
10
10
  ></nile-icon>`:null}
11
- ${this.havesort&&this.sorting_ct%3==1?t`<nile-icon
11
+ ${this.havesort&&this.sorting_ct%3==1?i`<nile-icon
12
12
  name="sortdown"
13
13
  size="16"
14
14
  @click=${this.handleSort}
15
15
  ></nile-icon>`:null}
16
- ${this.havesort&&this.sorting_ct%3==2?t`<nile-icon
16
+ ${this.havesort&&this.sorting_ct%3==2?i`<nile-icon
17
17
  name="sortup"
18
18
  size="16"
19
19
  @click=${this.handleSort}
20
20
  ></nile-icon>`:null}
21
- ${this.iconName?t` <nile-icon name="${this.iconName}" size="16"></nile-icon>`:t``}
22
- ${this.havefilter?t` <nile-popover title="Filter" placement="bottom">
21
+ ${this.iconName?i` <nile-icon name="${this.iconName}" size="16"></nile-icon>`:i``}
22
+ ${this.havefilter?i` <nile-popover title="Filter" placement="bottom">
23
23
  <nile-icon name="filter" size="16" slot="anchor"></nile-icon>
24
24
  <nile-input
25
25
  placeholder="Search"
@@ -27,6 +27,7 @@ import{__decorate as e}from"tslib";import{html as t}from"lit";import{property as
27
27
  part="filter__search"
28
28
  ></nile-input>
29
29
  <slot name="filter__content" part="filter__content"></slot>
30
- </nile-popover>`:t``}
30
+ </nile-popover>`:i``}
31
31
  </div>
32
- </div>`:null}`}};e([i({type:Boolean,reflect:!0})],a.prototype,"havesort",void 0),e([i({type:Boolean,reflect:!0})],a.prototype,"havefilter",void 0),e([i({type:String,reflect:!0,attribute:"icon-name"})],a.prototype,"iconName",void 0),e([l()],a.prototype,"sorting_ct",void 0),a=e([s("nile-table-header-item")],a);export{a as N};
32
+ ${this.resizable?i`<div class="resizer" @mousedown=${this.handleResizeStart}></div>`:null}
33
+ </div>`}};e([t({type:Boolean,reflect:!0})],c.prototype,"havesort",void 0),e([t({type:Boolean,reflect:!0})],c.prototype,"havefilter",void 0),e([t({type:String,reflect:!0,attribute:"icon-name"})],c.prototype,"iconName",void 0),e([t({type:Boolean,reflect:!0})],c.prototype,"resizable",void 0),e([s()],c.prototype,"sorting_ct",void 0),c=e([l("nile-table-header-item")],c);export{c as N};
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Copyright Aquera Inc 2025
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * Resizable Helper Utility
9
+ * Provides common functionality for resizable table columns
10
+ */
11
+ export interface ResizeOptions {
12
+ minWidth?: number;
13
+ startX: number;
14
+ startWidth: number;
15
+ element: HTMLElement;
16
+ }
17
+ export interface ColumnResizeData {
18
+ columnIndex: number;
19
+ newWidth: number;
20
+ }
21
+ /**
22
+ * Handles the start of a resize operation
23
+ * @param e Mouse event
24
+ * @param options Resize configuration options
25
+ * @returns Cleanup function to remove event listeners
26
+ */
27
+ export declare function handleResizeStart(e: MouseEvent, options: ResizeOptions): () => void;
28
+ /**
29
+ * Gets the column index of an element within its table row
30
+ * @param element The table cell or header element
31
+ * @param selector The CSS selector for the column elements
32
+ * @returns Column index (0-based)
33
+ */
34
+ export declare function getColumnIndex(element: HTMLElement, selector: string): number;
35
+ /**
36
+ * Synchronizes the width of all cells in the same column
37
+ * @param sourceElement The element that was resized
38
+ * @param newWidth The new width to apply
39
+ */
40
+ export declare function synchronizeColumnWidth(sourceElement: HTMLElement, newWidth: number): void;
41
+ /**
42
+ * Checks if an element has the resizable attribute
43
+ * @param element The element to check
44
+ * @returns True if the element is resizable
45
+ */
46
+ export declare function isResizable(element: HTMLElement): boolean;
47
+ /**
48
+ * Creates a resize handler function for use in component event listeners
49
+ * @param element The element to make resizable
50
+ * @param minWidth Minimum width constraint
51
+ * @returns Event handler function
52
+ */
53
+ export declare function createResizeHandler(element: HTMLElement, minWidth?: number): (e: MouseEvent) => void;
54
+ /**
55
+ * Detects if any columns in a table are resizable
56
+ * @param tableBody The table body element
57
+ * @returns True if any columns have resizable attribute
58
+ */
59
+ export declare function hasResizableColumns(tableBody: HTMLElement): boolean;
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Copyright Aquera Inc 2025
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * Handles the start of a resize operation
9
+ * @param e Mouse event
10
+ * @param options Resize configuration options
11
+ * @returns Cleanup function to remove event listeners
12
+ */
13
+ export function handleResizeStart(e, options) {
14
+ e.preventDefault();
15
+ e.stopPropagation();
16
+ const { minWidth = 50, startX, startWidth, element } = options;
17
+ const resizer = e.target;
18
+ resizer.classList.add('resizing');
19
+ const onMouseMove = (e) => {
20
+ e.preventDefault();
21
+ e.stopPropagation();
22
+ const delta = e.pageX - startX;
23
+ const newWidth = Math.max(minWidth, startWidth + delta);
24
+ element.style.width = newWidth + 'px';
25
+ synchronizeColumnWidth(element, newWidth);
26
+ };
27
+ const onMouseUp = () => {
28
+ resizer.classList.remove('resizing');
29
+ document.removeEventListener('mousemove', onMouseMove);
30
+ document.removeEventListener('mouseup', onMouseUp);
31
+ };
32
+ document.addEventListener('mousemove', onMouseMove);
33
+ document.addEventListener('mouseup', onMouseUp);
34
+ return () => {
35
+ document.removeEventListener('mousemove', onMouseMove);
36
+ document.removeEventListener('mouseup', onMouseUp);
37
+ };
38
+ }
39
+ /**
40
+ * Gets the column index of an element within its table row
41
+ * @param element The table cell or header element
42
+ * @param selector The CSS selector for the column elements
43
+ * @returns Column index (0-based)
44
+ */
45
+ export function getColumnIndex(element, selector) {
46
+ const tableRow = element.closest('nile-table-row');
47
+ if (tableRow) {
48
+ const columns = tableRow.querySelectorAll(selector);
49
+ return Array.from(columns).indexOf(element);
50
+ }
51
+ return 0;
52
+ }
53
+ /**
54
+ * Synchronizes the width of all cells in the same column
55
+ * @param sourceElement The element that was resized
56
+ * @param newWidth The new width to apply
57
+ */
58
+ export function synchronizeColumnWidth(sourceElement, newWidth) {
59
+ const tableBody = sourceElement.closest('nile-table-body');
60
+ if (!tableBody)
61
+ return;
62
+ const isHeader = sourceElement.tagName.toLowerCase() === 'nile-table-header-item';
63
+ const selector = isHeader ? 'nile-table-header-item' : 'nile-table-cell-item';
64
+ const targetSelector = isHeader ? 'nile-table-cell-item' : 'nile-table-cell-item';
65
+ const columnIndex = getColumnIndex(sourceElement, selector);
66
+ const rows = tableBody.querySelectorAll('nile-table-row');
67
+ rows.forEach(row => {
68
+ const cells = row.querySelectorAll(targetSelector);
69
+ if (cells[columnIndex]) {
70
+ cells[columnIndex].style.width = newWidth + 'px';
71
+ }
72
+ });
73
+ }
74
+ /**
75
+ * Checks if an element has the resizable attribute
76
+ * @param element The element to check
77
+ * @returns True if the element is resizable
78
+ */
79
+ export function isResizable(element) {
80
+ return element.hasAttribute('resizable');
81
+ }
82
+ /**
83
+ * Creates a resize handler function for use in component event listeners
84
+ * @param element The element to make resizable
85
+ * @param minWidth Minimum width constraint
86
+ * @returns Event handler function
87
+ */
88
+ export function createResizeHandler(element, minWidth = 50) {
89
+ return (e) => {
90
+ const options = {
91
+ minWidth,
92
+ startX: e.pageX,
93
+ startWidth: element.offsetWidth,
94
+ element
95
+ };
96
+ handleResizeStart(e, options);
97
+ };
98
+ }
99
+ /**
100
+ * Detects if any columns in a table are resizable
101
+ * @param tableBody The table body element
102
+ * @returns True if any columns have resizable attribute
103
+ */
104
+ export function hasResizableColumns(tableBody) {
105
+ const headerItems = tableBody.querySelectorAll('nile-table-header-item');
106
+ const cellItems = tableBody.querySelectorAll('nile-table-cell-item');
107
+ const hasResizableHeaders = Array.from(headerItems).some(item => isResizable(item));
108
+ const hasResizableCells = Array.from(cellItems).some(item => isResizable(item));
109
+ return hasResizableHeaders || hasResizableCells;
110
+ }
111
+ //# sourceMappingURL=resizable-table-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable-table-helper.js","sourceRoot":"","sources":["../../../src/internal/resizable-table-helper.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Resizable Helper Utility\n * Provides common functionality for resizable table columns\n */\n\nexport interface ResizeOptions {\n minWidth?: number;\n startX: number;\n startWidth: number;\n element: HTMLElement;\n}\n\nexport interface ColumnResizeData {\n columnIndex: number;\n newWidth: number;\n}\n\n/**\n * Handles the start of a resize operation\n * @param e Mouse event\n * @param options Resize configuration options\n * @returns Cleanup function to remove event listeners\n */\nexport function handleResizeStart(e: MouseEvent, options: ResizeOptions): () => void {\n e.preventDefault();\n e.stopPropagation();\n \n const { minWidth = 50, startX, startWidth, element } = options;\n const resizer = e.target as HTMLElement;\n \n resizer.classList.add('resizing');\n\n const onMouseMove = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n \n const delta = e.pageX - startX;\n const newWidth = Math.max(minWidth, startWidth + delta);\n\n element.style.width = newWidth + 'px';\n\n synchronizeColumnWidth(element, newWidth);\n };\n\n const onMouseUp = () => {\n resizer.classList.remove('resizing');\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n}\n\n/**\n * Gets the column index of an element within its table row\n * @param element The table cell or header element\n * @param selector The CSS selector for the column elements\n * @returns Column index (0-based)\n */\nexport function getColumnIndex(element: HTMLElement, selector: string): number {\n const tableRow = element.closest('nile-table-row');\n if (tableRow) {\n const columns = tableRow.querySelectorAll(selector);\n return Array.from(columns).indexOf(element);\n }\n return 0;\n}\n\n/**\n * Synchronizes the width of all cells in the same column\n * @param sourceElement The element that was resized\n * @param newWidth The new width to apply\n */\nexport function synchronizeColumnWidth(sourceElement: HTMLElement, newWidth: number): void {\n const tableBody = sourceElement.closest('nile-table-body');\n if (!tableBody) return;\n\n const isHeader = sourceElement.tagName.toLowerCase() === 'nile-table-header-item';\n const selector = isHeader ? 'nile-table-header-item' : 'nile-table-cell-item';\n const targetSelector = isHeader ? 'nile-table-cell-item' : 'nile-table-cell-item';\n \n const columnIndex = getColumnIndex(sourceElement, selector);\n const rows = tableBody.querySelectorAll('nile-table-row');\n \n rows.forEach(row => {\n const cells = row.querySelectorAll(targetSelector);\n if (cells[columnIndex]) {\n cells[columnIndex].style.width = newWidth + 'px';\n }\n });\n}\n\n/**\n * Checks if an element has the resizable attribute\n * @param element The element to check\n * @returns True if the element is resizable\n */\nexport function isResizable(element: HTMLElement): boolean {\n return element.hasAttribute('resizable');\n}\n\n/**\n * Creates a resize handler function for use in component event listeners\n * @param element The element to make resizable\n * @param minWidth Minimum width constraint\n * @returns Event handler function\n */\nexport function createResizeHandler(element: HTMLElement, minWidth: number = 50): (e: MouseEvent) => void {\n return (e: MouseEvent) => {\n const options: ResizeOptions = {\n minWidth,\n startX: e.pageX,\n startWidth: element.offsetWidth,\n element\n };\n \n handleResizeStart(e, options);\n };\n}\n\n/**\n * Detects if any columns in a table are resizable\n * @param tableBody The table body element\n * @returns True if any columns have resizable attribute\n */\nexport function hasResizableColumns(tableBody: HTMLElement): boolean {\n const headerItems = tableBody.querySelectorAll('nile-table-header-item');\n const cellItems = tableBody.querySelectorAll('nile-table-cell-item');\n \n const hasResizableHeaders = Array.from(headerItems).some(item => \n isResizable(item)\n );\n const hasResizableCells = Array.from(cellItems).some(item => \n isResizable(item)\n );\n \n return hasResizableHeaders || hasResizableCells;\n} \n"]}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * Resizable Styles Utility
9
+ * Centralized styles for resizable table functionality
10
+ */
11
+ export declare const resizableHostStyles: import("lit").CSSResult;
12
+ export declare const resizableHeaderStyles: import("lit").CSSResult;
13
+ export declare const resizerStyles: import("lit").CSSResult;
14
+ export declare const headerResizerStyles: import("lit").CSSResult;
15
+ export declare const resizableSlotStyles: import("lit").CSSResult;
16
+ export declare const tableLayoutStyles: import("lit").CSSResult;
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { css } from 'lit';
8
+ /**
9
+ * Resizable Styles Utility
10
+ * Centralized styles for resizable table functionality
11
+ */
12
+ export const resizableHostStyles = css `
13
+ :host([resizable]) {
14
+ position: relative;
15
+ overflow: hidden;
16
+ table-layout: fixed;
17
+ }
18
+ `;
19
+ export const resizableHeaderStyles = css `
20
+ :host([resizable]) {
21
+ position: relative;
22
+ }
23
+
24
+ :host([resizable]) .header__item__wrapper {
25
+ border-right: 1px solid var(--nile-colors-neutral-400);
26
+ position: relative;
27
+ }
28
+ `;
29
+ export const resizerStyles = css `
30
+ .resizer {
31
+ position: absolute;
32
+ right: 0;
33
+ top: -1000px;
34
+ bottom: -1000px;
35
+ width: 8px;
36
+ cursor: col-resize;
37
+ user-select: none;
38
+ background-color: var(--nile-colors-neutral-100);
39
+ transition: background-color 0.2s;
40
+ z-index: 10;
41
+ opacity: 0;
42
+ transition: opacity 0.2s ease;
43
+ pointer-events: none;
44
+ }
45
+
46
+ :host([resizable]):hover .resizer {
47
+ opacity: 1;
48
+ pointer-events: auto;
49
+ }
50
+
51
+ .resizer::before {
52
+ content: '';
53
+ position: absolute;
54
+ right: 3px;
55
+ top: 0;
56
+ width: 2px;
57
+ height: 100%;
58
+ background-color: var(--nile-colors-neutral-500);
59
+ opacity: 0.8;
60
+ }
61
+
62
+ .resizer:hover {
63
+ background-color: var(--nile-colors-neutral-400);
64
+ }
65
+
66
+ .resizer:hover::before {
67
+ background-color: var(--nile-colors-neutral-700);
68
+ opacity: 1;
69
+ }
70
+
71
+ .resizer.resizing {
72
+ background-color: var(--nile-colors-neutral-400);
73
+ opacity: 1;
74
+ pointer-events: auto;
75
+ }
76
+
77
+ .resizer.resizing::before {
78
+ background-color: var(--nile-colors-neutral-700);
79
+ opacity: 1;
80
+ width: 3px;
81
+ }
82
+ `;
83
+ export const headerResizerStyles = css `
84
+ .resizer {
85
+ position: absolute;
86
+ right: -2px;
87
+ top: -1000px;
88
+ bottom: -1000px;
89
+ width: 8px;
90
+ cursor: ew-resize;
91
+ user-select: none;
92
+ transition: background-color 0.2s;
93
+ z-index: 10;
94
+ opacity: 0;
95
+ transition: opacity 0.2s ease;
96
+ }
97
+
98
+ :host([resizable]):hover .resizer {
99
+ opacity: 1;
100
+ }
101
+
102
+ .resizer::before {
103
+ content: '';
104
+ position: absolute;
105
+ height: 100%;
106
+ opacity: 0.8;
107
+ }
108
+
109
+ .resizer.resizing {
110
+ border-right: 4px double var(--nile-colors-neutral-400);
111
+ background-color: transparent;
112
+ opacity: 1;
113
+ }
114
+ `;
115
+ export const resizableSlotStyles = css `
116
+ :host([resizable]) ::slotted(*) {
117
+ overflow: hidden;
118
+ text-overflow: ellipsis;
119
+ white-space: nowrap;
120
+ display: block;
121
+ }
122
+
123
+ :host([resizable]) ::slotted(span),
124
+ :host([resizable]) ::slotted(div),
125
+ :host([resizable]) ::slotted(p) {
126
+ overflow: hidden;
127
+ text-overflow: ellipsis;
128
+ white-space: nowrap;
129
+ display: block;
130
+ }
131
+ `;
132
+ export const tableLayoutStyles = css `
133
+ .nile__table__body[resizable] {
134
+ table-layout: fixed;
135
+ }
136
+ `;
137
+ //# sourceMappingURL=resizable-table-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable-table-styles.js","sourceRoot":"","sources":["../../../src/internal/resizable-table-styles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;;GAGG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;CAMrC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;CASvC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqD/B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;CAgBrC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;;;;CAInC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * Resizable Styles Utility\n * Centralized styles for resizable table functionality\n */\n\nexport const resizableHostStyles = css`\n :host([resizable]) {\n position: relative;\n overflow: hidden;\n table-layout: fixed;\n }\n`;\n\nexport const resizableHeaderStyles = css`\n :host([resizable]) {\n position: relative;\n }\n\n :host([resizable]) .header__item__wrapper {\n border-right: 1px solid var(--nile-colors-neutral-400);\n position: relative;\n }\n`;\n\nexport const resizerStyles = css`\n .resizer {\n position: absolute;\n right: 0;\n top: -1000px;\n bottom: -1000px;\n width: 8px;\n cursor: col-resize;\n user-select: none;\n background-color: var(--nile-colors-neutral-100);\n transition: background-color 0.2s;\n z-index: 10;\n opacity: 0;\n transition: opacity 0.2s ease;\n pointer-events: none;\n }\n\n :host([resizable]):hover .resizer {\n opacity: 1;\n pointer-events: auto;\n }\n\n .resizer::before {\n content: '';\n position: absolute;\n right: 3px;\n top: 0;\n width: 2px;\n height: 100%;\n background-color: var(--nile-colors-neutral-500);\n opacity: 0.8;\n }\n\n .resizer:hover {\n background-color: var(--nile-colors-neutral-400);\n }\n\n .resizer:hover::before {\n background-color: var(--nile-colors-neutral-700);\n opacity: 1;\n }\n\n .resizer.resizing {\n background-color: var(--nile-colors-neutral-400);\n opacity: 1;\n pointer-events: auto;\n }\n\n .resizer.resizing::before {\n background-color: var(--nile-colors-neutral-700);\n opacity: 1;\n width: 3px;\n }\n`;\n\nexport const headerResizerStyles = css`\n .resizer {\n position: absolute;\n right: -2px;\n top: -1000px;\n bottom: -1000px;\n width: 8px;\n cursor: ew-resize;\n user-select: none;\n transition: background-color 0.2s;\n z-index: 10;\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n\n :host([resizable]):hover .resizer {\n opacity: 1;\n }\n\n .resizer::before {\n content: '';\n position: absolute;\n height: 100%;\n opacity: 0.8;\n }\n\n .resizer.resizing {\n border-right: 4px double var(--nile-colors-neutral-400);\n background-color: transparent;\n opacity: 1;\n }\n`;\n\nexport const resizableSlotStyles = css`\n :host([resizable]) ::slotted(*) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n }\n\n :host([resizable]) ::slotted(span),\n :host([resizable]) ::slotted(div),\n :host([resizable]) ::slotted(p) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n }\n`;\n\nexport const tableLayoutStyles = css`\n .nile__table__body[resizable] {\n table-layout: fixed;\n }\n`; \n"]}
@@ -5,6 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import { css } from 'lit';
8
+ import { tableLayoutStyles } from '../internal/resizable-table-styles';
8
9
  /**
9
10
  * TableBody CSS
10
11
  */
@@ -46,6 +47,8 @@ export const styles = css `
46
47
  slot::slotted(nile-table-row:last-child) {
47
48
  border-bottom: 0px;
48
49
  }
50
+
51
+ ${tableLayoutStyles}
49
52
  `;
50
53
  export default [styles];
51
54
  //# sourceMappingURL=nile-table-body.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nile-table-body.css.js","sourceRoot":"","sources":["../../../src/nile-table-body/nile-table-body.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * TableBody CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n --nile-table-background--odd: var(--nile-colors-base-white);\n --nile-table-background--even: var(--nile-colors-base-white);\n }\n\n .base {\n background-color: var(--nile-colors-white-base);\n border: 1px solid var(--nile-table-row-border-color);\n border-radius: var(--nile-radius-radius-xl);\n box-shadow: 0px 1px 3px 0px rgba(16, 24, 40, 0.1),0px 1px 2px 0px rgba(16, 24, 40, 0.06);\n overflow: hidden;\n }\n\n .table__header {\n display: flex;\n box-sizing: border-box;\n }\n\n .nile__table__body {\n display: table;\n border-collapse: collapse;\n width: 100%;\n }\n\n slot::slotted(nile-table-row:nth-child(odd)) {\n border-bottom: 1px solid var(--nile-colors-neutral-400);\n background: var(--nile-table-background--odd);\n }\n\n slot::slotted(nile-table-row:nth-child(even)) {\n background: var(--nile-table-background--even);\n }\n\n slot::slotted(nile-table-row:last-child) {\n border-bottom: 0px;\n }\n`;\n\nexport default [styles];\n"]}
1
+ {"version":3,"file":"nile-table-body.css.js","sourceRoot":"","sources":["../../../src/nile-table-body/nile-table-body.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuCrB,iBAAiB;CACpB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\nimport { tableLayoutStyles } from '../internal/resizable-table-styles';\n\n/**\n * TableBody CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n --nile-table-background--odd: var(--nile-colors-base-white);\n --nile-table-background--even: var(--nile-colors-base-white);\n }\n\n .base {\n background-color: var(--nile-colors-white-base);\n border: 1px solid var(--nile-table-row-border-color);\n border-radius: var(--nile-radius-radius-xl);\n box-shadow: 0px 1px 3px 0px rgba(16, 24, 40, 0.1),0px 1px 2px 0px rgba(16, 24, 40, 0.06);\n overflow: hidden;\n }\n\n .table__header {\n display: flex;\n box-sizing: border-box;\n }\n\n .nile__table__body {\n display: table;\n border-collapse: collapse;\n width: 100%;\n }\n\n slot::slotted(nile-table-row:nth-child(odd)) {\n border-bottom: 1px solid var(--nile-colors-neutral-400);\n background: var(--nile-table-background--odd);\n }\n\n slot::slotted(nile-table-row:nth-child(even)) {\n background: var(--nile-table-background--even);\n }\n\n slot::slotted(nile-table-row:last-child) {\n border-bottom: 0px;\n }\n\n ${tableLayoutStyles}\n`;\n\nexport default [styles];\n"]}
@@ -24,10 +24,12 @@ export declare class NileTableBody extends NileElement {
24
24
  private header_rows_data;
25
25
  private sort__index;
26
26
  private search__index;
27
+ private hasResizableColumns;
27
28
  static get styles(): CSSResultArray;
28
29
  protected firstUpdated(_changedProperties: PropertyValues): void;
29
30
  private getChildren;
30
31
  private getIndexValue;
32
+ private checkForResizableColumns;
31
33
  handleSlotchange(e: any): void;
32
34
  private handleSort;
33
35
  private handleSearch;
@@ -9,6 +9,7 @@ import { html, } from 'lit';
9
9
  import { customElement, query, state, queryAssignedNodes, property } from 'lit/decorators.js';
10
10
  import { styles } from './nile-table-body.css';
11
11
  import NileElement from '../internal/nile-element';
12
+ import { hasResizableColumns } from '../internal/resizable-table-helper';
12
13
  /**
13
14
  * nile-table-body component.
14
15
  *
@@ -25,6 +26,7 @@ let NileTableBody = class NileTableBody extends NileElement {
25
26
  this.type = 'primary';
26
27
  this.rows_data = [];
27
28
  this.header_rows_data = [];
29
+ this.hasResizableColumns = false;
28
30
  /* #endregion */
29
31
  }
30
32
  static get styles() {
@@ -41,6 +43,9 @@ let NileTableBody = class NileTableBody extends NileElement {
41
43
  getIndexValue(index__value) {
42
44
  return this.header_rows_data.indexOf(index__value);
43
45
  }
46
+ checkForResizableColumns() {
47
+ this.hasResizableColumns = hasResizableColumns(this);
48
+ }
44
49
  handleSlotchange(e) {
45
50
  let row_data = [];
46
51
  this._childNodes.forEach((child) => {
@@ -63,6 +68,7 @@ let NileTableBody = class NileTableBody extends NileElement {
63
68
  row_data = [];
64
69
  }
65
70
  });
71
+ this.checkForResizableColumns();
66
72
  }
67
73
  handleSort(e) {
68
74
  const { curr_sort_string, order } = e.detail.value;
@@ -87,6 +93,7 @@ let NileTableBody = class NileTableBody extends NileElement {
87
93
  @slotchange=${this.handleSlotchange}
88
94
  @nile-click-sort=${this.handleSort}
89
95
  class="nile__table__body"
96
+ ?resizable=${this.hasResizableColumns}
90
97
  @nile-search=${this.handleSearch}
91
98
  ></slot>
92
99
  </div>
@@ -114,6 +121,9 @@ __decorate([
114
121
  __decorate([
115
122
  state()
116
123
  ], NileTableBody.prototype, "search__index", void 0);
124
+ __decorate([
125
+ state()
126
+ ], NileTableBody.prototype, "hasResizableColumns", void 0);
117
127
  NileTableBody = __decorate([
118
128
  customElement('nile-table-body')
119
129
  ], NileTableBody);
@@ -1 +1 @@
1
- {"version":3,"file":"nile-table-body.js","sourceRoot":"","sources":["../../../src/nile-table-body/nile-table-body.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n CSSResultArray,\n TemplateResult,\n PropertyValues,\n} from 'lit';\nimport {\n customElement,\n query,\n state,\n queryAll,\n queryAssignedElements,\n queryAssignedNodes,\n property\n} from 'lit/decorators.js';\nimport { styles } from './nile-table-body.css';\nimport NileElement from '../internal/nile-element';\nimport { getInnerHTML } from '../slot';\n\n/**\n * nile-table-body component.\n *\n * @tag nile-table-body\n *\n */\n@customElement('nile-table-body')\nexport class NileTableBody extends NileElement {\n /**\n * The styles for TableBody\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n\n @query('slot') defaultSlot: HTMLSlotElement;\n @queryAssignedNodes({ flatten: true }) _childNodes!: Array<HTMLElement>;\n @property() type: 'primary' | 'secondary' = 'primary';\n\n @state() private rows_data: any[] = [];\n @state() private header_rows_data: any[] = [];\n @state() private sort__index: number;\n @state() private search__index: number;\n\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n this.emit('nile-body-load', { value: this.type, comp:this },true,false)\n }\n\n /* #endregion */\n\n /* #region Methods */\n\n private getChildren(child: any, tagname: string) {\n return child.querySelectorAll(tagname);\n }\n\n private getIndexValue(index__value: string): number {\n return this.header_rows_data.indexOf(index__value);\n }\n\n handleSlotchange(e: any) {\n let row_data: any = [];\n this._childNodes.forEach((child: any) => {\n if (child.tagName && child?.tagName?.toLowerCase() === 'nile-table-row') {\n let nilerows = this.getChildren(child, 'nile-table-cell-item');\n if (nilerows.length > 0) {\n nilerows.forEach((element: { innerHTML: any }) => {\n row_data.push(element.innerHTML);\n });\n this.rows_data.push(row_data);\n } else {\n let nileheaders = this.getChildren(child, 'nile-table-header-item');\n if (nileheaders.length > 0) {\n nileheaders.forEach((header: HTMLSlotElement, index: number) => {\n this.header_rows_data.push(header.innerHTML);\n });\n }\n }\n row_data = [];\n }\n });\n }\n\n private handleSort(e: any) {\n const { curr_sort_string, order } = e.detail.value;\n const header_index = this.getIndexValue(curr_sort_string);\n this.emit('nile-sort', {\n value: { header_index, curr_sort_string, order },\n });\n }\n\n private handleSearch(e: any) {\n const searchText = e.detail.value;\n this.search__index = this.getIndexValue(e.target.textContent);\n this.emit('nile-table-search', {\n index: this.search__index,\n value: searchText,\n });\n }\n\n public render(): TemplateResult {\n return html`\n <div class=\"base\" part=\"base\">\n <slot name=\"table__header\" class=\"table__header\"></slot>\n <slot\n @slotchange=${this.handleSlotchange}\n @nile-click-sort=${this.handleSort}\n class=\"nile__table__body\"\n @nile-search=${this.handleSearch}\n ></slot>\n </div>\n `;\n }\n\n /* #endregion */\n}\n\nexport default NileTableBody;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-table-body': NileTableBody;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-table-body.js","sourceRoot":"","sources":["../../../src/nile-table-body/nile-table-body.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n CSSResultArray,\n TemplateResult,\n PropertyValues,\n} from 'lit';\nimport {\n customElement,\n query,\n state,\n queryAll,\n queryAssignedElements,\n queryAssignedNodes,\n property\n} from 'lit/decorators.js';\nimport { styles } from './nile-table-body.css';\nimport NileElement from '../internal/nile-element';\nimport { getInnerHTML } from '../slot';\nimport { hasResizableColumns } from '../internal/resizable-table-helper';\n\n/**\n * nile-table-body component.\n *\n * @tag nile-table-body\n *\n */\n@customElement('nile-table-body')\nexport class NileTableBody extends NileElement {\n /**\n * The styles for TableBody\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n\n @query('slot') defaultSlot: HTMLSlotElement;\n @queryAssignedNodes({ flatten: true }) _childNodes!: Array<HTMLElement>;\n @property() type: 'primary' | 'secondary' = 'primary';\n\n @state() private rows_data: any[] = [];\n @state() private header_rows_data: any[] = [];\n @state() private sort__index: number;\n @state() private search__index: number;\n @state() private hasResizableColumns = false;\n\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n this.emit('nile-body-load', { value: this.type, comp:this },true,false)\n }\n\n /* #endregion */\n\n /* #region Methods */\n\n private getChildren(child: any, tagname: string) {\n return child.querySelectorAll(tagname);\n }\n\n private getIndexValue(index__value: string): number {\n return this.header_rows_data.indexOf(index__value);\n }\n\n private checkForResizableColumns() {\n this.hasResizableColumns = hasResizableColumns(this);\n }\n\n handleSlotchange(e: any) {\n let row_data: any = [];\n this._childNodes.forEach((child: any) => {\n if (child.tagName && child?.tagName?.toLowerCase() === 'nile-table-row') {\n let nilerows = this.getChildren(child, 'nile-table-cell-item');\n if (nilerows.length > 0) {\n nilerows.forEach((element: { innerHTML: any }) => {\n row_data.push(element.innerHTML);\n });\n this.rows_data.push(row_data);\n } else {\n let nileheaders = this.getChildren(child, 'nile-table-header-item');\n if (nileheaders.length > 0) {\n nileheaders.forEach((header: HTMLSlotElement, index: number) => {\n this.header_rows_data.push(header.innerHTML);\n });\n }\n }\n row_data = [];\n }\n });\n \n this.checkForResizableColumns();\n }\n\n private handleSort(e: any) {\n const { curr_sort_string, order } = e.detail.value;\n const header_index = this.getIndexValue(curr_sort_string);\n this.emit('nile-sort', {\n value: { header_index, curr_sort_string, order },\n });\n }\n\n private handleSearch(e: any) {\n const searchText = e.detail.value;\n this.search__index = this.getIndexValue(e.target.textContent);\n this.emit('nile-table-search', {\n index: this.search__index,\n value: searchText,\n });\n }\n\n public render(): TemplateResult {\n return html`\n <div class=\"base\" part=\"base\">\n <slot name=\"table__header\" class=\"table__header\"></slot>\n <slot\n @slotchange=${this.handleSlotchange}\n @nile-click-sort=${this.handleSort}\n class=\"nile__table__body\"\n ?resizable=${this.hasResizableColumns}\n @nile-search=${this.handleSearch}\n ></slot>\n </div>\n `;\n }\n\n /* #endregion */\n}\n\nexport default NileTableBody;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-table-body': NileTableBody;\n }\n}\n"]}