@carbon/ibm-products-web-components 0.33.0 → 0.34.0
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.
- package/es/components/coachmark/coachmark-helpers.d.ts +11 -0
- package/es/components/coachmark/coachmark-helpers.js +35 -0
- package/es/components/coachmark/coachmark-helpers.js.map +1 -0
- package/es/components/coachmark/coachmark.js +1 -1
- package/es/components/coachmark/coachmark.js.map +1 -1
- package/es/components/guide-banner/guide-banner.js +1 -0
- package/es/components/guide-banner/guide-banner.js.map +1 -1
- package/es/components/guide-banner/guide-banner.scss.js +1 -1
- package/es/components/options-tile/options-tile.d.ts +5 -0
- package/es/components/options-tile/options-tile.js +24 -5
- package/es/components/options-tile/options-tile.js.map +1 -1
- package/es/components/options-tile/options-tile.scss.js +1 -1
- package/es/packages/ibm-products-web-components/package.json.js +1 -1
- package/es/utilities/makeDraggable/makeDraggable.js +19 -10
- package/es/utilities/makeDraggable/makeDraggable.js.map +1 -1
- package/es/utilities/snapscroll/index.d.ts +1 -1
- package/es/utilities/snapscroll/index.js +1 -1
- package/es/utilities/snapscroll/snapscroll.d.ts +10 -0
- package/es/utilities/snapscroll/snapscroll.js +112 -9
- package/es/utilities/snapscroll/snapscroll.js.map +1 -1
- package/es-custom/components/coachmark/coachmark-helpers.d.ts +11 -0
- package/es-custom/components/coachmark/coachmark-helpers.js +35 -0
- package/es-custom/components/coachmark/coachmark-helpers.js.map +1 -0
- package/es-custom/components/coachmark/coachmark.js +1 -1
- package/es-custom/components/coachmark/coachmark.js.map +1 -1
- package/es-custom/components/guide-banner/guide-banner.js +1 -0
- package/es-custom/components/guide-banner/guide-banner.js.map +1 -1
- package/es-custom/components/guide-banner/guide-banner.scss.js +1 -1
- package/es-custom/components/options-tile/options-tile.d.ts +5 -0
- package/es-custom/components/options-tile/options-tile.js +24 -5
- package/es-custom/components/options-tile/options-tile.js.map +1 -1
- package/es-custom/components/options-tile/options-tile.scss.js +1 -1
- package/es-custom/packages/ibm-products-web-components/package.json.js +1 -1
- package/es-custom/utilities/makeDraggable/makeDraggable.js +19 -10
- package/es-custom/utilities/makeDraggable/makeDraggable.js.map +1 -1
- package/es-custom/utilities/snapscroll/index.d.ts +1 -1
- package/es-custom/utilities/snapscroll/index.js +1 -1
- package/es-custom/utilities/snapscroll/snapscroll.d.ts +10 -0
- package/es-custom/utilities/snapscroll/snapscroll.js +112 -9
- package/es-custom/utilities/snapscroll/snapscroll.js.map +1 -1
- package/lib/components/coachmark/coachmark-helpers.d.ts +11 -0
- package/lib/components/options-tile/options-tile.d.ts +5 -0
- package/lib/utilities/snapscroll/index.d.ts +1 -1
- package/lib/utilities/snapscroll/snapscroll.d.ts +10 -0
- package/package.json +4 -5
- package/scss/components/guide-banner/guide-banner.scss +4 -0
- package/scss/components/options-tile/options-tile.scss +12 -0
|
@@ -38,12 +38,17 @@ const makeDraggable = ({ el, dragHandle, focusableDragHandle, dragStep, shiftDra
|
|
|
38
38
|
const onKeyDown = (e) => {
|
|
39
39
|
if (e.key === 'Enter') {
|
|
40
40
|
isDragging = !isDragging;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
if (isDragging) {
|
|
42
|
+
// Get current transform values when starting keyboard drag
|
|
43
|
+
const style = window.getComputedStyle(el);
|
|
44
|
+
const matrix = new DOMMatrix(style.transform);
|
|
45
|
+
currentX = matrix.m41;
|
|
46
|
+
currentY = matrix.m42;
|
|
47
|
+
dispatch('dragstart', { keyboard: true });
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
dispatch('dragend', { keyboard: true });
|
|
51
|
+
}
|
|
47
52
|
}
|
|
48
53
|
if (!isDragging) {
|
|
49
54
|
return;
|
|
@@ -55,16 +60,20 @@ const makeDraggable = ({ el, dragHandle, focusableDragHandle, dragStep, shiftDra
|
|
|
55
60
|
e.preventDefault();
|
|
56
61
|
break;
|
|
57
62
|
case 'ArrowLeft':
|
|
58
|
-
|
|
63
|
+
currentX -= distance;
|
|
64
|
+
el.style.transform = `translate(${currentX}px, ${currentY}px)`;
|
|
59
65
|
break;
|
|
60
66
|
case 'ArrowRight':
|
|
61
|
-
|
|
67
|
+
currentX += distance;
|
|
68
|
+
el.style.transform = `translate(${currentX}px, ${currentY}px)`;
|
|
62
69
|
break;
|
|
63
70
|
case 'ArrowUp':
|
|
64
|
-
|
|
71
|
+
currentY -= distance;
|
|
72
|
+
el.style.transform = `translate(${currentX}px, ${currentY}px)`;
|
|
65
73
|
break;
|
|
66
74
|
case 'ArrowDown':
|
|
67
|
-
|
|
75
|
+
currentY += distance;
|
|
76
|
+
el.style.transform = `translate(${currentX}px, ${currentY}px)`;
|
|
68
77
|
break;
|
|
69
78
|
}
|
|
70
79
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeDraggable.js","sources":["../../../src/utilities/makeDraggable/makeDraggable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;;;AAKG;AAiCH;;;AAGG;AACU,MAAA,aAAa,GAAG,CAAC,EAC5B,EAAE,EACF,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,aAAa,GACE,KAAI;IACnB,IAAI,UAAU,EAAE;AACd,QAAA,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAChC,QAAA,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS;;SACtB;AACL,QAAA,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;;IAG1B,IAAI,UAAU,GAAG,KAAK;IACtB,IAAI,QAAQ,GAAG,CAAC;IAChB,IAAI,QAAQ,GAAG,CAAC;IAChB,IAAI,aAAa,GAAG,CAAC;IACrB,IAAI,aAAa,GAAG,CAAC;AAErB,IAAA,MAAM,QAAQ,GAAG,CACf,IAAO,EACP,MAAsB,KACpB;AACF,QAAA,MAAM,SAAS,GAAoC;YACjD,MAAM;AACN,YAAA,OAAO,EAAE,IAAI;SACd;QACD,EAAE,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACpD,KAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,CAAgB,KAAI;AACrC,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;YACrB,UAAU,GAAG,CAAC,UAAU
|
|
1
|
+
{"version":3,"file":"makeDraggable.js","sources":["../../../src/utilities/makeDraggable/makeDraggable.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
export { snapScroll, scrollNext, scrollPrevious, blockClass, getNextSibling, getPreviousSibling, } from './snapscroll';
|
|
7
|
+
export { snapScroll, scrollNext, scrollPrevious, blockClass, getNextSibling, getPreviousSibling, hasNextSiblingNotInView, hasPreviousSiblingNotInView, } from './snapscroll';
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
export { blockClass, getNextSibling, getPreviousSibling, scrollNext, scrollPrevious, snapScroll } from './snapscroll.js';
|
|
8
|
+
export { blockClass, getNextSibling, getPreviousSibling, hasNextSiblingNotInView, hasPreviousSiblingNotInView, scrollNext, scrollPrevious, snapScroll } from './snapscroll.js';
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -27,3 +27,13 @@ export declare function scrollNext(): void;
|
|
|
27
27
|
export declare function scrollPrevious(): void;
|
|
28
28
|
export declare function getNextSibling(): Element | null | undefined;
|
|
29
29
|
export declare function getPreviousSibling(): Element | null | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Checks if there are any next siblings that are not fully in view
|
|
32
|
+
* @returns true if there are more items to scroll to in the next direction
|
|
33
|
+
*/
|
|
34
|
+
export declare function hasNextSiblingNotInView(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Checks if there are any previous siblings that are not fully in view
|
|
37
|
+
* @returns true if there are more items to scroll to in the previous direction
|
|
38
|
+
*/
|
|
39
|
+
export declare function hasPreviousSiblingNotInView(): boolean;
|
|
@@ -95,25 +95,92 @@ function snapScroll(body, child) {
|
|
|
95
95
|
function getFocusedItem() {
|
|
96
96
|
return document.querySelector(`.${selectionClass}`);
|
|
97
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Helper function to check if an element is fully visible within its parent
|
|
100
|
+
* @param element The element to check
|
|
101
|
+
* @param parent The parent container
|
|
102
|
+
* @returns true if element is fully visible within parent bounds
|
|
103
|
+
*/
|
|
104
|
+
function isElementFullyInView(element, parent) {
|
|
105
|
+
const elementRect = element.getBoundingClientRect();
|
|
106
|
+
const parentRect = parent.getBoundingClientRect();
|
|
107
|
+
return (elementRect.left >= parentRect.left && elementRect.right <= parentRect.right);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Finds the first sibling that is not in view by traversing in the specified direction
|
|
111
|
+
* @param startSibling The sibling to start checking from
|
|
112
|
+
* @param parent The parent container
|
|
113
|
+
* @param direction 'next' to check nextElementSibling, 'previous' to check previousElementSibling
|
|
114
|
+
* @returns The first sibling not in view, or the last sibling if all are in view
|
|
115
|
+
*/
|
|
116
|
+
function findFirstSiblingNotInView(startSibling, parent, direction) {
|
|
117
|
+
let currentSibling = startSibling;
|
|
118
|
+
let lastCheckedSibling = startSibling;
|
|
119
|
+
while (currentSibling) {
|
|
120
|
+
if (!isElementFullyInView(currentSibling, parent)) {
|
|
121
|
+
return currentSibling;
|
|
122
|
+
}
|
|
123
|
+
lastCheckedSibling = currentSibling;
|
|
124
|
+
currentSibling =
|
|
125
|
+
direction === 'next'
|
|
126
|
+
? currentSibling.nextElementSibling
|
|
127
|
+
: currentSibling.previousElementSibling;
|
|
128
|
+
}
|
|
129
|
+
// If all siblings are in view, return the last one checked
|
|
130
|
+
return lastCheckedSibling;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Helper function to scroll to a sibling element with proper handling for already-visible items
|
|
134
|
+
* @param sibling The sibling element to start checking from
|
|
135
|
+
* @param inline The scroll alignment ('start' for next, 'nearest' for previous)
|
|
136
|
+
* @param direction The direction to traverse ('next' or 'previous')
|
|
137
|
+
*/
|
|
138
|
+
function scrollToSibling(sibling, inline, direction) {
|
|
139
|
+
const parent = sibling.parentElement;
|
|
140
|
+
if (!parent) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
// Find the first sibling that is not in view
|
|
144
|
+
const targetSibling = findFirstSiblingNotInView(sibling, parent, direction);
|
|
145
|
+
const isFullyInView = isElementFullyInView(targetSibling, parent);
|
|
146
|
+
// Update the selection class for already visible items
|
|
147
|
+
if (isFullyInView) {
|
|
148
|
+
const currentlySnapped = document.querySelector(`.${selectionClass}`);
|
|
149
|
+
if (currentlySnapped) {
|
|
150
|
+
currentlySnapped.classList.remove(selectionClass);
|
|
151
|
+
}
|
|
152
|
+
targetSibling.classList.add(selectionClass);
|
|
153
|
+
}
|
|
154
|
+
// Always scroll to ensure proper snap alignment
|
|
155
|
+
targetSibling.scrollIntoView({
|
|
156
|
+
behavior: 'smooth',
|
|
157
|
+
inline,
|
|
158
|
+
});
|
|
159
|
+
// If already in view, scrollIntoView won't trigger scrollend
|
|
160
|
+
// So we manually dispatch it to ensure navigation buttons update
|
|
161
|
+
if (isFullyInView) {
|
|
162
|
+
setTimeout(() => {
|
|
163
|
+
parent.dispatchEvent(new Event('scrollend', { bubbles: true }));
|
|
164
|
+
}, 50);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
98
167
|
/**
|
|
99
168
|
* Scrolls to the next sibling element of the currently focused element
|
|
100
169
|
*/
|
|
101
170
|
function scrollNext() {
|
|
102
171
|
const sibling = getNextSibling();
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
});
|
|
172
|
+
if (sibling) {
|
|
173
|
+
scrollToSibling(sibling, 'start', 'next');
|
|
174
|
+
}
|
|
107
175
|
}
|
|
108
176
|
/**
|
|
109
177
|
* Scrolls to the previous sibling element of the currently focused element
|
|
110
178
|
*/
|
|
111
179
|
function scrollPrevious() {
|
|
112
180
|
const sibling = getPreviousSibling();
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
});
|
|
181
|
+
if (sibling) {
|
|
182
|
+
scrollToSibling(sibling, 'nearest', 'previous');
|
|
183
|
+
}
|
|
117
184
|
}
|
|
118
185
|
function getNextSibling() {
|
|
119
186
|
const item = getFocusedItem();
|
|
@@ -129,6 +196,42 @@ function getPreviousSibling() {
|
|
|
129
196
|
}
|
|
130
197
|
return item.previousElementSibling;
|
|
131
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Checks if there are any next siblings that are not fully in view
|
|
201
|
+
* @returns true if there are more items to scroll to in the next direction
|
|
202
|
+
*/
|
|
203
|
+
function hasNextSiblingNotInView() {
|
|
204
|
+
const item = getFocusedItem();
|
|
205
|
+
if (!item || !item.parentElement) {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
let currentSibling = item.nextElementSibling;
|
|
209
|
+
while (currentSibling) {
|
|
210
|
+
if (!isElementFullyInView(currentSibling, item.parentElement)) {
|
|
211
|
+
return true;
|
|
212
|
+
}
|
|
213
|
+
currentSibling = currentSibling.nextElementSibling;
|
|
214
|
+
}
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Checks if there are any previous siblings that are not fully in view
|
|
219
|
+
* @returns true if there are more items to scroll to in the previous direction
|
|
220
|
+
*/
|
|
221
|
+
function hasPreviousSiblingNotInView() {
|
|
222
|
+
const item = getFocusedItem();
|
|
223
|
+
if (!item || !item.parentElement) {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
let currentSibling = item.previousElementSibling;
|
|
227
|
+
while (currentSibling) {
|
|
228
|
+
if (!isElementFullyInView(currentSibling, item.parentElement)) {
|
|
229
|
+
return true;
|
|
230
|
+
}
|
|
231
|
+
currentSibling = currentSibling.previousElementSibling;
|
|
232
|
+
}
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
132
235
|
|
|
133
|
-
export { blockClass, getFocusedItem, getNextSibling, getPreviousSibling, scrollNext, scrollPrevious, snapScroll };
|
|
236
|
+
export { blockClass, getFocusedItem, getNextSibling, getPreviousSibling, hasNextSiblingNotInView, hasPreviousSiblingNotInView, scrollNext, scrollPrevious, snapScroll };
|
|
134
237
|
//# sourceMappingURL=snapscroll.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapscroll.js","sources":["../../../src/utilities/snapscroll/snapscroll.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAAA;;;;;AAKG;AAYH;;;;;AAKG;AAEU,MAAA,UAAU,GAAG,CAAG,EAAA,MAAM;AACnC,MAAM,QAAQ,GAAG,CAAG,EAAA,UAAU,OAAO;AACrC,MAAM,cAAc,GAAG,CAAG,EAAA,UAAU,aAAa;AAEjC,SAAA,UAAU,CAAC,IAAY,EAAE,KAAa,EAAA;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX;;IAGF,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IACpD,YAAY,CAAC,WAAW,GAAG;KACxB,UAAU,CAAA;;;;;;;;KAQV,UAAU,CAAA;;;;KAIV,UAAU,CAAA;;;;;CAKd;AACC,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AAEvC,IAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AAEhC,IAAA,MAAM,mBAAmB,GAAG,oBAAoB,IAAI,MAAM;IAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAE/C,IAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AACtB,YAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,SAAC,CAAC;;IAGJ,IAAI,mBAAmB,EAAE;QACvB,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,KAAK,KAAI;YACpD,MAAM,SAAS,GAAG,KAAkB;YACpC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAI,CAAA,EAAA,cAAc,CAAE,CAAA,CAAC;YAErE,IAAI,gBAAgB,EAAE;AACpB,gBAAA,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC;;YAGnD,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;AAC1D,SAAC,CAAC;;SACG;AACL,QAAA,MAAM,OAAO,GAAiC,CAAC,OAAO,KAAI;AACxD,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACxB,gBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC;AACrE,aAAC,CAAC;AACJ,SAAC;AACD,QAAA,IAAI,QAAQ;QACZ,MAAM,cAAc,GAAG,MAAK;YAC1B,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,UAAU,EAAE;;AAEvB,YAAA,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE;AAC3C,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,SAAS,EAAE,CAAC;AACb,aAAA,CAAC;AACF,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACzB,gBAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AACzB,aAAC,CAAC;AACJ,SAAC;AACD,QAAA,cAAc,EAAE;;AAEpB;AAEA;;;AAGG;SACa,cAAc,GAAA;IAC5B,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,cAAc,CAAA,CAAE,CAAC;AACrD;AAEA
|
|
1
|
+
{"version":3,"file":"snapscroll.js","sources":["../../../src/utilities/snapscroll/snapscroll.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*
|
|
4
|
+
* Copyright IBM Corp. 2026
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
7
|
+
* LICENSE file in the root directory of this source tree.
|
|
8
|
+
*/
|
|
9
|
+
export declare const handleClick: () => void;
|
|
10
|
+
export declare const handleDone: () => void;
|
|
11
|
+
export declare const handleCoachmarkOpened: () => void;
|
|
@@ -405,8 +405,13 @@ declare class CDSOptionsTile extends CDSOptionsTile_base {
|
|
|
405
405
|
* here and only referenced internally.
|
|
406
406
|
*/
|
|
407
407
|
private _open;
|
|
408
|
+
/**
|
|
409
|
+
* Tracks whether the toggle slot has content
|
|
410
|
+
*/
|
|
411
|
+
private _hasToggle;
|
|
408
412
|
static get eventOpen(): string;
|
|
409
413
|
static get eventClose(): string;
|
|
414
|
+
private _handleToggleSlotChange;
|
|
410
415
|
private _toggle;
|
|
411
416
|
private _handleOpen;
|
|
412
417
|
private _handleClose;
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
export { snapScroll, scrollNext, scrollPrevious, blockClass, getNextSibling, getPreviousSibling, } from './snapscroll';
|
|
7
|
+
export { snapScroll, scrollNext, scrollPrevious, blockClass, getNextSibling, getPreviousSibling, hasNextSiblingNotInView, hasPreviousSiblingNotInView, } from './snapscroll';
|
|
@@ -27,3 +27,13 @@ export declare function scrollNext(): void;
|
|
|
27
27
|
export declare function scrollPrevious(): void;
|
|
28
28
|
export declare function getNextSibling(): Element | null | undefined;
|
|
29
29
|
export declare function getPreviousSibling(): Element | null | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Checks if there are any next siblings that are not fully in view
|
|
32
|
+
* @returns true if there are more items to scroll to in the next direction
|
|
33
|
+
*/
|
|
34
|
+
export declare function hasNextSiblingNotInView(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Checks if there are any previous siblings that are not fully in view
|
|
37
|
+
* @returns true if there are more items to scroll to in the previous direction
|
|
38
|
+
*/
|
|
39
|
+
export declare function hasPreviousSiblingNotInView(): boolean;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carbon/ibm-products-web-components",
|
|
3
3
|
"description": "Carbon for IBM Products Web Components",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.34.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "es/index.js",
|
|
7
7
|
"module": "es/index.js",
|
|
@@ -56,11 +56,10 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@carbon-labs/wc-empty-state": "^0.13.0",
|
|
59
|
-
"@carbon/ibm-products-styles": "^2.
|
|
59
|
+
"@carbon/ibm-products-styles": "^2.81.0",
|
|
60
60
|
"@carbon/styles": "^1.100.0",
|
|
61
61
|
"@carbon/utilities": "^0.16.0",
|
|
62
62
|
"@carbon/web-components": "2.48.0",
|
|
63
|
-
"@figma/code-connect": "^1.3.6",
|
|
64
63
|
"@ibm/telemetry-js": "^1.10.2",
|
|
65
64
|
"@lit-labs/signals": "^0.1.2",
|
|
66
65
|
"@lit/context": "^1.1.5",
|
|
@@ -72,7 +71,7 @@
|
|
|
72
71
|
"@carbon/icon-helpers": "^10.72.0",
|
|
73
72
|
"@carbon/icons": "^11.75.0",
|
|
74
73
|
"@carbon/motion": "^11.41.0",
|
|
75
|
-
"@figma/code-connect": "^1.
|
|
74
|
+
"@figma/code-connect": "^1.4.0",
|
|
76
75
|
"@ibm/telemetry-js-config-generator": "^2.1.0",
|
|
77
76
|
"@mordech/vite-lit-loader": "^0.37.0",
|
|
78
77
|
"@open-wc/testing": "^4.0.0",
|
|
@@ -113,5 +112,5 @@
|
|
|
113
112
|
"vitest": "^3.2.0",
|
|
114
113
|
"web-component-analyzer": "2.0.0"
|
|
115
114
|
},
|
|
116
|
-
"gitHead": "
|
|
115
|
+
"gitHead": "d5645922d967cd5c602f4c111bab8a6b5f633abe"
|
|
117
116
|
}
|
|
@@ -18,7 +18,10 @@ $prefix: 'c4p';
|
|
|
18
18
|
$block-class: #{$prefix}--options-tile;
|
|
19
19
|
|
|
20
20
|
:host(#{$prefix}-options-tile) {
|
|
21
|
+
position: relative;
|
|
22
|
+
|
|
21
23
|
.#{$block-class} {
|
|
24
|
+
position: relative;
|
|
22
25
|
background: $layer-01;
|
|
23
26
|
border-block-end: 1px solid $border-subtle-01;
|
|
24
27
|
|
|
@@ -52,8 +55,17 @@ $block-class: #{$prefix}--options-tile;
|
|
|
52
55
|
}
|
|
53
56
|
|
|
54
57
|
&-right {
|
|
58
|
+
position: absolute;
|
|
55
59
|
display: flex;
|
|
56
60
|
align-items: center;
|
|
61
|
+
block-size: $spacing-09;
|
|
62
|
+
inset-block-start: 0;
|
|
63
|
+
inset-inline-end: 0;
|
|
64
|
+
padding-inline: $spacing-05;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&--has-toggle {
|
|
68
|
+
inline-size: calc(100% - ($spacing-09 + ($spacing-05 * 3)));
|
|
57
69
|
}
|
|
58
70
|
}
|
|
59
71
|
|