@riverty/web-components 5.8.0 → 6.1.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/CHANGELOG.md +107 -0
- package/custom-elements.json +215 -362
- package/dist/cjs/index-DJ4H_bFj.js +6 -10
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/r-accordion-panel.cjs.entry.js +1 -1
- package/dist/cjs/r-accordion-section.cjs.entry.js +1 -1
- package/dist/cjs/r-accordion-trigger.cjs.entry.js +5 -35
- package/dist/cjs/r-accordion.cjs.entry.js +3 -7
- package/dist/cjs/r-alert.cjs.entry.js +26 -11
- package/dist/cjs/r-badge.cjs.entry.js +1 -1
- package/dist/cjs/r-button.cjs.entry.js +1 -1
- package/dist/cjs/r-checkbox-group.cjs.entry.js +1 -11
- package/dist/cjs/r-checkbox.cjs.entry.js +76 -75
- package/dist/cjs/r-dialog.cjs.entry.js +3 -11
- package/dist/cjs/r-hint_2.cjs.entry.js +50 -0
- package/dist/cjs/{r-hint_3.cjs.entry.js → r-icon-button_2.cjs.entry.js} +64 -51
- package/dist/cjs/r-icon.cjs.entry.js +1 -1
- package/dist/cjs/r-input-code.cjs.entry.js +112 -17
- package/dist/cjs/r-input-date.cjs.entry.js +8 -14
- package/dist/cjs/r-input-password.cjs.entry.js +16 -8
- package/dist/cjs/r-input-phone-number.cjs.entry.js +7 -12
- package/dist/cjs/r-input.cjs.entry.js +90 -42
- package/dist/cjs/r-list-item.cjs.entry.js +20 -19
- package/dist/cjs/r-panel.cjs.entry.js +5 -5
- package/dist/cjs/r-popover-action.cjs.entry.js +1 -1
- package/dist/cjs/r-popover-content.cjs.entry.js +1 -1
- package/dist/cjs/r-popover-headline.cjs.entry.js +1 -1
- package/dist/cjs/r-popover-trigger.cjs.entry.js +1 -1
- package/dist/cjs/r-popover.cjs.entry.js +3 -3
- package/dist/cjs/r-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/r-radio-button-description.cjs.entry.js +1 -1
- package/dist/cjs/r-radio-button-leading.cjs.entry.js +1 -1
- package/dist/cjs/r-radio-button-title.cjs.entry.js +1 -1
- package/dist/cjs/r-radio-button-trailing.cjs.entry.js +1 -1
- package/dist/cjs/r-radio-button.cjs.entry.js +29 -12
- package/dist/cjs/r-radio-group.cjs.entry.js +18 -22
- package/dist/cjs/r-select-option.cjs.entry.js +1 -1
- package/dist/cjs/r-select.cjs.entry.js +6 -24
- package/dist/cjs/r-skip-link.cjs.entry.js +1 -1
- package/dist/cjs/r-stepper-item.cjs.entry.js +3 -3
- package/dist/cjs/r-stepper.cjs.entry.js +2 -2
- package/dist/cjs/r-tab-panel.cjs.entry.js +1 -1
- package/dist/cjs/r-tab.cjs.entry.js +6 -2
- package/dist/cjs/r-tabs-list.cjs.entry.js +160 -2
- package/dist/cjs/r-tabs.cjs.entry.js +34 -6
- package/dist/cjs/r-textarea.cjs.entry.js +7 -19
- package/dist/cjs/r-toast-group.cjs.entry.js +2 -2
- package/dist/cjs/r-toast.cjs.entry.js +31 -11
- package/dist/cjs/web-components.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +0 -1
- package/dist/collection/components/accordion/accordion.css +0 -2
- package/dist/collection/components/accordion/accordion.js +4 -8
- package/dist/collection/components/accordion/exports.js +1 -1
- package/dist/collection/components/accordion-panel/accordion-panel.js +1 -1
- package/dist/collection/components/accordion-section/accordion-section.js +1 -1
- package/dist/collection/components/accordion-trigger/accordion-trigger.css +0 -4
- package/dist/collection/components/accordion-trigger/accordion-trigger.js +4 -215
- package/dist/collection/components/alert/alert.css +8 -3
- package/dist/collection/components/alert/alert.js +48 -10
- package/dist/collection/components/badge/badge.js +1 -1
- package/dist/collection/components/button/button.js +1 -1
- package/dist/collection/components/checkbox/checkbox.js +80 -98
- package/dist/collection/components/checkbox-group/checkbox-group.js +1 -50
- package/dist/collection/components/dialog/dialog.css +1 -3
- package/dist/collection/components/dialog/dialog.js +2 -10
- package/dist/collection/components/hint/hint.js +2 -2
- package/dist/collection/components/icon/bundled-icons/riverty-kit.json +1 -1
- package/dist/collection/components/icon/riverty-kit.js +1 -1
- package/dist/collection/components/icon-button/icon-button.js +22 -3
- package/dist/collection/components/input/exports.js +2 -0
- package/dist/collection/components/input/input.css +3 -0
- package/dist/collection/components/input/input.js +233 -371
- package/dist/collection/components/input-code/exports.js +2 -0
- package/dist/collection/components/input-code/input-code.js +294 -26
- package/dist/collection/components/input-date/input-date.js +8 -77
- package/dist/collection/components/input-password/exports.js +1 -0
- package/dist/collection/components/input-password/input-password.css +1 -0
- package/dist/collection/components/input-password/input-password.js +195 -70
- package/dist/collection/components/input-phone-number/input-phone-number.js +7 -75
- package/dist/collection/components/label/label.js +3 -113
- package/dist/collection/components/list-item/list-item/list-item.css +53 -19
- package/dist/collection/components/list-item/list-item/list-item.js +38 -40
- package/dist/collection/components/panel/panel.css +40 -17
- package/dist/collection/components/panel/panel.js +6 -6
- package/dist/collection/components/popover/exports.js +0 -1
- package/dist/collection/components/popover/popover.css +2 -10
- package/dist/collection/components/popover/popover.js +2 -55
- package/dist/collection/components/popover-action/popover-action.js +1 -1
- package/dist/collection/components/popover-content/popover-content.js +1 -1
- package/dist/collection/components/popover-headline/popover-headline.js +1 -1
- package/dist/collection/components/popover-trigger/popover-trigger.js +1 -1
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio-button/radio-button.js +49 -12
- package/dist/collection/components/radio-button-description/radio-button-description.js +1 -1
- package/dist/collection/components/radio-button-leading/radio-button-leading.js +1 -1
- package/dist/collection/components/radio-button-title/radio-button-title.js +1 -1
- package/dist/collection/components/radio-button-trailing/radio-button-trailing.js +1 -1
- package/dist/collection/components/radio-group/radio-group.js +38 -124
- package/dist/collection/components/select/select.js +6 -330
- package/dist/collection/components/select-option/select-option.js +1 -1
- package/dist/collection/components/skip-link/skip-link.js +1 -1
- package/dist/collection/components/stepper/stepper.css +1 -1
- package/dist/collection/components/stepper/stepper.js +1 -1
- package/dist/collection/components/stepper-item/stepper-item.css +3 -3
- package/dist/collection/components/stepper-item/stepper-item.js +2 -2
- package/dist/collection/components/tab/tab.css +29 -29
- package/dist/collection/components/tab/tab.js +5 -1
- package/dist/collection/components/tab-panel/tab-panel.js +1 -1
- package/dist/collection/components/tabs/tabs.js +34 -6
- package/dist/collection/components/tabs-list/exports.js +2 -0
- package/dist/collection/components/tabs-list/tabs-list.css +43 -2
- package/dist/collection/components/tabs-list/tabs-list.js +277 -1
- package/dist/collection/components/textarea/textarea.css +1 -1
- package/dist/collection/components/textarea/textarea.js +6 -158
- package/dist/collection/components/toast/toast.css +35 -9
- package/dist/collection/components/toast/toast.js +44 -32
- package/dist/collection/components/toast-group/toast-group.css +1 -1
- package/dist/collection/components/toast-group/toast-group.js +1 -1
- package/dist/collection/components/tooltip/tooltip.js +2 -2
- package/dist/esm/index-Da7qOBFr.js +6 -10
- package/dist/esm/loader.js +1 -1
- package/dist/esm/r-accordion-panel.entry.js +1 -1
- package/dist/esm/r-accordion-section.entry.js +1 -1
- package/dist/esm/r-accordion-trigger.entry.js +5 -35
- package/dist/esm/r-accordion.entry.js +3 -7
- package/dist/esm/r-alert.entry.js +26 -11
- package/dist/esm/r-badge.entry.js +1 -1
- package/dist/esm/r-button.entry.js +1 -1
- package/dist/esm/r-checkbox-group.entry.js +1 -11
- package/dist/esm/r-checkbox.entry.js +76 -75
- package/dist/esm/r-dialog.entry.js +3 -11
- package/dist/esm/r-hint_2.entry.js +47 -0
- package/dist/esm/{r-hint_3.entry.js → r-icon-button_2.entry.js} +65 -51
- package/dist/esm/r-icon.entry.js +1 -1
- package/dist/esm/r-input-code.entry.js +112 -17
- package/dist/esm/r-input-date.entry.js +8 -14
- package/dist/esm/r-input-password.entry.js +16 -8
- package/dist/esm/r-input-phone-number.entry.js +7 -12
- package/dist/esm/r-input.entry.js +90 -42
- package/dist/esm/r-list-item.entry.js +20 -19
- package/dist/esm/r-panel.entry.js +5 -5
- package/dist/esm/r-popover-action.entry.js +1 -1
- package/dist/esm/r-popover-content.entry.js +1 -1
- package/dist/esm/r-popover-headline.entry.js +1 -1
- package/dist/esm/r-popover-trigger.entry.js +1 -1
- package/dist/esm/r-popover.entry.js +3 -3
- package/dist/esm/r-progress-bar.entry.js +1 -1
- package/dist/esm/r-radio-button-description.entry.js +1 -1
- package/dist/esm/r-radio-button-leading.entry.js +1 -1
- package/dist/esm/r-radio-button-title.entry.js +1 -1
- package/dist/esm/r-radio-button-trailing.entry.js +1 -1
- package/dist/esm/r-radio-button.entry.js +29 -12
- package/dist/esm/r-radio-group.entry.js +18 -22
- package/dist/esm/r-select-option.entry.js +1 -1
- package/dist/esm/r-select.entry.js +6 -24
- package/dist/esm/r-skip-link.entry.js +1 -1
- package/dist/esm/r-stepper-item.entry.js +3 -3
- package/dist/esm/r-stepper.entry.js +2 -2
- package/dist/esm/r-tab-panel.entry.js +1 -1
- package/dist/esm/r-tab.entry.js +6 -2
- package/dist/esm/r-tabs-list.entry.js +161 -3
- package/dist/esm/r-tabs.entry.js +34 -6
- package/dist/esm/r-textarea.entry.js +7 -19
- package/dist/esm/r-toast-group.entry.js +2 -2
- package/dist/esm/r-toast.entry.js +31 -11
- package/dist/esm/web-components.js +1 -1
- package/dist/types/components/accordion/accordion.d.ts +1 -5
- package/dist/types/components/accordion/exports.d.ts +1 -1
- package/dist/types/components/accordion-trigger/accordion-trigger.d.ts +0 -36
- package/dist/types/components/alert/alert.d.ts +6 -1
- package/dist/types/components/checkbox/checkbox.d.ts +24 -34
- package/dist/types/components/checkbox-group/checkbox-group.d.ts +0 -11
- package/dist/types/components/dialog/dialog.d.ts +0 -2
- package/dist/types/components/icon/exports.d.ts +1 -0
- package/dist/types/components/icon/icon-data.d.ts +1 -0
- package/dist/types/components/icon/riverty-kit.d.ts +1 -0
- package/dist/types/components/icon-button/icon-button.d.ts +4 -0
- package/dist/types/components/input/exports.d.ts +4 -0
- package/dist/types/components/input/input.d.ts +47 -73
- package/dist/types/components/input-code/exports.d.ts +4 -0
- package/dist/types/components/input-code/input-code.d.ts +49 -7
- package/dist/types/components/input-date/input-date.d.ts +0 -16
- package/dist/types/components/input-password/exports.d.ts +1 -0
- package/dist/types/components/input-password/input-password.d.ts +48 -16
- package/dist/types/components/input-phone-number/input-phone-number.d.ts +0 -16
- package/dist/types/components/label/label.d.ts +0 -18
- package/dist/types/components/list-item/list-item/list-item.d.ts +5 -9
- package/dist/types/components/popover/exports.d.ts +0 -2
- package/dist/types/components/popover/popover.d.ts +1 -14
- package/dist/types/components/radio-button/radio-button.d.ts +5 -0
- package/dist/types/components/radio-group/radio-group.d.ts +5 -26
- package/dist/types/components/select/select.d.ts +0 -50
- package/dist/types/components/tabs/tabs.d.ts +1 -0
- package/dist/types/components/tabs-list/exports.d.ts +4 -0
- package/dist/types/components/tabs-list/tabs-list.d.ts +38 -0
- package/dist/types/components/textarea/textarea.d.ts +0 -32
- package/dist/types/components/toast/toast.d.ts +11 -5
- package/dist/types/components.d.ts +280 -638
- package/dist/web-components/bundled-icons/riverty-kit.json +1 -1
- package/dist/web-components/p-0347feff.entry.js +1 -0
- package/dist/web-components/p-159822fe.entry.js +1 -0
- package/dist/web-components/p-19407a14.entry.js +1 -0
- package/dist/web-components/{p-5744d75c.entry.js → p-1da75540.entry.js} +1 -1
- package/dist/web-components/p-26ef77d6.entry.js +1 -0
- package/dist/web-components/p-3884c6e7.entry.js +1 -0
- package/dist/web-components/p-3f60c6c0.entry.js +1 -0
- package/dist/web-components/{p-87f39749.entry.js → p-4595fa8e.entry.js} +1 -1
- package/dist/web-components/{p-4e3df002.entry.js → p-4cc58c6a.entry.js} +1 -1
- package/dist/web-components/p-4f261b63.entry.js +1 -0
- package/dist/web-components/{p-e0e2f2b2.entry.js → p-50893211.entry.js} +1 -1
- package/dist/web-components/{p-72fa1fd1.entry.js → p-550e2237.entry.js} +1 -1
- package/dist/web-components/p-589baaf9.entry.js +1 -0
- package/dist/web-components/{p-3b4e3faf.entry.js → p-5eeb7002.entry.js} +1 -1
- package/dist/web-components/p-60341de2.entry.js +1 -0
- package/dist/web-components/{p-44ae9f33.entry.js → p-62b788bf.entry.js} +1 -1
- package/dist/web-components/p-63fd817d.entry.js +1 -0
- package/dist/web-components/p-67fa3f84.entry.js +1 -0
- package/dist/web-components/p-6bb44ec6.entry.js +1 -0
- package/dist/web-components/p-6cc2ea2c.entry.js +1 -0
- package/dist/web-components/p-70784685.entry.js +1 -0
- package/dist/web-components/p-7ce57332.entry.js +1 -0
- package/dist/web-components/{p-429213ea.entry.js → p-7fed6f4d.entry.js} +1 -1
- package/dist/web-components/p-8a66d20c.entry.js +1 -0
- package/dist/web-components/{p-c7f8e59b.entry.js → p-8c31cbd5.entry.js} +1 -1
- package/dist/web-components/p-8dac326b.entry.js +1 -0
- package/dist/web-components/p-92c7cf33.entry.js +1 -0
- package/dist/web-components/{p-1c2497de.entry.js → p-9ef1bbee.entry.js} +1 -1
- package/dist/web-components/p-a7d22c76.entry.js +1 -0
- package/dist/web-components/p-b96d59ca.entry.js +1 -0
- package/dist/web-components/p-ba801820.entry.js +1 -0
- package/dist/web-components/{p-a022f356.entry.js → p-bfc8c077.entry.js} +1 -1
- package/dist/web-components/p-c05b05da.entry.js +1 -0
- package/dist/web-components/p-c1e748f2.entry.js +1 -0
- package/dist/web-components/{p-5bbd6e3c.entry.js → p-c478712b.entry.js} +1 -1
- package/dist/web-components/p-c95b6470.entry.js +1 -0
- package/dist/web-components/p-cd5daad2.entry.js +1 -0
- package/dist/web-components/p-cdd88c5a.entry.js +1 -0
- package/dist/web-components/{p-3078b2b8.entry.js → p-d054eb4d.entry.js} +1 -1
- package/dist/web-components/{p-8563a1ab.entry.js → p-d433a828.entry.js} +1 -1
- package/dist/web-components/p-d7726e46.entry.js +1 -0
- package/dist/web-components/p-d819c8e5.entry.js +1 -0
- package/dist/web-components/{p-755cc697.entry.js → p-e4dc60f0.entry.js} +1 -1
- package/dist/web-components/{p-d1379ac6.entry.js → p-f9d5004c.entry.js} +1 -1
- package/dist/web-components/web-components.esm.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/r-accordion-item.cjs.entry.js +0 -78
- package/dist/cjs/r-icon-button.cjs.entry.js +0 -81
- package/dist/collection/components/accordion-item/accordion-item.css +0 -121
- package/dist/collection/components/accordion-item/accordion-item.js +0 -138
- package/dist/esm/r-accordion-item.entry.js +0 -76
- package/dist/esm/r-icon-button.entry.js +0 -79
- package/dist/types/components/accordion-item/accordion-item.d.ts +0 -26
- package/dist/web-components/p-00ca474f.entry.js +0 -1
- package/dist/web-components/p-0bb04d79.entry.js +0 -1
- package/dist/web-components/p-15ac0fdd.entry.js +0 -1
- package/dist/web-components/p-1c956370.entry.js +0 -1
- package/dist/web-components/p-2a512983.entry.js +0 -1
- package/dist/web-components/p-2b2f581a.entry.js +0 -1
- package/dist/web-components/p-2e18e762.entry.js +0 -1
- package/dist/web-components/p-3bc93d65.entry.js +0 -1
- package/dist/web-components/p-4bd3e077.entry.js +0 -1
- package/dist/web-components/p-51a5804b.entry.js +0 -1
- package/dist/web-components/p-56da04d8.entry.js +0 -1
- package/dist/web-components/p-5e6aabd8.entry.js +0 -1
- package/dist/web-components/p-656229de.entry.js +0 -1
- package/dist/web-components/p-6a4f3836.entry.js +0 -1
- package/dist/web-components/p-7775228c.entry.js +0 -1
- package/dist/web-components/p-7ad8e78b.entry.js +0 -1
- package/dist/web-components/p-85a9af42.entry.js +0 -1
- package/dist/web-components/p-9e50120b.entry.js +0 -1
- package/dist/web-components/p-a7e7f8fa.entry.js +0 -1
- package/dist/web-components/p-ad9b2a48.entry.js +0 -1
- package/dist/web-components/p-b2f03016.entry.js +0 -1
- package/dist/web-components/p-b87ad83b.entry.js +0 -1
- package/dist/web-components/p-c937bd92.entry.js +0 -1
- package/dist/web-components/p-cbcd7699.entry.js +0 -1
- package/dist/web-components/p-dbe579e8.entry.js +0 -1
- package/dist/web-components/p-e4b66277.entry.js +0 -1
- package/dist/web-components/p-e6a31881.entry.js +0 -1
- package/dist/web-components/p-f2577a3c.entry.js +0 -1
- package/dist/web-components/p-f6a92287.entry.js +0 -1
|
@@ -180,23 +180,51 @@ export class RTabs {
|
|
|
180
180
|
history.pushState({ tabId, tabsGroup }, '', url.toString());
|
|
181
181
|
}
|
|
182
182
|
_changeFocusTab(tab, keycode) {
|
|
183
|
-
var _a, _b, _c, _d;
|
|
184
183
|
const tabs = Array.from(this.tabElements).filter(element => !element.disabled);
|
|
185
184
|
const index = tabs.indexOf(tab);
|
|
185
|
+
let nextTab;
|
|
186
186
|
switch (keycode) {
|
|
187
187
|
case 'ArrowLeft':
|
|
188
|
-
index === 0 ?
|
|
188
|
+
nextTab = index === 0 ? tabs[tabs.length - 1] : tabs[index - 1];
|
|
189
189
|
break;
|
|
190
190
|
case 'ArrowRight':
|
|
191
|
-
index === tabs.length - 1 ?
|
|
191
|
+
nextTab = index === tabs.length - 1 ? tabs[0] : tabs[index + 1];
|
|
192
192
|
break;
|
|
193
193
|
case 'Home':
|
|
194
|
-
|
|
194
|
+
nextTab = tabs[0];
|
|
195
195
|
break;
|
|
196
196
|
case 'End':
|
|
197
|
-
|
|
197
|
+
nextTab = tabs[tabs.length - 1];
|
|
198
198
|
break;
|
|
199
199
|
}
|
|
200
|
+
if (nextTab) {
|
|
201
|
+
nextTab.focus();
|
|
202
|
+
this.scrollTabIntoView(nextTab);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
scrollTabIntoView(tab) {
|
|
206
|
+
var _a;
|
|
207
|
+
const tabsList = this.host.querySelector('r-tabs-list');
|
|
208
|
+
if (!tabsList)
|
|
209
|
+
return;
|
|
210
|
+
const container = (_a = tabsList.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.r-tabs-list--tabs-container');
|
|
211
|
+
if (!container)
|
|
212
|
+
return;
|
|
213
|
+
const containerRect = container.getBoundingClientRect();
|
|
214
|
+
const tabRect = tab.getBoundingClientRect();
|
|
215
|
+
// Check if tab is fully visible
|
|
216
|
+
const isFullyVisible = tabRect.left >= containerRect.left - 1 &&
|
|
217
|
+
tabRect.right <= containerRect.right + 1;
|
|
218
|
+
if (isFullyVisible)
|
|
219
|
+
return;
|
|
220
|
+
// Calculate scroll offset to center the tab
|
|
221
|
+
const centerOffset = (tabRect.left - containerRect.left) -
|
|
222
|
+
(containerRect.width / 2) +
|
|
223
|
+
(tabRect.width / 2);
|
|
224
|
+
container.scrollBy({
|
|
225
|
+
left: centerOffset,
|
|
226
|
+
behavior: 'smooth'
|
|
227
|
+
});
|
|
200
228
|
}
|
|
201
229
|
/** Listen for "click" event on `<r-tab>` */
|
|
202
230
|
tabChangeAction(event) {
|
|
@@ -233,7 +261,7 @@ export class RTabs {
|
|
|
233
261
|
this._changeFocusTab(e.target, e.detail.keycode);
|
|
234
262
|
}
|
|
235
263
|
render() {
|
|
236
|
-
return (h(Host, { key: '
|
|
264
|
+
return (h(Host, { key: 'b058fd461951dad54e7eb73f7dc5df838c864ebd', class: "r-tabs" }, h("slot", { key: '8e93fded06f0f01dc326e8368aac200d36613753' })));
|
|
237
265
|
}
|
|
238
266
|
static get is() { return "r-tabs"; }
|
|
239
267
|
static get encapsulation() { return "shadow"; }
|
|
@@ -2,15 +2,56 @@
|
|
|
2
2
|
display: block;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
+
:host([variant=compact]) {
|
|
6
|
+
--r-tabs-list--r-tab--margin-right: 0;
|
|
7
|
+
--r-tabs-list--r-tab--flex: 1;
|
|
8
|
+
--r-tab--width: 100%;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
:host([scrollable=true]) {
|
|
12
|
+
--r-tabs-list--tabs-container--margin: -6px 4px ;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:host([border=branded]) {
|
|
16
|
+
--r-tab--marker--background-color: var(--r-border-brand-vanguard, #527a42);
|
|
17
|
+
}
|
|
18
|
+
|
|
5
19
|
.r-tabs-list {
|
|
6
20
|
display: var(--r-tabs-list--display, flex);
|
|
7
|
-
margin-bottom: var(--r-tabs-list--margin-bottom,
|
|
21
|
+
margin-bottom: var(--r-tabs-list--margin-bottom, var(--r-spacing-250, 2.5rem));
|
|
8
22
|
border-bottom-width: var(--r-tabs-list--border-bottom-width, 1px);
|
|
9
23
|
border-bottom-style: var(--r-tabs-list--border-bottom-style, solid);
|
|
10
24
|
border-bottom-color: var(--r-tabs-list--border-bottom-color, var(--r-border-softer, #c9c9c9));
|
|
11
25
|
}
|
|
26
|
+
.r-tabs-list--scroll-button {
|
|
27
|
+
--r-icon-button--border-radius: var(--r-tabs-list--border-radius, 0);
|
|
28
|
+
--r-icon-button--width: var(--r-tabs-list--scroll-button--width, var(--r-spacing-200, 2rem));
|
|
29
|
+
--r-icon-button--height: var(--r-tabs-list--scroll-button--height, var(--r-spacing-200, 2rem));
|
|
30
|
+
}
|
|
31
|
+
.r-tabs-list--tabs-container {
|
|
32
|
+
display: var(--r-tabs-list--tabs-container--display, flex);
|
|
33
|
+
flex: var(--r-tabs-list--tabs-container--flex, 1);
|
|
34
|
+
overflow: var(--r-tabs-list--tabs-container--overflow, scroll hidden);
|
|
35
|
+
scroll-snap-type: var(--r-tabs-list--tabs-container--scroll-snap-type, x proximity);
|
|
36
|
+
scrollbar-width: var(--r-tabs-list--tabs-container--scrollbar-width, none);
|
|
37
|
+
margin: var(--r-tabs-list--tabs-container--margin, -6px);
|
|
38
|
+
padding: var(--r-tabs-list--tabs-container--padding, 6px);
|
|
39
|
+
}
|
|
40
|
+
.r-tabs-list--scroll-button-container {
|
|
41
|
+
display: var(--r-tabs-list--scroll-button-container--display, flex);
|
|
42
|
+
align-items: var(--r-tabs-list--scroll-button-container--align-items, start);
|
|
43
|
+
gap: var(--r-tabs-list--scroll-button-container--gap, var(--r-spacing-025, 0.25rem));
|
|
44
|
+
}
|
|
45
|
+
.r-tabs-list--scroll-indicator {
|
|
46
|
+
margin-top: var(--r-tabs-list--scroll-indicator--margin, 2px);
|
|
47
|
+
width: var(--r-tabs-list--scroll-button--after--width, 1px);
|
|
48
|
+
height: var(--r-tabs-list--scroll-button--after--height, var(--r-spacing-175, 1.75rem));
|
|
49
|
+
background-color: var(--r-tabs-list----scroll-indicator--background-color, var(--r-border-softer, #c9c9c9));
|
|
50
|
+
z-index: var(--r-tabs-list----scroll-indicator--z-index, 1);
|
|
51
|
+
}
|
|
12
52
|
.r-tabs-list ::slotted(r-tab) {
|
|
13
|
-
margin-right: var(--r-tabs-list--r-tab--margin-right,
|
|
53
|
+
margin-right: var(--r-tabs-list--r-tab--margin-right, var(--r-spacing-250, 2.5rem));
|
|
54
|
+
flex: var(--r-tabs-list--r-tab--flex, none);
|
|
14
55
|
}
|
|
15
56
|
.r-tabs-list ::slotted(r-tab:last-of-type) {
|
|
16
57
|
margin-right: var(--r-tabs-list--r-tab--last-of-type--margin-right, 0);
|
|
@@ -1,7 +1,166 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
2
|
export class RTabsList {
|
|
3
|
+
constructor() {
|
|
4
|
+
/**
|
|
5
|
+
* Visual variant of the tab list
|
|
6
|
+
* @defaulr 'expanded'
|
|
7
|
+
* */
|
|
8
|
+
this.variant = 'expanded';
|
|
9
|
+
/**
|
|
10
|
+
* Border style of the active tab
|
|
11
|
+
* @default 'standard'
|
|
12
|
+
* */
|
|
13
|
+
this.border = 'standard';
|
|
14
|
+
/** Indicates if the tab list is scrollable */
|
|
15
|
+
this.scrollable = false;
|
|
16
|
+
/** Indicates if the first tab is fully visible */
|
|
17
|
+
this.firstItemVisible = true;
|
|
18
|
+
/** Indicates if the last tab is fully visible */
|
|
19
|
+
this.lastItemVisible = false;
|
|
20
|
+
this.initiatizeResizeObserver = () => {
|
|
21
|
+
if (!this.containerRef || this.resizeObserver)
|
|
22
|
+
return;
|
|
23
|
+
this.resizeObserver = new ResizeObserver(() => this.updateScrollState());
|
|
24
|
+
this.resizeObserver.observe(this.containerRef);
|
|
25
|
+
};
|
|
26
|
+
this.updateScrollState = () => {
|
|
27
|
+
if (!this.containerRef)
|
|
28
|
+
return;
|
|
29
|
+
const { scrollWidth, clientWidth } = this.containerRef;
|
|
30
|
+
const containerRect = this.containerRef.getBoundingClientRect();
|
|
31
|
+
const tabs = Array.from(this.tabElements);
|
|
32
|
+
// Check if content is scrollable
|
|
33
|
+
this.scrollable = scrollWidth > clientWidth;
|
|
34
|
+
if (!this.scrollable || tabs.length === 0) {
|
|
35
|
+
this.firstItemVisible = true;
|
|
36
|
+
this.lastItemVisible = true;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const firstTab = tabs[0];
|
|
40
|
+
const firstTabRect = firstTab.getBoundingClientRect();
|
|
41
|
+
this.firstItemVisible = firstTabRect.left >= containerRect.left - 1;
|
|
42
|
+
const lastTab = tabs[tabs.length - 1];
|
|
43
|
+
const lastTabRect = lastTab.getBoundingClientRect();
|
|
44
|
+
this.lastItemVisible = lastTabRect.right <= containerRect.right + 1;
|
|
45
|
+
};
|
|
46
|
+
this.getVisibleTabOnLeft = () => {
|
|
47
|
+
if (!this.containerRef)
|
|
48
|
+
return null;
|
|
49
|
+
const containerRect = this.containerRef.getBoundingClientRect();
|
|
50
|
+
const tabs = Array.from(this.tabElements);
|
|
51
|
+
// Find first tab that's partially or fully visible from the left
|
|
52
|
+
for (const tab of tabs) {
|
|
53
|
+
const tabRect = tab.getBoundingClientRect();
|
|
54
|
+
if (tabRect.right > containerRect.left + 1) {
|
|
55
|
+
return tab;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
};
|
|
60
|
+
this.getVisibleTabOnRight = () => {
|
|
61
|
+
if (!this.containerRef)
|
|
62
|
+
return null;
|
|
63
|
+
const containerRect = this.containerRef.getBoundingClientRect();
|
|
64
|
+
const tabs = Array.from(this.tabElements);
|
|
65
|
+
for (let i = tabs.length - 1; i >= 0; i--) {
|
|
66
|
+
const tab = tabs[i];
|
|
67
|
+
const tabRect = tab.getBoundingClientRect();
|
|
68
|
+
if (tabRect.left < containerRect.right - 1) {
|
|
69
|
+
return tab;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
};
|
|
74
|
+
this.scrollLeft = () => {
|
|
75
|
+
if (!this.containerRef)
|
|
76
|
+
return;
|
|
77
|
+
const visibleTab = this.getVisibleTabOnLeft();
|
|
78
|
+
if (!visibleTab)
|
|
79
|
+
return;
|
|
80
|
+
const tabs = Array.from(this.tabElements);
|
|
81
|
+
const currentIndex = tabs.indexOf(visibleTab);
|
|
82
|
+
const prevTab = currentIndex > 0 ? tabs[currentIndex - 1] : null;
|
|
83
|
+
if (!prevTab)
|
|
84
|
+
return;
|
|
85
|
+
const containerLeft = this.containerRef.getBoundingClientRect().left;
|
|
86
|
+
const prevTabLeft = prevTab.getBoundingClientRect().left;
|
|
87
|
+
const offset = prevTabLeft - containerLeft;
|
|
88
|
+
this.containerRef.scrollBy({
|
|
89
|
+
left: offset,
|
|
90
|
+
behavior: 'smooth'
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
this.scrollRight = () => {
|
|
94
|
+
if (!this.containerRef)
|
|
95
|
+
return;
|
|
96
|
+
const visibleTab = this.getVisibleTabOnRight();
|
|
97
|
+
if (!visibleTab)
|
|
98
|
+
return;
|
|
99
|
+
const tabs = Array.from(this.tabElements);
|
|
100
|
+
const currentIndex = tabs.indexOf(visibleTab);
|
|
101
|
+
const nextTab = currentIndex < tabs.length - 1 ? tabs[currentIndex + 1] : null;
|
|
102
|
+
if (!nextTab)
|
|
103
|
+
return;
|
|
104
|
+
const containerRight = this.containerRef.getBoundingClientRect().right;
|
|
105
|
+
const nextTabRight = nextTab.getBoundingClientRect().right;
|
|
106
|
+
const offset = nextTabRight - containerRight;
|
|
107
|
+
this.containerRef.scrollBy({
|
|
108
|
+
left: offset,
|
|
109
|
+
behavior: 'smooth'
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
this.scrollToActiveTab = (activeTabElement) => {
|
|
113
|
+
if (!this.containerRef || !this.scrollable)
|
|
114
|
+
return;
|
|
115
|
+
const activeTab = activeTabElement || this.host.querySelector('r-tab[active]');
|
|
116
|
+
if (!activeTab)
|
|
117
|
+
return;
|
|
118
|
+
const containerRect = this.containerRef.getBoundingClientRect();
|
|
119
|
+
const activeTabRect = activeTab.getBoundingClientRect();
|
|
120
|
+
// Check if already fully visible
|
|
121
|
+
const isVisible = activeTabRect.left >= containerRect.left &&
|
|
122
|
+
activeTabRect.right <= containerRect.right;
|
|
123
|
+
if (isVisible)
|
|
124
|
+
return;
|
|
125
|
+
// Center the active tab
|
|
126
|
+
const offset = (activeTabRect.left - containerRect.left) -
|
|
127
|
+
(containerRect.width / 2) +
|
|
128
|
+
(activeTabRect.width / 2);
|
|
129
|
+
this.containerRef.scrollBy({
|
|
130
|
+
left: offset,
|
|
131
|
+
behavior: 'smooth'
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
this.renderScrollButton = (direction, disabled, onClick, tooltip) => {
|
|
135
|
+
const iconName = direction === 'left' ? 'angle-left' : 'angle-right';
|
|
136
|
+
const button = (h("r-icon-button", { onRClick: onClick, disabled: disabled, name: iconName, size: "s", rTabindex: -1, class: "r-tabs-list--scroll-button" }));
|
|
137
|
+
if (tooltip) {
|
|
138
|
+
return (h("r-tooltip", { text: tooltip, position: "top" }, button));
|
|
139
|
+
}
|
|
140
|
+
return button;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/** Listen for "click" event on `<r-tab>` */
|
|
144
|
+
tabChangeAction(event) {
|
|
145
|
+
this.scrollToActiveTab(event.target);
|
|
146
|
+
}
|
|
147
|
+
/** `<r-tab>` group of elements */
|
|
148
|
+
get tabElements() {
|
|
149
|
+
return this.host.querySelectorAll('r-tab');
|
|
150
|
+
}
|
|
151
|
+
componentDidLoad() {
|
|
152
|
+
this.updateScrollState();
|
|
153
|
+
this.initiatizeResizeObserver();
|
|
154
|
+
this.scrollToActiveTab();
|
|
155
|
+
}
|
|
156
|
+
disconnectedCallback() {
|
|
157
|
+
var _a;
|
|
158
|
+
(_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
159
|
+
}
|
|
3
160
|
render() {
|
|
4
|
-
return (h(Host, { key: '
|
|
161
|
+
return (h(Host, { key: '8191b15343491c66259b583930ee73916c6bbd9e', scrollable: `${this.scrollable}`, role: "tablist" }, h("div", { key: 'e5c2a308889986b80549aba5b9a7bec8e6961891', class: "r-tabs-list" }, this.scrollable &&
|
|
162
|
+
h("div", { key: '62e6abb4a9e5ff9c553162c6de4176c8ce4c0407', "aria-hidden": "true", class: "r-tabs-list--scroll-button-container" }, this.renderScrollButton('left', this.firstItemVisible, this.scrollLeft, this.scrollLeftTooltip), !this.firstItemVisible && h("div", { key: '62e5c2ca7e76323ff367940cd9ab1cb6e5b6db74', class: "r-tabs-list--scroll-indicator" })), h("div", { key: '5f0b264eb4abaf51d4e2f3a85a92d89ff9e378f5', class: "r-tabs-list--tabs-container", ref: (el) => this.containerRef = el, onScroll: this.updateScrollState }, h("slot", { key: '38f6060007491fa9b50cf7cf7d36372c32e63d97' })), this.scrollable &&
|
|
163
|
+
h("div", { key: 'd51473735f550b81b5ba630126fe3bcc41848648', "aria-hidden": "true", class: "r-tabs-list--scroll-button-container" }, !this.lastItemVisible && h("div", { key: '89d712984dd7797cbca0df86989cf8eedcd95a61', class: "r-tabs-list--scroll-indicator" }), this.renderScrollButton('right', this.lastItemVisible, this.scrollRight, this.scrollRightTooltip)))));
|
|
5
164
|
}
|
|
6
165
|
static get is() { return "r-tabs-list"; }
|
|
7
166
|
static get encapsulation() { return "shadow"; }
|
|
@@ -15,4 +174,121 @@ export class RTabsList {
|
|
|
15
174
|
"$": ["tabs-list.css"]
|
|
16
175
|
};
|
|
17
176
|
}
|
|
177
|
+
static get properties() {
|
|
178
|
+
return {
|
|
179
|
+
"variant": {
|
|
180
|
+
"type": "string",
|
|
181
|
+
"attribute": "variant",
|
|
182
|
+
"mutable": false,
|
|
183
|
+
"complexType": {
|
|
184
|
+
"original": "TabListVariant",
|
|
185
|
+
"resolved": "\"compact\" | \"expanded\"",
|
|
186
|
+
"references": {
|
|
187
|
+
"TabListVariant": {
|
|
188
|
+
"location": "import",
|
|
189
|
+
"path": "./exports",
|
|
190
|
+
"id": "src/components/tabs-list/exports.ts::TabListVariant"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"required": false,
|
|
195
|
+
"optional": false,
|
|
196
|
+
"docs": {
|
|
197
|
+
"tags": [{
|
|
198
|
+
"name": "defaulr",
|
|
199
|
+
"text": "'expanded'"
|
|
200
|
+
}],
|
|
201
|
+
"text": "Visual variant of the tab list"
|
|
202
|
+
},
|
|
203
|
+
"getter": false,
|
|
204
|
+
"setter": false,
|
|
205
|
+
"reflect": true,
|
|
206
|
+
"defaultValue": "'expanded'"
|
|
207
|
+
},
|
|
208
|
+
"border": {
|
|
209
|
+
"type": "string",
|
|
210
|
+
"attribute": "border",
|
|
211
|
+
"mutable": false,
|
|
212
|
+
"complexType": {
|
|
213
|
+
"original": "ActiveTabBorder",
|
|
214
|
+
"resolved": "\"branded\" | \"standard\"",
|
|
215
|
+
"references": {
|
|
216
|
+
"ActiveTabBorder": {
|
|
217
|
+
"location": "import",
|
|
218
|
+
"path": "./exports",
|
|
219
|
+
"id": "src/components/tabs-list/exports.ts::ActiveTabBorder"
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"required": false,
|
|
224
|
+
"optional": false,
|
|
225
|
+
"docs": {
|
|
226
|
+
"tags": [{
|
|
227
|
+
"name": "default",
|
|
228
|
+
"text": "'standard'"
|
|
229
|
+
}],
|
|
230
|
+
"text": "Border style of the active tab"
|
|
231
|
+
},
|
|
232
|
+
"getter": false,
|
|
233
|
+
"setter": false,
|
|
234
|
+
"reflect": true,
|
|
235
|
+
"defaultValue": "'standard'"
|
|
236
|
+
},
|
|
237
|
+
"scrollLeftTooltip": {
|
|
238
|
+
"type": "string",
|
|
239
|
+
"attribute": "scroll-left-tooltip",
|
|
240
|
+
"mutable": false,
|
|
241
|
+
"complexType": {
|
|
242
|
+
"original": "string",
|
|
243
|
+
"resolved": "string",
|
|
244
|
+
"references": {}
|
|
245
|
+
},
|
|
246
|
+
"required": false,
|
|
247
|
+
"optional": false,
|
|
248
|
+
"docs": {
|
|
249
|
+
"tags": [],
|
|
250
|
+
"text": "Tooltip visibility for left scroll button"
|
|
251
|
+
},
|
|
252
|
+
"getter": false,
|
|
253
|
+
"setter": false,
|
|
254
|
+
"reflect": false
|
|
255
|
+
},
|
|
256
|
+
"scrollRightTooltip": {
|
|
257
|
+
"type": "string",
|
|
258
|
+
"attribute": "scroll-right-tooltip",
|
|
259
|
+
"mutable": false,
|
|
260
|
+
"complexType": {
|
|
261
|
+
"original": "string",
|
|
262
|
+
"resolved": "string",
|
|
263
|
+
"references": {}
|
|
264
|
+
},
|
|
265
|
+
"required": false,
|
|
266
|
+
"optional": false,
|
|
267
|
+
"docs": {
|
|
268
|
+
"tags": [],
|
|
269
|
+
"text": "Tooltip visibility for left right button"
|
|
270
|
+
},
|
|
271
|
+
"getter": false,
|
|
272
|
+
"setter": false,
|
|
273
|
+
"reflect": false
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
static get states() {
|
|
278
|
+
return {
|
|
279
|
+
"scrollable": {},
|
|
280
|
+
"firstItemVisible": {},
|
|
281
|
+
"lastItemVisible": {}
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
static get elementRef() { return "host"; }
|
|
285
|
+
static get listeners() {
|
|
286
|
+
return [{
|
|
287
|
+
"name": "tabChange",
|
|
288
|
+
"method": "tabChangeAction",
|
|
289
|
+
"target": undefined,
|
|
290
|
+
"capture": false,
|
|
291
|
+
"passive": false
|
|
292
|
+
}];
|
|
293
|
+
}
|
|
18
294
|
}
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
padding: var(--r-textarea--input--padding, var(--r-textarea--input--padding-top, 0.688em) var(--r-textarea--input--padding-right, 0.625em) var(--r-textarea--input--padding-bottom, 0.688em) var(--r-textarea--input--padding-left, 0.625em));
|
|
77
77
|
margin-top: var(--r-textarea--input--margin-top, 0);
|
|
78
78
|
resize: var(--r-textarea--input--resize, both);
|
|
79
|
-
z-index: var(--r-textarea--input--z-index,
|
|
79
|
+
z-index: var(--r-textarea--input--z-index, initial);
|
|
80
80
|
outline: var(--r-textarea--input--outline, none);
|
|
81
81
|
outline-offset: var(--r-textarea--input--outline-offset, 0);
|
|
82
82
|
pointer-events: var(--r-textarea--input--pointer-events, auto);
|
|
@@ -13,11 +13,6 @@ export class RTextarea {
|
|
|
13
13
|
this.resize = 'none';
|
|
14
14
|
/** Custom message when the character limit is reached to alert screen reader users. */
|
|
15
15
|
this.characterLimitReachedMessage = "You've reached the character limit.";
|
|
16
|
-
/**
|
|
17
|
-
* _DEPRECATED_ (This property will be removed in November 2025 release.)
|
|
18
|
-
* Controls the visibility of validation indicators for the field.
|
|
19
|
-
* */
|
|
20
|
-
this.showValid = false;
|
|
21
16
|
/** Custom validity state */
|
|
22
17
|
this.validityState = null;
|
|
23
18
|
/** Custom validity message */
|
|
@@ -180,11 +175,8 @@ export class RTextarea {
|
|
|
180
175
|
const hasMessage = !!(this.customErrorMessage || this.validityMessage);
|
|
181
176
|
return isInvalid && hasMessage;
|
|
182
177
|
}
|
|
183
|
-
get hasValidationSuccess() {
|
|
184
|
-
return this.valid && this.validMessage && this.showValid;
|
|
185
|
-
}
|
|
186
178
|
get hasMessage() {
|
|
187
|
-
return this.hasError || this.hasValidationError
|
|
179
|
+
return this.hasError || this.hasValidationError;
|
|
188
180
|
}
|
|
189
181
|
/**
|
|
190
182
|
* Determine whether this element should be ignored
|
|
@@ -225,7 +217,7 @@ export class RTextarea {
|
|
|
225
217
|
this.disconnectFormEventListeners();
|
|
226
218
|
}
|
|
227
219
|
render() {
|
|
228
|
-
const { name, rows, cols, placeholder, required, showCounter, maxlength, minlength, form, value, disabled, resize, hint, invalid, label, uniqueId, fieldIndicator,
|
|
220
|
+
const { name, rows, cols, placeholder, required, showCounter, maxlength, minlength, form, value, disabled, resize, hint, invalid, label, uniqueId, fieldIndicator, readonly } = this;
|
|
229
221
|
const textareaAttrs = {
|
|
230
222
|
name,
|
|
231
223
|
rows,
|
|
@@ -244,14 +236,10 @@ export class RTextarea {
|
|
|
244
236
|
'aria-invalid': `${!!invalid}`,
|
|
245
237
|
'aria-required': `${!!required}`
|
|
246
238
|
};
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
tooltipIcon,
|
|
251
|
-
tooltipIconColor
|
|
239
|
+
const labelAttr = label ? {
|
|
240
|
+
label,
|
|
241
|
+
fieldIndicator
|
|
252
242
|
} : {};
|
|
253
|
-
const labelAttr = label ? Object.assign({ label,
|
|
254
|
-
fieldIndicator }, tooltipAttrs) : {};
|
|
255
243
|
// Filter out event listener properties based on naming convention.
|
|
256
244
|
// Pass them to native element.
|
|
257
245
|
const eventListeners = Object.entries(this).reduce((acc, [key, value]) => {
|
|
@@ -262,7 +250,7 @@ export class RTextarea {
|
|
|
262
250
|
}, {});
|
|
263
251
|
return (h(Host, null, h("div", { class: "r-textarea--label-container" }, h("label", { htmlFor: uniqueId }, label &&
|
|
264
252
|
h("r-label", Object.assign({ id: `${uniqueId}-label` }, labelAttr), label)), h("slot", { name: "popover" })), hint &&
|
|
265
|
-
h("r-hint", { id: `${uniqueId}-hint`, role: "note" }, hint), h("div", { class: "r-textarea--container", "data-disabled": `${!!disabled}`, "data-readonly": `${!!readonly}` }, h("textarea", Object.assign({ class: "r-textarea--input" }, textareaAttrs, eventListeners, { ref: el => this.nativeElement = el, onChange: this.onChange, onInput: this.onInput })), h("div", { class: "r-textarea--trailing" }, this.readonly && h("r-icon", { class: "r-textarea--readonly-icon", name: "pen-disabled", size: "s" }), this.hasTrailingSlot && h("slot", { name: "trailing" }))), h("div", { class: "r-textarea--messages" }, h("r-hint", { "aria-live": "polite", "aria-atomic": "true", id: `${uniqueId}-message`, class: !this.hasMessage && 'visually-hidden', variant: invalid ? 'error' : 'success' }, this.hasError && this.error, this.hasValidationError && (this.customErrorMessage || this.validityMessage)
|
|
253
|
+
h("r-hint", { id: `${uniqueId}-hint`, role: "note" }, hint), h("div", { class: "r-textarea--container", "data-disabled": `${!!disabled}`, "data-readonly": `${!!readonly}` }, h("textarea", Object.assign({ class: "r-textarea--input" }, textareaAttrs, eventListeners, { ref: el => this.nativeElement = el, onChange: this.onChange, onInput: this.onInput })), h("div", { class: "r-textarea--trailing" }, this.readonly && h("r-icon", { class: "r-textarea--readonly-icon", name: "pen-disabled", size: "s" }), this.hasTrailingSlot && h("slot", { name: "trailing" }))), h("div", { class: "r-textarea--messages" }, h("r-hint", { "aria-live": "polite", "aria-atomic": "true", id: `${uniqueId}-message`, class: !this.hasMessage && 'visually-hidden', variant: invalid ? 'error' : 'success' }, this.hasError && this.error, this.hasValidationError && (this.customErrorMessage || this.validityMessage)), showCounter && h("r-hint", { "aria-hidden": true, class: "r-textarea--messages--counter" }, `${value.length}${maxlength ? '/' : ''}${maxlength}`), maxlength &&
|
|
266
254
|
h("div", { class: "visually-hidden", ref: el => this.characterLimitReachedAlert = el, "aria-live": "assertive" }))));
|
|
267
255
|
}
|
|
268
256
|
static get is() { return "r-textarea"; }
|
|
@@ -669,26 +657,6 @@ export class RTextarea {
|
|
|
669
657
|
"setter": false,
|
|
670
658
|
"reflect": false
|
|
671
659
|
},
|
|
672
|
-
"showValid": {
|
|
673
|
-
"type": "boolean",
|
|
674
|
-
"attribute": "show-valid",
|
|
675
|
-
"mutable": false,
|
|
676
|
-
"complexType": {
|
|
677
|
-
"original": "boolean",
|
|
678
|
-
"resolved": "boolean",
|
|
679
|
-
"references": {}
|
|
680
|
-
},
|
|
681
|
-
"required": false,
|
|
682
|
-
"optional": false,
|
|
683
|
-
"docs": {
|
|
684
|
-
"tags": [],
|
|
685
|
-
"text": "_DEPRECATED_ (This property will be removed in November 2025 release.)\nControls the visibility of validation indicators for the field."
|
|
686
|
-
},
|
|
687
|
-
"getter": false,
|
|
688
|
-
"setter": false,
|
|
689
|
-
"reflect": false,
|
|
690
|
-
"defaultValue": "false"
|
|
691
|
-
},
|
|
692
660
|
"valid": {
|
|
693
661
|
"type": "boolean",
|
|
694
662
|
"attribute": "valid",
|
|
@@ -708,25 +676,6 @@ export class RTextarea {
|
|
|
708
676
|
"setter": false,
|
|
709
677
|
"reflect": true
|
|
710
678
|
},
|
|
711
|
-
"validMessage": {
|
|
712
|
-
"type": "string",
|
|
713
|
-
"attribute": "valid-message",
|
|
714
|
-
"mutable": false,
|
|
715
|
-
"complexType": {
|
|
716
|
-
"original": "string",
|
|
717
|
-
"resolved": "string",
|
|
718
|
-
"references": {}
|
|
719
|
-
},
|
|
720
|
-
"required": false,
|
|
721
|
-
"optional": true,
|
|
722
|
-
"docs": {
|
|
723
|
-
"tags": [],
|
|
724
|
-
"text": "_DEPRECATED_ (This property will be removed in November 2025 release.)\nCustom message displayed when the `<textarea>` value is valid,\nproviding positive feedback to the user."
|
|
725
|
-
},
|
|
726
|
-
"getter": false,
|
|
727
|
-
"setter": false,
|
|
728
|
-
"reflect": false
|
|
729
|
-
},
|
|
730
679
|
"invalid": {
|
|
731
680
|
"type": "boolean",
|
|
732
681
|
"attribute": "invalid",
|
|
@@ -802,107 +751,6 @@ export class RTextarea {
|
|
|
802
751
|
"getter": false,
|
|
803
752
|
"setter": false,
|
|
804
753
|
"reflect": false
|
|
805
|
-
},
|
|
806
|
-
"optional": {
|
|
807
|
-
"type": "boolean",
|
|
808
|
-
"attribute": "optional",
|
|
809
|
-
"mutable": false,
|
|
810
|
-
"complexType": {
|
|
811
|
-
"original": "boolean",
|
|
812
|
-
"resolved": "boolean",
|
|
813
|
-
"references": {}
|
|
814
|
-
},
|
|
815
|
-
"required": false,
|
|
816
|
-
"optional": true,
|
|
817
|
-
"docs": {
|
|
818
|
-
"tags": [],
|
|
819
|
-
"text": "_DEPRECATED_ This property will be removed"
|
|
820
|
-
},
|
|
821
|
-
"getter": false,
|
|
822
|
-
"setter": false,
|
|
823
|
-
"reflect": false
|
|
824
|
-
},
|
|
825
|
-
"optionalText": {
|
|
826
|
-
"type": "string",
|
|
827
|
-
"attribute": "optional-text",
|
|
828
|
-
"mutable": false,
|
|
829
|
-
"complexType": {
|
|
830
|
-
"original": "string",
|
|
831
|
-
"resolved": "string",
|
|
832
|
-
"references": {}
|
|
833
|
-
},
|
|
834
|
-
"required": false,
|
|
835
|
-
"optional": true,
|
|
836
|
-
"docs": {
|
|
837
|
-
"tags": [],
|
|
838
|
-
"text": "_DEPRECATED_ (use `fieldIndicator` instead) Text of an additional marker in the label"
|
|
839
|
-
},
|
|
840
|
-
"getter": false,
|
|
841
|
-
"setter": false,
|
|
842
|
-
"reflect": false
|
|
843
|
-
},
|
|
844
|
-
"tooltip": {
|
|
845
|
-
"type": "string",
|
|
846
|
-
"attribute": "tooltip",
|
|
847
|
-
"mutable": false,
|
|
848
|
-
"complexType": {
|
|
849
|
-
"original": "string",
|
|
850
|
-
"resolved": "string",
|
|
851
|
-
"references": {}
|
|
852
|
-
},
|
|
853
|
-
"required": false,
|
|
854
|
-
"optional": true,
|
|
855
|
-
"docs": {
|
|
856
|
-
"tags": [],
|
|
857
|
-
"text": "_DEPRECATED_ (Use popover slot instead. This property will be removed in November 2025 release.)\nTooltip text displayed when the user hovers over the icon,\nproviding additional information."
|
|
858
|
-
},
|
|
859
|
-
"getter": false,
|
|
860
|
-
"setter": false,
|
|
861
|
-
"reflect": false
|
|
862
|
-
},
|
|
863
|
-
"tooltipIcon": {
|
|
864
|
-
"type": "string",
|
|
865
|
-
"attribute": "tooltip-icon",
|
|
866
|
-
"mutable": false,
|
|
867
|
-
"complexType": {
|
|
868
|
-
"original": "IconName",
|
|
869
|
-
"resolved": "string",
|
|
870
|
-
"references": {
|
|
871
|
-
"IconName": {
|
|
872
|
-
"location": "import",
|
|
873
|
-
"path": "../icon/exports",
|
|
874
|
-
"id": "src/components/icon/exports.ts::IconName"
|
|
875
|
-
}
|
|
876
|
-
}
|
|
877
|
-
},
|
|
878
|
-
"required": false,
|
|
879
|
-
"optional": true,
|
|
880
|
-
"docs": {
|
|
881
|
-
"tags": [],
|
|
882
|
-
"text": "_DEPRECATED_ (Use popover slot instead. This property will be removed in November 2025 release.)\nIcon used to trigger the tooltip for the label,\nproviding a visual cue for additional information."
|
|
883
|
-
},
|
|
884
|
-
"getter": false,
|
|
885
|
-
"setter": false,
|
|
886
|
-
"reflect": false
|
|
887
|
-
},
|
|
888
|
-
"tooltipIconColor": {
|
|
889
|
-
"type": "string",
|
|
890
|
-
"attribute": "tooltip-icon-color",
|
|
891
|
-
"mutable": false,
|
|
892
|
-
"complexType": {
|
|
893
|
-
"original": "string",
|
|
894
|
-
"resolved": "string",
|
|
895
|
-
"references": {}
|
|
896
|
-
},
|
|
897
|
-
"required": false,
|
|
898
|
-
"optional": true,
|
|
899
|
-
"docs": {
|
|
900
|
-
"tags": [],
|
|
901
|
-
"text": "_DEPRECATED_ (Use popover slot instead. This property will be removed in November 2025 release.)\nSpecifies the color of the tooltip icon from Riverty color tokens.\nDisplayed alongside the label."
|
|
902
|
-
},
|
|
903
|
-
"getter": false,
|
|
904
|
-
"setter": false,
|
|
905
|
-
"reflect": false
|
|
906
754
|
}
|
|
907
755
|
};
|
|
908
756
|
}
|