@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.
Files changed (28) hide show
  1. package/dist/all-components-bundle.js +1224 -412
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +5666 -5380
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/custom-elements.json +538 -215
  6. package/dist/custom-elements.md +81 -19
  7. package/dist/esm/fv/all-fv.d.ts +2 -0
  8. package/dist/esm/fv/all-fv.js +2 -0
  9. package/dist/esm/fv/all-fv.js.map +1 -1
  10. package/dist/esm/fv/master-detail-list/index.d.ts +50 -0
  11. package/dist/esm/fv/master-detail-list/index.js +176 -0
  12. package/dist/esm/fv/master-detail-list/index.js.map +1 -0
  13. package/dist/esm/fv/master-detail-list/styles.d.ts +1 -0
  14. package/dist/esm/fv/master-detail-list/styles.js +68 -0
  15. package/dist/esm/fv/master-detail-list/styles.js.map +1 -0
  16. package/dist/esm/fv/master-detail-list/template.d.ts +2 -0
  17. package/dist/esm/fv/master-detail-list/template.js +36 -0
  18. package/dist/esm/fv/master-detail-list/template.js.map +1 -0
  19. package/dist/esm/fv/master-detail-list-item/index.d.ts +32 -0
  20. package/dist/esm/fv/master-detail-list-item/index.js +86 -0
  21. package/dist/esm/fv/master-detail-list-item/index.js.map +1 -0
  22. package/dist/esm/fv/master-detail-list-item/styles.d.ts +1 -0
  23. package/dist/esm/fv/master-detail-list-item/styles.js +100 -0
  24. package/dist/esm/fv/master-detail-list-item/styles.js.map +1 -0
  25. package/dist/esm/fv/master-detail-list-item/template.d.ts +2 -0
  26. package/dist/esm/fv/master-detail-list-item/template.js +28 -0
  27. package/dist/esm/fv/master-detail-list-item/template.js.map +1 -0
  28. 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,2 @@
1
+ import type { FvMasterDetailListItem } from '.';
2
+ export declare const template: import("@ni/fast-element").ViewTemplate<FvMasterDetailListItem, any>;
@@ -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.5.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.20.4",
46
+ "@ni/spright-components": "^6.21.0",
47
47
  "tslib": "^2.2.0"
48
48
  },
49
49
  "devDependencies": {