@ni/ok-components 1.2.1 → 1.3.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 (98) hide show
  1. package/dist/all-components-bundle.js +3044 -530
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +6788 -5229
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/custom-elements.json +1423 -63
  6. package/dist/custom-elements.md +246 -13
  7. package/dist/esm/fv/accordion-item/index.d.ts +1 -0
  8. package/dist/esm/fv/accordion-item/index.js +1 -0
  9. package/dist/esm/fv/accordion-item/index.js.map +1 -1
  10. package/dist/esm/fv/accordion-item/testing/fv-accordion-item.pageobject.js +5 -0
  11. package/dist/esm/fv/accordion-item/testing/fv-accordion-item.pageobject.js.map +1 -1
  12. package/dist/esm/fv/all-fv.d.ts +7 -0
  13. package/dist/esm/fv/all-fv.js +7 -0
  14. package/dist/esm/fv/all-fv.js.map +1 -1
  15. package/dist/esm/fv/card/index.d.ts +59 -0
  16. package/dist/esm/fv/card/index.js +144 -0
  17. package/dist/esm/fv/card/index.js.map +1 -0
  18. package/dist/esm/fv/card/styles.d.ts +1 -0
  19. package/dist/esm/fv/card/styles.js +231 -0
  20. package/dist/esm/fv/card/styles.js.map +1 -0
  21. package/dist/esm/fv/card/template.d.ts +2 -0
  22. package/dist/esm/fv/card/template.js +126 -0
  23. package/dist/esm/fv/card/template.js.map +1 -0
  24. package/dist/esm/fv/card/types.d.ts +10 -0
  25. package/dist/esm/fv/card/types.js +9 -0
  26. package/dist/esm/fv/card/types.js.map +1 -0
  27. package/dist/esm/fv/chip-selector/index.d.ts +104 -0
  28. package/dist/esm/fv/chip-selector/index.js +367 -0
  29. package/dist/esm/fv/chip-selector/index.js.map +1 -0
  30. package/dist/esm/fv/chip-selector/styles.d.ts +1 -0
  31. package/dist/esm/fv/chip-selector/styles.js +251 -0
  32. package/dist/esm/fv/chip-selector/styles.js.map +1 -0
  33. package/dist/esm/fv/chip-selector/template.d.ts +2 -0
  34. package/dist/esm/fv/chip-selector/template.js +147 -0
  35. package/dist/esm/fv/chip-selector/template.js.map +1 -0
  36. package/dist/esm/fv/context-help/index.d.ts +22 -0
  37. package/dist/esm/fv/context-help/index.js +41 -0
  38. package/dist/esm/fv/context-help/index.js.map +1 -0
  39. package/dist/esm/fv/context-help/styles.d.ts +1 -0
  40. package/dist/esm/fv/context-help/styles.js +55 -0
  41. package/dist/esm/fv/context-help/styles.js.map +1 -0
  42. package/dist/esm/fv/context-help/template.d.ts +2 -0
  43. package/dist/esm/fv/context-help/template.js +24 -0
  44. package/dist/esm/fv/context-help/template.js.map +1 -0
  45. package/dist/esm/fv/context-help/types.d.ts +1 -0
  46. package/dist/esm/fv/context-help/types.js +2 -0
  47. package/dist/esm/fv/context-help/types.js.map +1 -0
  48. package/dist/esm/fv/search-input/index.d.ts +2 -0
  49. package/dist/esm/fv/search-input/index.js +2 -0
  50. package/dist/esm/fv/search-input/index.js.map +1 -1
  51. package/dist/esm/fv/search-input/styles.js +14 -14
  52. package/dist/esm/fv/search-input/styles.js.map +1 -1
  53. package/dist/esm/fv/split-button/index.d.ts +43 -0
  54. package/dist/esm/fv/split-button/index.js +130 -0
  55. package/dist/esm/fv/split-button/index.js.map +1 -0
  56. package/dist/esm/fv/split-button/styles.d.ts +1 -0
  57. package/dist/esm/fv/split-button/styles.js +220 -0
  58. package/dist/esm/fv/split-button/styles.js.map +1 -0
  59. package/dist/esm/fv/split-button/template.d.ts +2 -0
  60. package/dist/esm/fv/split-button/template.js +52 -0
  61. package/dist/esm/fv/split-button/template.js.map +1 -0
  62. package/dist/esm/fv/split-button/types.d.ts +12 -0
  63. package/dist/esm/fv/split-button/types.js +11 -0
  64. package/dist/esm/fv/split-button/types.js.map +1 -0
  65. package/dist/esm/fv/split-button-anchor/index.d.ts +47 -0
  66. package/dist/esm/fv/split-button-anchor/index.js +146 -0
  67. package/dist/esm/fv/split-button-anchor/index.js.map +1 -0
  68. package/dist/esm/fv/split-button-anchor/styles.d.ts +1 -0
  69. package/dist/esm/fv/split-button-anchor/styles.js +228 -0
  70. package/dist/esm/fv/split-button-anchor/styles.js.map +1 -0
  71. package/dist/esm/fv/split-button-anchor/template.d.ts +2 -0
  72. package/dist/esm/fv/split-button-anchor/template.js +64 -0
  73. package/dist/esm/fv/split-button-anchor/template.js.map +1 -0
  74. package/dist/esm/fv/split-button-anchor/types.d.ts +12 -0
  75. package/dist/esm/fv/split-button-anchor/types.js +11 -0
  76. package/dist/esm/fv/split-button-anchor/types.js.map +1 -0
  77. package/dist/esm/fv/summary-panel/index.d.ts +26 -0
  78. package/dist/esm/fv/summary-panel/index.js +70 -0
  79. package/dist/esm/fv/summary-panel/index.js.map +1 -0
  80. package/dist/esm/fv/summary-panel/styles.d.ts +1 -0
  81. package/dist/esm/fv/summary-panel/styles.js +49 -0
  82. package/dist/esm/fv/summary-panel/styles.js.map +1 -0
  83. package/dist/esm/fv/summary-panel/template.d.ts +2 -0
  84. package/dist/esm/fv/summary-panel/template.js +29 -0
  85. package/dist/esm/fv/summary-panel/template.js.map +1 -0
  86. package/dist/esm/fv/summary-panel-tile/index.d.ts +23 -0
  87. package/dist/esm/fv/summary-panel-tile/index.js +59 -0
  88. package/dist/esm/fv/summary-panel-tile/index.js.map +1 -0
  89. package/dist/esm/fv/summary-panel-tile/styles.d.ts +1 -0
  90. package/dist/esm/fv/summary-panel-tile/styles.js +138 -0
  91. package/dist/esm/fv/summary-panel-tile/styles.js.map +1 -0
  92. package/dist/esm/fv/summary-panel-tile/template.d.ts +2 -0
  93. package/dist/esm/fv/summary-panel-tile/template.js +14 -0
  94. package/dist/esm/fv/summary-panel-tile/template.js.map +1 -0
  95. package/dist/esm/fv/summary-panel-tile/types.d.ts +5 -0
  96. package/dist/esm/fv/summary-panel-tile/types.js +5 -0
  97. package/dist/esm/fv/summary-panel-tile/types.js.map +1 -0
  98. package/package.json +1 -1
@@ -0,0 +1,231 @@
1
+ import { css } from '@ni/fast-element';
2
+ import { bodyFont, bodyFontColor, bodyPlus1EmphasizedFont, bodyPlus1EmphasizedFontColor, borderHoverColor, cardBorderColor, controlHeight, mediumPadding, sectionBackgroundColor, smallPadding, smallDelay, standardPadding, subtitleFont, subtitleFontColor, tooltipCaptionFont, tooltipCaptionFontColor } from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';
3
+ import { appearanceBehavior } from '@ni/nimble-components/dist/esm/utilities/style/appearance';
4
+ import { display } from '../../utilities/style/display';
5
+ import { FvCardAppearance } from './types';
6
+ export const styles = css `
7
+ ${display('block')}
8
+
9
+ :host {
10
+ display: block;
11
+ }
12
+
13
+ @layer base, hover, focusVisible, active, disabled, top;
14
+
15
+ @layer base {
16
+ ${display('block')}
17
+
18
+ :host {
19
+ display: block;
20
+ }
21
+
22
+ .card-shell {
23
+ display: block;
24
+ width: 100%;
25
+ box-sizing: border-box;
26
+ padding: ${standardPadding};
27
+ border-radius: 8px;
28
+ }
29
+
30
+ .card-button-shell {
31
+ overflow: clip;
32
+ transition:
33
+ background-color ${smallDelay} ease-in-out,
34
+ border-color ${smallDelay} ease-in-out,
35
+ box-shadow ${smallDelay} ease-in-out;
36
+ --ni-private-card-button-background-hover-color: transparent;
37
+ --ni-private-card-button-background-active-color: transparent;
38
+ --ni-private-card-button-border-active-color: transparent;
39
+ --ni-private-card-button-border-selected-color: transparent;
40
+ }
41
+
42
+ .card-layout {
43
+ display: grid;
44
+ grid-template-columns: minmax(0, 1fr);
45
+ align-items: start;
46
+ }
47
+
48
+ .card-layout.has-media {
49
+ grid-template-columns: auto minmax(0, 1fr);
50
+ column-gap: ${standardPadding};
51
+ }
52
+
53
+ .media-region {
54
+ display: flex;
55
+ align-items: flex-start;
56
+ justify-content: center;
57
+ align-self: start;
58
+ min-width: calc(${controlHeight} + ${mediumPadding});
59
+ }
60
+
61
+ .media-region slot[name='icon'] {
62
+ display: block;
63
+ }
64
+
65
+ .initials-tile {
66
+ display: inline-flex;
67
+ align-items: center;
68
+ justify-content: center;
69
+ width: 40px;
70
+ height: 40px;
71
+ border-radius: 8px;
72
+ background: rgba(0, 0, 0, 0.06);
73
+ color: ${bodyPlus1EmphasizedFontColor};
74
+ font: ${bodyPlus1EmphasizedFont};
75
+ text-transform: uppercase;
76
+ }
77
+
78
+ .main-region {
79
+ min-width: 0;
80
+ display: grid;
81
+ grid-template-columns: minmax(0, 1fr);
82
+ gap: ${mediumPadding};
83
+ text-align: left;
84
+ }
85
+
86
+ .header-row {
87
+ display: flex;
88
+ gap: ${mediumPadding};
89
+ align-items: flex-start;
90
+ justify-content: space-between;
91
+ min-width: 0;
92
+ }
93
+
94
+ .title-group,
95
+ .body,
96
+ .footer,
97
+ .actions {
98
+ min-width: 0;
99
+ }
100
+
101
+ .title-group {
102
+ display: grid;
103
+ gap: 2px;
104
+ }
105
+
106
+ .title {
107
+ font: ${bodyPlus1EmphasizedFont};
108
+ color: ${bodyPlus1EmphasizedFontColor};
109
+ }
110
+
111
+ .subtitle {
112
+ font: ${subtitleFont};
113
+ color: ${subtitleFontColor};
114
+ }
115
+
116
+ .badges {
117
+ display: inline-flex;
118
+ gap: ${smallPadding};
119
+ align-items: center;
120
+ justify-content: flex-end;
121
+ flex-wrap: wrap;
122
+ text-align: right;
123
+ }
124
+
125
+ .body {
126
+ display: grid;
127
+ gap: ${smallPadding};
128
+ color: ${bodyFontColor};
129
+ font: ${bodyFont};
130
+ text-align: left;
131
+ }
132
+
133
+ .description {
134
+ font: ${bodyFont};
135
+ color: ${bodyFontColor};
136
+ text-align: left;
137
+ }
138
+
139
+ .footer {
140
+ display: flex;
141
+ align-items: center;
142
+ justify-content: space-between;
143
+ gap: ${mediumPadding};
144
+ font: ${tooltipCaptionFont};
145
+ color: ${tooltipCaptionFontColor};
146
+ text-transform: uppercase;
147
+ }
148
+
149
+ .footer-start,
150
+ .footer-end {
151
+ min-width: 0;
152
+ }
153
+
154
+ .footer-end {
155
+ text-align: right;
156
+ }
157
+
158
+ .actions {
159
+ display: flex;
160
+ justify-content: flex-end;
161
+ align-items: center;
162
+ gap: ${smallPadding};
163
+ flex-wrap: wrap;
164
+ }
165
+
166
+ ::slotted([slot='icon']) {
167
+ display: block;
168
+ }
169
+
170
+ ::slotted([slot='badges']),
171
+ ::slotted([slot='footer-start']),
172
+ ::slotted([slot='footer-end']) {
173
+ display: block;
174
+ max-width: 100%;
175
+ }
176
+
177
+ .actions ::slotted(*) {
178
+ flex: 0 0 auto;
179
+ }
180
+ }
181
+
182
+ @layer hover {
183
+ .card-button-shell:hover {
184
+ box-shadow: 0 0 0 2px ${borderHoverColor};
185
+ }
186
+ }
187
+
188
+ @layer focusVisible {}
189
+
190
+ @layer active {
191
+ .card-button-shell:active {
192
+ box-shadow: none;
193
+ border-color: ${borderHoverColor};
194
+ }
195
+ }
196
+
197
+ @layer disabled {
198
+ .card-button-shell[disabled] {
199
+ box-shadow: none;
200
+ }
201
+ }
202
+
203
+ @layer top {}
204
+ `
205
+ .withBehaviors(appearanceBehavior(FvCardAppearance.outline, css `
206
+ @layer base {
207
+ .card-shell {
208
+ border: 2px solid ${cardBorderColor};
209
+ }
210
+ }
211
+
212
+ @layer hover {
213
+ .card-button-shell:hover {
214
+ border-color: transparent;
215
+ }
216
+ }
217
+
218
+ @layer active {
219
+ .card-button-shell:hover:active {
220
+ border-color: ${borderHoverColor};
221
+ }
222
+ }
223
+ `), appearanceBehavior(FvCardAppearance.block, css `
224
+ @layer base {
225
+ .card-shell {
226
+ background-color: ${sectionBackgroundColor};
227
+ border: 2px solid transparent;
228
+ }
229
+ }
230
+ `));
231
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/card/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACH,QAAQ,EACR,aAAa,EACb,uBAAuB,EACvB,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EAC1B,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2DAA2D,CAAC;AAC/F,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,OAAO,CAAC;;;;;;;;;UASZ,OAAO,CAAC,OAAO,CAAC;;;;;;;;;;uBAUH,eAAe;;;;;;;mCAOH,UAAU;+BACd,UAAU;6BACZ,UAAU;;;;;;;;;;;;;;;0BAeb,eAAe;;;;;;;;8BAQX,aAAa,MAAM,aAAa;;;;;;;;;;;;;;;qBAezC,4BAA4B;oBAC7B,uBAAuB;;;;;;;;mBAQxB,aAAa;;;;;;mBAMb,aAAa;;;;;;;;;;;;;;;;;;;oBAmBZ,uBAAuB;qBACtB,4BAA4B;;;;oBAI7B,YAAY;qBACX,iBAAiB;;;;;mBAKnB,YAAY;;;;;;;;;mBASZ,YAAY;qBACV,aAAa;oBACd,QAAQ;;;;;oBAKR,QAAQ;qBACP,aAAa;;;;;;;;mBAQf,aAAa;oBACZ,kBAAkB;qBACjB,uBAAuB;;;;;;;;;;;;;;;;;mBAiBzB,YAAY;;;;;;;;;;;;;;;;;;;;;;oCAsBK,gBAAgB;;;;;;;;;4BASxB,gBAAgB;;;;;;;;;;;CAW3C;KACA,aAAa,CACV,kBAAkB,CACd,gBAAgB,CAAC,OAAO,EACxB,GAAG,CAAA;;;wCAG6B,eAAe;;;;;;;;;;;;oCAYnB,gBAAgB;;;SAG3C,CACJ,EACD,kBAAkB,CACd,gBAAgB,CAAC,KAAK,EACtB,GAAG,CAAA;;;wCAG6B,sBAAsB;;;;SAIrD,CACJ,CACJ,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport {\n bodyFont,\n bodyFontColor,\n bodyPlus1EmphasizedFont,\n bodyPlus1EmphasizedFontColor,\n borderHoverColor,\n cardBorderColor,\n controlHeight,\n mediumPadding,\n sectionBackgroundColor,\n smallPadding,\n smallDelay,\n standardPadding,\n subtitleFont,\n subtitleFontColor,\n tooltipCaptionFont,\n tooltipCaptionFontColor\n} from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { appearanceBehavior } from '@ni/nimble-components/dist/esm/utilities/style/appearance';\nimport { display } from '../../utilities/style/display';\nimport { FvCardAppearance } from './types';\n\nexport const styles = css`\n ${display('block')}\n\n :host {\n display: block;\n }\n\n @layer base, hover, focusVisible, active, disabled, top;\n\n @layer base {\n ${display('block')}\n\n :host {\n display: block;\n }\n\n .card-shell {\n display: block;\n width: 100%;\n box-sizing: border-box;\n padding: ${standardPadding};\n border-radius: 8px;\n }\n\n .card-button-shell {\n overflow: clip;\n transition:\n background-color ${smallDelay} ease-in-out,\n border-color ${smallDelay} ease-in-out,\n box-shadow ${smallDelay} ease-in-out;\n --ni-private-card-button-background-hover-color: transparent;\n --ni-private-card-button-background-active-color: transparent;\n --ni-private-card-button-border-active-color: transparent;\n --ni-private-card-button-border-selected-color: transparent;\n }\n\n .card-layout {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n align-items: start;\n }\n\n .card-layout.has-media {\n grid-template-columns: auto minmax(0, 1fr);\n column-gap: ${standardPadding};\n }\n\n .media-region {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n align-self: start;\n min-width: calc(${controlHeight} + ${mediumPadding});\n }\n\n .media-region slot[name='icon'] {\n display: block;\n }\n\n .initials-tile {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: rgba(0, 0, 0, 0.06);\n color: ${bodyPlus1EmphasizedFontColor};\n font: ${bodyPlus1EmphasizedFont};\n text-transform: uppercase;\n }\n\n .main-region {\n min-width: 0;\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n gap: ${mediumPadding};\n text-align: left;\n }\n\n .header-row {\n display: flex;\n gap: ${mediumPadding};\n align-items: flex-start;\n justify-content: space-between;\n min-width: 0;\n }\n\n .title-group,\n .body,\n .footer,\n .actions {\n min-width: 0;\n }\n\n .title-group {\n display: grid;\n gap: 2px;\n }\n\n .title {\n font: ${bodyPlus1EmphasizedFont};\n color: ${bodyPlus1EmphasizedFontColor};\n }\n\n .subtitle {\n font: ${subtitleFont};\n color: ${subtitleFontColor};\n }\n\n .badges {\n display: inline-flex;\n gap: ${smallPadding};\n align-items: center;\n justify-content: flex-end;\n flex-wrap: wrap;\n text-align: right;\n }\n\n .body {\n display: grid;\n gap: ${smallPadding};\n color: ${bodyFontColor};\n font: ${bodyFont};\n text-align: left;\n }\n\n .description {\n font: ${bodyFont};\n color: ${bodyFontColor};\n text-align: left;\n }\n\n .footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ${mediumPadding};\n font: ${tooltipCaptionFont};\n color: ${tooltipCaptionFontColor};\n text-transform: uppercase;\n }\n\n .footer-start,\n .footer-end {\n min-width: 0;\n }\n\n .footer-end {\n text-align: right;\n }\n\n .actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: ${smallPadding};\n flex-wrap: wrap;\n }\n\n ::slotted([slot='icon']) {\n display: block;\n }\n\n ::slotted([slot='badges']),\n ::slotted([slot='footer-start']),\n ::slotted([slot='footer-end']) {\n display: block;\n max-width: 100%;\n }\n\n .actions ::slotted(*) {\n flex: 0 0 auto;\n }\n }\n\n @layer hover {\n .card-button-shell:hover {\n box-shadow: 0 0 0 2px ${borderHoverColor};\n }\n }\n\n @layer focusVisible {}\n\n @layer active {\n .card-button-shell:active {\n box-shadow: none;\n border-color: ${borderHoverColor};\n }\n }\n\n @layer disabled {\n .card-button-shell[disabled] {\n box-shadow: none;\n }\n }\n\n @layer top {}\n`\n.withBehaviors(\n appearanceBehavior(\n FvCardAppearance.outline,\n css`\n @layer base {\n .card-shell {\n border: 2px solid ${cardBorderColor};\n }\n }\n\n @layer hover {\n .card-button-shell:hover {\n border-color: transparent;\n }\n }\n\n @layer active {\n .card-button-shell:hover:active {\n border-color: ${borderHoverColor};\n }\n }\n `\n ),\n appearanceBehavior(\n FvCardAppearance.block,\n css`\n @layer base {\n .card-shell {\n background-color: ${sectionBackgroundColor};\n border: 2px solid transparent;\n }\n }\n `\n )\n);\n"]}
@@ -0,0 +1,2 @@
1
+ import type { FvCard } from '.';
2
+ export declare const template: import("@ni/fast-element").ViewTemplate<FvCard, any>;
@@ -0,0 +1,126 @@
1
+ import { html, when } from '@ni/fast-element';
2
+ import { cardTag } from '@ni/nimble-components/dist/esm/card';
3
+ import { cardButtonTag } from '@ni/nimble-components/dist/esm/card-button';
4
+ import { FvCardInteractionMode } from './types';
5
+ const cardContentTemplate = html `
6
+ <div class="card-layout ${x => (x.hasMedia ? 'has-media' : 'no-media')}">
7
+ ${when(x => x.hasMedia, html `
8
+ <div class="media-region" part="media-region">
9
+ ${when(x => x.showInitials, html `
10
+ <div class="initials-tile" part="initials-tile" aria-hidden="true">
11
+ ${x => x.initialsText}
12
+ </div>
13
+ `)}
14
+ <slot
15
+ name="icon"
16
+ @slotchange="${(x, c) => x.handleIconSlotChange(c.event)}"
17
+ ></slot>
18
+ </div>
19
+ `)}
20
+ <div class="main-region" part="main-region">
21
+ <div class="header-row" part="header-row">
22
+ <div class="title-group" part="title-group">
23
+ <div class="title" part="title">${x => x.title}</div>
24
+ ${when(x => x.subtitle.length > 0, html `
25
+ <div class="subtitle" part="subtitle">${x => x.subtitle}</div>
26
+ `)}
27
+ </div>
28
+ ${when(x => x.hasBadgesContent, html `
29
+ <div class="badges" part="badges">
30
+ <slot
31
+ name="badges"
32
+ @slotchange="${(x, c) => x.handleBadgesSlotChange(c.event)}"
33
+ ></slot>
34
+ </div>
35
+ `)}
36
+ ${when(x => !x.hasBadgesContent, html `
37
+ <slot
38
+ name="badges"
39
+ hidden
40
+ @slotchange="${(x, c) => x.handleBadgesSlotChange(c.event)}"
41
+ ></slot>
42
+ `)}
43
+ </div>
44
+ ${when(x => x.showBody, html `
45
+ <div class="body" part="body">
46
+ ${when(x => x.description.length > 0, html `
47
+ <div class="description" part="description">${x => x.description}</div>
48
+ `)}
49
+ <slot
50
+ @slotchange="${(x, c) => x.handleDefaultSlotChange(c.event)}"
51
+ ></slot>
52
+ </div>
53
+ `)}
54
+ ${when(x => !x.showBody, html `
55
+ <slot
56
+ hidden
57
+ @slotchange="${(x, c) => x.handleDefaultSlotChange(c.event)}"
58
+ ></slot>
59
+ `)}
60
+ ${when(x => x.showFooter, html `
61
+ <div class="footer" part="footer">
62
+ <div class="footer-start" part="footer-start">
63
+ <slot
64
+ name="footer-start"
65
+ @slotchange="${(x, c) => x.handleFooterStartSlotChange(c.event)}"
66
+ ></slot>
67
+ </div>
68
+ <div class="footer-end" part="footer-end">
69
+ <slot
70
+ name="footer-end"
71
+ @slotchange="${(x, c) => x.handleFooterEndSlotChange(c.event)}"
72
+ ></slot>
73
+ </div>
74
+ </div>
75
+ `)}
76
+ ${when(x => !x.showFooter, html `
77
+ <slot
78
+ name="footer-start"
79
+ hidden
80
+ @slotchange="${(x, c) => x.handleFooterStartSlotChange(c.event)}"
81
+ ></slot>
82
+ <slot
83
+ name="footer-end"
84
+ hidden
85
+ @slotchange="${(x, c) => x.handleFooterEndSlotChange(c.event)}"
86
+ ></slot>
87
+ `)}
88
+ ${when(x => x.showActions, html `
89
+ <div class="actions" part="actions">
90
+ <slot
91
+ name="actions"
92
+ @slotchange="${(x, c) => x.handleActionsSlotChange(c.event)}"
93
+ ></slot>
94
+ </div>
95
+ `)}
96
+ ${when(x => !x.showActions, html `
97
+ <slot
98
+ name="actions"
99
+ hidden
100
+ @slotchange="${(x, c) => x.handleActionsSlotChange(c.event)}"
101
+ ></slot>
102
+ `)}
103
+ </div>
104
+ </div>
105
+ `;
106
+ export const template = html `
107
+ ${when(x => x.interactionMode === FvCardInteractionMode.card, html `
108
+ <${cardButtonTag}
109
+ class="card-shell card-button-shell"
110
+ part="card-shell"
111
+ ?disabled="${x => x.disabled}"
112
+ >
113
+ <div class="card-button-content">
114
+ ${cardContentTemplate}
115
+ </div>
116
+ </${cardButtonTag}>
117
+ `, html `
118
+ <${cardTag}
119
+ class="card-shell card-static-shell"
120
+ part="card-shell"
121
+ >
122
+ ${cardContentTemplate}
123
+ </${cardTag}>
124
+ `)}
125
+ `;
126
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/fv/card/template.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, when } from '@ni/fast-element';\nimport { cardTag } from '@ni/nimble-components/dist/esm/card';\nimport { cardButtonTag } from '@ni/nimble-components/dist/esm/card-button';\nimport { FvCardInteractionMode } from './types';\nimport type { FvCard } from '.';\n\nconst cardContentTemplate = html<FvCard>`\n <div class=\"card-layout ${x => (x.hasMedia ? 'has-media' : 'no-media')}\">\n ${when(\n x => x.hasMedia,\n html<FvCard>`\n <div class=\"media-region\" part=\"media-region\">\n ${when(\n x => x.showInitials,\n html<FvCard>`\n <div class=\"initials-tile\" part=\"initials-tile\" aria-hidden=\"true\">\n ${x => x.initialsText}\n </div>\n `\n )}\n <slot\n name=\"icon\"\n @slotchange=\"${(x, c) => x.handleIconSlotChange(c.event)}\"\n ></slot>\n </div>\n `\n )}\n <div class=\"main-region\" part=\"main-region\">\n <div class=\"header-row\" part=\"header-row\">\n <div class=\"title-group\" part=\"title-group\">\n <div class=\"title\" part=\"title\">${x => x.title}</div>\n ${when(\n x => x.subtitle.length > 0,\n html<FvCard>`\n <div class=\"subtitle\" part=\"subtitle\">${x => x.subtitle}</div>\n `\n )}\n </div>\n ${when(\n x => x.hasBadgesContent,\n html<FvCard>`\n <div class=\"badges\" part=\"badges\">\n <slot\n name=\"badges\"\n @slotchange=\"${(x, c) => x.handleBadgesSlotChange(c.event)}\"\n ></slot>\n </div>\n `\n )}\n ${when(\n x => !x.hasBadgesContent,\n html<FvCard>`\n <slot\n name=\"badges\"\n hidden\n @slotchange=\"${(x, c) => x.handleBadgesSlotChange(c.event)}\"\n ></slot>\n `\n )}\n </div>\n ${when(\n x => x.showBody,\n html<FvCard>`\n <div class=\"body\" part=\"body\">\n ${when(\n x => x.description.length > 0,\n html<FvCard>`\n <div class=\"description\" part=\"description\">${x => x.description}</div>\n `\n )}\n <slot\n @slotchange=\"${(x, c) => x.handleDefaultSlotChange(c.event)}\"\n ></slot>\n </div>\n `\n )}\n ${when(\n x => !x.showBody,\n html<FvCard>`\n <slot\n hidden\n @slotchange=\"${(x, c) => x.handleDefaultSlotChange(c.event)}\"\n ></slot>\n `\n )}\n ${when(\n x => x.showFooter,\n html<FvCard>`\n <div class=\"footer\" part=\"footer\">\n <div class=\"footer-start\" part=\"footer-start\">\n <slot\n name=\"footer-start\"\n @slotchange=\"${(x, c) => x.handleFooterStartSlotChange(c.event)}\"\n ></slot>\n </div>\n <div class=\"footer-end\" part=\"footer-end\">\n <slot\n name=\"footer-end\"\n @slotchange=\"${(x, c) => x.handleFooterEndSlotChange(c.event)}\"\n ></slot>\n </div>\n </div>\n `\n )}\n ${when(\n x => !x.showFooter,\n html<FvCard>`\n <slot\n name=\"footer-start\"\n hidden\n @slotchange=\"${(x, c) => x.handleFooterStartSlotChange(c.event)}\"\n ></slot>\n <slot\n name=\"footer-end\"\n hidden\n @slotchange=\"${(x, c) => x.handleFooterEndSlotChange(c.event)}\"\n ></slot>\n `\n )}\n ${when(\n x => x.showActions,\n html<FvCard>`\n <div class=\"actions\" part=\"actions\">\n <slot\n name=\"actions\"\n @slotchange=\"${(x, c) => x.handleActionsSlotChange(c.event)}\"\n ></slot>\n </div>\n `\n )}\n ${when(\n x => !x.showActions,\n html<FvCard>`\n <slot\n name=\"actions\"\n hidden\n @slotchange=\"${(x, c) => x.handleActionsSlotChange(c.event)}\"\n ></slot>\n `\n )}\n </div>\n </div>\n`;\n\nexport const template = html<FvCard>`\n ${when(\n x => x.interactionMode === FvCardInteractionMode.card,\n html<FvCard>`\n <${cardButtonTag}\n class=\"card-shell card-button-shell\"\n part=\"card-shell\"\n ?disabled=\"${x => x.disabled}\"\n >\n <div class=\"card-button-content\">\n ${cardContentTemplate}\n </div>\n </${cardButtonTag}>\n `,\n html<FvCard>`\n <${cardTag}\n class=\"card-shell card-static-shell\"\n part=\"card-shell\"\n >\n ${cardContentTemplate}\n </${cardTag}>\n `\n )}\n`;\n"]}
@@ -0,0 +1,10 @@
1
+ export declare const FvCardAppearance: {
2
+ readonly outline: "outline";
3
+ readonly block: "block";
4
+ };
5
+ export type FvCardAppearance = (typeof FvCardAppearance)[keyof typeof FvCardAppearance];
6
+ export declare const FvCardInteractionMode: {
7
+ readonly static: "static";
8
+ readonly card: "card";
9
+ };
10
+ export type FvCardInteractionMode = (typeof FvCardInteractionMode)[keyof typeof FvCardInteractionMode];
@@ -0,0 +1,9 @@
1
+ export const FvCardAppearance = {
2
+ outline: 'outline',
3
+ block: 'block'
4
+ };
5
+ export const FvCardInteractionMode = {
6
+ static: 'static',
7
+ card: 'card'
8
+ };
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/fv/card/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACR,CAAC;AAIX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACN,CAAC","sourcesContent":["export const FvCardAppearance = {\n outline: 'outline',\n block: 'block'\n} as const;\n\nexport type FvCardAppearance = (typeof FvCardAppearance)[keyof typeof FvCardAppearance];\n\nexport const FvCardInteractionMode = {\n static: 'static',\n card: 'card'\n} as const;\n\nexport type FvCardInteractionMode = (typeof FvCardInteractionMode)[keyof typeof FvCardInteractionMode];\n"]}
@@ -0,0 +1,104 @@
1
+ import { FoundationElement } from '@ni/fast-foundation';
2
+ import type { AnchoredRegion } from '@ni/nimble-components/dist/esm/anchored-region';
3
+ declare global {
4
+ interface HTMLElementTagNameMap {
5
+ 'ok-fv-chip-selector': FvChipSelector;
6
+ }
7
+ }
8
+ /**
9
+ * A chip picker with inline text entry, removable chips, and a dropdown option list.
10
+ */
11
+ export declare class FvChipSelector extends FoundationElement {
12
+ disabled: boolean;
13
+ open: boolean;
14
+ label: string;
15
+ selectedValues: string;
16
+ options: string;
17
+ placeholder: string;
18
+ allowCustomValues: boolean;
19
+ /** @internal */
20
+ filterText: string;
21
+ /** @internal */
22
+ activeOptionIndex: number;
23
+ /** @internal */
24
+ activeOptionId: string | null;
25
+ /** @internal */
26
+ readonly inputId: string;
27
+ /** @internal */
28
+ readonly labelId: string;
29
+ /** @internal */
30
+ readonly menuId: string;
31
+ /** @internal */
32
+ readonly region?: AnchoredRegion;
33
+ /** @internal */
34
+ readonly field?: HTMLElement;
35
+ private inputElement;
36
+ private menuButtonElement;
37
+ /** @internal */
38
+ disabledChanged(): void;
39
+ /** @internal */
40
+ openChanged(): void;
41
+ /** @internal */
42
+ activeOptionIndexChanged(): void;
43
+ /** @internal */
44
+ filterTextChanged(): void;
45
+ /** @internal */
46
+ optionsChanged(): void;
47
+ /** @internal */
48
+ allowCustomValuesChanged(): void;
49
+ /** @internal */
50
+ selectedValuesChanged(): void;
51
+ /** @internal */
52
+ connectedCallback(): void;
53
+ /** @internal */
54
+ disconnectedCallback(): void;
55
+ /** @internal */
56
+ captureInputRef(input: HTMLInputElement | null): void;
57
+ /** @internal */
58
+ captureMenuButtonRef(menuButton: (HTMLElement & {
59
+ checked?: boolean;
60
+ }) | null): void;
61
+ /** @internal */
62
+ regionChanged(_prev: AnchoredRegion | undefined, _next: AnchoredRegion | undefined): void;
63
+ /** @internal */
64
+ fieldChanged(_prev: HTMLElement | undefined, _next: HTMLElement | undefined): void;
65
+ /** @internal */
66
+ get selectedValueList(): string[];
67
+ /** @internal */
68
+ get optionList(): string[];
69
+ /** @internal */
70
+ get visibleOptionList(): string[];
71
+ /** @internal */
72
+ get customValueCandidate(): string;
73
+ /** @internal */
74
+ get createOptionLabel(): string;
75
+ /** @internal */
76
+ get showEmptyState(): boolean;
77
+ /** @internal */
78
+ handleFieldClick(event: Event): void;
79
+ /** @internal */
80
+ handleMenuButtonClick(event: Event): void;
81
+ /** @internal */
82
+ handleMenuButtonChange(event: Event): void;
83
+ /** @internal */
84
+ handleInput(event: Event): void;
85
+ /** @internal */
86
+ handleInputFocus(): void;
87
+ /** @internal */
88
+ handleInputKeydown(event: KeyboardEvent): boolean;
89
+ /** @internal */
90
+ handleChipRemove(event: Event): void;
91
+ /** @internal */
92
+ handleMenuClick(event: Event): void;
93
+ /** @internal */
94
+ handleMenuItemChange(event: Event): void;
95
+ private readonly documentClickHandler;
96
+ private syncActiveOption;
97
+ private commitActiveOption;
98
+ private addValue;
99
+ private removeValue;
100
+ private commitSelection;
101
+ private setOpen;
102
+ private syncMenuButtonState;
103
+ }
104
+ export declare const fvChipSelectorTag = "ok-fv-chip-selector";