@aquera/nile-elements 0.1.67-beta-2.8 → 0.1.68

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 (83) hide show
  1. package/README.md +12 -0
  2. package/demo/index.html +0 -18
  3. package/dist/index.cjs.js +1 -1
  4. package/dist/index.esm.js +1 -1
  5. package/dist/index.js +69 -11
  6. package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
  7. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  8. package/dist/nile-code-editor/nile-code-editor.esm.js +2 -2
  9. package/dist/nile-code-editor/theme.cjs.js +1 -1
  10. package/dist/nile-code-editor/theme.cjs.js.map +1 -1
  11. package/dist/nile-code-editor/theme.esm.js +1 -1
  12. package/dist/nile-option/nile-option.cjs.js +1 -1
  13. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  14. package/dist/nile-option/nile-option.esm.js +2 -2
  15. package/dist/nile-option-group/index.cjs.js +2 -0
  16. package/dist/nile-option-group/index.cjs.js.map +1 -0
  17. package/dist/nile-option-group/index.esm.js +1 -0
  18. package/dist/nile-option-group/nile-option-group.cjs.js +2 -0
  19. package/dist/nile-option-group/nile-option-group.cjs.js.map +1 -0
  20. package/dist/nile-option-group/nile-option-group.css.cjs.js +2 -0
  21. package/dist/nile-option-group/nile-option-group.css.cjs.js.map +1 -0
  22. package/dist/nile-option-group/nile-option-group.css.esm.js +46 -0
  23. package/dist/nile-option-group/nile-option-group.esm.js +14 -0
  24. package/dist/nile-option-group/nile-option-group.interface.cjs.js +2 -0
  25. package/dist/nile-option-group/nile-option-group.interface.cjs.js.map +1 -0
  26. package/dist/nile-option-group/nile-option-group.interface.esm.js +1 -0
  27. package/dist/nile-select/nile-select.cjs.js +1 -1
  28. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  29. package/dist/nile-select/nile-select.esm.js +9 -9
  30. package/dist/nile-select/nile-select.interface.cjs.js +2 -0
  31. package/dist/nile-select/nile-select.interface.cjs.js.map +1 -0
  32. package/dist/nile-select/nile-select.interface.esm.js +1 -0
  33. package/dist/src/index.d.ts +1 -0
  34. package/dist/src/index.js +1 -0
  35. package/dist/src/index.js.map +1 -1
  36. package/dist/src/nile-code-editor/nile-code-editor.d.ts +1 -0
  37. package/dist/src/nile-code-editor/nile-code-editor.js +13 -5
  38. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  39. package/dist/src/nile-code-editor/theme.d.ts +9 -0
  40. package/dist/src/nile-code-editor/theme.js +9 -0
  41. package/dist/src/nile-code-editor/theme.js.map +1 -1
  42. package/dist/src/nile-option/nile-option.d.ts +1 -0
  43. package/dist/src/nile-option/nile-option.js +5 -0
  44. package/dist/src/nile-option/nile-option.js.map +1 -1
  45. package/dist/src/nile-option-group/index.d.ts +1 -0
  46. package/dist/src/nile-option-group/index.js +2 -0
  47. package/dist/src/nile-option-group/index.js.map +1 -0
  48. package/dist/src/{nile-table-row-content/nile-table-row-content.css.d.ts → nile-option-group/nile-option-group.css.d.ts} +2 -2
  49. package/dist/src/nile-option-group/nile-option-group.css.js +58 -0
  50. package/dist/src/nile-option-group/nile-option-group.css.js.map +1 -0
  51. package/dist/src/nile-option-group/nile-option-group.d.ts +23 -0
  52. package/dist/src/nile-option-group/nile-option-group.interface.d.ts +22 -0
  53. package/dist/src/nile-option-group/nile-option-group.interface.js +2 -0
  54. package/dist/src/nile-option-group/nile-option-group.interface.js.map +1 -0
  55. package/dist/src/nile-option-group/nile-option-group.js +76 -0
  56. package/dist/src/nile-option-group/nile-option-group.js.map +1 -0
  57. package/dist/src/nile-select/nile-select.d.ts +6 -0
  58. package/dist/src/nile-select/nile-select.interface.d.ts +5 -0
  59. package/dist/src/nile-select/nile-select.interface.js +2 -0
  60. package/dist/src/nile-select/nile-select.interface.js.map +1 -0
  61. package/dist/src/nile-select/nile-select.js +59 -1
  62. package/dist/src/nile-select/nile-select.js.map +1 -1
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +4 -3
  65. package/src/index.ts +2 -1
  66. package/src/nile-code-editor/nile-code-editor.ts +13 -9
  67. package/src/nile-code-editor/theme.ts +11 -1
  68. package/src/nile-option/nile-option.ts +3 -0
  69. package/src/nile-option-group/index.ts +1 -0
  70. package/src/nile-option-group/nile-option-group.css.ts +60 -0
  71. package/src/nile-option-group/nile-option-group.interface.ts +25 -0
  72. package/src/nile-option-group/nile-option-group.ts +84 -0
  73. package/src/nile-select/nile-select.interface.ts +5 -0
  74. package/src/nile-select/nile-select.ts +74 -2
  75. package/vscode-html-custom-data.json +32 -3
  76. package/dist/src/nile-table-row-content/index.d.ts +0 -1
  77. package/dist/src/nile-table-row-content/index.js +0 -2
  78. package/dist/src/nile-table-row-content/index.js.map +0 -1
  79. package/dist/src/nile-table-row-content/nile-table-row-content.css.js +0 -30
  80. package/dist/src/nile-table-row-content/nile-table-row-content.css.js.map +0 -1
  81. package/dist/src/nile-table-row-content/nile-table-row-content.d.ts +0 -32
  82. package/dist/src/nile-table-row-content/nile-table-row-content.js +0 -46
  83. package/dist/src/nile-table-row-content/nile-table-row-content.js.map +0 -1
@@ -0,0 +1,76 @@
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
+ import { __decorate } from "tslib";
8
+ import { html } from 'lit';
9
+ import { customElement, property } from 'lit/decorators.js';
10
+ import { styles } from './nile-option-group.css';
11
+ import NileElement from '../internal/nile-element';
12
+ let NileOptionGroup = class NileOptionGroup extends NileElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.name = "";
16
+ this.data = null;
17
+ }
18
+ static get styles() {
19
+ return [styles];
20
+ }
21
+ checkForImageOrIcon() {
22
+ return this.data?.prefix?.icon?.name || this.data?.prefix?.image?.src || this.data?.prefix?.prefixText;
23
+ }
24
+ normalizeImageDimension(value) {
25
+ if (value === undefined || value === null || value === "") {
26
+ return "20";
27
+ }
28
+ const dimension = Number(value);
29
+ if (isNaN(dimension) || dimension <= 0) {
30
+ return "20";
31
+ }
32
+ return dimension > 40 ? "25" : dimension.toString();
33
+ }
34
+ render() {
35
+ return html `
36
+ <div part="option-group-header" class="option-group-header">
37
+ <div part="content-container" class="content-container ${this.checkForImageOrIcon() ? 'gap-18px' : ''}">
38
+ <!-- prefix content -->
39
+ ${this.data?.prefix?.icon?.name
40
+ ? html `<nile-icon part="prefix-icon" name="${this.data?.prefix?.icon?.name}" size="${this.data?.prefix?.icon?.size || "16"}" color="${this.data?.prefix?.icon?.color || "var(--nile-colors-dark-500)"}" method="${this.data?.prefix?.icon?.method || "fill"}"></nile-icon>`
41
+ : this.data?.prefix?.prefixText
42
+ ? html `<span part="prefix-text">${this.data?.prefix?.prefixText}</span>`
43
+ : this.data?.prefix?.image?.src
44
+ ? html `<img part="prefix-image" src="${this.data?.prefix?.image?.src}" width="${this.normalizeImageDimension(this.data?.prefix?.image?.width)}" height="${this.normalizeImageDimension(this.data?.prefix?.image?.height)}">`
45
+ : html `<slot part="prefix" name="prefix" class="option-group-prefix"></slot>`}
46
+
47
+ <!-- main content -->
48
+ ${this.data?.textContent
49
+ ? html `<span part="content-text">${this.data?.textContent}</span>`
50
+ : html `<slot part="content"></slot>`}
51
+ </div>
52
+
53
+ <!-- suffix content -->
54
+ ${this.data?.suffix?.icon?.name
55
+ ? html `<nile-icon part="suffix-icon" name="${this.data?.suffix?.icon?.name}" size="${this.data?.suffix?.icon?.size || "16"}" color="${this.data?.suffix?.icon?.color || "var(--nile-colors-dark-500)"}" method="${this.data?.suffix?.icon?.method || "fill"}"></nile-icon>`
56
+ : this.data?.suffix?.suffixText
57
+ ? html `<span part="suffix-text">${this.data?.suffix?.suffixText}</span>`
58
+ : this.data?.suffix?.image?.src
59
+ ? html `<img part="suffix-image" src="${this.data?.prefix?.image?.src}" width="${this.normalizeImageDimension(this.data?.suffix?.image?.width)}" height="${this.normalizeImageDimension(this.data?.suffix?.image?.height)}">`
60
+ : html `<slot part="suffix" name="suffix" class="option-group-suffix"></slot>`}
61
+ </div>
62
+ `;
63
+ }
64
+ };
65
+ __decorate([
66
+ property({ type: String, reflect: true, attribute: true })
67
+ ], NileOptionGroup.prototype, "name", void 0);
68
+ __decorate([
69
+ property({ type: Object, attribute: true })
70
+ ], NileOptionGroup.prototype, "data", void 0);
71
+ NileOptionGroup = __decorate([
72
+ customElement('nile-option-group')
73
+ ], NileOptionGroup);
74
+ export { NileOptionGroup };
75
+ export default NileOptionGroup;
76
+ //# sourceMappingURL=nile-option-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-option-group.js","sourceRoot":"","sources":["../../../src/nile-option-group/nile-option-group.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\nimport {LitElement, html, CSSResultArray, TemplateResult} from 'lit';\nimport { customElement, property} from 'lit/decorators.js';\nimport {styles} from './nile-option-group.css';\nimport NileElement from '../internal/nile-element';\nimport { OptionGroupData } from './nile-option-group.interface';\n\n@customElement('nile-option-group')\nexport class NileOptionGroup extends NileElement {\n\n\tpublic static get styles(): CSSResultArray {\n\t\treturn [styles];\n\t}\n\n\t@property({type: String, reflect: true, attribute: true}) name: string = \"\";\n\t@property({type: Object, attribute: true}) data: OptionGroupData | null = null;\n\n\tprivate checkForImageOrIcon() {\n\t\treturn this.data?.prefix?.icon?.name || this.data?.prefix?.image?.src || this.data?.prefix?.prefixText;\n\t}\n\n\tprivate normalizeImageDimension(value?: string | number): string {\n\t\tif (value === undefined || value === null || value === \"\") {\n\t\t\treturn \"20\";\n\t\t}\n\t\t\n\t\tconst dimension = Number(value);\n\t\tif (isNaN(dimension) || dimension <= 0) {\n\t\t\treturn \"20\";\n\t\t}\t\n\t\treturn dimension > 40 ? \"25\" : dimension.toString();\n\t}\t\n\n\tpublic render(): TemplateResult {\n\t\treturn html`\n\t\t\t<div part=\"option-group-header\" class=\"option-group-header\">\n\t\t\t\t<div part=\"content-container\" class=\"content-container ${this.checkForImageOrIcon() ? 'gap-18px' : ''}\">\n\t\t\t\t\t<!-- prefix content -->\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.data?.prefix?.icon?.name\n\t\t\t\t\t\t? html`<nile-icon part=\"prefix-icon\" name=\"${this.data?.prefix?.icon?.name}\" size=\"${this.data?.prefix?.icon?.size || \"16\"}\" color=\"${this.data?.prefix?.icon?.color || \"var(--nile-colors-dark-500)\"}\" method=\"${this.data?.prefix?.icon?.method || \"fill\"}\"></nile-icon>`\n\t\t\t\t\t\t: this.data?.prefix?.prefixText\n\t\t\t\t\t\t\t? html`<span part=\"prefix-text\">${this.data?.prefix?.prefixText}</span>`\n\t\t\t\t\t\t\t: this.data?.prefix?.image?.src\n\t\t\t\t\t\t\t\t? html`<img part=\"prefix-image\" src=\"${this.data?.prefix?.image?.src}\" width=\"${this.normalizeImageDimension(this.data?.prefix?.image?.width)}\" height=\"${this.normalizeImageDimension(this.data?.prefix?.image?.height)}\">`\n\t\t\t\t\t\t\t\t: html`<slot part=\"prefix\" name=\"prefix\" class=\"option-group-prefix\"></slot>`\n\t\t\t\t\t}\n\n\t\t\t\t\t<!-- main content -->\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.data?.textContent\n\t\t\t\t\t\t? html`<span part=\"content-text\">${this.data?.textContent}</span>`\n\t\t\t\t\t\t: html`<slot part=\"content\"></slot>`\n\t\t\t\t\t}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- suffix content -->\n\t\t\t\t${\n\t\t\t\t\tthis.data?.suffix?.icon?.name\n\t\t\t\t\t? html`<nile-icon part=\"suffix-icon\" name=\"${this.data?.suffix?.icon?.name}\" size=\"${this.data?.suffix?.icon?.size || \"16\"}\" color=\"${this.data?.suffix?.icon?.color || \"var(--nile-colors-dark-500)\"}\" method=\"${this.data?.suffix?.icon?.method || \"fill\"}\"></nile-icon>`\n\t\t\t\t\t: this.data?.suffix?.suffixText\n\t\t\t\t\t\t? html`<span part=\"suffix-text\">${this.data?.suffix?.suffixText}</span>`\n\t\t\t\t\t\t: this.data?.suffix?.image?.src\n\t\t\t\t\t\t\t? html`<img part=\"suffix-image\" src=\"${this.data?.prefix?.image?.src}\" width=\"${this.normalizeImageDimension(this.data?.suffix?.image?.width)}\" height=\"${this.normalizeImageDimension(this.data?.suffix?.image?.height)}\">`\n\t\t\t\t\t\t\t: html`<slot part=\"suffix\" name=\"suffix\" class=\"option-group-suffix\"></slot>`\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t`;\n\t}\n}\n\nexport default NileOptionGroup;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-option-group': NileOptionGroup;\n }\n}"]}
@@ -159,6 +159,8 @@ export declare class NileSelect extends NileElement implements NileFormControl {
159
159
  renderItemConfig?: RenderItemConfig;
160
160
  data: any;
161
161
  enableVirtualScroll: boolean;
162
+ /** To enable the group header in the select */
163
+ enableGroupHeader: boolean;
162
164
  /** Gets the validity state object */
163
165
  get validity(): ValidityState;
164
166
  /** Gets the validation message */
@@ -214,6 +216,10 @@ export declare class NileSelect extends NileElement implements NileFormControl {
214
216
  handleDisabledChange(): void;
215
217
  handleValueChange(): void;
216
218
  handleOpenChange(): Promise<void>;
219
+ private getAllGroupAttributes;
220
+ getUniqueGroupNames(arr: NileOption[]): string[];
221
+ handleGroupSearchChange(): void;
222
+ handleGroupShowSelected(): void;
217
223
  /** Shows the listbox. */
218
224
  show(): Promise<void>;
219
225
  /** Hides the listbox. */
@@ -0,0 +1,5 @@
1
+ export interface GroupAttributes {
2
+ name: string;
3
+ data: any;
4
+ element: HTMLElement;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=nile-select.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-select.interface.js","sourceRoot":"","sources":["../../../src/nile-select/nile-select.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface GroupAttributes {\n name: string;\n data: any;\n element: HTMLElement;\n}"]}
@@ -169,6 +169,8 @@ let NileSelect = class NileSelect extends NileElement {
169
169
  this.noResultsMessage = 'No results found';
170
170
  this.data = [];
171
171
  this.enableVirtualScroll = false;
172
+ /** To enable the group header in the select */
173
+ this.enableGroupHeader = false;
172
174
  this.options = [];
173
175
  }
174
176
  connectedCallback() {
@@ -196,6 +198,9 @@ let NileSelect = class NileSelect extends NileElement {
196
198
  }
197
199
  }
198
200
  firstUpdated(_changedProperties) {
201
+ if (this.enableGroupHeader) {
202
+ this.handleGroupSearchChange();
203
+ }
199
204
  if (_changedProperties.has('multiple')) {
200
205
  this.setCheckBoxInOption(this.multiple);
201
206
  }
@@ -262,6 +267,9 @@ let NileSelect = class NileSelect extends NileElement {
262
267
  el.hidden = this.showSelected;
263
268
  }
264
269
  });
270
+ if (this.enableGroupHeader) {
271
+ this.handleGroupShowSelected();
272
+ }
265
273
  // this.requestUpdate();
266
274
  }
267
275
  /**
@@ -274,6 +282,9 @@ let NileSelect = class NileSelect extends NileElement {
274
282
  el.selected = false;
275
283
  el.hidden = false;
276
284
  });
285
+ if (this.enableGroupHeader) {
286
+ this.handleGroupShowSelected();
287
+ }
277
288
  this.value = '';
278
289
  this.selectionChanged();
279
290
  this.emit('nile-change', { value: this.value, name: this.name });
@@ -391,6 +402,9 @@ let NileSelect = class NileSelect extends NileElement {
391
402
  this.showSelected = false;
392
403
  this.value = '';
393
404
  this.displayInput.focus({ preventScroll: true });
405
+ if (this.enableGroupHeader) {
406
+ this.handleGroupShowSelected();
407
+ }
394
408
  // Emit after update
395
409
  this.updateComplete.then(() => {
396
410
  const val = { value: this.multiple ? this.value : '', name: this.name };
@@ -443,6 +457,9 @@ let NileSelect = class NileSelect extends NileElement {
443
457
  el.hidden = this.showSelected;
444
458
  }
445
459
  });
460
+ if (this.enableGroupHeader) {
461
+ this.handleGroupShowSelected();
462
+ }
446
463
  this.requestUpdate();
447
464
  }
448
465
  }
@@ -473,6 +490,9 @@ let NileSelect = class NileSelect extends NileElement {
473
490
  el.hidden = this.showSelected;
474
491
  }
475
492
  });
493
+ if (this.enableGroupHeader) {
494
+ this.handleGroupShowSelected();
495
+ }
476
496
  // Emit after updating
477
497
  this.updateComplete.then(() => {
478
498
  this.nileInput({ value: this.value, name: this.name });
@@ -616,6 +636,9 @@ let NileSelect = class NileSelect extends NileElement {
616
636
  }
617
637
  handleSearchChange(e) {
618
638
  this.searchValue = e.detail.value;
639
+ if (this.enableGroupHeader) {
640
+ this.handleGroupSearchChange();
641
+ }
619
642
  if (!this.disableLocalSearch) {
620
643
  let filteredOptions = this.filterOptions(this.searchValue);
621
644
  if (filteredOptions.length === 0) {
@@ -666,8 +689,12 @@ let NileSelect = class NileSelect extends NileElement {
666
689
  if (this.open && !this.disabled) {
667
690
  // Reset the current option
668
691
  this.setCurrentOption(this.selectedOptions[0] || this.getFirstOption());
669
- // Show
670
692
  this.emit('nile-show', { value: this.value, name: this.name });
693
+ if (this.enableGroupHeader) {
694
+ this.getAllGroupAttributes().forEach((el) => {
695
+ el.element.classList.remove('nile-group-hidden');
696
+ });
697
+ }
671
698
  this.addOpenListeners();
672
699
  this.showNoResults = !this.getAllOptions()?.length;
673
700
  await stopAnimations(this);
@@ -705,6 +732,34 @@ let NileSelect = class NileSelect extends NileElement {
705
732
  this.emit('nile-after-hide', { value: this.value, name: this.name });
706
733
  }
707
734
  }
735
+ getAllGroupAttributes() {
736
+ return Array.from(this.querySelectorAll('nile-option-group[name]')).map((el) => ({
737
+ name: el?.getAttribute('name') || '',
738
+ data: el?.getAttribute('data'),
739
+ element: el
740
+ }));
741
+ }
742
+ getUniqueGroupNames(arr) {
743
+ return Array.from(new Set(arr.map(obj => obj?.groupName)));
744
+ }
745
+ handleGroupSearchChange() {
746
+ const filtered = new Set(this.getUniqueGroupNames(this.filterOptions(this.searchValue)));
747
+ this.getAllGroupAttributes().forEach(({ name, element }) => {
748
+ element?.classList.toggle('nile-group-hidden', !filtered.has(name));
749
+ });
750
+ }
751
+ handleGroupShowSelected() {
752
+ const visibleGroups = new Set();
753
+ if (this.showSelected) {
754
+ this.getAllOptions().forEach((option) => {
755
+ if (!option.hidden)
756
+ visibleGroups.add(option.groupName);
757
+ });
758
+ }
759
+ this.getAllGroupAttributes().forEach(({ name, element }) => {
760
+ element?.classList.toggle('nile-group-hidden', this.showSelected && !visibleGroups.has(name));
761
+ });
762
+ }
708
763
  /** Shows the listbox. */
709
764
  async show() {
710
765
  if (this.open || this.disabled) {
@@ -1282,6 +1337,9 @@ __decorate([
1282
1337
  __decorate([
1283
1338
  property({ type: Boolean })
1284
1339
  ], NileSelect.prototype, "enableVirtualScroll", void 0);
1340
+ __decorate([
1341
+ property({ type: Boolean, reflect: true, attribute: true })
1342
+ ], NileSelect.prototype, "enableGroupHeader", void 0);
1285
1343
  __decorate([
1286
1344
  watch('disabled', { waitUntilFirstUpdate: true })
1287
1345
  ], NileSelect.prototype, "handleDisabledChange", null);