@ni/ok-components 1.5.1 → 1.6.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/dist/all-components-bundle.js +1224 -412
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +5666 -5380
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/custom-elements.json +538 -215
- package/dist/custom-elements.md +81 -19
- package/dist/esm/fv/all-fv.d.ts +2 -0
- package/dist/esm/fv/all-fv.js +2 -0
- package/dist/esm/fv/all-fv.js.map +1 -1
- package/dist/esm/fv/master-detail-list/index.d.ts +50 -0
- package/dist/esm/fv/master-detail-list/index.js +176 -0
- package/dist/esm/fv/master-detail-list/index.js.map +1 -0
- package/dist/esm/fv/master-detail-list/styles.d.ts +1 -0
- package/dist/esm/fv/master-detail-list/styles.js +68 -0
- package/dist/esm/fv/master-detail-list/styles.js.map +1 -0
- package/dist/esm/fv/master-detail-list/template.d.ts +2 -0
- package/dist/esm/fv/master-detail-list/template.js +36 -0
- package/dist/esm/fv/master-detail-list/template.js.map +1 -0
- package/dist/esm/fv/master-detail-list-item/index.d.ts +32 -0
- package/dist/esm/fv/master-detail-list-item/index.js +86 -0
- package/dist/esm/fv/master-detail-list-item/index.js.map +1 -0
- package/dist/esm/fv/master-detail-list-item/styles.d.ts +1 -0
- package/dist/esm/fv/master-detail-list-item/styles.js +100 -0
- package/dist/esm/fv/master-detail-list-item/styles.js.map +1 -0
- package/dist/esm/fv/master-detail-list-item/template.d.ts +2 -0
- package/dist/esm/fv/master-detail-list-item/template.js +28 -0
- package/dist/esm/fv/master-detail-list-item/template.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fv/master-detail-list-item/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { attr, observable } from '@ni/fast-element';\nimport { DesignSystem, FoundationElement } from '@ni/fast-foundation';\nimport { styles } from './styles';\nimport { template } from './template';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-fv-master-detail-list-item': FvMasterDetailListItem;\n }\n}\n\n/**\n * A selectable master-detail list item with title, subtitle, and optional status content.\n */\nexport class FvMasterDetailListItem extends FoundationElement {\n @attr({ attribute: 'title-text' })\n public titleText = '';\n\n @attr\n public subtitle = '';\n\n @attr\n public value = '';\n\n @attr({ mode: 'boolean' })\n public compact = false;\n\n @attr({ mode: 'boolean' })\n public selected = false;\n\n @attr({ attribute: 'status-color' })\n public statusColor = '';\n\n @attr({ attribute: 'status-label' })\n public statusLabel = '';\n\n /** @internal */\n @observable\n public hasStatusSlotContent = false;\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n\n this.setAttribute('role', 'option');\n this.syncSelectionAria();\n }\n\n /** @internal */\n public selectedChanged(): void {\n if (this.$fastController.isConnected) {\n this.syncSelectionAria();\n }\n }\n\n /** @internal */\n public handleStatusSlotChange(event: Event): void {\n const slot = event.target as HTMLSlotElement;\n this.hasStatusSlotContent = slot.assignedNodes({ flatten: true }).length > 0;\n }\n\n /** @internal */\n public get hasStatus(): boolean {\n return this.hasStatusSlotContent || this.statusColor.trim().length > 0;\n }\n\n /** @internal */\n public get fallbackStatusLabel(): string | null {\n if (this.hasStatusSlotContent || this.statusColor.trim().length === 0) {\n return null;\n }\n\n const normalizedStatusLabel = this.statusLabel.trim();\n return normalizedStatusLabel.length > 0 ? normalizedStatusLabel : null;\n }\n\n private syncSelectionAria(): void {\n this.setAttribute('aria-selected', String(this.selected));\n }\n}\n\nconst okFvMasterDetailListItem = FvMasterDetailListItem.compose({\n baseName: 'fv-master-detail-list-item',\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('ok').register(okFvMasterDetailListItem());\nexport const fvMasterDetailListItemTag = 'ok-fv-master-detail-list-item';"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("@ni/fast-element").ElementStyles;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { css } from '@ni/fast-element';
|
|
2
|
+
import { bodyFont, bodyFontColor, borderHoverColor, borderWidth, fillHoverColor, fillSelectedColor, iconColor, placeholderFontColor, standardPadding } from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';
|
|
3
|
+
import { display } from '../../utilities/style/display';
|
|
4
|
+
export const styles = css `
|
|
5
|
+
@layer base, hover, selected;
|
|
6
|
+
|
|
7
|
+
@layer base {
|
|
8
|
+
${display('block')}
|
|
9
|
+
|
|
10
|
+
:host {
|
|
11
|
+
position: relative;
|
|
12
|
+
color: ${bodyFontColor};
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
user-select: none;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
:host([hidden]) {
|
|
18
|
+
display: none;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.item {
|
|
22
|
+
display: grid;
|
|
23
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
24
|
+
align-items: center;
|
|
25
|
+
gap: ${standardPadding};
|
|
26
|
+
min-block-size: 76px;
|
|
27
|
+
padding: 14px 18px 14px 22px;
|
|
28
|
+
background: transparent;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host([compact]) .item {
|
|
32
|
+
min-block-size: 56px;
|
|
33
|
+
padding: 10px 18px 10px 22px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.text {
|
|
37
|
+
min-inline-size: 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.title {
|
|
41
|
+
overflow: hidden;
|
|
42
|
+
text-overflow: ellipsis;
|
|
43
|
+
white-space: nowrap;
|
|
44
|
+
font: ${bodyFont};
|
|
45
|
+
font-weight: 600;
|
|
46
|
+
color: ${bodyFontColor};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.subtitle {
|
|
50
|
+
overflow: hidden;
|
|
51
|
+
text-overflow: ellipsis;
|
|
52
|
+
white-space: nowrap;
|
|
53
|
+
margin-block-start: 4px;
|
|
54
|
+
font: ${bodyFont};
|
|
55
|
+
color: ${placeholderFontColor};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:host([compact]) .subtitle {
|
|
59
|
+
margin-block-start: 2px;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.status {
|
|
63
|
+
display: inline-flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
inline-size: 16px;
|
|
67
|
+
block-size: 16px;
|
|
68
|
+
flex: 0 0 auto;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.status-icon {
|
|
72
|
+
inline-size: 10px;
|
|
73
|
+
block-size: 10px;
|
|
74
|
+
color: currentColor;
|
|
75
|
+
${iconColor.cssCustomProperty}: currentColor;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@layer hover {
|
|
80
|
+
:host(:hover) .item {
|
|
81
|
+
background: ${fillHoverColor};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@layer selected {
|
|
86
|
+
:host([selected]) .item {
|
|
87
|
+
background: ${fillSelectedColor};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
:host([selected])::before {
|
|
91
|
+
content: '';
|
|
92
|
+
position: absolute;
|
|
93
|
+
inset-block: 0;
|
|
94
|
+
inset-inline-start: 0;
|
|
95
|
+
inline-size: calc(${borderWidth} * 4);
|
|
96
|
+
background: ${borderHoverColor};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
`;
|
|
100
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/master-detail-list-item/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACH,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,eAAe,EAClB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;UAIf,OAAO,CAAC,OAAO,CAAC;;;;qBAIL,aAAa;;;;;;;;;;;;;mBAaf,eAAe;;;;;;;;;;;;;;;;;;;oBAmBd,QAAQ;;qBAEP,aAAa;;;;;;;;oBAQd,QAAQ;qBACP,oBAAoB;;;;;;;;;;;;;;;;;;;;cAoB3B,SAAS,CAAC,iBAAiB;;;;;;0BAMf,cAAc;;;;;;0BAMd,iBAAiB;;;;;;;;gCAQX,WAAW;0BACjB,gBAAgB;;;CAGzC,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport {\n bodyFont,\n bodyFontColor,\n borderHoverColor,\n borderWidth,\n fillHoverColor,\n fillSelectedColor,\n iconColor,\n placeholderFontColor,\n standardPadding\n} from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { display } from '../../utilities/style/display';\n\nexport const styles = css`\n @layer base, hover, selected;\n\n @layer base {\n ${display('block')}\n\n :host {\n position: relative;\n color: ${bodyFontColor};\n cursor: pointer;\n user-select: none;\n }\n\n :host([hidden]) {\n display: none;\n }\n\n .item {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: ${standardPadding};\n min-block-size: 76px;\n padding: 14px 18px 14px 22px;\n background: transparent;\n }\n\n :host([compact]) .item {\n min-block-size: 56px;\n padding: 10px 18px 10px 22px;\n }\n\n .text {\n min-inline-size: 0;\n }\n\n .title {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: ${bodyFont};\n font-weight: 600;\n color: ${bodyFontColor};\n }\n\n .subtitle {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin-block-start: 4px;\n font: ${bodyFont};\n color: ${placeholderFontColor};\n }\n\n :host([compact]) .subtitle {\n margin-block-start: 2px;\n }\n\n .status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 16px;\n block-size: 16px;\n flex: 0 0 auto;\n }\n\n .status-icon {\n inline-size: 10px;\n block-size: 10px;\n color: currentColor;\n ${iconColor.cssCustomProperty}: currentColor;\n }\n }\n\n @layer hover {\n :host(:hover) .item {\n background: ${fillHoverColor};\n }\n }\n\n @layer selected {\n :host([selected]) .item {\n background: ${fillSelectedColor};\n }\n\n :host([selected])::before {\n content: '';\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n inline-size: calc(${borderWidth} * 4);\n background: ${borderHoverColor};\n }\n }\n`;"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { html, when } from '@ni/fast-element';
|
|
2
|
+
import { iconCircleFilledTag } from '@ni/nimble-components/dist/esm/icons/circle-filled';
|
|
3
|
+
export const template = html `
|
|
4
|
+
<div class="item" part="item">
|
|
5
|
+
<div class="text" part="text">
|
|
6
|
+
<div class="title" part="title">${x => x.titleText}</div>
|
|
7
|
+
<div class="subtitle" part="subtitle">${x => x.subtitle}</div>
|
|
8
|
+
</div>
|
|
9
|
+
<div class="status" part="status" ?hidden="${x => !x.hasStatus}">
|
|
10
|
+
<slot
|
|
11
|
+
name="status"
|
|
12
|
+
@slotchange="${(x, c) => x.handleStatusSlotChange(c.event)}"
|
|
13
|
+
>
|
|
14
|
+
${when(x => x.statusColor.trim().length > 0, html `
|
|
15
|
+
<${iconCircleFilledTag}
|
|
16
|
+
class="status-icon"
|
|
17
|
+
part="status-icon"
|
|
18
|
+
role="${x => (x.fallbackStatusLabel ? 'img' : null)}"
|
|
19
|
+
aria-label="${x => x.fallbackStatusLabel}"
|
|
20
|
+
aria-hidden="${x => (x.fallbackStatusLabel === null ? 'true' : null)}"
|
|
21
|
+
style="${x => `color: ${x.statusColor};`}"
|
|
22
|
+
></${iconCircleFilledTag}>
|
|
23
|
+
`)}
|
|
24
|
+
</slot>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
`;
|
|
28
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/fv/master-detail-list-item/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAGzF,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAwB;;;8CAGN,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;oDACV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;;qDAEd,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;;;+BAGvC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC;;kBAExD,IAAI,CACF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACpC,IAAI,CAAwB;2BACrB,mBAAmB;;;oCAGV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;0CACrC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB;2CACzB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;qCAC3D,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,WAAW,GAAG;6BACvC,mBAAmB;qBAC3B,CACJ;;;;CAIhB,CAAC","sourcesContent":["import { html, when } from '@ni/fast-element';\nimport { iconCircleFilledTag } from '@ni/nimble-components/dist/esm/icons/circle-filled';\nimport type { FvMasterDetailListItem } from '.';\n\nexport const template = html<FvMasterDetailListItem>`\n <div class=\"item\" part=\"item\">\n <div class=\"text\" part=\"text\">\n <div class=\"title\" part=\"title\">${x => x.titleText}</div>\n <div class=\"subtitle\" part=\"subtitle\">${x => x.subtitle}</div>\n </div>\n <div class=\"status\" part=\"status\" ?hidden=\"${x => !x.hasStatus}\">\n <slot\n name=\"status\"\n @slotchange=\"${(x, c) => x.handleStatusSlotChange(c.event)}\"\n >\n ${when(\n x => x.statusColor.trim().length > 0,\n html<FvMasterDetailListItem>`\n <${iconCircleFilledTag}\n class=\"status-icon\"\n part=\"status-icon\"\n role=\"${x => (x.fallbackStatusLabel ? 'img' : null)}\"\n aria-label=\"${x => x.fallbackStatusLabel}\"\n aria-hidden=\"${x => (x.fallbackStatusLabel === null ? 'true' : null)}\"\n style=\"${x => `color: ${x.statusColor};`}\"\n ></${iconCircleFilledTag}>\n `\n )}\n </slot>\n </div>\n </div>\n`;"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ni/ok-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "NI Ok Components",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "npm run build:components && npm run build:cem",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@ni/fast-foundation": "^10.2.3",
|
|
44
44
|
"@ni/fast-web-utilities": "^10.0.0",
|
|
45
45
|
"@ni/nimble-components": "^35.11.0",
|
|
46
|
-
"@ni/spright-components": "^6.
|
|
46
|
+
"@ni/spright-components": "^6.21.0",
|
|
47
47
|
"tslib": "^2.2.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|