@aquera/nile-elements 2.0.18 → 2.0.19

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 (60) hide show
  1. package/README.md +5 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +404 -385
  5. package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js +1 -1
  6. package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js.map +1 -1
  7. package/dist/nile-breadcrumb/nile-breadcrumb.esm.js +2 -2
  8. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js +1 -1
  9. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js.map +1 -1
  10. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js +1 -1
  11. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js.map +1 -1
  12. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.esm.js +14 -2
  13. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.esm.js +4 -4
  14. package/dist/nile-select/index.cjs.js +1 -1
  15. package/dist/nile-select/index.esm.js +1 -1
  16. package/dist/nile-select/nile-select.cjs.js +2 -2
  17. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  18. package/dist/nile-select/nile-select.esm.js +1 -1
  19. package/dist/nile-select/virtual-scroll-helper.cjs.js +1 -1
  20. package/dist/nile-select/virtual-scroll-helper.cjs.js.map +1 -1
  21. package/dist/nile-select/virtual-scroll-helper.esm.js +48 -47
  22. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +4 -4
  23. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  24. package/dist/nile-virtual-select/nile-virtual-select.esm.js +2 -2
  25. package/dist/src/nile-breadcrumb/nile-breadcrumb.d.ts +7 -0
  26. package/dist/src/nile-breadcrumb/nile-breadcrumb.js +24 -1
  27. package/dist/src/nile-breadcrumb/nile-breadcrumb.js.map +1 -1
  28. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js +51 -0
  29. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js.map +1 -1
  30. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js +12 -0
  31. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js.map +1 -1
  32. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.d.ts +5 -0
  33. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js +9 -0
  34. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js.map +1 -1
  35. package/dist/src/nile-select/nile-select.d.ts +1 -0
  36. package/dist/src/nile-select/nile-select.js +16 -1
  37. package/dist/src/nile-select/nile-select.js.map +1 -1
  38. package/dist/src/nile-select/nile-select.test.js +430 -5
  39. package/dist/src/nile-select/nile-select.test.js.map +1 -1
  40. package/dist/src/nile-select/virtual-scroll-helper.js +7 -4
  41. package/dist/src/nile-select/virtual-scroll-helper.js.map +1 -1
  42. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +3 -1
  43. package/dist/src/nile-virtual-select/nile-virtual-select.js +14 -6
  44. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  45. package/dist/src/nile-virtual-select/nile-virtual-select.test.js +115 -1
  46. package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -1
  47. package/dist/src/version.js +1 -1
  48. package/dist/src/version.js.map +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +1 -1
  51. package/src/nile-breadcrumb/nile-breadcrumb.test.ts +57 -0
  52. package/src/nile-breadcrumb/nile-breadcrumb.ts +19 -0
  53. package/src/nile-breadcrumb-item/nile-breadcrumb-item.css.ts +12 -0
  54. package/src/nile-breadcrumb-item/nile-breadcrumb-item.ts +7 -0
  55. package/src/nile-select/nile-select.test.ts +560 -5
  56. package/src/nile-select/nile-select.ts +21 -1
  57. package/src/nile-select/virtual-scroll-helper.ts +7 -4
  58. package/src/nile-virtual-select/nile-virtual-select.test.ts +139 -1
  59. package/src/nile-virtual-select/nile-virtual-select.ts +17 -6
  60. package/vscode-html-custom-data.json +39 -14
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent nile-elements following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "nile-elements",
6
- "version": "2.0.18",
6
+ "version": "2.0.19",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -104,4 +104,61 @@ describe('NileBreadcrumb', () => {
104
104
  it('98. slot is default (no name)', async () => { const el = await fixture<NileBreadcrumb>(html`<nile-breadcrumb><nile-breadcrumb-item>A</nile-breadcrumb-item></nile-breadcrumb>`); const slot = el.shadowRoot!.querySelector('slot'); expect(slot!.hasAttribute('name')).to.be.false; });
105
105
  it('99. no nile-divider', async () => { const el = await fixture<NileBreadcrumb>(html`<nile-breadcrumb><nile-breadcrumb-item>A</nile-breadcrumb-item></nile-breadcrumb>`); expect(el.shadowRoot!.querySelector('nile-divider')).to.be.null; });
106
106
  it('100. full integration', async () => { const el = await fixture<NileBreadcrumb>(html`<nile-breadcrumb class="b" id="b1" role="navigation" aria-label="Breadcrumb"><nile-breadcrumb-item>Home</nile-breadcrumb-item><nile-breadcrumb-item>Settings</nile-breadcrumb-item><nile-breadcrumb-item>Profile</nile-breadcrumb-item></nile-breadcrumb>`); expect(el.id).to.equal('b1'); expect(el.getAttribute('role')).to.equal('navigation'); expect(el.querySelectorAll('nile-breadcrumb-item').length).to.equal(3); expect(el.textContent).to.contain('Home'); expect(el.textContent).to.contain('Profile'); });
107
+
108
+ describe('variant', () => {
109
+ const tpl = (variant?: string) => variant
110
+ ? html`<nile-breadcrumb variant=${variant}><nile-breadcrumb-item>A</nile-breadcrumb-item><nile-breadcrumb-item>B</nile-breadcrumb-item></nile-breadcrumb>`
111
+ : html`<nile-breadcrumb><nile-breadcrumb-item>A</nile-breadcrumb-item><nile-breadcrumb-item>B</nile-breadcrumb-item></nile-breadcrumb>`;
112
+ const items = (el: NileBreadcrumb) => [...el.querySelectorAll('nile-breadcrumb-item')];
113
+
114
+ it('defaults to "default" and reflects', async () => {
115
+ const el = await fixture<NileBreadcrumb>(tpl());
116
+ expect(el.variant).to.equal('default');
117
+ expect(el.getAttribute('variant')).to.equal('default');
118
+ items(el).forEach(i => expect(i.variant).to.equal('default'));
119
+ });
120
+
121
+ it('propagates "outlined" to every item', async () => {
122
+ const el = await fixture<NileBreadcrumb>(tpl('outlined'));
123
+ await Promise.all(items(el).map(i => i.updateComplete));
124
+ items(el).forEach(i => {
125
+ expect(i.getAttribute('variant')).to.equal('outlined');
126
+ expect(i.shadowRoot!.querySelector('[part="item"]')!.classList.contains('nile-breadcrumb-item--outlined')).to.be.true;
127
+ });
128
+ });
129
+
130
+ it('keeps the existing text-colour classes when outlined', async () => {
131
+ const el = await fixture<NileBreadcrumb>(tpl('outlined'));
132
+ const [a, b] = items(el);
133
+ await a.updateComplete; await b.updateComplete;
134
+ expect(a.shadowRoot!.querySelector('[part="item"]')!.classList.contains('nile-breadcrumb-item__slot-text')).to.be.true;
135
+ expect(b.shadowRoot!.querySelector('[part="item"]')!.classList.contains('nile-breadcrumb-item__last-slot-text')).to.be.true;
136
+ });
137
+
138
+ it('updates items when variant changes at runtime', async () => {
139
+ const el = await fixture<NileBreadcrumb>(tpl());
140
+ el.variant = 'outlined';
141
+ await el.updateComplete;
142
+ items(el).forEach(i => expect(i.variant).to.equal('outlined'));
143
+ el.variant = 'default';
144
+ await el.updateComplete;
145
+ items(el).forEach(i => expect(i.variant).to.equal('default'));
146
+ });
147
+
148
+ it('applies the variant to items added later', async () => {
149
+ const el = await fixture<NileBreadcrumb>(tpl('outlined'));
150
+ const added = document.createElement('nile-breadcrumb-item');
151
+ added.textContent = 'C';
152
+ el.appendChild(added);
153
+ await new Promise(r => setTimeout(r));
154
+ expect(added.variant).to.equal('outlined');
155
+ });
156
+
157
+ it('no chip class in the default variant', async () => {
158
+ const el = await fixture<NileBreadcrumb>(tpl());
159
+ const [a] = items(el);
160
+ await a.updateComplete;
161
+ expect(a.shadowRoot!.querySelector('.nile-breadcrumb-item--outlined')).to.be.null;
162
+ });
163
+ });
107
164
  });
@@ -31,6 +31,12 @@ export class NileBreadcrumb extends NileElement {
31
31
  return [styles];
32
32
  }
33
33
 
34
+ /**
35
+ * Visual style of the items. `outlined` renders each item inside an outlined chip;
36
+ * text colours are unchanged. Propagated to every slotted `nile-breadcrumb-item`.
37
+ */
38
+ @property({ type: String, reflect: true }) variant: 'default' | 'outlined' = 'default';
39
+
34
40
  /* #endregion */
35
41
 
36
42
  /* #region Methods */
@@ -46,7 +52,20 @@ export class NileBreadcrumb extends NileElement {
46
52
  });
47
53
  }
48
54
 
55
+ protected updated(changedProperties: Map<string, unknown>) {
56
+ if (changedProperties.has('variant')) {
57
+ this.syncItemVariant();
58
+ }
59
+ }
60
+
61
+ private syncItemVariant() {
62
+ this.querySelectorAll('nile-breadcrumb-item').forEach(item => {
63
+ item.variant = this.variant;
64
+ });
65
+ }
66
+
49
67
  private changeLastItem() {
68
+ this.syncItemVariant();
50
69
  const items: any = [...this.querySelectorAll('nile-breadcrumb-item')];
51
70
  const itemslength = items.length;
52
71
  for (let i = 0; i < itemslength - 1; i++) {
@@ -46,6 +46,18 @@ export const styles = css`
46
46
  .nile-breadcrumb-item__last-slot-text {
47
47
  color: var(--nile-breadcrumb-color, var(--ng-colors-text-brand-secondary-700));
48
48
  }
49
+
50
+ .nile-breadcrumb-item--outlined {
51
+ padding: var(--nile-spacing-xs, var(--ng-spacing-xs)) var(--nile-spacing-md, var(--ng-spacing-md));
52
+ border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
53
+ border-radius: var(--nile-radius-sm, var(--ng-radius-md));
54
+ background-color: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
55
+ }
56
+
57
+ .nile-breadcrumb-item--outlined.nile-breadcrumb-item__slot-text:hover,
58
+ .nile-breadcrumb-item--outlined.nile-breadcrumb-item__last-slot-text {
59
+ background-color: var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary));
60
+ }
49
61
  `;
50
62
 
51
63
  export default [styles];
@@ -44,6 +44,12 @@ export class NileBreadcrumbItem extends NileElement {
44
44
 
45
45
  @property({ type: String }) separator = 'var(--nile-icon-arrow-right, var(--ng-icon-chevron-right))';
46
46
 
47
+ /**
48
+ * Visual style of the item. `outlined` wraps the text in an outlined chip.
49
+ * Set automatically from the parent `nile-breadcrumb`'s `variant`.
50
+ */
51
+ @property({ type: String, reflect: true }) variant: 'default' | 'outlined' = 'default';
52
+
47
53
  private handleClick() {
48
54
  if (this.isLast) {
49
55
  return;
@@ -57,6 +63,7 @@ export class NileBreadcrumbItem extends NileElement {
57
63
  class=${classMap({
58
64
  'nile-breadcrumb-item__slot-text': !this.isLast,
59
65
  'nile-breadcrumb-item__last-slot-text': this.isLast,
66
+ 'nile-breadcrumb-item--outlined': this.variant === 'outlined',
60
67
  })}
61
68
  @click=${this.handleClick}
62
69
  >