@nysds/components 1.17.0 → 1.18.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/custom-elements.json +731 -194
- package/dist/.vscode/vscode.html-custom-data.json +62 -21
- package/dist/custom-elements.json +731 -194
- package/dist/nysds.es.js +2235 -1854
- package/dist/nysds.es.js.map +1 -1
- package/dist/nysds.js +232 -210
- package/dist/nysds.js.map +1 -1
- package/dist/packages/nys-backtotop/src/nys-backtotop.d.ts +15 -3
- package/dist/packages/nys-badge/src/nys-badge.d.ts +2 -0
- package/dist/packages/nys-checkbox/src/nys-checkbox.d.ts +0 -2
- package/dist/packages/nys-checkbox/src/nys-checkboxgroup.d.ts +1 -4
- package/dist/packages/nys-radiobutton/src/nys-radiobutton.d.ts +0 -2
- package/dist/packages/nys-radiobutton/src/nys-radiogroup.d.ts +1 -4
- package/dist/packages/nys-tab/src/index.d.ts +3 -0
- package/dist/packages/nys-tab/src/nys-tab.d.ts +116 -0
- package/dist/packages/nys-tab/src/nys-tab.figma.d.ts +1 -0
- package/dist/packages/nys-tab/src/nys-tabgroup.d.ts +197 -0
- package/dist/packages/nys-tab/src/nys-tabpanel.d.ts +46 -0
- package/dist/packages/nys-table/src/nys-table.d.ts +10 -7
- package/dist/src/index.d.ts +1 -0
- package/package.json +1 -1
- package/packages/react/NysBacktotop.d.ts +1 -1
- package/packages/react/NysBadge.d.ts +3 -0
- package/packages/react/NysBadge.js +2 -0
- package/packages/react/NysCheckbox.d.ts +0 -3
- package/packages/react/NysCheckbox.js +0 -2
- package/packages/react/NysCheckboxgroup.d.ts +0 -3
- package/packages/react/NysCheckboxgroup.js +0 -2
- package/packages/react/NysRadiobutton.d.ts +0 -3
- package/packages/react/NysRadiobutton.js +0 -2
- package/packages/react/NysRadiogroup.d.ts +0 -3
- package/packages/react/NysRadiogroup.js +0 -2
- package/packages/react/NysTab.d.ts +90 -0
- package/packages/react/NysTab.js +39 -0
- package/packages/react/NysTabgroup.d.ts +75 -0
- package/packages/react/NysTabgroup.js +22 -0
- package/packages/react/NysTabpanel.d.ts +63 -0
- package/packages/react/NysTabpanel.js +21 -0
- package/packages/react/index.d.ts +3 -0
- package/packages/react/index.js +3 -0
- package/packages/react/nysds-jsx.d.ts +108 -9
|
@@ -7,7 +7,6 @@ export const NysRadiogroup = forwardRef((props, forwardedRef) => {
|
|
|
7
7
|
optional,
|
|
8
8
|
showError,
|
|
9
9
|
tile,
|
|
10
|
-
inverted,
|
|
11
10
|
id,
|
|
12
11
|
name,
|
|
13
12
|
errorMessage,
|
|
@@ -40,7 +39,6 @@ export const NysRadiogroup = forwardRef((props, forwardedRef) => {
|
|
|
40
39
|
optional: props.optional ? true : undefined,
|
|
41
40
|
showError: props.showError ? true : undefined,
|
|
42
41
|
tile: props.tile ? true : undefined,
|
|
43
|
-
inverted: props.inverted ? true : undefined,
|
|
44
42
|
style: { ...props.style },
|
|
45
43
|
},
|
|
46
44
|
props.children,
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { NysTab as NysTabElement, CustomEvent } from "../../dist/nysds.es.js";
|
|
3
|
+
|
|
4
|
+
export type { NysTabElement, CustomEvent };
|
|
5
|
+
|
|
6
|
+
export interface NysTabProps extends Pick<
|
|
7
|
+
React.AllHTMLAttributes<HTMLElement>,
|
|
8
|
+
| "children"
|
|
9
|
+
| "dir"
|
|
10
|
+
| "hidden"
|
|
11
|
+
| "id"
|
|
12
|
+
| "lang"
|
|
13
|
+
| "slot"
|
|
14
|
+
| "style"
|
|
15
|
+
| "title"
|
|
16
|
+
| "translate"
|
|
17
|
+
| "onClick"
|
|
18
|
+
| "onFocus"
|
|
19
|
+
| "onBlur"
|
|
20
|
+
> {
|
|
21
|
+
/** Whether this tab is the currently active tab.
|
|
22
|
+
Managed by `<nys-tabgroup>`; reflected for CSS attribute selectors. */
|
|
23
|
+
selected?: boolean;
|
|
24
|
+
|
|
25
|
+
/** Whether this tab is disabled.
|
|
26
|
+
Reflected to the DOM attribute for CSS styling. */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
|
|
29
|
+
/** Unique identifier for the tab element.
|
|
30
|
+
Reflected to the DOM attribute so `aria-controls` references resolve. */
|
|
31
|
+
id?: NysTabElement["id"];
|
|
32
|
+
|
|
33
|
+
/** Visible text label rendered inside the inner `<span>`. */
|
|
34
|
+
label?: NysTabElement["label"];
|
|
35
|
+
|
|
36
|
+
/** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */
|
|
37
|
+
className?: string;
|
|
38
|
+
|
|
39
|
+
/** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
|
|
40
|
+
exportparts?: string;
|
|
41
|
+
|
|
42
|
+
/** Used for labels to link them with their inputs (using input id). */
|
|
43
|
+
htmlFor?: string;
|
|
44
|
+
|
|
45
|
+
/** Used to help React identify which items have changed, are added, or are removed within a list. */
|
|
46
|
+
key?: number | string;
|
|
47
|
+
|
|
48
|
+
/** Contains a space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the ::part pseudo-element. */
|
|
49
|
+
part?: string;
|
|
50
|
+
|
|
51
|
+
/** A mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component. */
|
|
52
|
+
ref?: any;
|
|
53
|
+
|
|
54
|
+
/** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */
|
|
55
|
+
tabIndex?: number;
|
|
56
|
+
|
|
57
|
+
/** Dispatched when the tab is activated via click or Enter / Space. Bubbles and crosses shadow DOM boundaries. `detail: { id: string, label: string }` */
|
|
58
|
+
onNysTabSelect?: (event: CustomEvent) => void;
|
|
59
|
+
|
|
60
|
+
/** Dispatched when the host receives focus. Bubbles and crosses shadow DOM boundaries. `detail: { id: string }` */
|
|
61
|
+
onNysTabFocus?: (event: CustomEvent) => void;
|
|
62
|
+
|
|
63
|
+
/** Dispatched when the host loses focus. Bubbles and crosses shadow DOM boundaries. `detail: { id: string }` */
|
|
64
|
+
onNysTabBlur?: (event: CustomEvent) => void;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* `<nys-tab>` is a single tab within a `<nys-tabgroup>`.
|
|
69
|
+
*
|
|
70
|
+
* The host element carries `role="tab"`, `tabindex`, `aria-selected`,
|
|
71
|
+
* `aria-controls`, and `aria-disabled` so assistive technologies see the
|
|
72
|
+
* correct ARIA tab semantics on the element that is actually focused.
|
|
73
|
+
* `<nys-tabgroup>` manages `tabindex`, `aria-selected`, and `aria-controls`
|
|
74
|
+
* via `_applySelection`; do not set them directly on this element.
|
|
75
|
+
* ---
|
|
76
|
+
*
|
|
77
|
+
*
|
|
78
|
+
* ### **Events:**
|
|
79
|
+
* - **nys-tab-select** - Dispatched when the tab is activated via click or Enter / Space. Bubbles and crosses shadow DOM boundaries. `detail: { id: string, label: string }`
|
|
80
|
+
* - **nys-tab-focus** - Dispatched when the host receives focus. Bubbles and crosses shadow DOM boundaries. `detail: { id: string }`
|
|
81
|
+
* - **nys-tab-blur** - Dispatched when the host loses focus. Bubbles and crosses shadow DOM boundaries. `detail: { id: string }`
|
|
82
|
+
*
|
|
83
|
+
* ### **Methods:**
|
|
84
|
+
* - **focus(options: _FocusOptions_): _void_** - Focuses the host element. The host carries `role="tab"` and `tabindex`,
|
|
85
|
+
* so it is the correct element for AT to land on.
|
|
86
|
+
*
|
|
87
|
+
* ### **Slots:**
|
|
88
|
+
* - _default_ - No slots; content is derived from the `label` property.
|
|
89
|
+
*/
|
|
90
|
+
export const NysTab: React.ForwardRefExoticComponent<NysTabProps>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React, { forwardRef, useRef, useEffect } from "react";
|
|
2
|
+
import "../../dist/nysds.es.js";
|
|
3
|
+
import { useEventListener } from "./react-utils.js";
|
|
4
|
+
|
|
5
|
+
export const NysTab = forwardRef((props, forwardedRef) => {
|
|
6
|
+
const ref = useRef(null);
|
|
7
|
+
const { selected, disabled, id, label, ...filteredProps } = props;
|
|
8
|
+
|
|
9
|
+
/** Event listeners - run once */
|
|
10
|
+
useEventListener(ref, "nys-tab-select", props.onNysTabSelect);
|
|
11
|
+
useEventListener(ref, "nys-tab-focus", props.onNysTabFocus);
|
|
12
|
+
useEventListener(ref, "nys-tab-blur", props.onNysTabBlur);
|
|
13
|
+
|
|
14
|
+
return React.createElement(
|
|
15
|
+
"nys-tab",
|
|
16
|
+
{
|
|
17
|
+
ref: (node) => {
|
|
18
|
+
ref.current = node;
|
|
19
|
+
if (typeof forwardedRef === "function") {
|
|
20
|
+
forwardedRef(node);
|
|
21
|
+
} else if (forwardedRef) {
|
|
22
|
+
forwardedRef.current = node;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
...filteredProps,
|
|
26
|
+
id: props.id,
|
|
27
|
+
label: props.label,
|
|
28
|
+
class: props.className,
|
|
29
|
+
exportparts: props.exportparts,
|
|
30
|
+
for: props.htmlFor,
|
|
31
|
+
part: props.part,
|
|
32
|
+
tabindex: props.tabIndex,
|
|
33
|
+
selected: props.selected ? true : undefined,
|
|
34
|
+
disabled: props.disabled ? true : undefined,
|
|
35
|
+
style: { ...props.style },
|
|
36
|
+
},
|
|
37
|
+
props.children,
|
|
38
|
+
);
|
|
39
|
+
});
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { NysTabgroup as NysTabgroupElement } from "../../dist/nysds.es.js";
|
|
3
|
+
|
|
4
|
+
export type { NysTabgroupElement };
|
|
5
|
+
|
|
6
|
+
export interface NysTabgroupProps extends Pick<
|
|
7
|
+
React.AllHTMLAttributes<HTMLElement>,
|
|
8
|
+
| "children"
|
|
9
|
+
| "dir"
|
|
10
|
+
| "hidden"
|
|
11
|
+
| "id"
|
|
12
|
+
| "lang"
|
|
13
|
+
| "slot"
|
|
14
|
+
| "style"
|
|
15
|
+
| "title"
|
|
16
|
+
| "translate"
|
|
17
|
+
| "onClick"
|
|
18
|
+
| "onFocus"
|
|
19
|
+
| "onBlur"
|
|
20
|
+
> {
|
|
21
|
+
/** Unique identifier for the tabgroup element.
|
|
22
|
+
If not provided, one is auto-generated in `connectedCallback`.
|
|
23
|
+
Reflected to the DOM attribute. */
|
|
24
|
+
id?: NysTabgroupElement["id"];
|
|
25
|
+
|
|
26
|
+
/** The name of the tab group.
|
|
27
|
+
Used for form submission and accessibility purposes. */
|
|
28
|
+
name?: NysTabgroupElement["name"];
|
|
29
|
+
|
|
30
|
+
/** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */
|
|
31
|
+
className?: string;
|
|
32
|
+
|
|
33
|
+
/** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
|
|
34
|
+
exportparts?: string;
|
|
35
|
+
|
|
36
|
+
/** Used for labels to link them with their inputs (using input id). */
|
|
37
|
+
htmlFor?: string;
|
|
38
|
+
|
|
39
|
+
/** Used to help React identify which items have changed, are added, or are removed within a list. */
|
|
40
|
+
key?: number | string;
|
|
41
|
+
|
|
42
|
+
/** Contains a space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the ::part pseudo-element. */
|
|
43
|
+
part?: string;
|
|
44
|
+
|
|
45
|
+
/** A mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component. */
|
|
46
|
+
ref?: any;
|
|
47
|
+
|
|
48
|
+
/** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */
|
|
49
|
+
tabIndex?: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* `<nys-tabgroup>` is the container for `<nys-tab>` and `<nys-tabpanel>`
|
|
54
|
+
* elements.
|
|
55
|
+
*
|
|
56
|
+
* Accepts tabs and panels as flat light-DOM children in any order (interleaved
|
|
57
|
+
* or grouped). On slot change, children are sorted into dedicated shadow-DOM
|
|
58
|
+
* containers, ARIA relationships are wired, and the first selected (or first)
|
|
59
|
+
* tab is activated.
|
|
60
|
+
*
|
|
61
|
+
* Scroll shadows are rendered on either side of the tab list and toggled via
|
|
62
|
+
* `ResizeObserver` and a `scroll` listener so they accurately reflect whether
|
|
63
|
+
* overflow content exists in each direction.
|
|
64
|
+
*
|
|
65
|
+
* Keyboard navigation follows the
|
|
66
|
+
* https://www.w3.org/WAI/ARIA/apg/patterns/tabs/ ARIA Tabs Pattern:
|
|
67
|
+
* - Arrow keys move focus without changing selection.
|
|
68
|
+
* - Enter / Space confirm selection on the focused tab.
|
|
69
|
+
* ---
|
|
70
|
+
*
|
|
71
|
+
*
|
|
72
|
+
* ### **Slots:**
|
|
73
|
+
* - _default_ - Accepts `<nys-tab>` and `<nys-tabpanel>` children. Elements are moved into internal shadow-DOM containers on `slotchange`; the slot itself is not rendered visibly.
|
|
74
|
+
*/
|
|
75
|
+
export const NysTabgroup: React.ForwardRefExoticComponent<NysTabgroupProps>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import "../../dist/nysds.es.js";
|
|
3
|
+
|
|
4
|
+
export const NysTabgroup = forwardRef((props, forwardedRef) => {
|
|
5
|
+
const { id, name, ...filteredProps } = props;
|
|
6
|
+
|
|
7
|
+
return React.createElement(
|
|
8
|
+
"nys-tabgroup",
|
|
9
|
+
{
|
|
10
|
+
...filteredProps,
|
|
11
|
+
id: props.id,
|
|
12
|
+
name: props.name,
|
|
13
|
+
class: props.className,
|
|
14
|
+
exportparts: props.exportparts,
|
|
15
|
+
for: props.htmlFor,
|
|
16
|
+
part: props.part,
|
|
17
|
+
tabindex: props.tabIndex,
|
|
18
|
+
style: { ...props.style },
|
|
19
|
+
},
|
|
20
|
+
props.children,
|
|
21
|
+
);
|
|
22
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { NysTabpanel as NysTabpanelElement } from "../../dist/nysds.es.js";
|
|
3
|
+
|
|
4
|
+
export type { NysTabpanelElement };
|
|
5
|
+
|
|
6
|
+
export interface NysTabpanelProps extends Pick<
|
|
7
|
+
React.AllHTMLAttributes<HTMLElement>,
|
|
8
|
+
| "children"
|
|
9
|
+
| "dir"
|
|
10
|
+
| "hidden"
|
|
11
|
+
| "id"
|
|
12
|
+
| "lang"
|
|
13
|
+
| "slot"
|
|
14
|
+
| "style"
|
|
15
|
+
| "title"
|
|
16
|
+
| "translate"
|
|
17
|
+
| "onClick"
|
|
18
|
+
| "onFocus"
|
|
19
|
+
| "onBlur"
|
|
20
|
+
> {
|
|
21
|
+
/** Unique identifier for the panel element.
|
|
22
|
+
If not provided, one is auto-generated in `connectedCallback`.
|
|
23
|
+
Reflected to the DOM attribute so `aria-controls` references on sibling
|
|
24
|
+
`<nys-tab>` elements resolve correctly. */
|
|
25
|
+
id?: NysTabpanelElement["id"];
|
|
26
|
+
|
|
27
|
+
/** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */
|
|
28
|
+
className?: string;
|
|
29
|
+
|
|
30
|
+
/** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
|
|
31
|
+
exportparts?: string;
|
|
32
|
+
|
|
33
|
+
/** Used for labels to link them with their inputs (using input id). */
|
|
34
|
+
htmlFor?: string;
|
|
35
|
+
|
|
36
|
+
/** Used to help React identify which items have changed, are added, or are removed within a list. */
|
|
37
|
+
key?: number | string;
|
|
38
|
+
|
|
39
|
+
/** Contains a space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the ::part pseudo-element. */
|
|
40
|
+
part?: string;
|
|
41
|
+
|
|
42
|
+
/** A mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component. */
|
|
43
|
+
ref?: any;
|
|
44
|
+
|
|
45
|
+
/** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */
|
|
46
|
+
tabIndex?: number;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* `<nys-tabpanel>` is a content panel paired with a `<nys-tab>` inside a
|
|
51
|
+
* `<nys-tabgroup>`.
|
|
52
|
+
*
|
|
53
|
+
* Pairing is determined by render order: the Nth `<nys-tabpanel>` child of a
|
|
54
|
+
* `<nys-tabgroup>` corresponds to the Nth `<nys-tab>` child.
|
|
55
|
+
* `aria-labelledby` and the `hidden` attribute are managed externally by
|
|
56
|
+
* `<nys-tabgroup>` via `_applySelection`; do not set them directly.
|
|
57
|
+
* ---
|
|
58
|
+
*
|
|
59
|
+
*
|
|
60
|
+
* ### **Slots:**
|
|
61
|
+
* - _default_ - Default slot for panel content. Rendered inside a wrapper `<div>` with the `.nys-tabpanel` class for styling.
|
|
62
|
+
*/
|
|
63
|
+
export const NysTabpanel: React.ForwardRefExoticComponent<NysTabpanelProps>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import "../../dist/nysds.es.js";
|
|
3
|
+
|
|
4
|
+
export const NysTabpanel = forwardRef((props, forwardedRef) => {
|
|
5
|
+
const { id, ...filteredProps } = props;
|
|
6
|
+
|
|
7
|
+
return React.createElement(
|
|
8
|
+
"nys-tabpanel",
|
|
9
|
+
{
|
|
10
|
+
...filteredProps,
|
|
11
|
+
id: props.id,
|
|
12
|
+
class: props.className,
|
|
13
|
+
exportparts: props.exportparts,
|
|
14
|
+
for: props.htmlFor,
|
|
15
|
+
part: props.part,
|
|
16
|
+
tabindex: props.tabIndex,
|
|
17
|
+
style: { ...props.style },
|
|
18
|
+
},
|
|
19
|
+
props.children,
|
|
20
|
+
);
|
|
21
|
+
});
|
|
@@ -29,6 +29,9 @@ export * from "./NysSelect.js";
|
|
|
29
29
|
export * from "./NysSkipnav.js";
|
|
30
30
|
export * from "./NysStep.js";
|
|
31
31
|
export * from "./NysStepper.js";
|
|
32
|
+
export * from "./NysTab.js";
|
|
33
|
+
export * from "./NysTabgroup.js";
|
|
34
|
+
export * from "./NysTabpanel.js";
|
|
32
35
|
export * from "./NysTable.js";
|
|
33
36
|
export * from "./NysTextarea.js";
|
|
34
37
|
export * from "./NysTextinput.js";
|
package/packages/react/index.js
CHANGED
|
@@ -29,6 +29,9 @@ export * from "./NysSelect.js";
|
|
|
29
29
|
export * from "./NysSkipnav.js";
|
|
30
30
|
export * from "./NysStep.js";
|
|
31
31
|
export * from "./NysStepper.js";
|
|
32
|
+
export * from "./NysTab.js";
|
|
33
|
+
export * from "./NysTabgroup.js";
|
|
34
|
+
export * from "./NysTabpanel.js";
|
|
32
35
|
export * from "./NysTable.js";
|
|
33
36
|
export * from "./NysTextarea.js";
|
|
34
37
|
export * from "./NysTextinput.js";
|
|
@@ -163,6 +163,8 @@ export type NysBadgeProps = {
|
|
|
163
163
|
prefixLabel?: string;
|
|
164
164
|
/** Primary label text displayed in the badge. */
|
|
165
165
|
label?: string;
|
|
166
|
+
/** Screen reader text appended after the label for additional context. */
|
|
167
|
+
srText?: string;
|
|
166
168
|
/** */
|
|
167
169
|
variant?: "strong" | "";
|
|
168
170
|
/** */
|
|
@@ -275,8 +277,6 @@ export type NysCheckboxProps = {
|
|
|
275
277
|
groupExist?: boolean;
|
|
276
278
|
/** Renders as tile with larger clickable area. Apply to group for consistency. */
|
|
277
279
|
tile?: boolean;
|
|
278
|
-
/** Adjusts colors for dark backgrounds. */
|
|
279
|
-
inverted?: boolean;
|
|
280
280
|
/** Tooltip text shown on hover/focus of info icon. */
|
|
281
281
|
tooltip?: string;
|
|
282
282
|
/** Checkbox size: `sm` (24px) or `md` (32px, default). */
|
|
@@ -322,8 +322,6 @@ export type NysCheckboxgroupProps = {
|
|
|
322
322
|
tile?: boolean;
|
|
323
323
|
/** Tooltip text shown on hover/focus of info icon. */
|
|
324
324
|
tooltip?: string;
|
|
325
|
-
/** Adjusts colors for dark backgrounds. Applied to all children. */
|
|
326
|
-
inverted?: boolean;
|
|
327
325
|
/** Form `id` to associate with. Applied to all children. */
|
|
328
326
|
form?: string | null;
|
|
329
327
|
/** Checkbox size for all children: `sm` (24px) or `md` (32px, default). */
|
|
@@ -635,8 +633,6 @@ export type NysRadiobuttonProps = {
|
|
|
635
633
|
name?: string;
|
|
636
634
|
/** Value submitted when this radio is selected. */
|
|
637
635
|
value?: string;
|
|
638
|
-
/** Adjusts colors for dark backgrounds. */
|
|
639
|
-
inverted?: boolean;
|
|
640
636
|
/** Form `id` to associate with. */
|
|
641
637
|
form?: string | null;
|
|
642
638
|
/** Radio size: `sm` (24px) or `md` (32px, default). */
|
|
@@ -683,8 +679,6 @@ export type NysRadiogroupProps = {
|
|
|
683
679
|
tile?: boolean;
|
|
684
680
|
/** Tooltip text shown on hover/focus of info icon. */
|
|
685
681
|
tooltip?: string;
|
|
686
|
-
/** Adjusts colors for dark backgrounds. Applied to all children. */
|
|
687
|
-
inverted?: boolean;
|
|
688
682
|
/** Form `id` to associate with. Applied to all children. */
|
|
689
683
|
form?: string | null;
|
|
690
684
|
/** Radio size for all children: `sm` (24px) or `md` (32px, default). */
|
|
@@ -781,6 +775,45 @@ export type NysStepperProps = {
|
|
|
781
775
|
isCompactExpanded?: boolean;
|
|
782
776
|
};
|
|
783
777
|
|
|
778
|
+
export type NysTabProps = {
|
|
779
|
+
/** Unique identifier for the tab element.
|
|
780
|
+
Reflected to the DOM attribute so `aria-controls` references resolve. */
|
|
781
|
+
id?: string;
|
|
782
|
+
/** Visible text label rendered inside the inner `<span>`. */
|
|
783
|
+
label?: string;
|
|
784
|
+
/** Whether this tab is the currently active tab.
|
|
785
|
+
Managed by `<nys-tabgroup>`; reflected for CSS attribute selectors. */
|
|
786
|
+
selected?: boolean;
|
|
787
|
+
/** Whether this tab is disabled.
|
|
788
|
+
Reflected to the DOM attribute for CSS styling. */
|
|
789
|
+
disabled?: boolean;
|
|
790
|
+
|
|
791
|
+
/** Dispatched when the tab is activated via click or Enter / Space. Bubbles and crosses shadow DOM boundaries. `detail: { id: string, label: string }` */
|
|
792
|
+
"onnys-tab-select"?: (e: CustomEvent<CustomEvent>) => void;
|
|
793
|
+
/** Dispatched when the host receives focus. Bubbles and crosses shadow DOM boundaries. `detail: { id: string }` */
|
|
794
|
+
"onnys-tab-focus"?: (e: CustomEvent<never>) => void;
|
|
795
|
+
/** Dispatched when the host loses focus. Bubbles and crosses shadow DOM boundaries. `detail: { id: string }` */
|
|
796
|
+
"onnys-tab-blur"?: (e: CustomEvent<never>) => void;
|
|
797
|
+
};
|
|
798
|
+
|
|
799
|
+
export type NysTabgroupProps = {
|
|
800
|
+
/** Unique identifier for the tabgroup element.
|
|
801
|
+
If not provided, one is auto-generated in `connectedCallback`.
|
|
802
|
+
Reflected to the DOM attribute. */
|
|
803
|
+
id?: string;
|
|
804
|
+
/** The name of the tab group.
|
|
805
|
+
Used for form submission and accessibility purposes. */
|
|
806
|
+
name?: string;
|
|
807
|
+
};
|
|
808
|
+
|
|
809
|
+
export type NysTabpanelProps = {
|
|
810
|
+
/** Unique identifier for the panel element.
|
|
811
|
+
If not provided, one is auto-generated in `connectedCallback`.
|
|
812
|
+
Reflected to the DOM attribute so `aria-controls` references on sibling
|
|
813
|
+
`<nys-tab>` elements resolve correctly. */
|
|
814
|
+
id?: string;
|
|
815
|
+
};
|
|
816
|
+
|
|
784
817
|
export type NysTableProps = {
|
|
785
818
|
/** */
|
|
786
819
|
id?: string;
|
|
@@ -1054,7 +1087,7 @@ export type CustomElements = {
|
|
|
1054
1087
|
"nys-avatar": Partial<NysAvatarProps & BaseProps & BaseEvents>;
|
|
1055
1088
|
|
|
1056
1089
|
/**
|
|
1057
|
-
* Floating back-to-top button with auto-show behavior and
|
|
1090
|
+
* Floating back-to-top button with auto-show behavior, smooth scroll, and focus management.
|
|
1058
1091
|
* ---
|
|
1059
1092
|
*
|
|
1060
1093
|
*/
|
|
@@ -1396,6 +1429,72 @@ export type CustomElements = {
|
|
|
1396
1429
|
*/
|
|
1397
1430
|
"nys-stepper": Partial<NysStepperProps & BaseProps & BaseEvents>;
|
|
1398
1431
|
|
|
1432
|
+
/**
|
|
1433
|
+
* `<nys-tab>` is a single tab within a `<nys-tabgroup>`.
|
|
1434
|
+
*
|
|
1435
|
+
* The host element carries `role="tab"`, `tabindex`, `aria-selected`,
|
|
1436
|
+
* `aria-controls`, and `aria-disabled` so assistive technologies see the
|
|
1437
|
+
* correct ARIA tab semantics on the element that is actually focused.
|
|
1438
|
+
* `<nys-tabgroup>` manages `tabindex`, `aria-selected`, and `aria-controls`
|
|
1439
|
+
* via `_applySelection`; do not set them directly on this element.
|
|
1440
|
+
* ---
|
|
1441
|
+
*
|
|
1442
|
+
*
|
|
1443
|
+
* ### **Events:**
|
|
1444
|
+
* - **nys-tab-select** - Dispatched when the tab is activated via click or Enter / Space. Bubbles and crosses shadow DOM boundaries. `detail: { id: string, label: string }`
|
|
1445
|
+
* - **nys-tab-focus** - Dispatched when the host receives focus. Bubbles and crosses shadow DOM boundaries. `detail: { id: string }`
|
|
1446
|
+
* - **nys-tab-blur** - Dispatched when the host loses focus. Bubbles and crosses shadow DOM boundaries. `detail: { id: string }`
|
|
1447
|
+
*
|
|
1448
|
+
* ### **Methods:**
|
|
1449
|
+
* - **focus(options: _FocusOptions_): _void_** - Focuses the host element. The host carries `role="tab"` and `tabindex`,
|
|
1450
|
+
* so it is the correct element for AT to land on.
|
|
1451
|
+
*
|
|
1452
|
+
* ### **Slots:**
|
|
1453
|
+
* - _default_ - No slots; content is derived from the `label` property.
|
|
1454
|
+
*/
|
|
1455
|
+
"nys-tab": Partial<NysTabProps & BaseProps & BaseEvents>;
|
|
1456
|
+
|
|
1457
|
+
/**
|
|
1458
|
+
* `<nys-tabgroup>` is the container for `<nys-tab>` and `<nys-tabpanel>`
|
|
1459
|
+
* elements.
|
|
1460
|
+
*
|
|
1461
|
+
* Accepts tabs and panels as flat light-DOM children in any order (interleaved
|
|
1462
|
+
* or grouped). On slot change, children are sorted into dedicated shadow-DOM
|
|
1463
|
+
* containers, ARIA relationships are wired, and the first selected (or first)
|
|
1464
|
+
* tab is activated.
|
|
1465
|
+
*
|
|
1466
|
+
* Scroll shadows are rendered on either side of the tab list and toggled via
|
|
1467
|
+
* `ResizeObserver` and a `scroll` listener so they accurately reflect whether
|
|
1468
|
+
* overflow content exists in each direction.
|
|
1469
|
+
*
|
|
1470
|
+
* Keyboard navigation follows the
|
|
1471
|
+
* https://www.w3.org/WAI/ARIA/apg/patterns/tabs/ ARIA Tabs Pattern:
|
|
1472
|
+
* - Arrow keys move focus without changing selection.
|
|
1473
|
+
* - Enter / Space confirm selection on the focused tab.
|
|
1474
|
+
* ---
|
|
1475
|
+
*
|
|
1476
|
+
*
|
|
1477
|
+
* ### **Slots:**
|
|
1478
|
+
* - _default_ - Accepts `<nys-tab>` and `<nys-tabpanel>` children. Elements are moved into internal shadow-DOM containers on `slotchange`; the slot itself is not rendered visibly.
|
|
1479
|
+
*/
|
|
1480
|
+
"nys-tabgroup": Partial<NysTabgroupProps & BaseProps & BaseEvents>;
|
|
1481
|
+
|
|
1482
|
+
/**
|
|
1483
|
+
* `<nys-tabpanel>` is a content panel paired with a `<nys-tab>` inside a
|
|
1484
|
+
* `<nys-tabgroup>`.
|
|
1485
|
+
*
|
|
1486
|
+
* Pairing is determined by render order: the Nth `<nys-tabpanel>` child of a
|
|
1487
|
+
* `<nys-tabgroup>` corresponds to the Nth `<nys-tab>` child.
|
|
1488
|
+
* `aria-labelledby` and the `hidden` attribute are managed externally by
|
|
1489
|
+
* `<nys-tabgroup>` via `_applySelection`; do not set them directly.
|
|
1490
|
+
* ---
|
|
1491
|
+
*
|
|
1492
|
+
*
|
|
1493
|
+
* ### **Slots:**
|
|
1494
|
+
* - _default_ - Default slot for panel content. Rendered inside a wrapper `<div>` with the `.nys-tabpanel` class for styling.
|
|
1495
|
+
*/
|
|
1496
|
+
"nys-tabpanel": Partial<NysTabpanelProps & BaseProps & BaseEvents>;
|
|
1497
|
+
|
|
1399
1498
|
/**
|
|
1400
1499
|
* `<nys-table>` is a responsive table component that can display native HTML tables,
|
|
1401
1500
|
* supports striped and bordered styling, sortable columns, and CSV download.
|