@aquera/nile-elements 2.0.17 → 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 (89) hide show
  1. package/README.md +8 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +629 -440
  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-minimap/index.cjs.js +2 -0
  15. package/dist/nile-minimap/index.cjs.js.map +1 -0
  16. package/dist/nile-minimap/index.esm.js +1 -0
  17. package/dist/nile-minimap/nile-minimap.cjs.js +2 -0
  18. package/dist/nile-minimap/nile-minimap.cjs.js.map +1 -0
  19. package/dist/nile-minimap/nile-minimap.css.cjs.js +2 -0
  20. package/dist/nile-minimap/nile-minimap.css.cjs.js.map +1 -0
  21. package/dist/nile-minimap/nile-minimap.css.esm.js +150 -0
  22. package/dist/nile-minimap/nile-minimap.esm.js +22 -0
  23. package/dist/nile-select/index.cjs.js +1 -1
  24. package/dist/nile-select/index.esm.js +1 -1
  25. package/dist/nile-select/nile-select.cjs.js +2 -2
  26. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  27. package/dist/nile-select/nile-select.esm.js +1 -1
  28. package/dist/nile-select/virtual-scroll-helper.cjs.js +1 -1
  29. package/dist/nile-select/virtual-scroll-helper.cjs.js.map +1 -1
  30. package/dist/nile-select/virtual-scroll-helper.esm.js +48 -47
  31. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +4 -4
  32. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  33. package/dist/nile-virtual-select/nile-virtual-select.esm.js +2 -2
  34. package/dist/src/index.d.ts +1 -0
  35. package/dist/src/index.js +1 -0
  36. package/dist/src/index.js.map +1 -1
  37. package/dist/src/nile-breadcrumb/nile-breadcrumb.d.ts +7 -0
  38. package/dist/src/nile-breadcrumb/nile-breadcrumb.js +24 -1
  39. package/dist/src/nile-breadcrumb/nile-breadcrumb.js.map +1 -1
  40. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js +51 -0
  41. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js.map +1 -1
  42. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js +12 -0
  43. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js.map +1 -1
  44. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.d.ts +5 -0
  45. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js +9 -0
  46. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js.map +1 -1
  47. package/dist/src/nile-minimap/index.d.ts +1 -0
  48. package/dist/src/nile-minimap/index.js +2 -0
  49. package/dist/src/nile-minimap/index.js.map +1 -0
  50. package/dist/src/nile-minimap/nile-minimap.css.d.ts +12 -0
  51. package/dist/src/nile-minimap/nile-minimap.css.js +162 -0
  52. package/dist/src/nile-minimap/nile-minimap.css.js.map +1 -0
  53. package/dist/src/nile-minimap/nile-minimap.d.ts +131 -0
  54. package/dist/src/nile-minimap/nile-minimap.js +704 -0
  55. package/dist/src/nile-minimap/nile-minimap.js.map +1 -0
  56. package/dist/src/nile-minimap/nile-minimap.test.d.ts +1 -0
  57. package/dist/src/nile-minimap/nile-minimap.test.js +785 -0
  58. package/dist/src/nile-minimap/nile-minimap.test.js.map +1 -0
  59. package/dist/src/nile-select/nile-select.d.ts +1 -0
  60. package/dist/src/nile-select/nile-select.js +16 -1
  61. package/dist/src/nile-select/nile-select.js.map +1 -1
  62. package/dist/src/nile-select/nile-select.test.js +430 -5
  63. package/dist/src/nile-select/nile-select.test.js.map +1 -1
  64. package/dist/src/nile-select/virtual-scroll-helper.js +7 -4
  65. package/dist/src/nile-select/virtual-scroll-helper.js.map +1 -1
  66. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +3 -1
  67. package/dist/src/nile-virtual-select/nile-virtual-select.js +14 -6
  68. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  69. package/dist/src/nile-virtual-select/nile-virtual-select.test.js +115 -1
  70. package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -1
  71. package/dist/src/version.js +1 -1
  72. package/dist/src/version.js.map +1 -1
  73. package/dist/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +2 -1
  75. package/src/index.ts +1 -0
  76. package/src/nile-breadcrumb/nile-breadcrumb.test.ts +57 -0
  77. package/src/nile-breadcrumb/nile-breadcrumb.ts +19 -0
  78. package/src/nile-breadcrumb-item/nile-breadcrumb-item.css.ts +12 -0
  79. package/src/nile-breadcrumb-item/nile-breadcrumb-item.ts +7 -0
  80. package/src/nile-minimap/index.ts +1 -0
  81. package/src/nile-minimap/nile-minimap.css.ts +164 -0
  82. package/src/nile-minimap/nile-minimap.test.ts +924 -0
  83. package/src/nile-minimap/nile-minimap.ts +796 -0
  84. package/src/nile-select/nile-select.test.ts +560 -5
  85. package/src/nile-select/nile-select.ts +21 -1
  86. package/src/nile-select/virtual-scroll-helper.ts +7 -4
  87. package/src/nile-virtual-select/nile-virtual-select.test.ts +139 -1
  88. package/src/nile-virtual-select/nile-virtual-select.ts +17 -6
  89. package/vscode-html-custom-data.json +138 -36
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.17",
6
+ "version": "2.0.19",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -16,6 +16,7 @@
16
16
  "./nile-otp-input": "./dist/src/nile-otp-input/index.js",
17
17
  "./nile-sidebar": "./dist/src/nile-sidebar/index.js",
18
18
  "./nile-menu": "./dist/src/nile-menu/index.js",
19
+ "./nile-minimap": "./dist/src/nile-minimap/index.js",
19
20
  "./nile-badge": "./dist/src/nile-badge/index.js",
20
21
  "./nile-status-light": "./dist/src/nile-status-light/index.js",
21
22
  "./nile-drawer": "./dist/src/nile-drawer/index.js",
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ export { NileIcon } from './nile-icon';
4
4
  export { NileInput } from './nile-input';
5
5
  export { NileOtpInput } from './nile-otp-input';
6
6
  export { NileMenu } from './nile-menu';
7
+ export { NileMinimap } from './nile-minimap';
7
8
  export { NileBadge } from './nile-badge';
8
9
  export { NileStatusLight } from './nile-status-light';
9
10
  export { NileDrawer } from './nile-drawer';
@@ -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
  >
@@ -0,0 +1 @@
1
+ export { NileMinimap } from './nile-minimap';
@@ -0,0 +1,164 @@
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
+ import { css } from 'lit';
9
+
10
+ /**
11
+ * nile-minimap CSS
12
+ */
13
+ export const styles = css`
14
+ :host {
15
+ display: inline-block;
16
+ box-sizing: border-box;
17
+ width: var(--nile-minimap-width, 112px);
18
+ height: var(--nile-minimap-height, 40px);
19
+ vertical-align: middle;
20
+ }
21
+
22
+ /* Vertical mode swaps the two size tokens. */
23
+ :host([data-vertical]) {
24
+ width: var(--nile-minimap-height, 40px);
25
+ height: var(--nile-minimap-width, 112px);
26
+ }
27
+
28
+ /* hideWhenFits: internal state, never touches the consumer's own [hidden]. */
29
+ :host([data-fit]) {
30
+ display: none;
31
+ }
32
+
33
+ /* No container resolved from \`for\`: render nothing. */
34
+ :host([data-unresolved]) {
35
+ display: none;
36
+ }
37
+
38
+ .base {
39
+ position: relative;
40
+ box-sizing: border-box;
41
+ width: 100%;
42
+ height: 100%;
43
+ padding: var(--ng-spacing-1-5);
44
+ background: var(--ng-colors-bg-primary);
45
+ border: var(--ng-border-width-1) solid var(--ng-colors-border-secondary);
46
+ border-radius: var(--ng-radius-lg);
47
+ box-shadow: var(--ng-shadow-md);
48
+ touch-action: none;
49
+ user-select: none;
50
+ -webkit-user-select: none;
51
+ transition: opacity 0.15s ease;
52
+ }
53
+
54
+ /* autoHide: idle between scrolls. Keeps its space; ignores the pointer. */
55
+ :host([data-idle]) .base {
56
+ opacity: 0;
57
+ pointer-events: none;
58
+ }
59
+
60
+ .track {
61
+ position: relative;
62
+ width: 100%;
63
+ height: 100%;
64
+ cursor: pointer;
65
+ border-radius: var(--ng-radius-xs);
66
+ }
67
+
68
+ .segment {
69
+ position: absolute;
70
+ background: var(--ng-colors-bg-quaternary);
71
+ border-radius: var(--ng-radius-xs);
72
+ }
73
+
74
+ :host(:not([data-vertical])) .segment {
75
+ left: var(--s);
76
+ width: var(--l);
77
+ top: 0;
78
+ bottom: 0;
79
+ }
80
+
81
+ :host([data-vertical]) .segment {
82
+ top: var(--s);
83
+ height: var(--l);
84
+ left: 0;
85
+ right: 0;
86
+ }
87
+
88
+ /* Track mode: hide segments, draw the rail. */
89
+ .base--track .segments {
90
+ display: none;
91
+ }
92
+
93
+ .base--track .track {
94
+ background: var(--ng-colors-bg-quaternary);
95
+ }
96
+
97
+ /* RTL: mirror the horizontal track so segments and the viewport flip. */
98
+ .base--rtl .track {
99
+ transform: scaleX(-1);
100
+ }
101
+
102
+ .viewport {
103
+ position: absolute;
104
+ box-sizing: border-box;
105
+ border: 2px solid var(--ng-colors-border-brand);
106
+ border-radius: var(--ng-radius-sm);
107
+ cursor: grab;
108
+ transition: background-color 0.12s;
109
+ background: transparent;
110
+ }
111
+
112
+ :host(:not([data-vertical])) .viewport {
113
+ left: calc(var(--vs, 0px) - 3px);
114
+ width: calc(var(--vl, 0px) + 6px);
115
+ top: -3px;
116
+ bottom: -3px;
117
+ }
118
+
119
+ :host([data-vertical]) .viewport {
120
+ top: calc(var(--vs, 0px) - 3px);
121
+ height: calc(var(--vl, 0px) + 6px);
122
+ left: -3px;
123
+ right: -3px;
124
+ }
125
+
126
+ .viewport:hover {
127
+ background: color-mix(
128
+ in srgb,
129
+ var(--ng-colors-bg-brand-solid) 8%,
130
+ transparent
131
+ );
132
+ }
133
+
134
+ .base--drag .viewport {
135
+ background: color-mix(
136
+ in srgb,
137
+ var(--ng-colors-bg-brand-solid) 14%,
138
+ transparent
139
+ );
140
+ cursor: grabbing;
141
+ }
142
+
143
+ .viewport:focus {
144
+ outline: none;
145
+ }
146
+
147
+ .viewport:focus-visible {
148
+ box-shadow: var(--ng-focus-ring);
149
+ }
150
+
151
+ .base--disabled {
152
+ opacity: 0.5;
153
+ pointer-events: none;
154
+ }
155
+
156
+ @media (prefers-reduced-motion: reduce) {
157
+ .base,
158
+ .viewport {
159
+ transition: none;
160
+ }
161
+ }
162
+ `;
163
+
164
+ export default [styles];