@ni/ok-components 1.7.0 → 1.8.1

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 (34) hide show
  1. package/dist/all-components-bundle.js +657 -430
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +5936 -5848
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/custom-elements.json +288 -119
  6. package/dist/custom-elements.md +45 -31
  7. package/dist/esm/fv/all-fv.d.ts +1 -0
  8. package/dist/esm/fv/all-fv.js +1 -0
  9. package/dist/esm/fv/all-fv.js.map +1 -1
  10. package/dist/esm/fv/sticky-header/index.d.ts +38 -0
  11. package/dist/esm/fv/sticky-header/index.js +90 -0
  12. package/dist/esm/fv/sticky-header/index.js.map +1 -0
  13. package/dist/esm/fv/sticky-header/styles.d.ts +1 -0
  14. package/dist/esm/fv/sticky-header/styles.js +22 -0
  15. package/dist/esm/fv/sticky-header/styles.js.map +1 -0
  16. package/dist/esm/fv/sticky-header/template.d.ts +2 -0
  17. package/dist/esm/fv/sticky-header/template.js +22 -0
  18. package/dist/esm/fv/sticky-header/template.js.map +1 -0
  19. package/dist/esm/fv/summary-panel/index.d.ts +18 -1
  20. package/dist/esm/fv/summary-panel/index.js +60 -6
  21. package/dist/esm/fv/summary-panel/index.js.map +1 -1
  22. package/dist/esm/fv/summary-panel/styles.js +20 -1
  23. package/dist/esm/fv/summary-panel/styles.js.map +1 -1
  24. package/dist/esm/fv/summary-panel/template.js +7 -2
  25. package/dist/esm/fv/summary-panel/template.js.map +1 -1
  26. package/dist/esm/fv/summary-panel/types.d.ts +5 -0
  27. package/dist/esm/fv/summary-panel/types.js +5 -0
  28. package/dist/esm/fv/summary-panel/types.js.map +1 -0
  29. package/dist/esm/fv/summary-panel-tile/index.d.ts +2 -0
  30. package/dist/esm/fv/summary-panel-tile/index.js +5 -0
  31. package/dist/esm/fv/summary-panel-tile/index.js.map +1 -1
  32. package/dist/esm/fv/summary-panel-tile/styles.js +18 -0
  33. package/dist/esm/fv/summary-panel-tile/styles.js.map +1 -1
  34. package/package.json +1 -1
@@ -0,0 +1,90 @@
1
+ import { __decorate } from "tslib";
2
+ import { observable } from '@ni/fast-element';
3
+ import { DesignSystem, FoundationElement } from '@ni/fast-foundation';
4
+ import { styles } from './styles';
5
+ import { template } from './template';
6
+ /**
7
+ * Displays an alternate header in a sticky overlay after the primary header leaves the viewport.
8
+ */
9
+ export class FvStickyHeader extends FoundationElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ /** @internal */
13
+ this.hasHeader = false;
14
+ /** @internal */
15
+ this.hasStickyHeader = false;
16
+ /** @internal */
17
+ this.headerIsVisible = true;
18
+ /** @internal */
19
+ this.showStickyHeader = false;
20
+ this.headerVisibility = new Map();
21
+ this.headerIntersectionObserver = new IntersectionObserver(entries => {
22
+ this.handleHeaderIntersection(entries);
23
+ });
24
+ }
25
+ /** @internal */
26
+ connectedCallback() {
27
+ super.connectedCallback();
28
+ this.updateStickyHeaderContent();
29
+ this.observeHeader();
30
+ }
31
+ /** @internal */
32
+ disconnectedCallback() {
33
+ super.disconnectedCallback();
34
+ this.headerIntersectionObserver.disconnect();
35
+ }
36
+ /** @internal */
37
+ handleHeaderSlotChange() {
38
+ this.observeHeader();
39
+ }
40
+ /** @internal */
41
+ handleStickyHeaderSlotChange(event) {
42
+ this.hasStickyHeader = event.target.assignedElements({ flatten: true }).length > 0;
43
+ this.updateStickyHeaderContent();
44
+ }
45
+ /** @internal */
46
+ handleHeaderIntersection(entries) {
47
+ entries.forEach(entry => {
48
+ const hasLeftViewport = !entry.isIntersecting && entry.boundingClientRect.top < 0;
49
+ this.headerVisibility.set(entry.target, !hasLeftViewport);
50
+ });
51
+ this.headerIsVisible = Array.from(this.headerVisibility.values()).some(Boolean);
52
+ this.updateStickyHeaderContent();
53
+ }
54
+ observeHeader() {
55
+ this.headerIntersectionObserver.disconnect();
56
+ const headerElements = this.headerSlot.assignedElements({ flatten: true });
57
+ this.hasHeader = headerElements.length > 0;
58
+ this.headerIsVisible = true;
59
+ this.headerVisibility.clear();
60
+ headerElements.forEach(element => {
61
+ this.headerVisibility.set(element, true);
62
+ this.headerIntersectionObserver.observe(element);
63
+ });
64
+ this.updateStickyHeaderContent();
65
+ }
66
+ updateStickyHeaderContent() {
67
+ this.hasStickyHeader = this.stickyHeaderSlot.assignedElements({ flatten: true }).length > 0;
68
+ this.showStickyHeader = this.hasHeader && this.hasStickyHeader && !this.headerIsVisible;
69
+ }
70
+ }
71
+ __decorate([
72
+ observable
73
+ ], FvStickyHeader.prototype, "hasHeader", void 0);
74
+ __decorate([
75
+ observable
76
+ ], FvStickyHeader.prototype, "hasStickyHeader", void 0);
77
+ __decorate([
78
+ observable
79
+ ], FvStickyHeader.prototype, "headerIsVisible", void 0);
80
+ __decorate([
81
+ observable
82
+ ], FvStickyHeader.prototype, "showStickyHeader", void 0);
83
+ const okFvStickyHeader = FvStickyHeader.compose({
84
+ baseName: 'fv-sticky-header',
85
+ template,
86
+ styles
87
+ });
88
+ DesignSystem.getOrCreate().withPrefix('ok').register(okFvStickyHeader());
89
+ export const fvStickyHeaderTag = 'ok-fv-sticky-header';
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fv/sticky-header/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { observable } from '@ni/fast-element';\nimport { DesignSystem, FoundationElement } from '@ni/fast-foundation';\nimport { styles } from './styles';\nimport { template } from './template';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-fv-sticky-header': FvStickyHeader;\n }\n}\n\n/**\n * Displays an alternate header in a sticky overlay after the primary header leaves the viewport.\n */\nexport class FvStickyHeader extends FoundationElement {\n /** @internal */\n @observable\n public hasHeader = false;\n\n /** @internal */\n @observable\n public hasStickyHeader = false;\n\n /** @internal */\n @observable\n public headerIsVisible = true;\n\n /** @internal */\n @observable\n public showStickyHeader = false;\n\n /** @internal */\n public readonly headerSlot!: HTMLSlotElement;\n\n /** @internal */\n public readonly stickyHeaderSlot!: HTMLSlotElement;\n\n private readonly headerVisibility = new Map<Element, boolean>();\n private readonly headerIntersectionObserver = new IntersectionObserver(entries => {\n this.handleHeaderIntersection(entries);\n });\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.updateStickyHeaderContent();\n this.observeHeader();\n }\n\n /** @internal */\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.headerIntersectionObserver.disconnect();\n }\n\n /** @internal */\n public handleHeaderSlotChange(): void {\n this.observeHeader();\n }\n\n /** @internal */\n public handleStickyHeaderSlotChange(event: Event): void {\n this.hasStickyHeader = (event.target as HTMLSlotElement).assignedElements({ flatten: true }).length > 0;\n this.updateStickyHeaderContent();\n }\n\n /** @internal */\n public handleHeaderIntersection(entries: IntersectionObserverEntry[]): void {\n entries.forEach(entry => {\n const hasLeftViewport = !entry.isIntersecting && entry.boundingClientRect.top < 0;\n this.headerVisibility.set(entry.target, !hasLeftViewport);\n });\n this.headerIsVisible = Array.from(this.headerVisibility.values()).some(Boolean);\n this.updateStickyHeaderContent();\n }\n\n private observeHeader(): void {\n this.headerIntersectionObserver.disconnect();\n const headerElements = this.headerSlot.assignedElements({ flatten: true });\n this.hasHeader = headerElements.length > 0;\n this.headerIsVisible = true;\n this.headerVisibility.clear();\n headerElements.forEach(element => {\n this.headerVisibility.set(element, true);\n this.headerIntersectionObserver.observe(element);\n });\n this.updateStickyHeaderContent();\n }\n\n private updateStickyHeaderContent(): void {\n this.hasStickyHeader = this.stickyHeaderSlot.assignedElements({ flatten: true }).length > 0;\n this.showStickyHeader = this.hasHeader && this.hasStickyHeader && !this.headerIsVisible;\n }\n}\n\nconst okFvStickyHeader = FvStickyHeader.compose({\n baseName: 'fv-sticky-header',\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('ok').register(okFvStickyHeader());\nexport const fvStickyHeaderTag = 'ok-fv-sticky-header';\n"]}
@@ -0,0 +1 @@
1
+ export declare const styles: import("@ni/fast-element").ElementStyles;
@@ -0,0 +1,22 @@
1
+ import { css } from '@ni/fast-element';
2
+ import { elevation2BoxShadow, headerBackgroundColor } from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';
3
+ import { display } from '../../utilities/style/display';
4
+ export const styles = css `
5
+ ${display('block')}
6
+
7
+ .sticky-header {
8
+ position: fixed;
9
+ inset-block-start: 0;
10
+ inset-inline: 0;
11
+ z-index: 1;
12
+ box-sizing: border-box;
13
+ width: 100%;
14
+ background-color: var(${headerBackgroundColor.cssCustomProperty});
15
+ box-shadow: var(${elevation2BoxShadow.cssCustomProperty});
16
+ }
17
+
18
+ .sticky-header[hidden] {
19
+ display: none;
20
+ }
21
+ `;
22
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/sticky-header/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AACzH,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,OAAO,CAAC;;;;;;;;;gCASU,qBAAqB,CAAC,iBAAiB;0BAC7C,mBAAmB,CAAC,iBAAiB;;;;;;CAM9D,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport { elevation2BoxShadow, headerBackgroundColor } from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { display } from '../../utilities/style/display';\n\nexport const styles = css`\n ${display('block')}\n\n .sticky-header {\n position: fixed;\n inset-block-start: 0;\n inset-inline: 0;\n z-index: 1;\n box-sizing: border-box;\n width: 100%;\n background-color: var(${headerBackgroundColor.cssCustomProperty});\n box-shadow: var(${elevation2BoxShadow.cssCustomProperty});\n }\n\n .sticky-header[hidden] {\n display: none;\n }\n`;\n"]}
@@ -0,0 +1,2 @@
1
+ import type { FvStickyHeader } from '.';
2
+ export declare const template: import("@ni/fast-element").ViewTemplate<FvStickyHeader, any>;
@@ -0,0 +1,22 @@
1
+ import { html, ref } from '@ni/fast-element';
2
+ export const template = html `
3
+ <div class="header" part="header">
4
+ <slot
5
+ name="header"
6
+ ${ref('headerSlot')}
7
+ @slotchange="${x => x.handleHeaderSlotChange()}"
8
+ ></slot>
9
+ </div>
10
+ <div
11
+ class="sticky-header"
12
+ part="sticky-header"
13
+ ?hidden="${x => !x.showStickyHeader}"
14
+ >
15
+ <slot
16
+ name="sticky-header"
17
+ ${ref('stickyHeaderSlot')}
18
+ @slotchange="${(x, c) => x.handleStickyHeaderSlotChange(c.event)}"
19
+ ></slot>
20
+ </div>
21
+ `;
22
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/fv/sticky-header/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAG7C,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAgB;;;;cAI9B,GAAG,CAAC,YAAY,CAAC;2BACJ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,EAAE;;;;;;mBAMvC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;;;;cAI7B,GAAG,CAAC,kBAAkB,CAAC;2BACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAK,CAAC;;;CAG3E,CAAC","sourcesContent":["import { html, ref } from '@ni/fast-element';\nimport type { FvStickyHeader } from '.';\n\nexport const template = html<FvStickyHeader>`\n <div class=\"header\" part=\"header\">\n <slot\n name=\"header\"\n ${ref('headerSlot')}\n @slotchange=\"${x => x.handleHeaderSlotChange()}\"\n ></slot>\n </div>\n <div\n class=\"sticky-header\"\n part=\"sticky-header\"\n ?hidden=\"${x => !x.showStickyHeader}\"\n >\n <slot\n name=\"sticky-header\"\n ${ref('stickyHeaderSlot')}\n @slotchange=\"${(x, c) => x.handleStickyHeaderSlotChange(c.event)}\"\n ></slot>\n </div>\n`;\n"]}
@@ -1,6 +1,8 @@
1
1
  import { FoundationElement } from '@ni/fast-foundation';
2
2
  import '@ni/nimble-components/dist/esm/button';
3
3
  import '@ni/nimble-components/dist/esm/icons/cog';
4
+ import { type FvSummaryPanelSize as FvSummaryPanelSizeType } from './types';
5
+ export { FvSummaryPanelSize } from './types';
4
6
  declare global {
5
7
  interface HTMLElementTagNameMap {
6
8
  'ok-fv-summary-panel': FvSummaryPanel;
@@ -12,15 +14,30 @@ declare global {
12
14
  export declare class FvSummaryPanel extends FoundationElement {
13
15
  showEditItemsButton: boolean;
14
16
  legacyStyle: boolean;
17
+ size: FvSummaryPanelSizeType;
18
+ /** @internal */
19
+ hasOverflow: boolean;
20
+ /** @internal */
21
+ readonly summaryItems: HTMLElement;
15
22
  editItemsButtonLabel: string;
23
+ private readonly summaryItemsResizeObserver;
24
+ constructor();
16
25
  /** @internal */
17
26
  connectedCallback(): void;
18
27
  /** @internal */
28
+ disconnectedCallback(): void;
29
+ /** @internal */
19
30
  legacyStyleChanged(): void;
20
31
  /** @internal */
32
+ sizeChanged(): void;
33
+ /** @internal */
21
34
  handleEditItemsClick(): void;
22
35
  /** @internal */
23
36
  handleItemsSlotChange(): void;
24
- private syncTileLegacyStyle;
37
+ /** @internal */
38
+ handleItemsScroll(): void;
39
+ private observeSummaryItems;
40
+ private updateOverflow;
41
+ private syncTileAttributes;
25
42
  }
26
43
  export declare const fvSummaryPanelTag = "ok-fv-summary-panel";
@@ -1,29 +1,49 @@
1
1
  import { __decorate } from "tslib";
2
- import { attr } from '@ni/fast-element';
2
+ import { attr, observable } from '@ni/fast-element';
3
3
  import { DesignSystem, FoundationElement } from '@ni/fast-foundation';
4
4
  import '@ni/nimble-components/dist/esm/button';
5
5
  import '@ni/nimble-components/dist/esm/icons/cog';
6
6
  import { styles } from './styles';
7
7
  import { template } from './template';
8
+ import { FvSummaryPanelSize } from './types';
9
+ export { FvSummaryPanelSize } from './types';
8
10
  /**
9
11
  * A layout container for summary tiles with an optional edit-items affordance.
10
12
  */
11
13
  export class FvSummaryPanel extends FoundationElement {
12
14
  constructor() {
13
- super(...arguments);
15
+ super();
14
16
  this.showEditItemsButton = false;
15
17
  this.legacyStyle = false;
18
+ this.size = FvSummaryPanelSize.default;
19
+ /** @internal */
20
+ this.hasOverflow = false;
16
21
  this.editItemsButtonLabel = 'Configure';
22
+ this.summaryItemsResizeObserver = new ResizeObserver(() => this.updateOverflow());
17
23
  }
18
24
  /** @internal */
19
25
  connectedCallback() {
20
26
  super.connectedCallback();
21
- this.syncTileLegacyStyle();
27
+ this.syncTileAttributes();
28
+ this.observeSummaryItems();
29
+ }
30
+ /** @internal */
31
+ disconnectedCallback() {
32
+ super.disconnectedCallback();
33
+ this.summaryItemsResizeObserver.disconnect();
22
34
  }
23
35
  /** @internal */
24
36
  legacyStyleChanged() {
25
37
  if (this.$fastController.isConnected) {
26
- this.syncTileLegacyStyle();
38
+ this.syncTileAttributes();
39
+ this.updateOverflow();
40
+ }
41
+ }
42
+ /** @internal */
43
+ sizeChanged() {
44
+ if (this.$fastController.isConnected) {
45
+ this.syncTileAttributes();
46
+ this.updateOverflow();
27
47
  }
28
48
  }
29
49
  /** @internal */
@@ -35,9 +55,31 @@ export class FvSummaryPanel extends FoundationElement {
35
55
  }
36
56
  /** @internal */
37
57
  handleItemsSlotChange() {
38
- this.syncTileLegacyStyle();
58
+ this.syncTileAttributes();
59
+ this.observeSummaryItems();
60
+ }
61
+ /** @internal */
62
+ handleItemsScroll() {
63
+ this.updateOverflow();
39
64
  }
40
- syncTileLegacyStyle() {
65
+ observeSummaryItems() {
66
+ this.summaryItemsResizeObserver.disconnect();
67
+ this.summaryItemsResizeObserver.observe(this.summaryItems);
68
+ for (const element of this.shadowRoot?.querySelector('slot')?.assignedElements({ flatten: true }) ?? []) {
69
+ this.summaryItemsResizeObserver.observe(element);
70
+ }
71
+ this.updateOverflow();
72
+ }
73
+ updateOverflow() {
74
+ const maxScrollDistance = this.summaryItems.scrollWidth - this.summaryItems.clientWidth;
75
+ const scrollPosition = getComputedStyle(this.summaryItems).direction === 'rtl'
76
+ ? Math.abs(this.summaryItems.scrollLeft)
77
+ : this.summaryItems.scrollLeft;
78
+ this.hasOverflow = this.size === FvSummaryPanelSize.compact
79
+ && maxScrollDistance - scrollPosition > 0;
80
+ this.summaryItems.classList.toggle('has-overflow', this.hasOverflow);
81
+ }
82
+ syncTileAttributes() {
41
83
  for (const element of this.shadowRoot?.querySelector('slot')?.assignedElements({ flatten: true }) ?? []) {
42
84
  if (element.localName !== 'ok-fv-summary-panel-tile') {
43
85
  continue;
@@ -48,6 +90,12 @@ export class FvSummaryPanel extends FoundationElement {
48
90
  else {
49
91
  element.removeAttribute('legacy-style');
50
92
  }
93
+ if (this.size === FvSummaryPanelSize.compact) {
94
+ element.setAttribute('size', FvSummaryPanelSize.compact);
95
+ }
96
+ else {
97
+ element.removeAttribute('size');
98
+ }
51
99
  }
52
100
  }
53
101
  }
@@ -57,6 +105,12 @@ __decorate([
57
105
  __decorate([
58
106
  attr({ attribute: 'legacy-style', mode: 'boolean' })
59
107
  ], FvSummaryPanel.prototype, "legacyStyle", void 0);
108
+ __decorate([
109
+ attr
110
+ ], FvSummaryPanel.prototype, "size", void 0);
111
+ __decorate([
112
+ observable
113
+ ], FvSummaryPanel.prototype, "hasOverflow", void 0);
60
114
  __decorate([
61
115
  attr({ attribute: 'edit-items-button-label' })
62
116
  ], FvSummaryPanel.prototype, "editItemsButtonLabel", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,uCAAuC,CAAC;AAC/C,OAAO,0CAA0C,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,iBAAiB;IAArD;;QAEW,wBAAmB,GAAG,KAAK,CAAC;QAG5B,gBAAW,GAAG,KAAK,CAAC;QAGpB,yBAAoB,GAAG,WAAW,CAAC;IAyC9C,CAAC;IAvCG,gBAAgB;IACA,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED,gBAAgB;IACT,kBAAkB;QACrB,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,gBAAgB;IACT,oBAAoB;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,YAAY,EAAE;YAC7C,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC,CAAC;IACR,CAAC;IAED,gBAAgB;IACT,qBAAqB;QACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAEO,mBAAmB;QACvB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACtG,IAAI,OAAO,CAAC,SAAS,KAAK,0BAA0B,EAAE,CAAC;gBACnD,SAAS;YACb,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AA/CU;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,wBAAwB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;2DAC5B;AAG5B;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;mDAC1B;AAGpB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC;4DACL;AA2C9C,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC;IAC5C,QAAQ,EAAE,kBAAkB;IAC5B,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC","sourcesContent":["import { attr } from '@ni/fast-element';\nimport { DesignSystem, FoundationElement } from '@ni/fast-foundation';\nimport '@ni/nimble-components/dist/esm/button';\nimport '@ni/nimble-components/dist/esm/icons/cog';\nimport { styles } from './styles';\nimport { template } from './template';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-fv-summary-panel': FvSummaryPanel;\n }\n}\n\n/**\n * A layout container for summary tiles with an optional edit-items affordance.\n */\nexport class FvSummaryPanel extends FoundationElement {\n @attr({ attribute: 'show-edit-items-button', mode: 'boolean' })\n public showEditItemsButton = false;\n\n @attr({ attribute: 'legacy-style', mode: 'boolean' })\n public legacyStyle = false;\n\n @attr({ attribute: 'edit-items-button-label' })\n public editItemsButtonLabel = 'Configure';\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.syncTileLegacyStyle();\n }\n\n /** @internal */\n public legacyStyleChanged(): void {\n if (this.$fastController.isConnected) {\n this.syncTileLegacyStyle();\n }\n }\n\n /** @internal */\n public handleEditItemsClick(): void {\n this.dispatchEvent(new CustomEvent('edit-items', {\n bubbles: true,\n composed: true\n }));\n }\n\n /** @internal */\n public handleItemsSlotChange(): void {\n this.syncTileLegacyStyle();\n }\n\n private syncTileLegacyStyle(): void {\n for (const element of this.shadowRoot?.querySelector('slot')?.assignedElements({ flatten: true }) ?? []) {\n if (element.localName !== 'ok-fv-summary-panel-tile') {\n continue;\n }\n\n if (this.legacyStyle) {\n element.setAttribute('legacy-style', '');\n } else {\n element.removeAttribute('legacy-style');\n }\n }\n }\n}\n\nconst okFvSummaryPanel = FvSummaryPanel.compose({\n baseName: 'fv-summary-panel',\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('ok').register(okFvSummaryPanel());\nexport const fvSummaryPanelTag = 'ok-fv-summary-panel';"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { attr, observable } from '@ni/fast-element';\nimport { DesignSystem, FoundationElement } from '@ni/fast-foundation';\nimport '@ni/nimble-components/dist/esm/button';\nimport '@ni/nimble-components/dist/esm/icons/cog';\nimport { styles } from './styles';\nimport { template } from './template';\nimport { FvSummaryPanelSize, type FvSummaryPanelSize as FvSummaryPanelSizeType } from './types';\n\nexport { FvSummaryPanelSize } from './types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-fv-summary-panel': FvSummaryPanel;\n }\n}\n\n/**\n * A layout container for summary tiles with an optional edit-items affordance.\n */\nexport class FvSummaryPanel extends FoundationElement {\n @attr({ attribute: 'show-edit-items-button', mode: 'boolean' })\n public showEditItemsButton = false;\n\n @attr({ attribute: 'legacy-style', mode: 'boolean' })\n public legacyStyle = false;\n\n @attr\n public size: FvSummaryPanelSizeType = FvSummaryPanelSize.default;\n\n /** @internal */\n @observable\n public hasOverflow = false;\n\n /** @internal */\n public readonly summaryItems!: HTMLElement;\n\n @attr({ attribute: 'edit-items-button-label' })\n public editItemsButtonLabel = 'Configure';\n\n private readonly summaryItemsResizeObserver: ResizeObserver;\n\n public constructor() {\n super();\n this.summaryItemsResizeObserver = new ResizeObserver(() => this.updateOverflow());\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.syncTileAttributes();\n this.observeSummaryItems();\n }\n\n /** @internal */\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.summaryItemsResizeObserver.disconnect();\n }\n\n /** @internal */\n public legacyStyleChanged(): void {\n if (this.$fastController.isConnected) {\n this.syncTileAttributes();\n this.updateOverflow();\n }\n }\n\n /** @internal */\n public sizeChanged(): void {\n if (this.$fastController.isConnected) {\n this.syncTileAttributes();\n this.updateOverflow();\n }\n }\n\n /** @internal */\n public handleEditItemsClick(): void {\n this.dispatchEvent(new CustomEvent('edit-items', {\n bubbles: true,\n composed: true\n }));\n }\n\n /** @internal */\n public handleItemsSlotChange(): void {\n this.syncTileAttributes();\n this.observeSummaryItems();\n }\n\n /** @internal */\n public handleItemsScroll(): void {\n this.updateOverflow();\n }\n\n private observeSummaryItems(): void {\n this.summaryItemsResizeObserver.disconnect();\n this.summaryItemsResizeObserver.observe(this.summaryItems);\n for (const element of this.shadowRoot?.querySelector('slot')?.assignedElements({ flatten: true }) ?? []) {\n this.summaryItemsResizeObserver.observe(element);\n }\n this.updateOverflow();\n }\n\n private updateOverflow(): void {\n const maxScrollDistance = this.summaryItems.scrollWidth - this.summaryItems.clientWidth;\n const scrollPosition = getComputedStyle(this.summaryItems).direction === 'rtl'\n ? Math.abs(this.summaryItems.scrollLeft)\n : this.summaryItems.scrollLeft;\n this.hasOverflow = this.size === FvSummaryPanelSize.compact\n && maxScrollDistance - scrollPosition > 0;\n this.summaryItems.classList.toggle('has-overflow', this.hasOverflow);\n }\n\n private syncTileAttributes(): void {\n for (const element of this.shadowRoot?.querySelector('slot')?.assignedElements({ flatten: true }) ?? []) {\n if (element.localName !== 'ok-fv-summary-panel-tile') {\n continue;\n }\n\n if (this.legacyStyle) {\n element.setAttribute('legacy-style', '');\n } else {\n element.removeAttribute('legacy-style');\n }\n\n if (this.size === FvSummaryPanelSize.compact) {\n element.setAttribute('size', FvSummaryPanelSize.compact);\n } else {\n element.removeAttribute('size');\n }\n }\n }\n}\n\nconst okFvSummaryPanel = FvSummaryPanel.compose({\n baseName: 'fv-summary-panel',\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('ok').register(okFvSummaryPanel());\nexport const fvSummaryPanelTag = 'ok-fv-summary-panel';"]}
@@ -1,5 +1,5 @@
1
1
  import { css } from '@ni/fast-element';
2
- import { standardPadding } from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';
2
+ import { mediumPadding, smallPadding, standardPadding } from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';
3
3
  import { display } from '../../utilities/style/display';
4
4
  export const styles = css `
5
5
  @layer base, hover, focusVisible, active, disabled, top;
@@ -26,6 +26,25 @@ export const styles = css `
26
26
  display: none;
27
27
  }
28
28
 
29
+ :host([size='compact']) .summary-item-container {
30
+ flex-wrap: nowrap;
31
+ box-sizing: border-box;
32
+ overflow-x: auto;
33
+ overflow-y: hidden;
34
+ gap: ${mediumPadding};
35
+ padding: calc(${standardPadding} - ${smallPadding});
36
+ scrollbar-width: none;
37
+ }
38
+
39
+ :host([size='compact']) .summary-item-container.has-overflow {
40
+ -webkit-mask-image: linear-gradient(to right, black calc(100% - 48px), transparent);
41
+ mask-image: linear-gradient(to right, black calc(100% - 48px), transparent);
42
+ }
43
+
44
+ :host([size='compact']) .summary-item-container::-webkit-scrollbar {
45
+ display: none;
46
+ }
47
+
29
48
  .edit-items-button {
30
49
  align-self: start;
31
50
  justify-self: end;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;UAIf,OAAO,CAAC,OAAO,CAAC;;;;;;0BAMA,eAAe;;;;;;;mBAOtB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BjC,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport { standardPadding } from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { display } from '../../utilities/style/display';\n\nexport const styles = css`\n @layer base, hover, focusVisible, active, disabled, top;\n\n @layer base {\n ${display('block')}\n\n .summary-panel {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: flex-start;\n column-gap: ${standardPadding};\n }\n\n .summary-item-container {\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n gap: ${standardPadding};\n min-width: 0;\n }\n\n .summary-item-container:empty {\n display: none;\n }\n\n .edit-items-button {\n align-self: start;\n justify-self: end;\n }\n\n ::slotted(*) {\n flex: 0 0 auto;\n }\n }\n\n @layer hover {}\n\n @layer focusVisible {}\n\n @layer active {}\n\n @layer disabled {}\n\n @layer top {}\n`;"]}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACH,aAAa,EACb,YAAY,EACZ,eAAe,EAClB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;UAIf,OAAO,CAAC,OAAO,CAAC;;;;;;0BAMA,eAAe;;;;;;;mBAOtB,eAAe;;;;;;;;;;;;;mBAaf,aAAa;4BACJ,eAAe,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC5D,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport {\n mediumPadding,\n smallPadding,\n standardPadding\n} from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { display } from '../../utilities/style/display';\n\nexport const styles = css`\n @layer base, hover, focusVisible, active, disabled, top;\n\n @layer base {\n ${display('block')}\n\n .summary-panel {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: flex-start;\n column-gap: ${standardPadding};\n }\n\n .summary-item-container {\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n gap: ${standardPadding};\n min-width: 0;\n }\n\n .summary-item-container:empty {\n display: none;\n }\n\n :host([size='compact']) .summary-item-container {\n flex-wrap: nowrap;\n box-sizing: border-box;\n overflow-x: auto;\n overflow-y: hidden;\n gap: ${mediumPadding};\n padding: calc(${standardPadding} - ${smallPadding});\n scrollbar-width: none;\n }\n\n :host([size='compact']) .summary-item-container.has-overflow {\n -webkit-mask-image: linear-gradient(to right, black calc(100% - 48px), transparent);\n mask-image: linear-gradient(to right, black calc(100% - 48px), transparent);\n }\n\n :host([size='compact']) .summary-item-container::-webkit-scrollbar {\n display: none;\n }\n\n .edit-items-button {\n align-self: start;\n justify-self: end;\n }\n\n ::slotted(*) {\n flex: 0 0 auto;\n }\n }\n\n @layer hover {}\n\n @layer focusVisible {}\n\n @layer active {}\n\n @layer disabled {}\n\n @layer top {}\n`;"]}
@@ -1,10 +1,15 @@
1
- import { html, when } from '@ni/fast-element';
1
+ import { html, ref, when } from '@ni/fast-element';
2
2
  import { buttonTag } from '@ni/nimble-components/dist/esm/button';
3
3
  import { ButtonAppearance } from '@ni/nimble-components/dist/esm/button/types';
4
4
  import { iconCogTag } from '@ni/nimble-components/dist/esm/icons/cog';
5
5
  export const template = html `
6
6
  <section class="summary-panel" part="panel">
7
- <div class="summary-item-container" part="items">
7
+ <div
8
+ ${ref('summaryItems')}
9
+ class="summary-item-container"
10
+ part="items"
11
+ @scroll="${x => x.handleItemsScroll()}"
12
+ >
8
13
  <slot @slotchange="${x => x.handleItemsSlotChange()}"></slot>
9
14
  </div>
10
15
  ${when(x => x.showEditItemsButton, html `
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAGtE,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAgB;;;iCAGX,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE;;UAErD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAgB;eAChD,SAAS;;;8BAGM,gBAAgB,CAAC,KAAK;;yBAE3B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;8BACtB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;0BAC/B,CAAC,CAAC,EAAE;IACV,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC;AAChB,CAAC;;kBAEC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;mBAC1B,UAAU,mBAAmB,UAAU;gBAC1C,SAAS;SAChB,CAAC;;CAET,CAAC","sourcesContent":["import { html, when } from '@ni/fast-element';\nimport { buttonTag } from '@ni/nimble-components/dist/esm/button';\nimport { ButtonAppearance } from '@ni/nimble-components/dist/esm/button/types';\nimport { iconCogTag } from '@ni/nimble-components/dist/esm/icons/cog';\nimport type { FvSummaryPanel } from '.';\n\nexport const template = html<FvSummaryPanel>`\n <section class=\"summary-panel\" part=\"panel\">\n <div class=\"summary-item-container\" part=\"items\">\n <slot @slotchange=\"${x => x.handleItemsSlotChange()}\"></slot>\n </div>\n ${when(x => x.showEditItemsButton, html<FvSummaryPanel>`\n <${buttonTag}\n class=\"edit-items-button\"\n part=\"edit-items-button\"\n appearance=\"${ButtonAppearance.ghost}\"\n content-hidden\n title=\"${x => x.editItemsButtonLabel}\"\n aria-label=\"${x => x.editItemsButtonLabel}\"\n @click=\"${x => {\n x.handleEditItemsClick();\n return true;\n }}\"\n >\n ${x => x.editItemsButtonLabel}\n <${iconCogTag} slot=\"start\"></${iconCogTag}>\n </${buttonTag}>\n `)}\n </section>\n`;"]}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAGtE,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAgB;;;cAG9B,GAAG,CAAC,cAAc,CAAC;;;uBAGV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE;;iCAEhB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE;;UAErD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAgB;eAChD,SAAS;;;8BAGM,gBAAgB,CAAC,KAAK;;yBAE3B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;8BACtB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;0BAC/B,CAAC,CAAC,EAAE;IACV,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC;AAChB,CAAC;;kBAEC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;mBAC1B,UAAU,mBAAmB,UAAU;gBAC1C,SAAS;SAChB,CAAC;;CAET,CAAC","sourcesContent":["import { html, ref, when } from '@ni/fast-element';\nimport { buttonTag } from '@ni/nimble-components/dist/esm/button';\nimport { ButtonAppearance } from '@ni/nimble-components/dist/esm/button/types';\nimport { iconCogTag } from '@ni/nimble-components/dist/esm/icons/cog';\nimport type { FvSummaryPanel } from '.';\n\nexport const template = html<FvSummaryPanel>`\n <section class=\"summary-panel\" part=\"panel\">\n <div\n ${ref('summaryItems')}\n class=\"summary-item-container\"\n part=\"items\"\n @scroll=\"${x => x.handleItemsScroll()}\"\n >\n <slot @slotchange=\"${x => x.handleItemsSlotChange()}\"></slot>\n </div>\n ${when(x => x.showEditItemsButton, html<FvSummaryPanel>`\n <${buttonTag}\n class=\"edit-items-button\"\n part=\"edit-items-button\"\n appearance=\"${ButtonAppearance.ghost}\"\n content-hidden\n title=\"${x => x.editItemsButtonLabel}\"\n aria-label=\"${x => x.editItemsButtonLabel}\"\n @click=\"${x => {\n x.handleEditItemsClick();\n return true;\n }}\"\n >\n ${x => x.editItemsButtonLabel}\n <${iconCogTag} slot=\"start\"></${iconCogTag}>\n </${buttonTag}>\n `)}\n </section>\n`;"]}
@@ -0,0 +1,5 @@
1
+ export declare const FvSummaryPanelSize: {
2
+ readonly default: "default";
3
+ readonly compact: "compact";
4
+ };
5
+ export type FvSummaryPanelSize = (typeof FvSummaryPanelSize)[keyof typeof FvSummaryPanelSize];
@@ -0,0 +1,5 @@
1
+ export const FvSummaryPanelSize = {
2
+ default: 'default',
3
+ compact: 'compact'
4
+ };
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACZ,CAAC","sourcesContent":["export const FvSummaryPanelSize = {\n default: 'default',\n compact: 'compact'\n} as const;\n\nexport type FvSummaryPanelSize = (typeof FvSummaryPanelSize)[keyof typeof FvSummaryPanelSize];"]}
@@ -1,4 +1,5 @@
1
1
  import { FoundationElement } from '@ni/fast-foundation';
2
+ import { type FvSummaryPanelSize as FvSummaryPanelSizeType } from '../summary-panel/types';
2
3
  import { type FvSummaryPanelTileTextPosition as FvSummaryPanelTileTextPositionType } from './types';
3
4
  declare global {
4
5
  interface HTMLElementTagNameMap {
@@ -12,6 +13,7 @@ export declare class FvSummaryPanelTile extends FoundationElement {
12
13
  count: string;
13
14
  label: string;
14
15
  legacyStyle: boolean;
16
+ size: FvSummaryPanelSizeType;
15
17
  selected: boolean;
16
18
  textPosition: FvSummaryPanelTileTextPositionType;
17
19
  /** @internal */
@@ -3,6 +3,7 @@ import { attr } from '@ni/fast-element';
3
3
  import { DesignSystem, FoundationElement } from '@ni/fast-foundation';
4
4
  import { styles } from './styles';
5
5
  import { template } from './template';
6
+ import { FvSummaryPanelSize } from '../summary-panel/types';
6
7
  import { FvSummaryPanelTileTextPosition } from './types';
7
8
  /**
8
9
  * A clickable summary tile for displaying a large value with a compact label.
@@ -13,6 +14,7 @@ export class FvSummaryPanelTile extends FoundationElement {
13
14
  this.count = '';
14
15
  this.label = '';
15
16
  this.legacyStyle = false;
17
+ this.size = FvSummaryPanelSize.default;
16
18
  this.selected = false;
17
19
  this.textPosition = FvSummaryPanelTileTextPosition.beside;
18
20
  }
@@ -43,6 +45,9 @@ __decorate([
43
45
  __decorate([
44
46
  attr({ attribute: 'legacy-style', mode: 'boolean' })
45
47
  ], FvSummaryPanelTile.prototype, "legacyStyle", void 0);
48
+ __decorate([
49
+ attr
50
+ ], FvSummaryPanelTile.prototype, "size", void 0);
46
51
  __decorate([
47
52
  attr({ mode: 'boolean' })
48
53
  ], FvSummaryPanelTile.prototype, "selected", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel-tile/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACH,8BAA8B,EAEjC,MAAM,SAAS,CAAC;AAQjB;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,iBAAiB;IAAzD;;QAEW,UAAK,GAAG,EAAE,CAAC;QAGX,UAAK,GAAG,EAAE,CAAC;QAGX,gBAAW,GAAG,KAAK,CAAC;QAGpB,aAAQ,GAAG,KAAK,CAAC;QAGjB,iBAAY,GAAuC,8BAA8B,CAAC,MAAM,CAAC;IAoBpG,CAAC;IAlBG,gBAAgB;IACA,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAED,gBAAgB;IACT,kBAAkB;QACrB,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAEO,wBAAwB;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;CACJ;AAhCU;IADN,IAAI;iDACa;AAGX;IADN,IAAI;iDACa;AAGX;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;uDAC1B;AAGpB;IADN,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;oDACF;AAGjB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;wDAC2D;AAsBpG,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACpD,QAAQ,EAAE,uBAAuB;IACjC,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC","sourcesContent":["import { attr } from '@ni/fast-element';\nimport { DesignSystem, FoundationElement } from '@ni/fast-foundation';\nimport { styles } from './styles';\nimport { template } from './template';\nimport {\n FvSummaryPanelTileTextPosition,\n type FvSummaryPanelTileTextPosition as FvSummaryPanelTileTextPositionType\n} from './types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-fv-summary-panel-tile': FvSummaryPanelTile;\n }\n}\n\n/**\n * A clickable summary tile for displaying a large value with a compact label.\n */\nexport class FvSummaryPanelTile extends FoundationElement {\n @attr\n public count = '';\n\n @attr\n public label = '';\n\n @attr({ attribute: 'legacy-style', mode: 'boolean' })\n public legacyStyle = false;\n\n @attr({ mode: 'boolean' })\n public selected = false;\n\n @attr({ attribute: 'text-position' })\n public textPosition: FvSummaryPanelTileTextPositionType = FvSummaryPanelTileTextPosition.beside;\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.syncLegacyStyleAttribute();\n }\n\n /** @internal */\n public legacyStyleChanged(): void {\n this.syncLegacyStyleAttribute();\n }\n\n private syncLegacyStyleAttribute(): void {\n if (this.legacyStyle) {\n this.setAttribute('legacy-style', '');\n } else {\n this.removeAttribute('legacy-style');\n }\n }\n}\n\nconst okFvSummaryPanelTile = FvSummaryPanelTile.compose({\n baseName: 'fv-summary-panel-tile',\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('ok').register(okFvSummaryPanelTile());\nexport const fvSummaryPanelTileTag = 'ok-fv-summary-panel-tile';"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel-tile/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAqD,MAAM,wBAAwB,CAAC;AAC/G,OAAO,EACH,8BAA8B,EAEjC,MAAM,SAAS,CAAC;AAQjB;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,iBAAiB;IAAzD;;QAEW,UAAK,GAAG,EAAE,CAAC;QAGX,UAAK,GAAG,EAAE,CAAC;QAGX,gBAAW,GAAG,KAAK,CAAC;QAGpB,SAAI,GAA2B,kBAAkB,CAAC,OAAO,CAAC;QAG1D,aAAQ,GAAG,KAAK,CAAC;QAGjB,iBAAY,GAAuC,8BAA8B,CAAC,MAAM,CAAC;IAoBpG,CAAC;IAlBG,gBAAgB;IACA,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAED,gBAAgB;IACT,kBAAkB;QACrB,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAEO,wBAAwB;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;CACJ;AAnCU;IADN,IAAI;iDACa;AAGX;IADN,IAAI;iDACa;AAGX;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;uDAC1B;AAGpB;IADN,IAAI;gDAC4D;AAG1D;IADN,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;oDACF;AAGjB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;wDAC2D;AAsBpG,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACpD,QAAQ,EAAE,uBAAuB;IACjC,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC","sourcesContent":["import { attr } from '@ni/fast-element';\nimport { DesignSystem, FoundationElement } from '@ni/fast-foundation';\nimport { styles } from './styles';\nimport { template } from './template';\nimport { FvSummaryPanelSize, type FvSummaryPanelSize as FvSummaryPanelSizeType } from '../summary-panel/types';\nimport {\n FvSummaryPanelTileTextPosition,\n type FvSummaryPanelTileTextPosition as FvSummaryPanelTileTextPositionType\n} from './types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ok-fv-summary-panel-tile': FvSummaryPanelTile;\n }\n}\n\n/**\n * A clickable summary tile for displaying a large value with a compact label.\n */\nexport class FvSummaryPanelTile extends FoundationElement {\n @attr\n public count = '';\n\n @attr\n public label = '';\n\n @attr({ attribute: 'legacy-style', mode: 'boolean' })\n public legacyStyle = false;\n\n @attr\n public size: FvSummaryPanelSizeType = FvSummaryPanelSize.default;\n\n @attr({ mode: 'boolean' })\n public selected = false;\n\n @attr({ attribute: 'text-position' })\n public textPosition: FvSummaryPanelTileTextPositionType = FvSummaryPanelTileTextPosition.beside;\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.syncLegacyStyleAttribute();\n }\n\n /** @internal */\n public legacyStyleChanged(): void {\n this.syncLegacyStyleAttribute();\n }\n\n private syncLegacyStyleAttribute(): void {\n if (this.legacyStyle) {\n this.setAttribute('legacy-style', '');\n } else {\n this.removeAttribute('legacy-style');\n }\n }\n}\n\nconst okFvSummaryPanelTile = FvSummaryPanelTile.compose({\n baseName: 'fv-summary-panel-tile',\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('ok').register(okFvSummaryPanelTile());\nexport const fvSummaryPanelTileTag = 'ok-fv-summary-panel-tile';"]}
@@ -77,6 +77,24 @@ export const styles = css `
77
77
  text-transform: uppercase;
78
78
  white-space: nowrap;
79
79
  }
80
+
81
+ :host([size='compact']) .summary-panel-tile-content {
82
+ gap: 6px;
83
+ margin: 10px 14px;
84
+ }
85
+
86
+ :host([size='compact']) .count {
87
+ font-size: 24px;
88
+ line-height: normal;
89
+ }
90
+
91
+ :host([size='compact']) .summary-panel-tile-content.beside .count {
92
+ padding-right: 0;
93
+ }
94
+
95
+ :host([size='compact']) .label {
96
+ font-size: 11px;
97
+ }
80
98
  }
81
99
 
82
100
  @layer hover {
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel-tile/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACH,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACV,eAAe,EACf,mBAAmB,EACtB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;UAIf,OAAO,CAAC,cAAc,CAAC;;;;;;;;;;;qCAWI,UAAU;;;4DAGa,gBAAgB;;;;;;;;;;;uCAWrC,UAAU;;;;gCAIjB,eAAe;;;+BAGhB,UAAU;+BACV,UAAU;;;;;;mBAMtB,aAAa;sBACV,YAAY,SAAS,YAAY,MAAM,eAAe;oBACxD,QAAQ;;;;;;mBAMT,YAAY;;;;;qBAKV,mBAAmB;;;;;;;;6BAQX,aAAa;;;;;;;;;;;;;;;;oCAgBN,gBAAgB;;;;;;;;;;;;;;;;8BAgBtB,mBAAmB,CAAC,iBAAiB;;;;;sBAK7C,mBAAmB,CAAC,iBAAiB;4BAC/B,gBAAgB;;;;8BAId,mBAAmB,CAAC,iBAAiB;;;;4BAIvC,gBAAgB;;;;;;;;gCAQZ,gBAAgB;;;;;;;;;;;;;;;CAe/C,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport {\n bodyFont,\n borderHoverColor,\n cardBorderColor,\n elevation2BoxShadow,\n largePadding,\n mediumPadding,\n smallPadding,\n smallDelay,\n standardPadding,\n titlePlus2FontColor\n} from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { display } from '../../utilities/style/display';\n\nexport const styles = css`\n @layer base, hover, focusVisible, active, disabled, top;\n\n @layer base {\n ${display('inline-block')}\n\n :host {\n min-width: max-content;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile {\n position: relative;\n border-radius: 8px;\n overflow: clip;\n box-shadow: none;\n transition: 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: ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile::after {\n content: '';\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n border: 2px solid transparent;\n border-radius: inherit;\n pointer-events: none;\n transition: border-color ${smallDelay} ease-in-out;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile::part(control) {\n border: 2px solid ${cardBorderColor};\n border-radius: 8px;\n transition:\n border-color ${smallDelay} ease-in-out,\n border-width ${smallDelay} ease-in-out;\n }\n\n .summary-panel-tile-content {\n display: flex;\n align-items: center;\n gap: ${mediumPadding};\n margin: ${largePadding} calc(${largePadding} + ${standardPadding});\n font: ${bodyFont};\n }\n\n .summary-panel-tile-content.under {\n flex-direction: column;\n align-items: center;\n gap: ${smallPadding};\n text-align: center;\n }\n\n .count {\n color: ${titlePlus2FontColor};\n font-size: 32px;\n font-weight: 400;\n line-height: 40px;\n white-space: nowrap;\n }\n\n .summary-panel-tile-content.beside .count {\n padding-right: ${mediumPadding};\n }\n\n .summary-panel-tile-content.under .count {\n padding-right: 0;\n }\n\n .label {\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n }\n }\n\n @layer hover {\n :host(:not([legacy-style])) .summary-panel-tile:hover {\n box-shadow: 0 0 0 2px ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile::part(control):hover {\n border-color: transparent;\n }\n }\n\n @layer focusVisible {}\n\n @layer active {\n :host(:not([legacy-style])) .summary-panel-tile:active {\n box-shadow: none;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected] {\n box-shadow: var(${elevation2BoxShadow.cssCustomProperty});\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]:hover {\n box-shadow:\n var(${elevation2BoxShadow.cssCustomProperty}),\n 0 0 0 2px ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]:active {\n box-shadow: var(${elevation2BoxShadow.cssCustomProperty});\n }\n\n :host(:not([legacy-style])) .summary-panel-tile:active::after {\n border-color: ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile::part(control):active {\n border: 2px solid transparent;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]::part(control) {\n border: 2px solid ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]::part(control):hover {\n border: 2px solid transparent;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]::part(control):active {\n border: 2px solid transparent;\n }\n }\n\n @layer disabled {}\n\n @layer top {}\n`;"]}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/fv/summary-panel-tile/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACH,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACV,eAAe,EACf,mBAAmB,EACtB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;UAIf,OAAO,CAAC,cAAc,CAAC;;;;;;;;;;;qCAWI,UAAU;;;4DAGa,gBAAgB;;;;;;;;;;;uCAWrC,UAAU;;;;gCAIjB,eAAe;;;+BAGhB,UAAU;+BACV,UAAU;;;;;;mBAMtB,aAAa;sBACV,YAAY,SAAS,YAAY,MAAM,eAAe;oBACxD,QAAQ;;;;;;mBAMT,YAAY;;;;;qBAKV,mBAAmB;;;;;;;;6BAQX,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAkCN,gBAAgB;;;;;;;;;;;;;;;;8BAgBtB,mBAAmB,CAAC,iBAAiB;;;;;sBAK7C,mBAAmB,CAAC,iBAAiB;4BAC/B,gBAAgB;;;;8BAId,mBAAmB,CAAC,iBAAiB;;;;4BAIvC,gBAAgB;;;;;;;;gCAQZ,gBAAgB;;;;;;;;;;;;;;;CAe/C,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport {\n bodyFont,\n borderHoverColor,\n cardBorderColor,\n elevation2BoxShadow,\n largePadding,\n mediumPadding,\n smallPadding,\n smallDelay,\n standardPadding,\n titlePlus2FontColor\n} from '@ni/nimble-components/dist/esm/theme-provider/design-tokens';\nimport { display } from '../../utilities/style/display';\n\nexport const styles = css`\n @layer base, hover, focusVisible, active, disabled, top;\n\n @layer base {\n ${display('inline-block')}\n\n :host {\n min-width: max-content;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile {\n position: relative;\n border-radius: 8px;\n overflow: clip;\n box-shadow: none;\n transition: 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: ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile::after {\n content: '';\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n border: 2px solid transparent;\n border-radius: inherit;\n pointer-events: none;\n transition: border-color ${smallDelay} ease-in-out;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile::part(control) {\n border: 2px solid ${cardBorderColor};\n border-radius: 8px;\n transition:\n border-color ${smallDelay} ease-in-out,\n border-width ${smallDelay} ease-in-out;\n }\n\n .summary-panel-tile-content {\n display: flex;\n align-items: center;\n gap: ${mediumPadding};\n margin: ${largePadding} calc(${largePadding} + ${standardPadding});\n font: ${bodyFont};\n }\n\n .summary-panel-tile-content.under {\n flex-direction: column;\n align-items: center;\n gap: ${smallPadding};\n text-align: center;\n }\n\n .count {\n color: ${titlePlus2FontColor};\n font-size: 32px;\n font-weight: 400;\n line-height: 40px;\n white-space: nowrap;\n }\n\n .summary-panel-tile-content.beside .count {\n padding-right: ${mediumPadding};\n }\n\n .summary-panel-tile-content.under .count {\n padding-right: 0;\n }\n\n .label {\n font-weight: 600;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n :host([size='compact']) .summary-panel-tile-content {\n gap: 6px;\n margin: 10px 14px;\n }\n\n :host([size='compact']) .count {\n font-size: 24px;\n line-height: normal;\n }\n\n :host([size='compact']) .summary-panel-tile-content.beside .count {\n padding-right: 0;\n }\n\n :host([size='compact']) .label {\n font-size: 11px;\n }\n }\n\n @layer hover {\n :host(:not([legacy-style])) .summary-panel-tile:hover {\n box-shadow: 0 0 0 2px ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile::part(control):hover {\n border-color: transparent;\n }\n }\n\n @layer focusVisible {}\n\n @layer active {\n :host(:not([legacy-style])) .summary-panel-tile:active {\n box-shadow: none;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected] {\n box-shadow: var(${elevation2BoxShadow.cssCustomProperty});\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]:hover {\n box-shadow:\n var(${elevation2BoxShadow.cssCustomProperty}),\n 0 0 0 2px ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]:active {\n box-shadow: var(${elevation2BoxShadow.cssCustomProperty});\n }\n\n :host(:not([legacy-style])) .summary-panel-tile:active::after {\n border-color: ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile::part(control):active {\n border: 2px solid transparent;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]::part(control) {\n border: 2px solid ${borderHoverColor};\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]::part(control):hover {\n border: 2px solid transparent;\n }\n\n :host(:not([legacy-style])) .summary-panel-tile[selected]::part(control):active {\n border: 2px solid transparent;\n }\n }\n\n @layer disabled {}\n\n @layer top {}\n`;"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ni/ok-components",
3
- "version": "1.7.0",
3
+ "version": "1.8.1",
4
4
  "description": "NI Ok Components",
5
5
  "scripts": {
6
6
  "build": "npm run build:components && npm run build:cem",