@ni/nimble-components 35.10.1 → 35.11.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 (49) hide show
  1. package/dist/all-components-bundle.js +1257 -469
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +3565 -3320
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/custom-elements.json +90 -0
  6. package/dist/custom-elements.md +11 -10
  7. package/dist/esm/table/components/group-row/index.d.ts +6 -0
  8. package/dist/esm/table/components/group-row/index.js +14 -0
  9. package/dist/esm/table/components/group-row/index.js.map +1 -1
  10. package/dist/esm/table/components/group-row/styles.js +91 -5
  11. package/dist/esm/table/components/group-row/styles.js.map +1 -1
  12. package/dist/esm/table/components/group-row/template.js +6 -1
  13. package/dist/esm/table/components/group-row/template.js.map +1 -1
  14. package/dist/esm/table/components/row/index.js +3 -1
  15. package/dist/esm/table/components/row/index.js.map +1 -1
  16. package/dist/esm/table/components/row/styles.js +79 -2
  17. package/dist/esm/table/components/row/styles.js.map +1 -1
  18. package/dist/esm/table/components/row/template.js +43 -31
  19. package/dist/esm/table/components/row/template.js.map +1 -1
  20. package/dist/esm/table/index.d.ts +13 -0
  21. package/dist/esm/table/index.js +51 -2
  22. package/dist/esm/table/index.js.map +1 -1
  23. package/dist/esm/table/models/table-layout-manager.d.ts +1 -1
  24. package/dist/esm/table/models/table-layout-manager.js +8 -6
  25. package/dist/esm/table/models/table-layout-manager.js.map +1 -1
  26. package/dist/esm/table/models/table-update-tracker.d.ts +1 -1
  27. package/dist/esm/table/models/table-update-tracker.js +7 -1
  28. package/dist/esm/table/models/table-update-tracker.js.map +1 -1
  29. package/dist/esm/table/models/table-validator.d.ts +2 -0
  30. package/dist/esm/table/models/table-validator.js +10 -2
  31. package/dist/esm/table/models/table-validator.js.map +1 -1
  32. package/dist/esm/table/styles.js +23 -5
  33. package/dist/esm/table/styles.js.map +1 -1
  34. package/dist/esm/table/template.d.ts +2 -1
  35. package/dist/esm/table/template.js +23 -13
  36. package/dist/esm/table/template.js.map +1 -1
  37. package/dist/esm/table/types.d.ts +9 -0
  38. package/dist/esm/table/types.js +7 -0
  39. package/dist/esm/table/types.js.map +1 -1
  40. package/dist/esm/table-column/base/models/column-internals.d.ts +5 -1
  41. package/dist/esm/table-column/base/models/column-internals.js +4 -1
  42. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  43. package/dist/esm/table-column/mapping/index.d.ts +4 -0
  44. package/dist/esm/table-column/mapping/index.js +2 -1
  45. package/dist/esm/table-column/mapping/index.js.map +1 -1
  46. package/dist/esm/table-column/mixins/pinnable-column.d.ts +11 -0
  47. package/dist/esm/table-column/mixins/pinnable-column.js +18 -0
  48. package/dist/esm/table-column/mixins/pinnable-column.js.map +1 -0
  49. package/package.json +1 -1
@@ -1,12 +1,13 @@
1
1
  import { css } from '@ni/fast-element';
2
2
  import { White } from '@ni/nimble-tokens/dist/styledictionary/js/tokens';
3
3
  import { display } from '../../../utilities/style/display';
4
- import { applicationBackgroundColor, borderHoverColor, borderWidth, controlHeight, controlSlimHeight, fillHoverColor, fillHoverSelectedColor, fillSelectedColor, mediumPadding, smallPadding, standardPadding } from '../../../theme-provider/design-tokens';
4
+ import { applicationBackgroundColor, borderHoverColor, borderWidth, controlHeight, controlSlimHeight, fillHoverColor, fillHoverSelectedColor, fillSelectedColor, mediumPadding, smallPadding, standardPadding, tableRowBorderColor } from '../../../theme-provider/design-tokens';
5
5
  import { Theme } from '../../../theme-provider/types';
6
6
  import { hexToRgbaCssColor } from '../../../utilities/style/colors';
7
7
  import { themeBehavior } from '../../../utilities/style/theme';
8
8
  import { styles as expandCollapseStyles } from '../../../patterns/expand-collapse/styles';
9
9
  import { focusVisible } from '../../../utilities/style/focus';
10
+ import { ZIndexLevels } from '../../../utilities/style/types';
10
11
  export const styles = css `
11
12
  ${display('flex')}
12
13
  ${expandCollapseStyles}
@@ -29,7 +30,7 @@ export const styles = css `
29
30
  position: absolute;
30
31
  }
31
32
 
32
- :host([selectable]:not([selected])[allow-hover]:hover)::before {
33
+ :host([selectable][allow-hover]:hover)::before {
33
34
  background-color: ${fillHoverColor};
34
35
  }
35
36
 
@@ -102,6 +103,46 @@ export const styles = css `
102
103
  width: ${mediumPadding};
103
104
  }
104
105
 
106
+ .pinned-cell-container {
107
+ display: grid;
108
+ grid-template-columns: var(--ni-private-table-pinned-columns-row-grid-columns);
109
+ position: sticky;
110
+ left: 0;
111
+ background: ${applicationBackgroundColor};
112
+ z-index: ${ZIndexLevels.zIndex1};
113
+ box-shadow: inset -2px 0 0 0 ${tableRowBorderColor};
114
+ }
115
+
116
+ :host([selectable][allow-hover]:hover) .pinned-cell-container {
117
+ background: linear-gradient(${fillHoverColor}, ${fillHoverColor}),
118
+ ${applicationBackgroundColor};
119
+ }
120
+
121
+ :host([selected]) .pinned-cell-container {
122
+ background: linear-gradient(${fillSelectedColor}, ${fillSelectedColor}),
123
+ ${applicationBackgroundColor};
124
+ }
125
+
126
+ :host([selected][allow-hover]:hover) .pinned-cell-container {
127
+ background: linear-gradient(
128
+ ${fillHoverSelectedColor},
129
+ ${fillHoverSelectedColor}
130
+ ),
131
+ ${applicationBackgroundColor};
132
+ }
133
+
134
+ :host(${focusVisible}) .pinned-cell-container {
135
+ box-shadow:
136
+ inset calc(2 * ${borderWidth}) 0 0 ${borderHoverColor},
137
+ inset 0 calc(2 * ${borderWidth}) 0 ${borderHoverColor},
138
+ inset 0 calc(-2 * ${borderWidth}) 0 ${borderHoverColor},
139
+ inset -2px 0 0 0 ${tableRowBorderColor};
140
+ }
141
+ ${'' /* Pushing the pinned-cell-container to a higher z-index for breakpoint menu behavior (not required by table directly) */}
142
+ :host([menu-open]) .pinned-cell-container {
143
+ z-index: ${ZIndexLevels.zIndex1000};
144
+ }
145
+
105
146
  .cell-container {
106
147
  display: grid;
107
148
  width: 100%;
@@ -177,5 +218,41 @@ export const styles = css `
177
218
  :host([selected][allow-hover]:hover)::before {
178
219
  background-color: ${hexToRgbaCssColor(White, 0.2)};
179
220
  }
221
+
222
+ .pinned-cell-container {
223
+ box-shadow: inset -2px 0 0 0 ${hexToRgbaCssColor(White, 0.1)};
224
+ }
225
+
226
+ :host([selectable][allow-hover]:hover) .pinned-cell-container {
227
+ background: linear-gradient(
228
+ ${hexToRgbaCssColor(White, 0.05)},
229
+ ${hexToRgbaCssColor(White, 0.05)}
230
+ ),
231
+ ${applicationBackgroundColor};
232
+ }
233
+
234
+ :host([selected]) .pinned-cell-container {
235
+ background: linear-gradient(
236
+ ${hexToRgbaCssColor(White, 0.25)},
237
+ ${hexToRgbaCssColor(White, 0.25)}
238
+ ),
239
+ ${applicationBackgroundColor};
240
+ }
241
+
242
+ :host([selected][allow-hover]:hover) .pinned-cell-container {
243
+ background: linear-gradient(
244
+ ${hexToRgbaCssColor(White, 0.2)},
245
+ ${hexToRgbaCssColor(White, 0.2)}
246
+ ),
247
+ ${applicationBackgroundColor};
248
+ }
249
+
250
+ :host(${focusVisible}) .pinned-cell-container {
251
+ box-shadow:
252
+ inset calc(2 * ${borderWidth}) 0 0 ${borderHoverColor},
253
+ inset 0 calc(2 * ${borderWidth}) 0 ${borderHoverColor},
254
+ inset 0 calc(-2 * ${borderWidth}) 0 ${borderHoverColor},
255
+ inset -2px 0 0 0 ${hexToRgbaCssColor(White, 0.1)};
256
+ }
180
257
  `));
181
258
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/row/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,kDAAkD,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EACH,0BAA0B,EAC1B,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,eAAe,EAClB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,MAAM,IAAI,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;MACf,oBAAoB;;;;;4BAKE,0BAA0B;uBAC/B,aAAa,UAAU,WAAW;+BAC1B,WAAW;;;;;;;kBAOxB,aAAa;;;;;;;4BAOH,cAAc;;;;4BAId,iBAAiB;;;;4BAIjB,sBAAsB;;;YAGtC,YAAY;;;6BAGK,WAAW,cAAc,WAAW;kBAC/C,gBAAgB;8BACJ,WAAW,eAAe,WAAW;kBACjD,gBAAgB;;;;;;;kBAOhB,aAAa;;sBAET,aAAa;;;;;;;;iBAQlB,iBAAiB;kBAChB,iBAAiB;;;;;;;kBAOjB,aAAa;;sBAET,aAAa;;;;;;;;;;;;uBAYZ,eAAe;;;;;;;;iBAQrB,aAAa;;;;;iBAKb,aAAa;;;;;;;;;;;;;eAaf,aAAa;;;;;;;;;;;;uBAYL,YAAY;;;;qCAIE,YAAY;;oBAE7B,aAAa,MAAM,YAAY;;;;eAIpC,aAAa,MAAM,aAAa;;kBAE7B,aAAa;;;;qCAIM,YAAY;;;;;sBAK3B,aAAa;;0BAET,YAAY;;;;kBAIpB,aAAa;;;;;;;;;;;YAWnB,YAAY;;;CAGvB,CAAC,aAAa,CACX,aAAa,CACT,KAAK,CAAC,KAAK,EACX,GAAG,CAAA;;oCAEyB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;;;;oCAI9B,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;;;;oCAI9B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC;;SAExD,CACJ,CACJ,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport { White } from '@ni/nimble-tokens/dist/styledictionary/js/tokens';\nimport { display } from '../../../utilities/style/display';\nimport {\n applicationBackgroundColor,\n borderHoverColor,\n borderWidth,\n controlHeight,\n controlSlimHeight,\n fillHoverColor,\n fillHoverSelectedColor,\n fillSelectedColor,\n mediumPadding,\n smallPadding,\n standardPadding\n} from '../../../theme-provider/design-tokens';\nimport { Theme } from '../../../theme-provider/types';\nimport { hexToRgbaCssColor } from '../../../utilities/style/colors';\nimport { themeBehavior } from '../../../utilities/style/theme';\nimport { styles as expandCollapseStyles } from '../../../patterns/expand-collapse/styles';\nimport { focusVisible } from '../../../utilities/style/focus';\n\nexport const styles = css`\n ${display('flex')}\n ${expandCollapseStyles}\n\n :host {\n width: fit-content;\n min-width: 100%;\n background-color: ${applicationBackgroundColor};\n height: calc(${controlHeight} + 2 * ${borderWidth});\n border-top: calc(2 * ${borderWidth}) solid transparent;\n background-clip: padding-box;\n }\n\n :host::before {\n content: '';\n width: 100%;\n height: ${controlHeight};\n pointer-events: none;\n bottom: 0px;\n position: absolute;\n }\n\n :host([selectable]:not([selected])[allow-hover]:hover)::before {\n background-color: ${fillHoverColor};\n }\n\n :host([selected])::before {\n background-color: ${fillSelectedColor};\n }\n\n :host([selected][allow-hover]:hover)::before {\n background-color: ${fillHoverSelectedColor};\n }\n\n :host(${focusVisible}) {\n outline: none;\n box-shadow:\n inset calc(2 * ${borderWidth}) calc(2 * ${borderWidth})\n ${borderHoverColor},\n inset calc(-2 * ${borderWidth}) calc(-2 * ${borderWidth})\n ${borderHoverColor};\n }\n\n .expand-collapse-button {\n flex: 0 0 auto;\n margin-left: max(\n calc(\n ${mediumPadding} +\n (var(--ni-private-table-row-indent-level) - 1) *\n ${controlHeight}\n ),\n 0px\n );\n }\n\n .spinner-container {\n flex: 0 0 auto;\n width: ${controlSlimHeight};\n height: ${controlSlimHeight};\n align-self: center;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: max(\n calc(\n ${mediumPadding} +\n (var(--ni-private-table-row-indent-level) - 1) *\n ${controlHeight}\n ),\n 0px\n );\n }\n\n .row-operations-container {\n flex: 0 0 auto;\n display: flex;\n }\n\n .selection-checkbox {\n margin-left: ${standardPadding};\n }\n\n .selection-checkbox::part(label) {\n padding-left: 0px;\n }\n\n .row-front-spacer {\n width: ${controlHeight};\n flex: 0 0 auto;\n }\n\n .row-front-spacer.reduced-size-spacer {\n width: ${mediumPadding};\n }\n\n .cell-container {\n display: grid;\n width: 100%;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n grid-template-columns: var(--ni-private-table-row-grid-columns) auto;\n }\n\n .cell-container.nested-parent {\n margin-left: calc(\n (${controlHeight} * var(--ni-private-table-row-indent-level)) * -1\n );\n }\n\n nimble-table-cell {\n --ni-private-table-cell-action-menu-display: none;\n }\n\n nimble-table-cell[menu-open] {\n --ni-private-table-cell-action-menu-display: block;\n }\n\n nimble-table-cell${focusVisible} {\n --ni-private-table-cell-action-menu-display: block;\n }\n\n nimble-table-cell:first-of-type${focusVisible} {\n margin-left: calc(\n -1 * (${controlHeight} - ${smallPadding}) *\n var(--ni-private-table-cell-focus-offset-multiplier)\n );\n padding-left: calc(\n (${controlHeight} - ${mediumPadding}) *\n var(--ni-private-table-cell-focus-offset-multiplier) +\n ${mediumPadding}\n );\n }\n\n nimble-table-cell:first-of-type${focusVisible}::before {\n content: '';\n display: block;\n width: calc(\n (\n ${controlHeight} *\n var(--ni-private-table-cell-nesting-level) +\n ${smallPadding}\n ) *\n var(--ni-private-table-cell-focus-offset-multiplier)\n );\n height: ${controlHeight};\n }\n\n :host([allow-hover]:hover) nimble-table-cell {\n --ni-private-table-cell-action-menu-display: block;\n }\n\n :host([selected]) nimble-table-cell {\n --ni-private-table-cell-action-menu-display: block;\n }\n\n :host(${focusVisible}) nimble-table-cell {\n --ni-private-table-cell-action-menu-display: block;\n }\n`.withBehaviors(\n themeBehavior(\n Theme.color,\n css`\n :host([selectable]:not([selected])[allow-hover]:hover)::before {\n background-color: ${hexToRgbaCssColor(White, 0.05)};\n }\n\n :host([selected])::before {\n background-color: ${hexToRgbaCssColor(White, 0.25)};\n }\n\n :host([selected][allow-hover]:hover)::before {\n background-color: ${hexToRgbaCssColor(White, 0.2)};\n }\n `\n )\n);\n"]}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/row/styles.ts"],"names":[],"mappings":"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","sourcesContent":["import { css } from '@ni/fast-element';\nimport { White } from '@ni/nimble-tokens/dist/styledictionary/js/tokens';\nimport { display } from '../../../utilities/style/display';\nimport {\n applicationBackgroundColor,\n borderHoverColor,\n borderWidth,\n controlHeight,\n controlSlimHeight,\n fillHoverColor,\n fillHoverSelectedColor,\n fillSelectedColor,\n mediumPadding,\n smallPadding,\n standardPadding,\n tableRowBorderColor\n} from '../../../theme-provider/design-tokens';\nimport { Theme } from '../../../theme-provider/types';\nimport { hexToRgbaCssColor } from '../../../utilities/style/colors';\nimport { themeBehavior } from '../../../utilities/style/theme';\nimport { styles as expandCollapseStyles } from '../../../patterns/expand-collapse/styles';\nimport { focusVisible } from '../../../utilities/style/focus';\nimport { ZIndexLevels } from '../../../utilities/style/types';\n\nexport const styles = css`\n ${display('flex')}\n ${expandCollapseStyles}\n\n :host {\n width: fit-content;\n min-width: 100%;\n background-color: ${applicationBackgroundColor};\n height: calc(${controlHeight} + 2 * ${borderWidth});\n border-top: calc(2 * ${borderWidth}) solid transparent;\n background-clip: padding-box;\n }\n\n :host::before {\n content: '';\n width: 100%;\n height: ${controlHeight};\n pointer-events: none;\n bottom: 0px;\n position: absolute;\n }\n\n :host([selectable][allow-hover]:hover)::before {\n background-color: ${fillHoverColor};\n }\n\n :host([selected])::before {\n background-color: ${fillSelectedColor};\n }\n\n :host([selected][allow-hover]:hover)::before {\n background-color: ${fillHoverSelectedColor};\n }\n\n :host(${focusVisible}) {\n outline: none;\n box-shadow:\n inset calc(2 * ${borderWidth}) calc(2 * ${borderWidth})\n ${borderHoverColor},\n inset calc(-2 * ${borderWidth}) calc(-2 * ${borderWidth})\n ${borderHoverColor};\n }\n\n .expand-collapse-button {\n flex: 0 0 auto;\n margin-left: max(\n calc(\n ${mediumPadding} +\n (var(--ni-private-table-row-indent-level) - 1) *\n ${controlHeight}\n ),\n 0px\n );\n }\n\n .spinner-container {\n flex: 0 0 auto;\n width: ${controlSlimHeight};\n height: ${controlSlimHeight};\n align-self: center;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: max(\n calc(\n ${mediumPadding} +\n (var(--ni-private-table-row-indent-level) - 1) *\n ${controlHeight}\n ),\n 0px\n );\n }\n\n .row-operations-container {\n flex: 0 0 auto;\n display: flex;\n }\n\n .selection-checkbox {\n margin-left: ${standardPadding};\n }\n\n .selection-checkbox::part(label) {\n padding-left: 0px;\n }\n\n .row-front-spacer {\n width: ${controlHeight};\n flex: 0 0 auto;\n }\n\n .row-front-spacer.reduced-size-spacer {\n width: ${mediumPadding};\n }\n\n .pinned-cell-container {\n display: grid;\n grid-template-columns: var(--ni-private-table-pinned-columns-row-grid-columns);\n position: sticky;\n left: 0;\n background: ${applicationBackgroundColor};\n z-index: ${ZIndexLevels.zIndex1};\n box-shadow: inset -2px 0 0 0 ${tableRowBorderColor};\n }\n\n :host([selectable][allow-hover]:hover) .pinned-cell-container {\n background: linear-gradient(${fillHoverColor}, ${fillHoverColor}),\n ${applicationBackgroundColor};\n }\n\n :host([selected]) .pinned-cell-container {\n background: linear-gradient(${fillSelectedColor}, ${fillSelectedColor}),\n ${applicationBackgroundColor};\n }\n\n :host([selected][allow-hover]:hover) .pinned-cell-container {\n background: linear-gradient(\n ${fillHoverSelectedColor},\n ${fillHoverSelectedColor}\n ),\n ${applicationBackgroundColor};\n }\n\n :host(${focusVisible}) .pinned-cell-container {\n box-shadow:\n inset calc(2 * ${borderWidth}) 0 0 ${borderHoverColor},\n inset 0 calc(2 * ${borderWidth}) 0 ${borderHoverColor},\n inset 0 calc(-2 * ${borderWidth}) 0 ${borderHoverColor},\n inset -2px 0 0 0 ${tableRowBorderColor};\n }\n ${'' /* Pushing the pinned-cell-container to a higher z-index for breakpoint menu behavior (not required by table directly) */}\n :host([menu-open]) .pinned-cell-container {\n z-index: ${ZIndexLevels.zIndex1000};\n }\n\n .cell-container {\n display: grid;\n width: 100%;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n grid-template-columns: var(--ni-private-table-row-grid-columns) auto;\n }\n\n .cell-container.nested-parent {\n margin-left: calc(\n (${controlHeight} * var(--ni-private-table-row-indent-level)) * -1\n );\n }\n\n nimble-table-cell {\n --ni-private-table-cell-action-menu-display: none;\n }\n\n nimble-table-cell[menu-open] {\n --ni-private-table-cell-action-menu-display: block;\n }\n\n nimble-table-cell${focusVisible} {\n --ni-private-table-cell-action-menu-display: block;\n }\n\n nimble-table-cell:first-of-type${focusVisible} {\n margin-left: calc(\n -1 * (${controlHeight} - ${smallPadding}) *\n var(--ni-private-table-cell-focus-offset-multiplier)\n );\n padding-left: calc(\n (${controlHeight} - ${mediumPadding}) *\n var(--ni-private-table-cell-focus-offset-multiplier) +\n ${mediumPadding}\n );\n }\n\n nimble-table-cell:first-of-type${focusVisible}::before {\n content: '';\n display: block;\n width: calc(\n (\n ${controlHeight} *\n var(--ni-private-table-cell-nesting-level) +\n ${smallPadding}\n ) *\n var(--ni-private-table-cell-focus-offset-multiplier)\n );\n height: ${controlHeight};\n }\n\n :host([allow-hover]:hover) nimble-table-cell {\n --ni-private-table-cell-action-menu-display: block;\n }\n\n :host([selected]) nimble-table-cell {\n --ni-private-table-cell-action-menu-display: block;\n }\n\n :host(${focusVisible}) nimble-table-cell {\n --ni-private-table-cell-action-menu-display: block;\n }\n`.withBehaviors(\n themeBehavior(\n Theme.color,\n css`\n :host([selectable]:not([selected])[allow-hover]:hover)::before {\n background-color: ${hexToRgbaCssColor(White, 0.05)};\n }\n\n :host([selected])::before {\n background-color: ${hexToRgbaCssColor(White, 0.25)};\n }\n\n :host([selected][allow-hover]:hover)::before {\n background-color: ${hexToRgbaCssColor(White, 0.2)};\n }\n\n .pinned-cell-container {\n box-shadow: inset -2px 0 0 0 ${hexToRgbaCssColor(White, 0.1)};\n }\n\n :host([selectable][allow-hover]:hover) .pinned-cell-container {\n background: linear-gradient(\n ${hexToRgbaCssColor(White, 0.05)},\n ${hexToRgbaCssColor(White, 0.05)}\n ),\n ${applicationBackgroundColor};\n }\n\n :host([selected]) .pinned-cell-container {\n background: linear-gradient(\n ${hexToRgbaCssColor(White, 0.25)},\n ${hexToRgbaCssColor(White, 0.25)}\n ),\n ${applicationBackgroundColor};\n }\n\n :host([selected][allow-hover]:hover) .pinned-cell-container {\n background: linear-gradient(\n ${hexToRgbaCssColor(White, 0.2)},\n ${hexToRgbaCssColor(White, 0.2)}\n ),\n ${applicationBackgroundColor};\n }\n\n :host(${focusVisible}) .pinned-cell-container {\n box-shadow:\n inset calc(2 * ${borderWidth}) 0 0 ${borderHoverColor},\n inset 0 calc(2 * ${borderWidth}) 0 ${borderHoverColor},\n inset 0 calc(-2 * ${borderWidth}) 0 ${borderHoverColor},\n inset -2px 0 0 0 ${hexToRgbaCssColor(White, 0.1)};\n }\n `\n )\n);\n"]}
@@ -3,11 +3,43 @@ import { ButtonAppearance } from '../../../menu-button/types';
3
3
  import { tableCellTag } from '../cell';
4
4
  import { checkboxTag } from '../../../checkbox';
5
5
  import { tableRowCollapseLabel, tableRowExpandLabel, tableRowLoadingLabel, tableRowSelectLabel } from '../../../label-provider/table/label-tokens';
6
+ import { TableColumnPinLocation } from '../../types';
6
7
  import { buttonTag } from '../../../button';
7
8
  import { iconArrowExpanderRightTag } from '../../../icons/arrow-expander-right';
8
9
  import { spinnerTag } from '../../../spinner';
9
10
  import { SpinnerAppearance } from '../../../spinner/types';
10
11
  import { uniquifySlotNameForColumn } from '../../models/utilities';
12
+ const rowCellTemplate = html `
13
+ <${tableCellTag}
14
+ class="cell"
15
+ :cellState="${(_, c) => c.parent.cellStates[c.index]}"
16
+ :cellViewTemplate="${x => x.columnInternals.cellViewTemplate}"
17
+ :column="${x => x}"
18
+ column-id="${x => x.columnId}"
19
+ :recordId="${(_, c) => c.parent.recordId}"
20
+ ?has-action-menu="${x => !!x.actionMenuSlot}"
21
+ action-menu-label="${x => x.actionMenuLabel}"
22
+ @cell-action-menu-beforetoggle="${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event, x)}"
23
+ @cell-action-menu-toggle="${(x, c) => c.parent.onCellActionMenuToggle(c.event, x)}"
24
+ @cell-view-slots-request="${(x, c) => c.parent.onCellViewSlotsRequest(x, c.event)}"
25
+ :nestingLevel="${(_, c) => c.parent.cellIndentLevels[c.index]}"
26
+ >
27
+
28
+ ${when((x, c) => (c.parent.currentActionMenuColumn === x) && x.actionMenuSlot, html `
29
+ <slot
30
+ name="${x => `row-action-menu-${x.actionMenuSlot}`}"
31
+ slot="cellActionMenu"
32
+ ></slot>
33
+ `)}
34
+
35
+ ${repeat(x => x.columnInternals.slotNames, html `
36
+ <slot
37
+ name="${(x, c) => uniquifySlotNameForColumn(c.parent, x)}"
38
+ slot="${(x, c) => uniquifySlotNameForColumn(c.parent, x)}"
39
+ ></slot>
40
+ `)}
41
+ </${tableCellTag}>
42
+ `;
11
43
  export const template = html `
12
44
  <template
13
45
  role="row"
@@ -15,6 +47,14 @@ export const template = html `
15
47
  aria-expanded=${x => x.expanded}
16
48
  style="--ni-private-table-row-indent-level: ${x => x.nestingLevel};"
17
49
  >
50
+ <span class="pinned-cell-container">
51
+ ${repeat(x => x.columns, html `
52
+ ${when(x => !x.columnHidden && x.columnInternals.pinLocation === TableColumnPinLocation.left, html `
53
+ ${rowCellTemplate}
54
+ `)}
55
+ `, { recycle: false, positioning: true })}
56
+ </span>
57
+
18
58
  ${when(x => !x.rowOperationGridCellHidden, html `
19
59
  <span role="gridcell" class="row-operations-container">
20
60
  ${when(x => x.showSelectionCheckbox, html `
@@ -32,7 +72,7 @@ export const template = html `
32
72
  `)}
33
73
  </span>
34
74
  `)}
35
- <span class="row-front-spacer ${x => (x.isTopLevelParentRow || !x.reserveCollapseSpace ? 'reduced-size-spacer' : '')}"></span>
75
+ <span class="row-front-spacer ${x => (x.isTopLevelParentRow || !x.reserveCollapseSpace ? 'reduced-size-spacer' : '')} ${x => (x.showSelectionCheckbox ? 'selectable' : '')}"></span>
36
76
  ${when(x => x.isParentRow, html `
37
77
  ${when(x => x.loading, html `
38
78
  <span class="spinner-container">
@@ -63,36 +103,8 @@ export const template = html `
63
103
  class="cell-container ${x => (x.isNestedParent ? 'nested-parent' : '')}"
64
104
  >
65
105
  ${repeat(x => x.columns, html `
66
- ${when(x => !x.columnHidden, html `
67
- <${tableCellTag}
68
- class="cell"
69
- :cellState="${(_, c) => c.parent.cellStates[c.index]}"
70
- :cellViewTemplate="${x => x.columnInternals.cellViewTemplate}"
71
- :column="${x => x}"
72
- column-id="${x => x.columnId}"
73
- :recordId="${(_, c) => c.parent.recordId}"
74
- ?has-action-menu="${x => !!x.actionMenuSlot}"
75
- action-menu-label="${x => x.actionMenuLabel}"
76
- @cell-action-menu-beforetoggle="${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event, x)}"
77
- @cell-action-menu-toggle="${(x, c) => c.parent.onCellActionMenuToggle(c.event, x)}"
78
- @cell-view-slots-request="${(x, c) => c.parent.onCellViewSlotsRequest(x, c.event)}"
79
- :nestingLevel="${(_, c) => c.parent.cellIndentLevels[c.index]}"
80
- >
81
-
82
- ${when((x, c) => (c.parent.currentActionMenuColumn === x) && x.actionMenuSlot, html `
83
- <slot
84
- name="${x => `row-action-menu-${x.actionMenuSlot}`}"
85
- slot="cellActionMenu"
86
- ></slot>
87
- `)}
88
-
89
- ${repeat(x => x.columnInternals.slotNames, html `
90
- <slot
91
- name="${(x, c) => uniquifySlotNameForColumn(c.parent, x)}"
92
- slot="${(x, c) => uniquifySlotNameForColumn(c.parent, x)}"
93
- ></slot>
94
- `)}
95
- </${tableCellTag}>
106
+ ${when(x => !x.columnHidden && x.columnInternals.pinLocation !== TableColumnPinLocation.left, html `
107
+ ${rowCellTemplate}
96
108
  `)}
97
109
  `, { recycle: false, positioning: true })}
98
110
  </span>
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/row/template.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, ref, repeat, when } from '@ni/fast-element';\nimport type { TableRow } from '.';\nimport {\n ButtonAppearance,\n type MenuButtonToggleEventDetail\n} from '../../../menu-button/types';\nimport { tableCellTag } from '../cell';\nimport { checkboxTag } from '../../../checkbox';\nimport {\n tableRowCollapseLabel,\n tableRowExpandLabel,\n tableRowLoadingLabel,\n tableRowSelectLabel\n} from '../../../label-provider/table/label-tokens';\nimport type { TableColumn } from '../../../table-column/base';\nimport { buttonTag } from '../../../button';\nimport { iconArrowExpanderRightTag } from '../../../icons/arrow-expander-right';\nimport { spinnerTag } from '../../../spinner';\nimport { SpinnerAppearance } from '../../../spinner/types';\nimport type { CellViewSlotRequestEventDetail } from '../../types';\nimport { uniquifySlotNameForColumn } from '../../models/utilities';\n\nexport const template = html<TableRow>`\n <template \n role=\"row\"\n aria-selected=${x => x.ariaSelected}\n aria-expanded=${x => x.expanded}\n style=\"--ni-private-table-row-indent-level: ${x => x.nestingLevel};\"\n >\n ${when(x => !x.rowOperationGridCellHidden, html<TableRow>`\n <span role=\"gridcell\" class=\"row-operations-container\">\n ${when(x => x.showSelectionCheckbox, html<TableRow>`\n <${checkboxTag}\n ${ref('selectionCheckbox')}\n class=\"selection-checkbox\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n @change=\"${(x, c) => x.onSelectionCheckboxChange(c.event as CustomEvent)}\"\n @click=\"${(_, c) => c.event.stopPropagation()}\"\n title=\"${x => tableRowSelectLabel.getValueFor(x)}\"\n aria-label=\"${x => tableRowSelectLabel.getValueFor(x)}\"\n >\n </${checkboxTag}>\n `)}\n </span>\n `)}\n <span class=\"row-front-spacer ${x => (x.isTopLevelParentRow || !x.reserveCollapseSpace ? 'reduced-size-spacer' : '')}\"></span>\n ${when(x => x.isParentRow, html<TableRow>`\n ${when(x => x.loading, html<TableRow>`\n <span class=\"spinner-container\">\n <${spinnerTag}\n appearance=\"${SpinnerAppearance.accent}\"\n aria-label=\"${x => tableRowLoadingLabel.getValueFor(x)}\"\n title=\"${x => tableRowLoadingLabel.getValueFor(x)}\"\n >\n </${spinnerTag}>\n </span>\n `)}\n ${when(x => !x.loading, html<TableRow>`\n <${buttonTag}\n appearance=\"${ButtonAppearance.ghost}\"\n content-hidden\n class=\"expand-collapse-button\"\n tabindex=\"-1\"\n @click=\"${(x, c) => x.onRowExpandToggle(c.event)}\"\n title=\"${x => (x.expanded ? tableRowCollapseLabel.getValueFor(x) : tableRowExpandLabel.getValueFor(x))}\"\n aria-hidden=\"true\"\n >\n <${iconArrowExpanderRightTag} ${ref('expandIcon')} slot=\"start\" class=\"expander-icon ${x => x.animationClass}\"></${iconArrowExpanderRightTag}>\n </${buttonTag}>\n `)}\n `)}\n\n <span ${ref('cellContainer')} \n class=\"cell-container ${x => (x.isNestedParent ? 'nested-parent' : '')}\"\n >\n ${repeat(x => x.columns, html<TableColumn, TableRow>`\n ${when(x => !x.columnHidden, html<TableColumn, TableRow>`\n <${tableCellTag}\n class=\"cell\"\n :cellState=\"${(_, c) => c.parent.cellStates[c.index]}\"\n :cellViewTemplate=\"${x => x.columnInternals.cellViewTemplate}\"\n :column=\"${x => x}\"\n column-id=\"${x => x.columnId}\"\n :recordId=\"${(_, c) => c.parent.recordId}\"\n ?has-action-menu=\"${x => !!x.actionMenuSlot}\"\n action-menu-label=\"${x => x.actionMenuLabel}\"\n @cell-action-menu-beforetoggle=\"${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event as CustomEvent<MenuButtonToggleEventDetail>, x)}\"\n @cell-action-menu-toggle=\"${(x, c) => c.parent.onCellActionMenuToggle(c.event as CustomEvent<MenuButtonToggleEventDetail>, x)}\"\n @cell-view-slots-request=\"${(x, c) => c.parent.onCellViewSlotsRequest(x, c.event as CustomEvent<CellViewSlotRequestEventDetail>)}\"\n :nestingLevel=\"${(_, c) => c.parent.cellIndentLevels[c.index]}\"\n >\n\n ${when((x, c) => ((c.parent as TableRow).currentActionMenuColumn === x) && x.actionMenuSlot, html<TableColumn, TableRow>`\n <slot\n name=\"${x => `row-action-menu-${x.actionMenuSlot!}`}\"\n slot=\"cellActionMenu\"\n ></slot>\n `)}\n\n ${repeat(x => x.columnInternals.slotNames, html<string, TableColumn>`\n <slot\n name=\"${(x, c) => uniquifySlotNameForColumn(c.parent, x)}\"\n slot=\"${(x, c) => uniquifySlotNameForColumn(c.parent, x)}\"\n ></slot>\n `)}\n </${tableCellTag}>\n `)}\n `, { recycle: false, positioning: true })}\n </span>\n </template>\n`;\n"]}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/row/template.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, ref, repeat, when } from '@ni/fast-element';\nimport type { TableRow } from '.';\nimport {\n ButtonAppearance,\n type MenuButtonToggleEventDetail\n} from '../../../menu-button/types';\nimport { tableCellTag } from '../cell';\nimport { checkboxTag } from '../../../checkbox';\nimport {\n tableRowCollapseLabel,\n tableRowExpandLabel,\n tableRowLoadingLabel,\n tableRowSelectLabel\n} from '../../../label-provider/table/label-tokens';\nimport type { TableColumn } from '../../../table-column/base';\nimport { TableColumnPinLocation } from '../../types';\nimport { buttonTag } from '../../../button';\nimport { iconArrowExpanderRightTag } from '../../../icons/arrow-expander-right';\nimport { spinnerTag } from '../../../spinner';\nimport { SpinnerAppearance } from '../../../spinner/types';\nimport type { CellViewSlotRequestEventDetail } from '../../types';\nimport { uniquifySlotNameForColumn } from '../../models/utilities';\n\nconst rowCellTemplate = html<TableColumn, TableRow>`\n <${tableCellTag}\n class=\"cell\"\n :cellState=\"${(_, c) => c.parent.cellStates[c.index]}\"\n :cellViewTemplate=\"${x => x.columnInternals.cellViewTemplate}\"\n :column=\"${x => x}\"\n column-id=\"${x => x.columnId}\"\n :recordId=\"${(_, c) => c.parent.recordId}\"\n ?has-action-menu=\"${x => !!x.actionMenuSlot}\"\n action-menu-label=\"${x => x.actionMenuLabel}\"\n @cell-action-menu-beforetoggle=\"${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event as CustomEvent<MenuButtonToggleEventDetail>, x)}\"\n @cell-action-menu-toggle=\"${(x, c) => c.parent.onCellActionMenuToggle(c.event as CustomEvent<MenuButtonToggleEventDetail>, x)}\"\n @cell-view-slots-request=\"${(x, c) => c.parent.onCellViewSlotsRequest(x, c.event as CustomEvent<CellViewSlotRequestEventDetail>)}\"\n :nestingLevel=\"${(_, c) => c.parent.cellIndentLevels[c.index]}\"\n >\n\n ${when((x, c) => ((c.parent as TableRow).currentActionMenuColumn === x) && x.actionMenuSlot, html<TableColumn, TableRow>`\n <slot\n name=\"${x => `row-action-menu-${x.actionMenuSlot!}`}\"\n slot=\"cellActionMenu\"\n ></slot>\n `)}\n\n ${repeat(x => x.columnInternals.slotNames, html<string, TableColumn>`\n <slot\n name=\"${(x, c) => uniquifySlotNameForColumn(c.parent, x)}\"\n slot=\"${(x, c) => uniquifySlotNameForColumn(c.parent, x)}\"\n ></slot>\n `)}\n </${tableCellTag}>\n`;\n\nexport const template = html<TableRow>`\n <template \n role=\"row\"\n aria-selected=${x => x.ariaSelected}\n aria-expanded=${x => x.expanded}\n style=\"--ni-private-table-row-indent-level: ${x => x.nestingLevel};\"\n >\n <span class=\"pinned-cell-container\">\n ${repeat(x => x.columns, html<TableColumn, TableRow>`\n ${when(x => !x.columnHidden && x.columnInternals.pinLocation === TableColumnPinLocation.left, html<TableColumn, TableRow>`\n ${rowCellTemplate}\n `)}\n `, { recycle: false, positioning: true })}\n </span>\n\n ${when(x => !x.rowOperationGridCellHidden, html<TableRow>`\n <span role=\"gridcell\" class=\"row-operations-container\">\n ${when(x => x.showSelectionCheckbox, html<TableRow>`\n <${checkboxTag}\n ${ref('selectionCheckbox')}\n class=\"selection-checkbox\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n @change=\"${(x, c) => x.onSelectionCheckboxChange(c.event as CustomEvent)}\"\n @click=\"${(_, c) => c.event.stopPropagation()}\"\n title=\"${x => tableRowSelectLabel.getValueFor(x)}\"\n aria-label=\"${x => tableRowSelectLabel.getValueFor(x)}\"\n >\n </${checkboxTag}>\n `)}\n </span>\n `)}\n <span class=\"row-front-spacer ${x => (x.isTopLevelParentRow || !x.reserveCollapseSpace ? 'reduced-size-spacer' : '')} ${x => (x.showSelectionCheckbox ? 'selectable' : '')}\"></span>\n ${when(x => x.isParentRow, html<TableRow>`\n ${when(x => x.loading, html<TableRow>`\n <span class=\"spinner-container\">\n <${spinnerTag}\n appearance=\"${SpinnerAppearance.accent}\"\n aria-label=\"${x => tableRowLoadingLabel.getValueFor(x)}\"\n title=\"${x => tableRowLoadingLabel.getValueFor(x)}\"\n >\n </${spinnerTag}>\n </span>\n `)}\n ${when(x => !x.loading, html<TableRow>`\n <${buttonTag}\n appearance=\"${ButtonAppearance.ghost}\"\n content-hidden\n class=\"expand-collapse-button\"\n tabindex=\"-1\"\n @click=\"${(x, c) => x.onRowExpandToggle(c.event)}\"\n title=\"${x => (x.expanded ? tableRowCollapseLabel.getValueFor(x) : tableRowExpandLabel.getValueFor(x))}\"\n aria-hidden=\"true\"\n >\n <${iconArrowExpanderRightTag} ${ref('expandIcon')} slot=\"start\" class=\"expander-icon ${x => x.animationClass}\"></${iconArrowExpanderRightTag}>\n </${buttonTag}>\n `)}\n `)}\n\n <span ${ref('cellContainer')} \n class=\"cell-container ${x => (x.isNestedParent ? 'nested-parent' : '')}\"\n >\n ${repeat(x => x.columns, html<TableColumn, TableRow>`\n ${when(x => !x.columnHidden && x.columnInternals.pinLocation !== TableColumnPinLocation.left, html<TableColumn, TableRow>`\n ${rowCellTemplate}\n `)}\n `, { recycle: false, positioning: true })}\n </span>\n </template>\n`;\n"]}
@@ -86,6 +86,14 @@ export declare class Table<TData extends TableRecord = TableRecord> extends Foun
86
86
  * @internal
87
87
  */
88
88
  get collapseButtonVisibility(): string;
89
+ /**
90
+ * @internal
91
+ */
92
+ get pinnedColumnOffset(): number;
93
+ /**
94
+ * @internal
95
+ */
96
+ get pinnedColumnsGridTemplateColumns(): string;
89
97
  /**
90
98
  * @internal
91
99
  */
@@ -118,6 +126,10 @@ export declare class Table<TData extends TableRecord = TableRecord> extends Foun
118
126
  * @internal
119
127
  */
120
128
  visibleColumns: TableColumn[];
129
+ /**
130
+ * @internal
131
+ */
132
+ pinnedColumns: TableColumn[];
121
133
  /**
122
134
  * @internal
123
135
  * This value determines the size of the viewport area when a user has created horizontal scrollable
@@ -217,6 +229,7 @@ export declare class Table<TData extends TableRecord = TableRecord> extends Foun
217
229
  protected idFieldNameChanged(_prev: string | undefined, _next: string | undefined): void;
218
230
  protected parentIdFieldNameChanged(_prev: string | undefined, _next: string | undefined): void;
219
231
  protected columnsChanged(_prev: TableColumn[] | undefined, _next: TableColumn[]): void;
232
+ private getPinnedColumnResolvedPixelWidth;
220
233
  private updateRequestedSlotsForOpeningActionMenu;
221
234
  private handleActionMenuBeforeToggleEvent;
222
235
  private handleRowActionMenuToggleEvent;
@@ -7,7 +7,7 @@ import { TableColumn } from '../table-column/base';
7
7
  import { TableValidator } from './models/table-validator';
8
8
  import { styles } from './styles';
9
9
  import { template } from './template';
10
- import { TableColumnSortDirection, TableRowSelectionMode, TableRowSelectionState } from './types';
10
+ import { TableColumnPinLocation, TableColumnSortDirection, TableRowSelectionMode, TableRowSelectionState } from './types';
11
11
  import { Virtualizer } from './models/virtualizer';
12
12
  import { getTanStackSortingFunction } from './models/sort-operations';
13
13
  import { TableLayoutManager } from './models/table-layout-manager';
@@ -47,6 +47,34 @@ export class Table extends FoundationElement {
47
47
  }
48
48
  return '';
49
49
  }
50
+ /**
51
+ * @internal
52
+ */
53
+ get pinnedColumnOffset() {
54
+ let offset = 0;
55
+ for (const column of this.pinnedColumns) {
56
+ const resolvedPixelWidth = this.getPinnedColumnResolvedPixelWidth(column);
57
+ if (resolvedPixelWidth !== undefined) {
58
+ const coercedPixelWidth = Math.max(column.columnInternals.minPixelWidth, resolvedPixelWidth);
59
+ offset += coercedPixelWidth;
60
+ }
61
+ }
62
+ return offset;
63
+ }
64
+ /**
65
+ * @internal
66
+ */
67
+ get pinnedColumnsGridTemplateColumns() {
68
+ return this.pinnedColumns.map(column => {
69
+ const resolvedPixelWidth = this.getPinnedColumnResolvedPixelWidth(column);
70
+ if (resolvedPixelWidth !== undefined) {
71
+ const coercedPixelWidth = Math.max(column.columnInternals.minPixelWidth, resolvedPixelWidth);
72
+ return `${coercedPixelWidth}px`;
73
+ }
74
+ return '';
75
+ })
76
+ .join(' ');
77
+ }
50
78
  /**
51
79
  * @internal
52
80
  */
@@ -97,6 +125,10 @@ export class Table extends FoundationElement {
97
125
  * @internal
98
126
  */
99
127
  this.visibleColumns = [];
128
+ /**
129
+ * @internal
130
+ */
131
+ this.pinnedColumns = [];
100
132
  /**
101
133
  * @internal
102
134
  * This value determines the size of the viewport area when a user has created horizontal scrollable
@@ -449,7 +481,10 @@ export class Table extends FoundationElement {
449
481
  }
450
482
  if (this.tableUpdateTracker.updateColumnWidths) {
451
483
  this.rowGridColumns = this.layoutManager.getGridTemplateColumns();
452
- this.visibleColumns = this.columns.filter(column => !column.columnHidden);
484
+ this.visibleColumns = this.columns.filter(column => !column.columnHidden
485
+ && column.columnInternals.pinLocation !== TableColumnPinLocation.left);
486
+ this.pinnedColumns = this.columns.filter(column => !column.columnHidden
487
+ && column.columnInternals.pinLocation === TableColumnPinLocation.left);
453
488
  }
454
489
  if (this.tableUpdateTracker.requiresKeyboardFocusReset) {
455
490
  this.keyboardNavigationManager.resetFocusState();
@@ -527,6 +562,10 @@ export class Table extends FoundationElement {
527
562
  this.observeColumns();
528
563
  this.tableUpdateTracker.trackColumnInstancesChanged();
529
564
  }
565
+ getPinnedColumnResolvedPixelWidth(column) {
566
+ const { currentPixelWidth } = column.columnInternals;
567
+ return currentPixelWidth;
568
+ }
530
569
  updateRequestedSlotsForOpeningActionMenu(openActionMenuRecordId) {
531
570
  for (const actionMenuSlot of this.actionMenuSlots) {
532
571
  this.requestedSlots.set(actionMenuSlot, {
@@ -701,6 +740,7 @@ export class Table extends FoundationElement {
701
740
  this.tableValidator.validateColumnSortIndices(this.getColumnsParticipatingInSorting().map(x => x.columnInternals.currentSortIndex));
702
741
  this.tableValidator.validateColumnGroupIndices(this.getColumnsParticipatingInGrouping().map(x => x.columnInternals.groupIndex));
703
742
  this.tableValidator.validateColumnConfigurations(this.columns);
743
+ this.tableValidator.validatePinnedColumnConfigurations(this.columns);
704
744
  if (this.dataHierarchyManager) {
705
745
  this.validateWithData(this.dataHierarchyManager.getAllRecords());
706
746
  }
@@ -973,12 +1013,21 @@ __decorate([
973
1013
  __decorate([
974
1014
  volatile
975
1015
  ], Table.prototype, "collapseButtonVisibility", null);
1016
+ __decorate([
1017
+ volatile
1018
+ ], Table.prototype, "pinnedColumnOffset", null);
1019
+ __decorate([
1020
+ volatile
1021
+ ], Table.prototype, "pinnedColumnsGridTemplateColumns", null);
976
1022
  __decorate([
977
1023
  observable
978
1024
  ], Table.prototype, "firstSortedColumn", void 0);
979
1025
  __decorate([
980
1026
  observable
981
1027
  ], Table.prototype, "visibleColumns", void 0);
1028
+ __decorate([
1029
+ observable
1030
+ ], Table.prototype, "pinnedColumns", void 0);
982
1031
  __decorate([
983
1032
  observable
984
1033
  ], Table.prototype, "tableScrollableMinWidth", void 0);