@aquera/nile-elements 0.0.128 → 0.0.130

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 (33) hide show
  1. package/README.md +8 -0
  2. package/demo/index.html +87 -16
  3. package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
  4. package/dist/nile-dropdown/nile-dropdown.cjs.js.map +1 -1
  5. package/dist/nile-dropdown/nile-dropdown.esm.js +3 -2
  6. package/dist/nile-select/nile-select.css.cjs.js +1 -1
  7. package/dist/nile-select/nile-select.css.cjs.js.map +1 -1
  8. package/dist/nile-select/nile-select.css.esm.js +3 -3
  9. package/dist/nile-tour/index.cjs.js +1 -1
  10. package/dist/nile-tour/index.esm.js +1 -1
  11. package/dist/nile-tour/nile-tour.cjs.js +2 -2
  12. package/dist/nile-tour/nile-tour.cjs.js.map +1 -1
  13. package/dist/nile-tour/nile-tour.css.cjs.js +1 -1
  14. package/dist/nile-tour/nile-tour.css.cjs.js.map +1 -1
  15. package/dist/nile-tour/nile-tour.css.esm.js +49 -13
  16. package/dist/nile-tour/nile-tour.esm.js +7 -7
  17. package/dist/src/nile-dropdown/nile-dropdown.d.ts +2 -0
  18. package/dist/src/nile-dropdown/nile-dropdown.js +4 -0
  19. package/dist/src/nile-dropdown/nile-dropdown.js.map +1 -1
  20. package/dist/src/nile-select/nile-select.css.js +3 -3
  21. package/dist/src/nile-select/nile-select.css.js.map +1 -1
  22. package/dist/src/nile-tour/nile-tour.css.js +49 -13
  23. package/dist/src/nile-tour/nile-tour.css.js.map +1 -1
  24. package/dist/src/nile-tour/nile-tour.d.ts +20 -14
  25. package/dist/src/nile-tour/nile-tour.js +95 -29
  26. package/dist/src/nile-tour/nile-tour.js.map +1 -1
  27. package/dist/tsconfig.tsbuildinfo +1 -1
  28. package/package.json +1 -1
  29. package/src/nile-dropdown/nile-dropdown.ts +4 -0
  30. package/src/nile-select/nile-select.css.ts +3 -3
  31. package/src/nile-tour/nile-tour.css.ts +49 -13
  32. package/src/nile-tour/nile-tour.ts +165 -102
  33. package/vscode-html-custom-data.json +40 -11
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": "0.0.128",
6
+ "version": "0.0.130",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -102,6 +102,9 @@ export class NileDropdown extends NileElement {
102
102
  /** The distance in pixels from which to offset the panel along its trigger. */
103
103
  @property({ type: Number }) skidding = 0;
104
104
 
105
+ /** Syncs the popup's width or height to that of the anchor element. */
106
+ @property() sync: 'width' | 'height' | 'both';
107
+
105
108
  /**
106
109
  * Enable this option to prevent the panel from being clipped when the component is placed inside a container with
107
110
  * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.
@@ -407,6 +410,7 @@ export class NileDropdown extends NileElement {
407
410
  distance=${this.distance}
408
411
  skidding=${this.skidding}
409
412
  strategy=${this.hoist ? 'fixed' : 'absolute'}
413
+ sync=${this.sync}
410
414
  flip
411
415
  shift
412
416
  auto-size="both"
@@ -122,7 +122,7 @@ export const styles = css`
122
122
  font: inherit;
123
123
  border: none;
124
124
  background: none;
125
- color: #333333;
125
+ color: var(--nile-colors-dark-900);
126
126
  cursor: inherit;
127
127
  overflow: hidden;
128
128
  padding: 0;
@@ -136,7 +136,7 @@ export const styles = css`
136
136
  }
137
137
 
138
138
  .select:not(.select--disabled):hover .select__display-input {
139
- color: #333333;
139
+ color: var(--nile-colors-dark-900);
140
140
  }
141
141
 
142
142
  .select__display-input:focus {
@@ -207,7 +207,7 @@ export const styles = css`
207
207
  }
208
208
 
209
209
  .select--standard .select__combobox:hover {
210
- border: 1px solid #000;
210
+ border: 1px solid var(--nile-colors-dark-900);
211
211
  background: #fff;
212
212
  }
213
213
 
@@ -17,8 +17,8 @@ export const styles = css`
17
17
  .introjs-tooltip {
18
18
  background-color: var(--nile-tour-background-color, #000);
19
19
  color: var(--nile-tour-text-color, #fff);
20
- width: 300px;
21
- max-width: 300px;
20
+ width: 300px;
21
+ max-width: 300px;
22
22
  }
23
23
 
24
24
  .introjs-arrow.bottom {
@@ -42,11 +42,9 @@ export const styles = css`
42
42
  }
43
43
 
44
44
  .introjs-arrow.right-bottom {
45
- border-right-color: var(--nile-tour-background-color, #000) !important;
45
+ border-left-color: var(--nile-tour-background-color, #000) !important;
46
46
  }
47
47
 
48
-
49
-
50
48
  .introjs-button {
51
49
  background: none;
52
50
  border: none;
@@ -84,23 +82,61 @@ export const styles = css`
84
82
  gap: 10px;
85
83
  }
86
84
 
87
- .introjs-helperNumberLayer{
88
- display: none;
85
+ .introjs-helperNumberLayer {
86
+ display: none;
89
87
  }
90
88
 
91
- .introjs-bullets{
92
- display: none;
93
-
89
+ .introjs-bullets {
90
+ display: none;
94
91
  }
95
92
 
96
93
  .introjs-skipbutton {
97
- display: none;
94
+ display: none;
95
+ }
96
+
97
+ .introjs-prev-button {
98
+ color: #c7ced4;
99
+ }
98
100
 
101
+ .introjs-helperLayer {
102
+ display: none;
103
+ pointer-events: none;
99
104
  }
100
105
 
106
+ .introjs-overlay {
107
+ display: none;
108
+ pointer-events: none;
109
+ }
101
110
 
102
- .introjs-prev-button {
103
- color: #C7CED4;
111
+ .introjs-step-counter {
112
+ margin-right: auto; /* Push buttons to the opposite side */
113
+ font-size: 14px;
114
+ color: #ffffff;
115
+ padding: 0 10px;
116
+ display: flex;
117
+ align-items: center;
118
+ }
119
+
120
+ @keyframes shake {
121
+ 0% {
122
+ transform: translateX(0);
123
+ }
124
+ 25% {
125
+ transform: translateX(-5px);
126
+ }
127
+ 50% {
128
+ transform: translateX(5px);
129
+ }
130
+ 75% {
131
+ transform: translateX(-5px);
132
+ }
133
+ 100% {
134
+ transform: translateX(0);
135
+ }
136
+ }
137
+
138
+ .introjs-shake {
139
+ animation: shake 0.5s ease infinite; /* Repeats continuously */
104
140
  }
105
141
  `;
106
142
 
@@ -1,119 +1,182 @@
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
1
  import { LitElement, html, CSSResultArray, TemplateResult, property } from 'lit-element';
9
2
  import { customElement } from 'lit/decorators.js';
10
3
  import { styles } from './nile-tour.css';
11
- import NileElement from '../internal/nile-element';
12
4
  import introJs from 'intro.js';
13
- // import 'intro.js/introjs.css';
14
5
 
15
6
  /**
16
7
  * Nile tour component.
17
8
  *
18
9
  * @tag nile-tour
19
- *
20
10
  */
21
11
  @customElement('nile-tour')
22
- export class NileTour extends NileElement {
23
- // Define the type of tourInstance using ReturnType<typeof introJs>
24
- private tourInstance: ReturnType<typeof introJs> | null = null;
25
-
26
- /**
27
- * The steps for the tour.
28
- */
29
- @property({ type: Array })
30
- steps: Array<{
31
- stepNo: number;
32
- element: string;
33
- title: string;
34
- content: string;
35
- position: "top" | "left" | "right" | "bottom";
36
- beforeChange?: () => Promise<boolean> | boolean;
37
- afterChange?: () => Promise<void> | void;
38
- }> = [];
39
-
40
- public static get styles(): CSSResultArray {
41
- return [styles];
42
- }
43
-
44
- createRenderRoot() {
45
- return this;
46
- }
47
-
48
- constructor() {
49
- super();
50
- }
51
-
52
- /**
53
- * Initializes and starts the Intro.js tour.
54
- */
55
- public startTour(): void {
56
- const introSteps = this.steps.map((step) => ({
57
- element: document.querySelector(step.element) as HTMLElement | null,
58
- intro: step.content,
59
- title: step.title,
60
- position: step.position,
61
- beforeChange: step.beforeChange,
62
- afterChange: step.afterChange,
63
- })).filter((step) => step.element !== null); // Filter out steps with null elements
64
-
65
- this.tourInstance = introJs().setOptions({
66
- steps: introSteps,
67
- nextLabel: "<button class='introjs-button introjs-next-button'>Next</button>",
68
- prevLabel: "<button class='introjs-button introjs-prev-button'>Prev</button>",
69
- showButtons: true,
70
- showStepNumbers: true,
71
- });
72
-
73
- // Handle beforeChange
74
- this.tourInstance.onbeforechange(async (targetElement) => {
75
- const currentStepIndex = this.tourInstance?._currentStep ?? 0;
76
- const currentStep = this.steps[currentStepIndex];
77
-
78
- if (currentStep?.beforeChange) {
79
- const result = await currentStep.beforeChange();
80
- return result === true; // Proceed only if `true` is returned
81
- }
82
-
83
- return true; // Proceed if no beforeChange function is provided
84
- });
85
-
86
- // Handle afterChange
87
- this.tourInstance.onafterchange((targetElement) => {
88
- const currentStepIndex = this.tourInstance?._currentStep ?? 0;
89
- const currentStep = this.steps[currentStepIndex];
90
-
91
- if (currentStep?.afterChange) {
92
- currentStep.afterChange();
93
- }
94
- });
95
-
96
- this.tourInstance.start();
97
- }
98
-
99
- /**
100
- * Render method
101
- * @slot This is a slot test
102
- */
103
- public render(): TemplateResult {
104
- return html`
105
- <style>
106
- ${styles.cssText}
107
- </style>
108
- <slot></slot>
109
- `;
110
- }
12
+ export class NileTour extends LitElement {
13
+ private tourInstance: ReturnType<typeof introJs> | null = null;
14
+
15
+ /**
16
+ * The steps for the tour.
17
+ */
18
+ @property({ type: Array })
19
+ steps: Array<{
20
+ stepNo: number;
21
+ element: string;
22
+ title: string;
23
+ content: string;
24
+ position: "top" | "left" | "right" | "bottom";
25
+ beforeChange?: () => Promise<boolean> | boolean;
26
+ afterChange?: () => Promise<void> | void;
27
+ }> = [];
28
+
29
+ /**
30
+ * JSON string for steps.
31
+ */
32
+ @property({ type: String })
33
+ stepsJson: string = '';
34
+
35
+ /**
36
+ * Whether to show the backdrop overlay.
37
+ */
38
+ @property({ type: Boolean })
39
+ showBackdrop: boolean = false;
40
+
41
+ /**
42
+ * Whether to disable interaction during the tour.
43
+ */
44
+ @property({ type: Boolean })
45
+ disableInteraction: boolean = false;
46
+
47
+ public static get styles(): CSSResultArray {
48
+ return [styles];
49
+ }
50
+
51
+ createRenderRoot() {
52
+ return this;
53
+ }
54
+
55
+ constructor() {
56
+ super();
57
+ }
58
+
59
+ updated(changedProperties: Map<string | number | symbol, unknown>): void {
60
+ if (changedProperties.has('stepsJson')) {
61
+ this.parseStepsJson();
62
+ }
63
+ super.updated(changedProperties);
64
+ }
65
+
66
+ /**
67
+ * Parses the JSON string and updates the steps array.
68
+ */
69
+ private parseStepsJson(): void {
70
+ if (this.stepsJson) {
71
+ try {
72
+ const parsedSteps = JSON.parse(this.stepsJson);
73
+ if (Array.isArray(parsedSteps)) {
74
+ this.steps = parsedSteps;
75
+ } else {
76
+ console.error('Invalid JSON: Expected an array');
77
+ }
78
+ } catch (error) {
79
+ console.error('Failed to parse stepsJson:', error);
80
+ }
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Initializes and starts the Intro.js tour.
86
+ */
87
+ public startTour(): void {
88
+ console.log('start of tour');
89
+ const introSteps = this.steps
90
+ .map((step) => ({
91
+ element: document.querySelector(`[data-tour="${step.element}"]`) as HTMLElement | null,
92
+ intro: step.content,
93
+ title: step.title,
94
+ position: step.position,
95
+ beforeChange: step.beforeChange,
96
+ afterChange: step.afterChange,
97
+ }))
98
+ .filter((step) => step.element !== null);
99
+
100
+ this.tourInstance = introJs().setOptions({
101
+ steps: introSteps,
102
+ nextLabel: "<button class='introjs-button introjs-next-button'>Next</button>",
103
+ prevLabel: "<button class='introjs-button introjs-prev-button'>Prev</button>",
104
+ overlayOpacity: 0,
105
+ disableInteraction: this.disableInteraction,
106
+ showButtons: true,
107
+ showStepNumbers: false,
108
+ exitOnOverlayClick: false,
109
+ });
110
+
111
+ this.tourInstance.onbeforechange(async (targetElement) => {
112
+ const currentStepIndex = this.tourInstance?._currentStep ?? 0;
113
+ const currentStep = this.steps[currentStepIndex];
114
+
115
+ if (currentStep?.beforeChange) {
116
+ const result = await currentStep.beforeChange();
117
+ if (!result) {
118
+ this.shakeTooltip();
119
+ return false;
120
+ }
121
+ }
122
+ return true;
123
+ });
124
+
125
+ this.tourInstance.onafterchange((targetElement) => {
126
+ const currentStepIndex = this.tourInstance?._currentStep ?? 0;
127
+ const currentStep = this.steps[currentStepIndex];
128
+
129
+ if (currentStep?.afterChange) {
130
+ currentStep.afterChange();
131
+ }
132
+ });
133
+
134
+ // Update step counter on change
135
+ this.tourInstance.onchange((targetElement) => {
136
+ const currentStep = this.tourInstance?._currentStep ?? 0;
137
+ const totalSteps = this.steps.length;
138
+ const tooltip = document.querySelector('.introjs-tooltip');
139
+ if (tooltip) {
140
+ const navBar = tooltip.querySelector('.introjs-tooltipbuttons');
141
+ if (navBar) {
142
+ let stepCounter = navBar.querySelector('.introjs-step-counter') as HTMLElement;
143
+ if (!stepCounter) {
144
+ stepCounter = document.createElement('div');
145
+ stepCounter.className = 'introjs-step-counter';
146
+ navBar.insertBefore(stepCounter, navBar.firstChild);
147
+ }
148
+ stepCounter.textContent = `${currentStep + 1} of ${totalSteps}`;
149
+ }
150
+ }
151
+ });
152
+
153
+ this.tourInstance.start();
154
+ }
155
+
156
+ private shakeTooltip(): void {
157
+ const tooltip = document.querySelector('.introjs-tooltip');
158
+ if (tooltip) {
159
+ tooltip.classList.add('introjs-shake');
160
+ setTimeout(() => {
161
+ tooltip.classList.remove('introjs-shake');
162
+ }, 1500);
163
+ }
164
+ }
165
+
166
+ public render(): TemplateResult {
167
+ return html`
168
+ <style>
169
+ ${styles.cssText}
170
+ </style>
171
+ <slot></slot>
172
+ `;
173
+ }
111
174
  }
112
175
 
113
176
  export default NileTour;
114
177
 
115
178
  declare global {
116
- interface HTMLElementTagNameMap {
117
- 'nile-tour': NileTour;
118
- }
179
+ interface HTMLElementTagNameMap {
180
+ 'nile-tour': NileTour;
181
+ }
119
182
  }
@@ -1062,7 +1062,7 @@
1062
1062
  },
1063
1063
  {
1064
1064
  "name": "nile-dropdown",
1065
- "description": "Nile icon component.\n\nEvents:\n\n * `nile-show` {} - Emitted when the dropdown opens.\n\n * `nile-after-show` {} - Emitted after the dropdown opens and all animations are complete.\n\n * `nile-hide` {} - Emitted when the dropdown closes.\n\n * `nile-after-hide` {} - Emitted after the dropdown closes and all animations are complete.\n\nSlots:\n\n * ` ` {} - The dropdown's main content.\n\n * `trigger` {} - The dropdown's trigger, usually a `<nile-button>` element.\n\nAttributes:\n\n * `open` {`boolean`} - Indicates whether or not the dropdown is open. You can toggle this attribute to show and hide the dropdown, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the dropdown's open state.\n\n * `placement` {`\"top\" | \"bottom\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"`} - The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\ninside of the viewport.\n\n * `disabled` {`boolean`} - Disables the dropdown so the panel will not open.\n\n * `stay-open-on-select` {`boolean`} - By default, the dropdown is closed when an item is selected. This attribute will keep it open instead. Useful for\ndropdowns that allow for multiple interactions.\n\n * `distance` {`number`} - The distance in pixels from which to offset the panel away from its trigger.\n\n * `noOpenOnClick` {`boolean`} - \n\n * `skidding` {`number`} - The distance in pixels from which to offset the panel along its trigger.\n\n * `hoist` {`boolean`} - Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n\nProperties:\n\n * `styles` - \n\n * `popup` - \n\n * `trigger` {`HTMLSlotElement`} - \n\n * `panel` {`HTMLSlotElement`} - \n\n * `open` {`boolean`} - Indicates whether or not the dropdown is open. You can toggle this attribute to show and hide the dropdown, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the dropdown's open state.\n\n * `placement` {`\"top\" | \"bottom\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"`} - The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\ninside of the viewport.\n\n * `disabled` {`boolean`} - Disables the dropdown so the panel will not open.\n\n * `stayOpenOnSelect` {`boolean`} - By default, the dropdown is closed when an item is selected. This attribute will keep it open instead. Useful for\ndropdowns that allow for multiple interactions.\n\n * `containingElement` {`HTMLElement | undefined`} - The dropdown will close when the user interacts outside of this element (e.g. clicking). Useful for composing other\ncomponents that use a dropdown internally.\n\n * `distance` {`number`} - The distance in pixels from which to offset the panel away from its trigger.\n\n * `noOpenOnClick` {`boolean`} - \n\n * `skidding` {`number`} - The distance in pixels from which to offset the panel along its trigger.\n\n * `hoist` {`boolean`} - Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
1065
+ "description": "Nile icon component.\n\nEvents:\n\n * `nile-show` {} - Emitted when the dropdown opens.\n\n * `nile-after-show` {} - Emitted after the dropdown opens and all animations are complete.\n\n * `nile-hide` {} - Emitted when the dropdown closes.\n\n * `nile-after-hide` {} - Emitted after the dropdown closes and all animations are complete.\n\nSlots:\n\n * ` ` {} - The dropdown's main content.\n\n * `trigger` {} - The dropdown's trigger, usually a `<nile-button>` element.\n\nAttributes:\n\n * `open` {`boolean`} - Indicates whether or not the dropdown is open. You can toggle this attribute to show and hide the dropdown, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the dropdown's open state.\n\n * `placement` {`\"top\" | \"bottom\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"`} - The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\ninside of the viewport.\n\n * `disabled` {`boolean`} - Disables the dropdown so the panel will not open.\n\n * `stay-open-on-select` {`boolean`} - By default, the dropdown is closed when an item is selected. This attribute will keep it open instead. Useful for\ndropdowns that allow for multiple interactions.\n\n * `distance` {`number`} - The distance in pixels from which to offset the panel away from its trigger.\n\n * `noOpenOnClick` {`boolean`} - \n\n * `skidding` {`number`} - The distance in pixels from which to offset the panel along its trigger.\n\n * `sync` {`\"width\" | \"height\" | \"both\"`} - Syncs the popup's width or height to that of the anchor element.\n\n * `hoist` {`boolean`} - Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n\nProperties:\n\n * `styles` - \n\n * `popup` - \n\n * `trigger` {`HTMLSlotElement`} - \n\n * `panel` {`HTMLSlotElement`} - \n\n * `open` {`boolean`} - Indicates whether or not the dropdown is open. You can toggle this attribute to show and hide the dropdown, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the dropdown's open state.\n\n * `placement` {`\"top\" | \"bottom\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"`} - The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\ninside of the viewport.\n\n * `disabled` {`boolean`} - Disables the dropdown so the panel will not open.\n\n * `stayOpenOnSelect` {`boolean`} - By default, the dropdown is closed when an item is selected. This attribute will keep it open instead. Useful for\ndropdowns that allow for multiple interactions.\n\n * `containingElement` {`HTMLElement | undefined`} - The dropdown will close when the user interacts outside of this element (e.g. clicking). Useful for composing other\ncomponents that use a dropdown internally.\n\n * `distance` {`number`} - The distance in pixels from which to offset the panel away from its trigger.\n\n * `noOpenOnClick` {`boolean`} - \n\n * `skidding` {`number`} - The distance in pixels from which to offset the panel along its trigger.\n\n * `sync` {`\"width\" | \"height\" | \"both\"`} - Syncs the popup's width or height to that of the anchor element.\n\n * `hoist` {`boolean`} - Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
1066
1066
  "attributes": [
1067
1067
  {
1068
1068
  "name": "open",
@@ -1134,6 +1134,21 @@
1134
1134
  "name": "skidding",
1135
1135
  "description": "`skidding` {`number`} - The distance in pixels from which to offset the panel along its trigger.\n\nProperty: skidding\n\nDefault: 0"
1136
1136
  },
1137
+ {
1138
+ "name": "sync",
1139
+ "description": "`sync` {`\"width\" | \"height\" | \"both\"`} - Syncs the popup's width or height to that of the anchor element.\n\nProperty: sync",
1140
+ "values": [
1141
+ {
1142
+ "name": "width"
1143
+ },
1144
+ {
1145
+ "name": "height"
1146
+ },
1147
+ {
1148
+ "name": "both"
1149
+ }
1150
+ ]
1151
+ },
1137
1152
  {
1138
1153
  "name": "hoist",
1139
1154
  "description": "`hoist` {`boolean`} - Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n\nProperty: hoist\n\nDefault: false",
@@ -2284,7 +2299,7 @@
2284
2299
  },
2285
2300
  {
2286
2301
  "name": "nile-popup",
2287
- "description": "Nile icon component.\n\nAttributes:\n\n * `anchor` {`string | Element`} - The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide its `id` or a\nreference to it here. If the anchor lives inside the popup, use the `anchor` slot instead.\n\n * `active` {`boolean`} - Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.\n\n * `placement` {`\"top\" | \"bottom\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"`} - The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.\n\n * `strategy` {`\"absolute\" | \"fixed\"`} - Determines how the popup is positioned. The `absolute` strategy works well in most cases, but if overflow is\nclipped, using a `fixed` position strategy can often workaround it.\n\n * `distance` {`number`} - The distance in pixels from which to offset the panel away from its anchor.\n\n * `skidding` {`number`} - The distance in pixels from which to offset the panel along its anchor.\n\n * `arrow` {`boolean`} - Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.\n\n * `arrow-placement` {`\"end\" | \"start\" | \"center\" | \"anchor\"`} - The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.\n\n * `arrow-padding` {`number`} - The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.\n\n * `flip` {`boolean`} - When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.\n\n * `flip-fallback-placements` {`string`} - If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.\n\n * `flip-fallback-strategy` {`\"best-fit\" | \"initial\"`} - When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.\n\n * `flipBoundary` {`Element | Element[]`} - The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `flip-padding` {`number`} - The amount of padding, in pixels, to exceed before the flip behavior will occur.\n\n * `shift` {`boolean`} - Moves the popup along the axis to keep it in view when clipped.\n\n * `shiftBoundary` {`Element | Element[]`} - The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `shift-padding` {`number`} - The amount of padding, in pixels, to exceed before the shift behavior will occur.\n\n * `auto-size` {`\"horizontal\" | \"vertical\" | \"both\"`} - When set, this will cause the popup to automatically resize itself to prevent it from overflowing.\n\n * `sync` {`\"both\" | \"width\" | \"height\"`} - Syncs the popup's width or height to that of the anchor element.\n\n * `autoSizeBoundary` {`Element | Element[]`} - The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `auto-size-padding` {`number`} - The amount of padding, in pixels, to exceed before the auto-size behavior will occur.\n\nProperties:\n\n * `styles` - \n\n * `anchorEl` {`Element | null`} - \n\n * `cleanup` {`(() => void) | undefined`} - \n\n * `popup` {`HTMLElement`} - A reference to the internal popup container. Useful for animating and styling the popup with JavaScript.\n\n * `arrowEl` {`HTMLElement`} - \n\n * `anchor` {`string | Element`} - The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide its `id` or a\nreference to it here. If the anchor lives inside the popup, use the `anchor` slot instead.\n\n * `active` {`boolean`} - Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.\n\n * `placement` {`\"top\" | \"bottom\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"`} - The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.\n\n * `strategy` {`\"absolute\" | \"fixed\"`} - Determines how the popup is positioned. The `absolute` strategy works well in most cases, but if overflow is\nclipped, using a `fixed` position strategy can often workaround it.\n\n * `distance` {`number`} - The distance in pixels from which to offset the panel away from its anchor.\n\n * `skidding` {`number`} - The distance in pixels from which to offset the panel along its anchor.\n\n * `arrow` {`boolean`} - Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.\n\n * `arrowPlacement` {`\"end\" | \"start\" | \"center\" | \"anchor\"`} - The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.\n\n * `arrowPadding` {`number`} - The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.\n\n * `flip` {`boolean`} - When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.\n\n * `flipFallbackPlacements` {`string`} - If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.\n\n * `flipFallbackStrategy` {`\"best-fit\" | \"initial\"`} - When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.\n\n * `flipBoundary` {`Element | Element[]`} - The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `flipPadding` {`number`} - The amount of padding, in pixels, to exceed before the flip behavior will occur.\n\n * `shift` {`boolean`} - Moves the popup along the axis to keep it in view when clipped.\n\n * `shiftBoundary` {`Element | Element[]`} - The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `shiftPadding` {`number`} - The amount of padding, in pixels, to exceed before the shift behavior will occur.\n\n * `autoSize` {`\"horizontal\" | \"vertical\" | \"both\"`} - When set, this will cause the popup to automatically resize itself to prevent it from overflowing.\n\n * `sync` {`\"both\" | \"width\" | \"height\"`} - Syncs the popup's width or height to that of the anchor element.\n\n * `autoSizeBoundary` {`Element | Element[]`} - The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `autoSizePadding` {`number`} - The amount of padding, in pixels, to exceed before the auto-size behavior will occur.\n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
2302
+ "description": "Nile icon component.\n\nAttributes:\n\n * `anchor` {`string | Element`} - The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide its `id` or a\nreference to it here. If the anchor lives inside the popup, use the `anchor` slot instead.\n\n * `active` {`boolean`} - Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.\n\n * `placement` {`\"top\" | \"bottom\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"`} - The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.\n\n * `strategy` {`\"absolute\" | \"fixed\"`} - Determines how the popup is positioned. The `absolute` strategy works well in most cases, but if overflow is\nclipped, using a `fixed` position strategy can often workaround it.\n\n * `distance` {`number`} - The distance in pixels from which to offset the panel away from its anchor.\n\n * `skidding` {`number`} - The distance in pixels from which to offset the panel along its anchor.\n\n * `arrow` {`boolean`} - Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.\n\n * `arrow-placement` {`\"end\" | \"start\" | \"center\" | \"anchor\"`} - The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.\n\n * `arrow-padding` {`number`} - The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.\n\n * `flip` {`boolean`} - When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.\n\n * `flip-fallback-placements` {`string`} - If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.\n\n * `flip-fallback-strategy` {`\"best-fit\" | \"initial\"`} - When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.\n\n * `flipBoundary` {`Element | Element[]`} - The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `flip-padding` {`number`} - The amount of padding, in pixels, to exceed before the flip behavior will occur.\n\n * `shift` {`boolean`} - Moves the popup along the axis to keep it in view when clipped.\n\n * `shiftBoundary` {`Element | Element[]`} - The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `shift-padding` {`number`} - The amount of padding, in pixels, to exceed before the shift behavior will occur.\n\n * `auto-size` {`\"both\" | \"horizontal\" | \"vertical\"`} - When set, this will cause the popup to automatically resize itself to prevent it from overflowing.\n\n * `sync` {`\"width\" | \"height\" | \"both\"`} - Syncs the popup's width or height to that of the anchor element.\n\n * `autoSizeBoundary` {`Element | Element[]`} - The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `auto-size-padding` {`number`} - The amount of padding, in pixels, to exceed before the auto-size behavior will occur.\n\nProperties:\n\n * `styles` - \n\n * `anchorEl` {`Element | null`} - \n\n * `cleanup` {`(() => void) | undefined`} - \n\n * `popup` {`HTMLElement`} - A reference to the internal popup container. Useful for animating and styling the popup with JavaScript.\n\n * `arrowEl` {`HTMLElement`} - \n\n * `anchor` {`string | Element`} - The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide its `id` or a\nreference to it here. If the anchor lives inside the popup, use the `anchor` slot instead.\n\n * `active` {`boolean`} - Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.\n\n * `placement` {`\"top\" | \"bottom\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\" | \"right\" | \"right-start\" | \"right-end\" | \"left\" | \"left-start\" | \"left-end\"`} - The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.\n\n * `strategy` {`\"absolute\" | \"fixed\"`} - Determines how the popup is positioned. The `absolute` strategy works well in most cases, but if overflow is\nclipped, using a `fixed` position strategy can often workaround it.\n\n * `distance` {`number`} - The distance in pixels from which to offset the panel away from its anchor.\n\n * `skidding` {`number`} - The distance in pixels from which to offset the panel along its anchor.\n\n * `arrow` {`boolean`} - Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.\n\n * `arrowPlacement` {`\"end\" | \"start\" | \"center\" | \"anchor\"`} - The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.\n\n * `arrowPadding` {`number`} - The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.\n\n * `flip` {`boolean`} - When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.\n\n * `flipFallbackPlacements` {`string`} - If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.\n\n * `flipFallbackStrategy` {`\"best-fit\" | \"initial\"`} - When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.\n\n * `flipBoundary` {`Element | Element[]`} - The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `flipPadding` {`number`} - The amount of padding, in pixels, to exceed before the flip behavior will occur.\n\n * `shift` {`boolean`} - Moves the popup along the axis to keep it in view when clipped.\n\n * `shiftBoundary` {`Element | Element[]`} - The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `shiftPadding` {`number`} - The amount of padding, in pixels, to exceed before the shift behavior will occur.\n\n * `autoSize` {`\"both\" | \"horizontal\" | \"vertical\"`} - When set, this will cause the popup to automatically resize itself to prevent it from overflowing.\n\n * `sync` {`\"width\" | \"height\" | \"both\"`} - Syncs the popup's width or height to that of the anchor element.\n\n * `autoSizeBoundary` {`Element | Element[]`} - The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.\n\n * `autoSizePadding` {`number`} - The amount of padding, in pixels, to exceed before the auto-size behavior will occur.\n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
2288
2303
  "attributes": [
2289
2304
  {
2290
2305
  "name": "anchor",
@@ -2431,31 +2446,31 @@
2431
2446
  },
2432
2447
  {
2433
2448
  "name": "auto-size",
2434
- "description": "`auto-size` {`\"horizontal\" | \"vertical\" | \"both\"`} - When set, this will cause the popup to automatically resize itself to prevent it from overflowing.\n\nProperty: autoSize",
2449
+ "description": "`auto-size` {`\"both\" | \"horizontal\" | \"vertical\"`} - When set, this will cause the popup to automatically resize itself to prevent it from overflowing.\n\nProperty: autoSize",
2435
2450
  "values": [
2436
2451
  {
2437
- "name": "horizontal"
2452
+ "name": "both"
2438
2453
  },
2439
2454
  {
2440
- "name": "vertical"
2455
+ "name": "horizontal"
2441
2456
  },
2442
2457
  {
2443
- "name": "both"
2458
+ "name": "vertical"
2444
2459
  }
2445
2460
  ]
2446
2461
  },
2447
2462
  {
2448
2463
  "name": "sync",
2449
- "description": "`sync` {`\"both\" | \"width\" | \"height\"`} - Syncs the popup's width or height to that of the anchor element.\n\nProperty: sync",
2464
+ "description": "`sync` {`\"width\" | \"height\" | \"both\"`} - Syncs the popup's width or height to that of the anchor element.\n\nProperty: sync",
2450
2465
  "values": [
2451
- {
2452
- "name": "both"
2453
- },
2454
2466
  {
2455
2467
  "name": "width"
2456
2468
  },
2457
2469
  {
2458
2470
  "name": "height"
2471
+ },
2472
+ {
2473
+ "name": "both"
2459
2474
  }
2460
2475
  ]
2461
2476
  },
@@ -3728,11 +3743,25 @@
3728
3743
  },
3729
3744
  {
3730
3745
  "name": "nile-tour",
3731
- "description": "Nile tour component.\n\nAttributes:\n\n * `steps` {`{ stepNo: number; element: string; title: string; content: string; position: \"top\" | \"bottom\" | \"right\" | \"left\"; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<...>) | undefined; }[]`} - The steps for the tour.\n\nProperties:\n\n * `tourInstance` - \n\n * `steps` {`{ stepNo: number; element: string; title: string; content: string; position: \"top\" | \"bottom\" | \"right\" | \"left\"; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<...>) | undefined; }[]`} - The steps for the tour.\n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
3746
+ "description": "Nile tour component.\n\nAttributes:\n\n * `steps` {`{ stepNo: number; element: string; title: string; content: string; position: \"top\" | \"bottom\" | \"right\" | \"left\"; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<...>) | undefined; }[]`} - The steps for the tour.\n\n * `stepsJson` {`string`} - JSON string for steps.\n\n * `showBackdrop` {`boolean`} - Whether to show the backdrop overlay.\n\n * `disableInteraction` {`boolean`} - Whether to disable interaction during the tour.\n\nProperties:\n\n * `tourInstance` - \n\n * `steps` {`{ stepNo: number; element: string; title: string; content: string; position: \"top\" | \"bottom\" | \"right\" | \"left\"; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<...>) | undefined; }[]`} - The steps for the tour.\n\n * `stepsJson` {`string`} - JSON string for steps.\n\n * `showBackdrop` {`boolean`} - Whether to show the backdrop overlay.\n\n * `disableInteraction` {`boolean`} - Whether to disable interaction during the tour.",
3732
3747
  "attributes": [
3733
3748
  {
3734
3749
  "name": "steps",
3735
3750
  "description": "`steps` {`{ stepNo: number; element: string; title: string; content: string; position: \"top\" | \"bottom\" | \"right\" | \"left\"; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<...>) | undefined; }[]`} - The steps for the tour.\n\nProperty: steps\n\nDefault: "
3751
+ },
3752
+ {
3753
+ "name": "stepsJson",
3754
+ "description": "`stepsJson` {`string`} - JSON string for steps.\n\nProperty: stepsJson\n\nDefault: "
3755
+ },
3756
+ {
3757
+ "name": "showBackdrop",
3758
+ "description": "`showBackdrop` {`boolean`} - Whether to show the backdrop overlay.\n\nProperty: showBackdrop\n\nDefault: false",
3759
+ "valueSet": "v"
3760
+ },
3761
+ {
3762
+ "name": "disableInteraction",
3763
+ "description": "`disableInteraction` {`boolean`} - Whether to disable interaction during the tour.\n\nProperty: disableInteraction\n\nDefault: false",
3764
+ "valueSet": "v"
3736
3765
  }
3737
3766
  ]
3738
3767
  },