@memberjunction/ng-ui-components 6.1.0-edge.0 → 6.1.0-edge.2

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 (39) hide show
  1. package/README.md +42 -2
  2. package/dist/lib/left-nav/left-nav.component.d.ts +142 -3
  3. package/dist/lib/left-nav/left-nav.component.d.ts.map +1 -1
  4. package/dist/lib/left-nav/left-nav.component.js +391 -117
  5. package/dist/lib/left-nav/left-nav.component.js.map +1 -1
  6. package/dist/lib/tabs/tab-chrome-guard.d.ts +14 -0
  7. package/dist/lib/tabs/tab-chrome-guard.d.ts.map +1 -0
  8. package/dist/lib/tabs/tab-chrome-guard.js +36 -0
  9. package/dist/lib/tabs/tab-chrome-guard.js.map +1 -0
  10. package/dist/lib/tabs/tab-list.directive.d.ts +93 -0
  11. package/dist/lib/tabs/tab-list.directive.d.ts.map +1 -0
  12. package/dist/lib/tabs/tab-list.directive.js +202 -0
  13. package/dist/lib/tabs/tab-list.directive.js.map +1 -0
  14. package/dist/lib/tabs/tabs.scss +242 -0
  15. package/dist/lib/workspace-tabs/workspace-card.component.d.ts +63 -0
  16. package/dist/lib/workspace-tabs/workspace-card.component.d.ts.map +1 -0
  17. package/dist/lib/workspace-tabs/workspace-card.component.js +256 -0
  18. package/dist/lib/workspace-tabs/workspace-card.component.js.map +1 -0
  19. package/dist/lib/workspace-tabs/workspace-tab-store.d.ts +47 -0
  20. package/dist/lib/workspace-tabs/workspace-tab-store.d.ts.map +1 -0
  21. package/dist/lib/workspace-tabs/workspace-tab-store.js +112 -0
  22. package/dist/lib/workspace-tabs/workspace-tab-store.js.map +1 -0
  23. package/dist/lib/workspace-tabs/workspace-tab-strip.component.d.ts +75 -0
  24. package/dist/lib/workspace-tabs/workspace-tab-strip.component.d.ts.map +1 -0
  25. package/dist/lib/workspace-tabs/workspace-tab-strip.component.js +252 -0
  26. package/dist/lib/workspace-tabs/workspace-tab-strip.component.js.map +1 -0
  27. package/dist/lib/workspace-tabs/workspace-tabs.types.d.ts +40 -0
  28. package/dist/lib/workspace-tabs/workspace-tabs.types.d.ts.map +1 -0
  29. package/dist/lib/workspace-tabs/workspace-tabs.types.js +13 -0
  30. package/dist/lib/workspace-tabs/workspace-tabs.types.js.map +1 -0
  31. package/dist/lib/workspace-tabs/workspace-tip.directive.d.ts +34 -0
  32. package/dist/lib/workspace-tabs/workspace-tip.directive.d.ts.map +1 -0
  33. package/dist/lib/workspace-tabs/workspace-tip.directive.js +123 -0
  34. package/dist/lib/workspace-tabs/workspace-tip.directive.js.map +1 -0
  35. package/dist/public-api.d.ts +7 -0
  36. package/dist/public-api.d.ts.map +1 -1
  37. package/dist/public-api.js +7 -0
  38. package/dist/public-api.js.map +1 -1
  39. package/package.json +5 -5
@@ -0,0 +1,123 @@
1
+ import { Directive, ElementRef, HostListener, Input, Renderer2, inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const DELAY_MS = 450;
4
+ const MAX_WIDTH = 300; // ~1.5 tab-widths; height is capped at 3 lines below.
5
+ /**
6
+ * `mjTip` — a small, reusable, THEMED hover tooltip for dense surfaces (tab labels, truncated
7
+ * selects, …). Behavior:
8
+ * - shows the full text only after the pointer holds STILL over the host (~450ms);
9
+ * - NON-INTERACTIVE (`pointer-events:none`) so it never blocks a click, and leaves on the next mousemove;
10
+ * - by default shows ONLY when the host is truncated (`scrollWidth > clientWidth`) — pass `mjTipAlways`
11
+ * for hosts whose truncation can't be measured (a native `<select>`), so the full value shows regardless;
12
+ * - themed via design tokens (inline `var()` styles, since it is appended to `<body>`), with a NEUTRAL
13
+ * `rgba(0,0,0,…)` shadow so it reads as a shadow in BOTH light and dark mode (a token-tinted shadow
14
+ * glows in dark). Capped at ~1.5 tab-widths × 3 lines — never a screen-wide banner.
15
+ */
16
+ export class MJWorkspaceTipDirective {
17
+ host = inject(ElementRef).nativeElement;
18
+ r = inject(Renderer2);
19
+ Text = '';
20
+ /** Show even when the host isn't measurably truncated (e.g. a native <select>). */
21
+ Always = false;
22
+ timer = null;
23
+ tip = null;
24
+ onEnter() {
25
+ this.arm();
26
+ }
27
+ onMove() {
28
+ this.hide();
29
+ this.arm();
30
+ }
31
+ onLeave() {
32
+ this.clear();
33
+ this.hide();
34
+ }
35
+ ngOnDestroy() {
36
+ this.clear();
37
+ this.hide();
38
+ }
39
+ arm() {
40
+ this.clear();
41
+ this.timer = setTimeout(() => this.show(), DELAY_MS);
42
+ }
43
+ clear() {
44
+ if (this.timer) {
45
+ clearTimeout(this.timer);
46
+ this.timer = null;
47
+ }
48
+ }
49
+ show() {
50
+ this.timer = null;
51
+ const text = (this.Text ?? '').trim();
52
+ if (!text)
53
+ return;
54
+ if (!this.Always && this.host.scrollWidth <= this.host.clientWidth + 1)
55
+ return;
56
+ const rect = this.host.getBoundingClientRect();
57
+ const el = this.r.createElement('div');
58
+ this.r.setProperty(el, 'textContent', text);
59
+ this.r.setAttribute(el, 'role', 'tooltip');
60
+ this.styleTip(el.style);
61
+ this.r.appendChild(document.body, el);
62
+ this.tip = el;
63
+ // Keep it on-screen (measured after append) — clamp right, flip above if it would overflow bottom.
64
+ const left = Math.max(4, Math.min(Math.round(rect.left), window.innerWidth - el.offsetWidth - 4));
65
+ let top = Math.round(rect.bottom + 4);
66
+ if (top + el.offsetHeight > window.innerHeight - 4)
67
+ top = Math.max(4, Math.round(rect.top - el.offsetHeight - 4));
68
+ el.style.left = `${left}px`;
69
+ el.style.top = `${top}px`;
70
+ }
71
+ styleTip(s) {
72
+ s.position = 'fixed';
73
+ s.left = '0';
74
+ s.top = '0';
75
+ s.zIndex = '1000';
76
+ s.pointerEvents = 'none';
77
+ s.maxWidth = `${MAX_WIDTH}px`;
78
+ s.overflow = 'hidden';
79
+ s.display = '-webkit-box';
80
+ s.setProperty('-webkit-line-clamp', '3');
81
+ s.setProperty('-webkit-box-orient', 'vertical');
82
+ s.padding = '5px 9px';
83
+ s.borderRadius = '6px';
84
+ s.background = 'var(--mj-bg-surface-elevated, var(--mj-bg-surface))';
85
+ s.border = '1px solid var(--mj-border-default)';
86
+ s.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.18)';
87
+ s.color = 'var(--mj-text-primary)';
88
+ s.fontSize = '12px';
89
+ s.lineHeight = '1.35';
90
+ s.whiteSpace = 'normal';
91
+ s.wordBreak = 'break-word';
92
+ }
93
+ hide() {
94
+ if (this.tip) {
95
+ this.r.removeChild(document.body, this.tip);
96
+ this.tip = null;
97
+ }
98
+ }
99
+ static ɵfac = function MJWorkspaceTipDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MJWorkspaceTipDirective)(); };
100
+ static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: MJWorkspaceTipDirective, selectors: [["", "mjTip", ""]], hostBindings: function MJWorkspaceTipDirective_HostBindings(rf, ctx) { if (rf & 1) {
101
+ i0.ɵɵlistener("mouseenter", function MJWorkspaceTipDirective_mouseenter_HostBindingHandler() { return ctx.onEnter(); })("mousemove", function MJWorkspaceTipDirective_mousemove_HostBindingHandler() { return ctx.onMove(); })("mouseleave", function MJWorkspaceTipDirective_mouseleave_HostBindingHandler() { return ctx.onLeave(); });
102
+ } }, inputs: { Text: [0, "mjTip", "Text"], Always: [0, "mjTipAlways", "Always"] } });
103
+ }
104
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJWorkspaceTipDirective, [{
105
+ type: Directive,
106
+ args: [{ selector: '[mjTip]', standalone: true }]
107
+ }], null, { Text: [{
108
+ type: Input,
109
+ args: ['mjTip']
110
+ }], Always: [{
111
+ type: Input,
112
+ args: ['mjTipAlways']
113
+ }], onEnter: [{
114
+ type: HostListener,
115
+ args: ['mouseenter']
116
+ }], onMove: [{
117
+ type: HostListener,
118
+ args: ['mousemove']
119
+ }], onLeave: [{
120
+ type: HostListener,
121
+ args: ['mouseleave']
122
+ }] }); })();
123
+ //# sourceMappingURL=workspace-tip.directive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-tip.directive.js","sourceRoot":"","sources":["../../../src/lib/workspace-tabs/workspace-tip.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostListener, Input, OnDestroy, Renderer2, inject } from '@angular/core';\n\nconst DELAY_MS = 450;\nconst MAX_WIDTH = 300; // ~1.5 tab-widths; height is capped at 3 lines below.\n\n/**\n * `mjTip` — a small, reusable, THEMED hover tooltip for dense surfaces (tab labels, truncated\n * selects, …). Behavior:\n * - shows the full text only after the pointer holds STILL over the host (~450ms);\n * - NON-INTERACTIVE (`pointer-events:none`) so it never blocks a click, and leaves on the next mousemove;\n * - by default shows ONLY when the host is truncated (`scrollWidth > clientWidth`) — pass `mjTipAlways`\n * for hosts whose truncation can't be measured (a native `<select>`), so the full value shows regardless;\n * - themed via design tokens (inline `var()` styles, since it is appended to `<body>`), with a NEUTRAL\n * `rgba(0,0,0,…)` shadow so it reads as a shadow in BOTH light and dark mode (a token-tinted shadow\n * glows in dark). Capped at ~1.5 tab-widths × 3 lines — never a screen-wide banner.\n */\n@Directive({ selector: '[mjTip]', standalone: true })\nexport class MJWorkspaceTipDirective implements OnDestroy {\n private host = inject(ElementRef).nativeElement as HTMLElement;\n private r = inject(Renderer2);\n\n @Input('mjTip') Text = '';\n /** Show even when the host isn't measurably truncated (e.g. a native <select>). */\n @Input('mjTipAlways') Always = false;\n\n private timer: ReturnType<typeof setTimeout> | null = null;\n private tip: HTMLElement | null = null;\n\n @HostListener('mouseenter') onEnter(): void {\n this.arm();\n }\n @HostListener('mousemove') onMove(): void {\n this.hide();\n this.arm();\n }\n @HostListener('mouseleave') onLeave(): void {\n this.clear();\n this.hide();\n }\n ngOnDestroy(): void {\n this.clear();\n this.hide();\n }\n\n private arm(): void {\n this.clear();\n this.timer = setTimeout(() => this.show(), DELAY_MS);\n }\n private clear(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n private show(): void {\n this.timer = null;\n const text = (this.Text ?? '').trim();\n if (!text) return;\n if (!this.Always && this.host.scrollWidth <= this.host.clientWidth + 1) return;\n\n const rect = this.host.getBoundingClientRect();\n const el = this.r.createElement('div') as HTMLElement;\n this.r.setProperty(el, 'textContent', text);\n this.r.setAttribute(el, 'role', 'tooltip');\n this.styleTip(el.style);\n this.r.appendChild(document.body, el);\n this.tip = el;\n // Keep it on-screen (measured after append) — clamp right, flip above if it would overflow bottom.\n const left = Math.max(4, Math.min(Math.round(rect.left), window.innerWidth - el.offsetWidth - 4));\n let top = Math.round(rect.bottom + 4);\n if (top + el.offsetHeight > window.innerHeight - 4) top = Math.max(4, Math.round(rect.top - el.offsetHeight - 4));\n el.style.left = `${left}px`;\n el.style.top = `${top}px`;\n }\n\n private styleTip(s: CSSStyleDeclaration): void {\n s.position = 'fixed';\n s.left = '0';\n s.top = '0';\n s.zIndex = '1000';\n s.pointerEvents = 'none';\n s.maxWidth = `${MAX_WIDTH}px`;\n s.overflow = 'hidden';\n s.display = '-webkit-box';\n s.setProperty('-webkit-line-clamp', '3');\n s.setProperty('-webkit-box-orient', 'vertical');\n s.padding = '5px 9px';\n s.borderRadius = '6px';\n s.background = 'var(--mj-bg-surface-elevated, var(--mj-bg-surface))';\n s.border = '1px solid var(--mj-border-default)';\n s.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.18)';\n s.color = 'var(--mj-text-primary)';\n s.fontSize = '12px';\n s.lineHeight = '1.35';\n s.whiteSpace = 'normal';\n s.wordBreak = 'break-word';\n }\n\n private hide(): void {\n if (this.tip) {\n this.r.removeChild(document.body, this.tip);\n this.tip = null;\n }\n }\n}\n"]}
@@ -28,6 +28,13 @@ export * from './lib/filter-chip/filter-chip.component';
28
28
  export * from './lib/filter-field/filter-field.component';
29
29
  export * from './lib/filter-panel/filter-panel.component';
30
30
  export * from './lib/tab-nav/tab-nav.component';
31
+ export * from './lib/tabs/tab-list.directive';
32
+ export * from './lib/tabs/tab-chrome-guard';
33
+ export * from './lib/workspace-tabs/workspace-tabs.types';
34
+ export * from './lib/workspace-tabs/workspace-tab-store';
35
+ export * from './lib/workspace-tabs/workspace-tab-strip.component';
36
+ export * from './lib/workspace-tabs/workspace-card.component';
37
+ export * from './lib/workspace-tabs/workspace-tip.directive';
31
38
  export * from './lib/view-toggle/view-toggle.component';
32
39
  export * from './lib/left-nav/left-nav.component';
33
40
  export * from './lib/left-nav/left-nav-content.component';
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAGA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,uDAAuD,CAAC;AACtE,cAAc,yCAAyC,CAAC"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAGA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC;AACzD,cAAc,oDAAoD,CAAC;AACnE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,yCAAyC,CAAC;AACxD,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,uDAAuD,CAAC;AACtE,cAAc,yCAAyC,CAAC"}
@@ -30,6 +30,13 @@ export * from './lib/filter-chip/filter-chip.component';
30
30
  export * from './lib/filter-field/filter-field.component';
31
31
  export * from './lib/filter-panel/filter-panel.component';
32
32
  export * from './lib/tab-nav/tab-nav.component';
33
+ export * from './lib/tabs/tab-list.directive';
34
+ export * from './lib/tabs/tab-chrome-guard';
35
+ export * from './lib/workspace-tabs/workspace-tabs.types';
36
+ export * from './lib/workspace-tabs/workspace-tab-store';
37
+ export * from './lib/workspace-tabs/workspace-tab-strip.component';
38
+ export * from './lib/workspace-tabs/workspace-card.component';
39
+ export * from './lib/workspace-tabs/workspace-tip.directive';
33
40
  export * from './lib/view-toggle/view-toggle.component';
34
41
  export * from './lib/left-nav/left-nav.component';
35
42
  export * from './lib/left-nav/left-nav-content.component';
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,+DAA+D;AAE/D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,uDAAuD,CAAC;AACtE,cAAc,yCAAyC,CAAC","sourcesContent":["// @memberjunction/ng-ui-components\n// Reusable standalone Angular UI components for MemberJunction\n\nexport * from './lib/button/button.directive';\nexport * from './lib/clickable/clickable.directive';\nexport * from './lib/dialog/dialog.component';\nexport * from './lib/dialog/dialog.service';\nexport * from './lib/confirm-dialog/confirm-dialog.component';\nexport * from './lib/confirm-dialog/confirm-dialog.service';\nexport * from './lib/dropdown/dropdown.component';\nexport * from './lib/switch/switch.component';\nexport * from './lib/numeric-input/numeric-input.component';\nexport * from './lib/progress-bar/progress-bar.component';\nexport * from './lib/calendar/calendar-utils';\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/splitter/splitter.component';\nexport * from './lib/accordion/accordion.component';\nexport * from './lib/alert/alert.component';\nexport * from './lib/window/window.component';\nexport * from './lib/slide-panel/slide-panel.component';\nexport * from './lib/bottom-sheet/bottom-sheet.component';\nexport * from './lib/combobox/combobox.component';\nexport * from './lib/page-header/page-header.component';\nexport * from './lib/page-layout/page-layout.component';\nexport * from './lib/page-body/page-body.component';\nexport * from './lib/stat-badge/stat-badge.component';\nexport * from './lib/refresh-button/refresh-button.component';\nexport * from './lib/filter-popover/filter-popover.component';\nexport * from './lib/page-search/page-search.component';\nexport * from './lib/filter-chip/filter-chip.component';\nexport * from './lib/filter-field/filter-field.component';\nexport * from './lib/filter-panel/filter-panel.component';\nexport * from './lib/tab-nav/tab-nav.component';\nexport * from './lib/view-toggle/view-toggle.component';\nexport * from './lib/left-nav/left-nav.component';\nexport * from './lib/left-nav/left-nav-content.component';\nexport * from './lib/page-header-interior/page-header-interior.component';\nexport * from './lib/page-body-interior/page-body-interior.component';\nexport * from './lib/empty-state/empty-state.component';\n"]}
1
+ {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,+DAA+D;AAE/D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC;AACzD,cAAc,oDAAoD,CAAC;AACnE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,yCAAyC,CAAC;AACxD,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,uDAAuD,CAAC;AACtE,cAAc,yCAAyC,CAAC","sourcesContent":["// @memberjunction/ng-ui-components\n// Reusable standalone Angular UI components for MemberJunction\n\nexport * from './lib/button/button.directive';\nexport * from './lib/clickable/clickable.directive';\nexport * from './lib/dialog/dialog.component';\nexport * from './lib/dialog/dialog.service';\nexport * from './lib/confirm-dialog/confirm-dialog.component';\nexport * from './lib/confirm-dialog/confirm-dialog.service';\nexport * from './lib/dropdown/dropdown.component';\nexport * from './lib/switch/switch.component';\nexport * from './lib/numeric-input/numeric-input.component';\nexport * from './lib/progress-bar/progress-bar.component';\nexport * from './lib/calendar/calendar-utils';\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/splitter/splitter.component';\nexport * from './lib/accordion/accordion.component';\nexport * from './lib/alert/alert.component';\nexport * from './lib/window/window.component';\nexport * from './lib/slide-panel/slide-panel.component';\nexport * from './lib/bottom-sheet/bottom-sheet.component';\nexport * from './lib/combobox/combobox.component';\nexport * from './lib/page-header/page-header.component';\nexport * from './lib/page-layout/page-layout.component';\nexport * from './lib/page-body/page-body.component';\nexport * from './lib/stat-badge/stat-badge.component';\nexport * from './lib/refresh-button/refresh-button.component';\nexport * from './lib/filter-popover/filter-popover.component';\nexport * from './lib/page-search/page-search.component';\nexport * from './lib/filter-chip/filter-chip.component';\nexport * from './lib/filter-field/filter-field.component';\nexport * from './lib/filter-panel/filter-panel.component';\nexport * from './lib/tab-nav/tab-nav.component';\nexport * from './lib/tabs/tab-list.directive';\nexport * from './lib/tabs/tab-chrome-guard';\nexport * from './lib/workspace-tabs/workspace-tabs.types';\nexport * from './lib/workspace-tabs/workspace-tab-store';\nexport * from './lib/workspace-tabs/workspace-tab-strip.component';\nexport * from './lib/workspace-tabs/workspace-card.component';\nexport * from './lib/workspace-tabs/workspace-tip.directive';\nexport * from './lib/view-toggle/view-toggle.component';\nexport * from './lib/left-nav/left-nav.component';\nexport * from './lib/left-nav/left-nav-content.component';\nexport * from './lib/page-header-interior/page-header-interior.component';\nexport * from './lib/page-body-interior/page-body-interior.component';\nexport * from './lib/empty-state/empty-state.component';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-ui-components",
3
- "version": "6.1.0-edge.0",
3
+ "version": "6.1.0-edge.2",
4
4
  "description": "MemberJunction: Angular UI Components - reusable standalone components replacing Kendo UI dependencies.",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -16,12 +16,12 @@
16
16
  "devDependencies": {
17
17
  "@angular/compiler": "21.1.3",
18
18
  "@angular/compiler-cli": "21.1.3",
19
- "@memberjunction/ng-test-utils": "6.1.0-edge.0",
19
+ "@memberjunction/ng-test-utils": "6.1.0-edge.2",
20
20
  "vitest": "^4.0.18"
21
21
  },
22
22
  "peerDependencies": {
23
- "@angular/common": "21.1.3",
24
- "@angular/core": "21.1.3",
23
+ "@angular/common": "^21.1.3",
24
+ "@angular/core": "^21.1.3",
25
25
  "rxjs": "^7.8.2"
26
26
  },
27
27
  "dependencies": {
@@ -40,7 +40,7 @@
40
40
  "test": "vitest run",
41
41
  "test:types": "tsc --noEmit -p tsconfig.spec.json",
42
42
  "build": "npm run clean && ngc && npm run copy-assets",
43
- "copy-assets": "cpy src/lib/button/button.scss dist/lib/button --flat && cpy src/lib/dialog/dialog.scss dist/lib/dialog --flat && cpy src/lib/dropdown/dropdown.scss dist/lib/dropdown --flat && cpy src/lib/combobox/combobox.scss dist/lib/combobox --flat && cpy src/lib/input/input.scss dist/lib/input --flat && cpy src/lib/input/input-switch-progress.scss dist/lib/input --flat && cpy src/lib/datepicker/datepicker.scss dist/lib/datepicker --flat && cpy src/lib/splitter/splitter.scss dist/lib/splitter --flat && cpy src/lib/accordion/accordion.scss dist/lib/accordion --flat && cpy src/lib/window/window.scss dist/lib/window --flat && cpy src/lib/input/chip.scss dist/lib/input --flat",
43
+ "copy-assets": "cpy src/lib/button/button.scss dist/lib/button --flat && cpy src/lib/dialog/dialog.scss dist/lib/dialog --flat && cpy src/lib/dropdown/dropdown.scss dist/lib/dropdown --flat && cpy src/lib/combobox/combobox.scss dist/lib/combobox --flat && cpy src/lib/input/input.scss dist/lib/input --flat && cpy src/lib/input/input-switch-progress.scss dist/lib/input --flat && cpy src/lib/datepicker/datepicker.scss dist/lib/datepicker --flat && cpy src/lib/splitter/splitter.scss dist/lib/splitter --flat && cpy src/lib/accordion/accordion.scss dist/lib/accordion --flat && cpy src/lib/window/window.scss dist/lib/window --flat && cpy src/lib/input/chip.scss dist/lib/input --flat && cpy src/lib/tabs/tabs.scss dist/lib/tabs --flat",
44
44
  "clean": "rimraf dist",
45
45
  "test:watch": "vitest"
46
46
  }