@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.
- package/dist/all-components-bundle.js +1257 -469
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +3565 -3320
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/custom-elements.json +90 -0
- package/dist/custom-elements.md +11 -10
- package/dist/esm/table/components/group-row/index.d.ts +6 -0
- package/dist/esm/table/components/group-row/index.js +14 -0
- package/dist/esm/table/components/group-row/index.js.map +1 -1
- package/dist/esm/table/components/group-row/styles.js +91 -5
- package/dist/esm/table/components/group-row/styles.js.map +1 -1
- package/dist/esm/table/components/group-row/template.js +6 -1
- package/dist/esm/table/components/group-row/template.js.map +1 -1
- package/dist/esm/table/components/row/index.js +3 -1
- package/dist/esm/table/components/row/index.js.map +1 -1
- package/dist/esm/table/components/row/styles.js +79 -2
- package/dist/esm/table/components/row/styles.js.map +1 -1
- package/dist/esm/table/components/row/template.js +43 -31
- package/dist/esm/table/components/row/template.js.map +1 -1
- package/dist/esm/table/index.d.ts +13 -0
- package/dist/esm/table/index.js +51 -2
- package/dist/esm/table/index.js.map +1 -1
- package/dist/esm/table/models/table-layout-manager.d.ts +1 -1
- package/dist/esm/table/models/table-layout-manager.js +8 -6
- package/dist/esm/table/models/table-layout-manager.js.map +1 -1
- package/dist/esm/table/models/table-update-tracker.d.ts +1 -1
- package/dist/esm/table/models/table-update-tracker.js +7 -1
- package/dist/esm/table/models/table-update-tracker.js.map +1 -1
- package/dist/esm/table/models/table-validator.d.ts +2 -0
- package/dist/esm/table/models/table-validator.js +10 -2
- package/dist/esm/table/models/table-validator.js.map +1 -1
- package/dist/esm/table/styles.js +23 -5
- package/dist/esm/table/styles.js.map +1 -1
- package/dist/esm/table/template.d.ts +2 -1
- package/dist/esm/table/template.js +23 -13
- package/dist/esm/table/template.js.map +1 -1
- package/dist/esm/table/types.d.ts +9 -0
- package/dist/esm/table/types.js +7 -0
- package/dist/esm/table/types.js.map +1 -1
- package/dist/esm/table-column/base/models/column-internals.d.ts +5 -1
- package/dist/esm/table-column/base/models/column-internals.js +4 -1
- package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
- package/dist/esm/table-column/mapping/index.d.ts +4 -0
- package/dist/esm/table-column/mapping/index.js +2 -1
- package/dist/esm/table-column/mapping/index.js.map +1 -1
- package/dist/esm/table-column/mixins/pinnable-column.d.ts +11 -0
- package/dist/esm/table-column/mixins/pinnable-column.js +18 -0
- package/dist/esm/table-column/mixins/pinnable-column.js.map +1 -0
- 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]
|
|
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
|
-
|
|
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;
|
package/dist/esm/table/index.js
CHANGED
|
@@ -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);
|