@ngx-stoui/core 21.0.3 → 21.0.5

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/README.md CHANGED
@@ -1,148 +1,148 @@
1
- # @ngx-stoui/core
2
-
3
- Core packages like styling, pipes and common directives for Angular, based on EDS design styles.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- npm install @ngx-stoui/core
9
- ```
10
-
11
- ## Public API
12
-
13
- ### Compiled Stylesheets
14
-
15
- Import these in your `styles.scss` or `angular.json`:
16
-
17
- ```scss
18
- // Main stylesheet with all components and utilities
19
- @import '@ngx-stoui/core/ngx-stoui.css';
20
-
21
- // Datatable stylesheet (optional, if using datatables)
22
- @import '@ngx-stoui/core/ngx-datatable.css';
23
- ```
24
-
25
- ### SCSS Utilities (for advanced usage)
26
-
27
- #### Grid System
28
-
29
- Use the grid mixin to create responsive grid layouts:
30
-
31
- ```scss
32
- @use '@ngx-stoui/core/style/grid' as grid;
33
-
34
- .my-grid {
35
- @include grid.grid(12); // 12-column grid
36
- }
37
-
38
- .my-compact-grid {
39
- @include grid.grid(4, 'column', 0); // 4-column grid with custom class name
40
- }
41
- ```
42
-
43
- #### Theme Variables and Mixins
44
-
45
- Access theme variables, typography, and create custom themed components:
46
-
47
- ```scss
48
- @use 'sass:map';
49
- @import '@ngx-stoui/core/style/theme/theme';
50
-
51
- // Access theme variables
52
- @mixin my-component-theme($theme, $variables) {
53
- $primary: map.get($variables, primary);
54
- $accent: map.get($variables, accent);
55
-
56
- .my-component {
57
- background: $primary;
58
- color: $accent;
59
- }
60
- }
61
-
62
- // Apply to light and dark themes
63
- .light-theme {
64
- @include my-component-theme($sto-theme, $variables);
65
- }
66
-
67
- .dark-theme {
68
- @include my-component-theme($sto-dark-theme, $dark-variables);
69
- }
70
- ```
71
-
72
- #### Typography Only
73
-
74
- If you only need typography definitions:
75
-
76
- ```scss
77
- @import '@ngx-stoui/core/style/theme/typography';
78
-
79
- // Access typography variables:
80
- // - $sto-typography (default 13px)
81
- // - $sto-sm-typography (small 10px)
82
- // - $sto-l-typography (large 16px)
83
- ```
84
-
85
- ## Available Exports
86
-
87
- ### Compiled CSS
88
-
89
- - `ngx-stoui.css` - Main stylesheet
90
- - `ngx-datatable.css` - Datatable styles
91
-
92
- ### SCSS Utilities
93
-
94
- - `style/grid.scss` - Grid mixin system
95
- - `style/theme/theme.scss` - Complete theme with variables and components
96
- - `style/theme/_typography.scss` - Typography configurations
97
- - `style/theme/_theme.scss` - Theme color palettes
98
- - `style/theme/_colors.scss` - Color definitions
99
- - `style/theme/_theme-variables.scss` - Theme variable functions
100
- - `style/theme/components.scss` - All component styles
101
-
102
- ### Fonts
103
-
104
- - Equinor font files (`.woff`, `.woff2`)
105
-
106
- ## Usage Examples
107
-
108
- ### Basic Setup
109
-
110
- ```scss
111
- // styles.scss
112
- @import '@ngx-stoui/core/ngx-stoui.css';
113
- ```
114
-
115
- ### With Grid System
116
-
117
- ```scss
118
- // styles.scss
119
- @use '@ngx-stoui/core/style/grid' as grid;
120
- @import '@ngx-stoui/core/ngx-stoui.css';
121
-
122
- .product-grid {
123
- @include grid.grid(6); // 6-column grid
124
- }
125
- ```
126
-
127
- ### With Custom Theming
128
-
129
- ```scss
130
- // styles.scss
131
- @use 'sass:map';
132
- @import '@ngx-stoui/core/ngx-stoui.css';
133
- @import '@ngx-stoui/core/style/theme/theme';
134
-
135
- @mixin app-theme($theme, $variables) {
136
- // Your custom theme styles using $variables
137
- }
138
-
139
- @include app-theme($sto-theme, $variables);
140
-
141
- .sto-dark-theme {
142
- @include app-theme($sto-dark-theme, $dark-variables);
143
- }
144
- ```
145
-
146
- ## Running unit tests
147
-
148
- Run `nx test core` to execute the unit tests.
1
+ # @ngx-stoui/core
2
+
3
+ Core packages like styling, pipes and common directives for Angular, based on EDS design styles.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @ngx-stoui/core
9
+ ```
10
+
11
+ ## Public API
12
+
13
+ ### Compiled Stylesheets
14
+
15
+ Import these in your `styles.scss` or `angular.json`:
16
+
17
+ ```scss
18
+ // Main stylesheet with all components and utilities
19
+ @import '@ngx-stoui/core/ngx-stoui.css';
20
+
21
+ // Datatable stylesheet (optional, if using datatables)
22
+ @import '@ngx-stoui/core/ngx-datatable.css';
23
+ ```
24
+
25
+ ### SCSS Utilities (for advanced usage)
26
+
27
+ #### Grid System
28
+
29
+ Use the grid mixin to create responsive grid layouts:
30
+
31
+ ```scss
32
+ @use '@ngx-stoui/core/style/grid' as grid;
33
+
34
+ .my-grid {
35
+ @include grid.grid(12); // 12-column grid
36
+ }
37
+
38
+ .my-compact-grid {
39
+ @include grid.grid(4, 'column', 0); // 4-column grid with custom class name
40
+ }
41
+ ```
42
+
43
+ #### Theme Variables and Mixins
44
+
45
+ Access theme variables, typography, and create custom themed components:
46
+
47
+ ```scss
48
+ @use 'sass:map';
49
+ @import '@ngx-stoui/core/style/theme/theme';
50
+
51
+ // Access theme variables
52
+ @mixin my-component-theme($theme, $variables) {
53
+ $primary: map.get($variables, primary);
54
+ $accent: map.get($variables, accent);
55
+
56
+ .my-component {
57
+ background: $primary;
58
+ color: $accent;
59
+ }
60
+ }
61
+
62
+ // Apply to light and dark themes
63
+ .light-theme {
64
+ @include my-component-theme($sto-theme, $variables);
65
+ }
66
+
67
+ .dark-theme {
68
+ @include my-component-theme($sto-dark-theme, $dark-variables);
69
+ }
70
+ ```
71
+
72
+ #### Typography Only
73
+
74
+ If you only need typography definitions:
75
+
76
+ ```scss
77
+ @import '@ngx-stoui/core/style/theme/typography';
78
+
79
+ // Access typography variables:
80
+ // - $sto-typography (default 13px)
81
+ // - $sto-sm-typography (small 10px)
82
+ // - $sto-l-typography (large 16px)
83
+ ```
84
+
85
+ ## Available Exports
86
+
87
+ ### Compiled CSS
88
+
89
+ - `ngx-stoui.css` - Main stylesheet
90
+ - `ngx-datatable.css` - Datatable styles
91
+
92
+ ### SCSS Utilities
93
+
94
+ - `style/grid.scss` - Grid mixin system
95
+ - `style/theme/theme.scss` - Complete theme with variables and components
96
+ - `style/theme/_typography.scss` - Typography configurations
97
+ - `style/theme/_theme.scss` - Theme color palettes
98
+ - `style/theme/_colors.scss` - Color definitions
99
+ - `style/theme/_theme-variables.scss` - Theme variable functions
100
+ - `style/theme/components.scss` - All component styles
101
+
102
+ ### Fonts
103
+
104
+ - Equinor font files (`.woff`, `.woff2`)
105
+
106
+ ## Usage Examples
107
+
108
+ ### Basic Setup
109
+
110
+ ```scss
111
+ // styles.scss
112
+ @import '@ngx-stoui/core/ngx-stoui.css';
113
+ ```
114
+
115
+ ### With Grid System
116
+
117
+ ```scss
118
+ // styles.scss
119
+ @use '@ngx-stoui/core/style/grid' as grid;
120
+ @import '@ngx-stoui/core/ngx-stoui.css';
121
+
122
+ .product-grid {
123
+ @include grid.grid(6); // 6-column grid
124
+ }
125
+ ```
126
+
127
+ ### With Custom Theming
128
+
129
+ ```scss
130
+ // styles.scss
131
+ @use 'sass:map';
132
+ @import '@ngx-stoui/core/ngx-stoui.css';
133
+ @import '@ngx-stoui/core/style/theme/theme';
134
+
135
+ @mixin app-theme($theme, $variables) {
136
+ // Your custom theme styles using $variables
137
+ }
138
+
139
+ @include app-theme($sto-theme, $variables);
140
+
141
+ .sto-dark-theme {
142
+ @include app-theme($sto-dark-theme, $dark-variables);
143
+ }
144
+ ```
145
+
146
+ ## Running unit tests
147
+
148
+ Run `nx test core` to execute the unit tests.
@@ -609,7 +609,7 @@ class NumberFormatPipe {
609
609
  value = parseFloat(this.toFixed(value, numberOfDecimals));
610
610
  }
611
611
  // Turn negative numbers back, but only if value is not -0
612
- if (isNegativeNumber && value < 0) {
612
+ if (isNegativeNumber && value !== 0) {
613
613
  value = value * -1;
614
614
  }
615
615
  const localized = this.prettyPrintValue(value, appendDecimals, numberOfDecimals);
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-stoui-core.mjs","sources":["../../../../libs/core/src/lib/abstract-and-interfaces/keyPress.enum.ts","../../../../libs/core/src/lib/sto-directives/context-menu.directive.ts","../../../../libs/core/src/lib/sto-directives/date-form-field-click.directive.ts","../../../../libs/core/src/lib/sto-directives/menu-overlay.directive.ts","../../../../libs/core/src/lib/sto-directives/quick-keys.directive.ts","../../../../libs/core/src/lib/sto-directives/sto-grid.directive.ts","../../../../libs/core/src/lib/sto-directives/sto-select-text-on-focus.directive.ts","../../../../libs/core/src/lib/sto-directives/directives.module.ts","../../../../libs/core/src/lib/sto-pipes/currency-format.pipe.ts","../../../../libs/core/src/lib/sto-pipes/date-format.pipe.ts","../../../../libs/core/src/lib/sto-pipes/keys.pipe.ts","../../../../libs/core/src/lib/sto-pipes/number-format.pipe.ts","../../../../libs/core/src/lib/sto-pipes/with-unit.ts","../../../../libs/core/src/lib/sto-pipes/yes-no.ts","../../../../libs/core/src/lib/sto-pipes/sto-pipes.module.ts","../../../../libs/core/src/index.ts","../../../../libs/core/src/ngx-stoui-core.ts"],"sourcesContent":["/**\r\nMIT License\r\n\r\nCopyright (c) 2017 Nathan Friend\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE. **/\r\n\r\nexport enum Key {\r\n Backspace = 8,\r\n Tab = 9,\r\n Enter = 13,\r\n Shift = 16,\r\n Ctrl = 17,\r\n Alt = 18,\r\n PauseBreak = 19,\r\n CapsLock = 20,\r\n Escape = 27,\r\n Space = 32,\r\n PageUp = 33,\r\n PageDown = 34,\r\n End = 35,\r\n Home = 36,\r\n\r\n LeftArrow = 37,\r\n UpArrow = 38,\r\n RightArrow = 39,\r\n DownArrow = 40,\r\n\r\n Insert = 45,\r\n Delete = 46,\r\n\r\n Zero = 48,\r\n ClosedParen = Zero,\r\n One = 49,\r\n ExclamationMark = One,\r\n Two = 50,\r\n AtSign = Two,\r\n Three = 51,\r\n PoundSign = Three,\r\n Hash = PoundSign,\r\n Four = 52,\r\n DollarSign = Four,\r\n Five = 53,\r\n PercentSign = Five,\r\n Six = 54,\r\n Caret = Six,\r\n Hat = Caret,\r\n Seven = 55,\r\n Ampersand = Seven,\r\n Eight = 56,\r\n Star = Eight,\r\n Asterik = Star,\r\n Nine = 57,\r\n OpenParen = Nine,\r\n\r\n A = 65,\r\n B = 66,\r\n C = 67,\r\n D = 68,\r\n E = 69,\r\n F = 70,\r\n G = 71,\r\n H = 72,\r\n I = 73,\r\n J = 74,\r\n K = 75,\r\n L = 76,\r\n M = 77,\r\n N = 78,\r\n O = 79,\r\n P = 80,\r\n Q = 81,\r\n R = 82,\r\n S = 83,\r\n T = 84,\r\n U = 85,\r\n V = 86,\r\n W = 87,\r\n X = 88,\r\n Y = 89,\r\n Z = 90,\r\n\r\n LeftWindowKey = 91,\r\n RightWindowKey = 92,\r\n SelectKey = 93,\r\n\r\n Numpad0 = 96,\r\n Numpad1 = 97,\r\n Numpad2 = 98,\r\n Numpad3 = 99,\r\n Numpad4 = 100,\r\n Numpad5 = 101,\r\n Numpad6 = 102,\r\n Numpad7 = 103,\r\n Numpad8 = 104,\r\n Numpad9 = 105,\r\n\r\n Multiply = 106,\r\n Add = 107,\r\n Subtract = 109,\r\n DecimalPoint = 110,\r\n Divide = 111,\r\n\r\n F1 = 112,\r\n F2 = 113,\r\n F3 = 114,\r\n F4 = 115,\r\n F5 = 116,\r\n F6 = 117,\r\n F7 = 118,\r\n F8 = 119,\r\n F9 = 120,\r\n F10 = 121,\r\n F11 = 122,\r\n F12 = 123,\r\n\r\n NumLock = 144,\r\n ScrollLock = 145,\r\n\r\n SemiColon = 186,\r\n Equals = 187,\r\n Comma = 188,\r\n Dash = 189,\r\n Period = 190,\r\n UnderScore = Dash,\r\n PlusSign = Equals,\r\n ForwardSlash = 191,\r\n Tilde = 192,\r\n GraveAccent = Tilde,\r\n\r\n OpenBracket = 219,\r\n ClosedBracket = 221,\r\n Quote = 222\r\n}\r\n","import { Directive, HostListener, input } from '@angular/core';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MenuOverlayDirective } from './menu-overlay.directive';\r\n\r\n@Directive({\r\n selector: '[stoContextMenu]',\r\n})\r\nexport class ContextMenuDirective {\r\n readonly menuTrigger = input.required<MatMenuTrigger>();\r\n readonly overlayDirective = input.required<MenuOverlayDirective>();\r\n readonly menuContext = input<unknown>();\r\n\r\n @HostListener('contextmenu', ['$event'])\r\n contextMenu(event: MouseEvent) {\r\n event.preventDefault();\r\n if (this.menuTrigger().menuOpen) {\r\n this.menuTrigger().closeMenu();\r\n }\r\n this.overlayDirective().updatePosition(event);\r\n setTimeout(() => {\r\n this.menuTrigger().menuData = this.menuContext();\r\n this.menuTrigger().openMenu();\r\n }, 150);\r\n }\r\n}\r\n","import {\r\n ContentChildren,\r\n Directive,\r\n HostListener,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n input,\r\n} from '@angular/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n/**\r\n * Directive that can be placed on mat-form-fields that contains a mat-datepicker.\r\n * This directive has two tasks:\r\n * Clicking anywhere on the mat-form-field will open the datepicker dialog\r\n * When the datepicker is closed in any manner, we shift focus back to the datepicker input\r\n */\r\n@Directive({\r\n selector: '[stoDateFormFieldClick]',\r\n})\r\nexport class DateFormFieldClickDirective implements OnInit, OnDestroy {\r\n @ContentChildren(MatInput) inputs: QueryList<MatInput>;\r\n readonly stoDateFormFieldClick = input.required<MatDatepicker<Date>>();\r\n private destroy$ = new Subject();\r\n\r\n @HostListener('click')\r\n clickEvent() {\r\n this.stoDateFormFieldClick().open();\r\n }\r\n\r\n ngOnInit() {\r\n this.stoDateFormFieldClick()\r\n .closedStream.pipe(takeUntil(this.destroy$))\r\n .subscribe(() => this.inputs.first.focus());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { Directive, ElementRef, HostBinding, inject } from '@angular/core';\r\nimport { MatMenuPanel, MatMenuTrigger } from '@angular/material/menu';\r\nimport { fromEvent } from 'rxjs';\r\nimport { switchMap, take } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[stoMenuOverlay]',\r\n exportAs: 'stoMenuOverlay',\r\n standalone: true\r\n})\r\nexport class MenuOverlayDirective {\n private trigger = inject(MatMenuTrigger, { host: true });\n\r\n @HostBinding('style.left.px')\r\n left = 0;\r\n @HostBinding('style.top.px')\r\n top = 0;\r\n private readonly menu: MatMenuPanel;\r\n\r\n constructor() {\n const trigger = this.trigger;\n const el = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\r\n this.menu = trigger.menu as MatMenuPanel;\r\n this.trigger.menuOpened.pipe(\r\n switchMap(() =>\r\n fromEvent<MouseEvent>(document, 'click')\r\n .pipe(take(1))\r\n ),\r\n ).subscribe(() => {\r\n this.trigger.closeMenu();\r\n });\r\n this.setStyle(el.nativeElement);\r\n }\r\n\r\n public updatePosition(event: MouseEvent) {\r\n this.left = event.x;\r\n this.top = event.y;\r\n }\r\n\r\n private setStyle(element: HTMLButtonElement) {\r\n element.style.overflow = 'hidden';\r\n element.style.position = 'fixed';\r\n element.style.height = '1px';\r\n element.style.width = '1px';\r\n }\r\n}\r\n","import { Directive, HostListener, input, output } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { Key } from '../abstract-and-interfaces/keyPress.enum';\r\n\r\n/**\r\n * QuickKeysDirective is used to implement shortcut keys on DOM elements, e.g to submit or reset a form on enter/escape\r\n * <form quickKeys (quickSubmit)=\"save()\" (quickCancel)=\"reset()\">\r\n */\r\n\r\n@Directive({\r\n selector: '[stoQuickKeys]',\r\n})\r\nexport class QuickKeysDirective {\r\n readonly quickKeys = input<unknown>();\r\n /**\r\n * Optional formGroup input, when used in combination with a reactive form\r\n */\r\n readonly formGroup = input<UntypedFormGroup>();\r\n /**\r\n * Emits when ctrl + enter is clicked in combination\r\n * <form (quickSubmit)=\"save()\">\r\n */\r\n readonly quickSubmit = output<void>();\r\n /**\r\n * Emits when escape is clicked\r\n * <form (quickCancel)=\"cancel()\">\r\n */\r\n readonly quickCancel = output<void>();\r\n\r\n /**\r\n * Listens on the host element for any keyup events\r\n * @param e\r\n */\r\n @HostListener('keyup', ['$event'])\r\n onKeyUp(e: KeyboardEvent) {\r\n if (this.formGroup()) {\r\n this.handleFormKeys(e);\r\n }\r\n this.handleGenericKeydown(e);\r\n }\r\n\r\n /**\r\n * Handler for generic keydowns, such as cancel events to close drawers\r\n * @param e\r\n * void\r\n */\r\n private handleGenericKeydown(e: KeyboardEvent) {\r\n // Shortcuts that are useful outside of forms\r\n if (e.keyCode === Key.Escape) {\r\n // TODO: The 'emit' function requires a mandatory void argument\r\n this.quickCancel.emit();\r\n }\r\n if (!this.formGroup() && e.keyCode === Key.Enter && e.ctrlKey) {\r\n // TODO: The 'emit' function requires a mandatory void argument\r\n this.quickSubmit.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Handler for form specific shortcuts, such as saving the form\r\n * @param e\r\n */\r\n private handleFormKeys(e: KeyboardEvent) {\r\n if (this.formGroup()?.pristine) {\r\n return;\r\n }\r\n if (e.keyCode === Key.Enter && e.ctrlKey) {\r\n // TODO: The 'emit' function requires a mandatory void argument\r\n this.quickSubmit.emit();\r\n }\r\n }\r\n}\r\n","import { Directive, input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[stoGridSpacer]',\r\n host: {\r\n class: 'sto-grid__col sto-grid__col--spacer',\r\n },\r\n})\r\nexport class StoGridSpacerDirective {}\r\n\r\n@Directive({\r\n selector: '[stoGridColumn]',\r\n host: {\r\n class: 'sto-grid__col',\r\n '[class.sto-grid__col--2]': 'stoGridColumnDouble()',\r\n },\r\n})\r\nexport class StoGridColumnDirective {\r\n readonly stoGridColumnDouble = input(false);\r\n}\r\n\r\n@Directive({\r\n selector: '[stoGrid]',\r\n exportAs: 'stoGrid',\r\n host: {\r\n class: 'sto-grid',\r\n '[style.max-width.px]': 'maxWidth()',\r\n '[style.min-width.px]': 'minWidth()',\r\n },\r\n})\r\nexport class StoGridDirective {\r\n readonly maxWidth = input(1000);\r\n readonly minWidth = input(250);\r\n}\r\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\n\r\n/**\r\n * stoSelectTextOnFocus listens for input focus events, and selects the contents of the input\r\n * A user service is established in {@link StoUserPreferenceService} that allows a user to toggle this feature\r\n */\r\n@Directive({\r\n selector: '[stoSelectTextOnFocus]',\r\n standalone: true\r\n})\r\nexport class StoSelectTextOnFocusDirective {\n private elementRef = inject(ElementRef);\n\r\n\r\n private _el: HTMLInputElement;\r\n\r\n constructor() {\r\n this._el = this.elementRef.nativeElement;\r\n }\r\n\r\n /**\r\n * Listens for focus events on the host (input) element, and focuses if applicable\r\n */\r\n @HostListener('focus')\r\n @HostListener('dblclick')\r\n onFocus() {\r\n if ( !this._el.readOnly ) {\r\n this._el.select();\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { ContextMenuDirective } from './context-menu.directive';\r\nimport { DateFormFieldClickDirective } from './date-form-field-click.directive';\r\nimport { MenuOverlayDirective } from './menu-overlay.directive';\r\nimport { QuickKeysDirective } from './quick-keys.directive';\r\nimport {\r\n StoGridColumnDirective,\r\n StoGridDirective,\r\n StoGridSpacerDirective,\r\n} from './sto-grid.directive';\r\nimport { StoSelectTextOnFocusDirective } from './sto-select-text-on-focus.directive';\r\n\r\n/**\r\n * Directives have been made standalone, import them directly:\r\n * QuickKeysDirective\r\n * DateFormFieldClickDirective\r\n * StoSelectTextOnFocusDirective\r\n * StoGridDirective\r\n * StoGridColumnDirective\r\n * StoGridSpacerDirective\r\n * MenuOverlayDirective\r\n * ContextMenuDirective\r\n *\r\n */\r\nimport { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n imports: [\r\n QuickKeysDirective,\r\n DateFormFieldClickDirective,\r\n StoSelectTextOnFocusDirective,\r\n StoGridDirective,\r\n StoGridColumnDirective,\r\n StoGridSpacerDirective,\r\n MenuOverlayDirective,\r\n ContextMenuDirective,\r\n ],\r\n exports: [\r\n QuickKeysDirective,\r\n DateFormFieldClickDirective,\r\n StoSelectTextOnFocusDirective,\r\n StoGridDirective,\r\n StoGridColumnDirective,\r\n StoGridSpacerDirective,\r\n MenuOverlayDirective,\r\n ContextMenuDirective,\r\n ],\r\n})\r\nexport class StoDirectivesModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Pipe used to transform numbers to a currency format\r\n *\r\n * @example\r\n *\r\n * <span>{{ 5000.5824 | currentFormat:'$':3 }}</span>\r\n * Results in\r\n * <span>5 000,582 $</span>\r\n */\r\n@Pipe({\r\n name: 'currencyFormat',\r\n standalone: true\r\n})\r\nexport class CurrencyFormatPipe implements PipeTransform {\r\n transform(value: number, unit = '', maximumFractionDigits = 3): string | null {\r\n if ( !value ) {\r\n return null;\r\n }\r\n if ( typeof value === 'string' ) {\r\n value = parseFloat(value);\r\n if ( isNaN(value) ) {\r\n return '';\r\n }\r\n }\r\n\r\n const intl = new Intl.NumberFormat('en-US', { maximumFractionDigits }).format(value);\r\n return intl.replace(/,/g, ' ').replace('.', ',') + ` ${unit}`;\r\n }\r\n}\r\n\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { format as formatDate, isValid, parseISO } from 'date-fns';\r\n\r\n/**\r\n * Pipe used to transform dates, based on our default formats.\r\n *\r\n * @example\r\n *\r\n * public date = \"2018-08-27 14:00:30\"\r\n * <span>{{ date | dateFormat }}</span> -> Aug 27, 2018\r\n * <span>{{ date | dateFormat:'long' }}</span> -> Monday Aug 27, 2018\r\n */\r\n\r\n@Pipe({\r\n name: 'formatDate',\r\n standalone: true\r\n})\r\nexport class DateFormatPipe implements PipeTransform {\r\n\r\n transform(value: string | number | Date | null, format?: string): string | null {\r\n if ( !value ) {\r\n return null;\r\n }\r\n if ( typeof value === 'string' ) {\r\n const originalValue = value;\r\n value = parseISO(value);\r\n if ( !isValid(value) ) {\r\n // If invalid ISO date (e.g single-digit day), fall back to new Date()\r\n console.warn(`${originalValue} is not a valid ISO date string, falling back to native date`);\r\n value = new Date(originalValue);\r\n }\r\n }\r\n switch ( format ) {\r\n case 'long':\r\n return formatDate(value, 'EEEE MMM d, yyyy');\r\n case 'short':\r\n return formatDate(value, 'yyyy-MM-dd');\r\n case 'datetime':\r\n return formatDate(value, 'MMM d, yyyy, HH:mm');\r\n case 'datetimezone':\r\n return formatDate(value, `MMM d, yyyy, HH:mm:ss ('UTC'xxx)`);\r\n case 'datetime-long':\r\n return formatDate(value, 'EEEE MMM dd, yyyy, HH:mm');\r\n case 'datetime-short':\r\n return formatDate(value, 'yyyy-MM-dd, HH:mm');\r\n default:\r\n return formatDate(value, 'MMM d, yyyy');\r\n }\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Transforms an Object to an Array.\r\n *\r\n * @example\r\n *\r\n * public obj = {a: 1, b: 2, c: 3};\r\n * <span *ngFor=\"let key of obj | keys \"> {{ obj[key] }}, </span> -> 1, 2, 3,\r\n */\r\n\r\n@Pipe({\r\n name: 'keys',\r\n standalone: true\r\n})\r\nexport class KeysPipe implements PipeTransform {\r\n\r\n transform(value: Record<string, unknown>): Array<string> {\r\n if ( value ) {\r\n return Object.keys(value);\r\n }\r\n return [];\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Formats numbers to use our standard formatting (d ddd,ddd)\r\n *\r\n * @example\r\n *\r\n * {{ 1234,32 | numberFormat }} -> 1 234,320\r\n * {{ 1234,32 | numberFormat:'M3' }} -> 1 234,320 M3\r\n * {{ -1234,32 | numberFormat:'M3':true }} -> 1 234,320 M3\r\n * {{ 1234,32 | numberFormat:'M3':false:false }} -> 1 234 M3\r\n * {{ 1234,32 | numberFormat:'M3':false:true:5 }} -> 1 234,32000 M3\r\n */\r\n@Pipe({\r\n name: 'numberFormat',\r\n standalone: true,\r\n})\r\nexport class NumberFormatPipe implements PipeTransform {\r\n transform(\r\n value: number | string,\r\n unit = '',\r\n abs?: boolean,\r\n appendDecimals = true,\r\n numberOfDecimals = 3,\r\n ): string | null {\r\n if (value !== 0 && !value) {\r\n return '';\r\n }\r\n if (typeof value === 'string') {\r\n const newValue = parseFloat(value);\r\n if (isNaN(newValue)) {\r\n return null;\r\n }\r\n value = newValue;\r\n }\r\n if (abs) {\r\n value = Math.abs(value);\r\n }\r\n // We absolute the value to ensure that the rounding rules is always away from zero.\r\n // 1.5 => 2 and -1.5 => -2\r\n const isNegativeNumber = value < 0;\r\n value = Math.abs(value);\r\n\r\n if (!appendDecimals) {\r\n value = Math.round(value);\r\n }\r\n if (!isNaN(value) && appendDecimals) {\r\n value = parseFloat(this.toFixed(value, numberOfDecimals));\r\n }\r\n // Turn negative numbers back, but only if value is not -0\r\n \r\n if (isNegativeNumber && value < 0) {\r\n value = value * -1;\r\n }\r\n const localized = this.prettyPrintValue(\r\n value,\r\n appendDecimals,\r\n numberOfDecimals,\r\n );\r\n return (\r\n localized.replace(/,/g, ' ').replace('.', ',') +\r\n `${unit ? ' ' + unit : ''}`\r\n );\r\n }\r\n\r\n private prettyPrintValue(\r\n value: number,\r\n appendDecimals: boolean,\r\n numberOfDecimals: number,\r\n ) {\r\n const intlOptions = {\r\n minimumFractionDigits: numberOfDecimals,\r\n maximumFractionDigits: numberOfDecimals,\r\n };\r\n const intl = new Intl.NumberFormat('en-US', intlOptions).format(value);\r\n const split = intl.split('.');\r\n let localized = split[0];\r\n\r\n if (appendDecimals) {\r\n const decimals = split.length === 2 ? split[1] : '';\r\n split[1] = decimals.padEnd(numberOfDecimals, '0');\r\n localized = split.join('.');\r\n }\r\n return localized;\r\n }\r\n\r\n // Normal toFixed has some issues: https://stackoverflow.com/questions/10015027/javascript-tofixed-not-rounding\r\n private toFixed(num: number, precision: number) {\r\n // This method also has some issues - namely, it's unable to parse negative numbers with huge floating points\r\n // -8.185452315956354e-12 becomes NaN\r\n let returnValue = +(\r\n Math.round(+(num + 'e' + precision)) +\r\n 'e' +\r\n -precision\r\n );\r\n if (isNaN(returnValue)) {\r\n returnValue = parseFloat(num.toFixed(precision));\r\n }\r\n return returnValue.toFixed(precision);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'getUnit', standalone: true })\r\nexport class GetUnit implements PipeTransform {\r\n transform(value: string, withParens?: boolean): string {\r\n if ( value ) {\r\n const arr = value.split('(');\r\n if ( arr.length > 0 ) {\r\n if ( withParens ) {\r\n value = '(' + arr[ 1 ];\r\n } else {\r\n arr[ 1 ].slice(0, -1);\r\n value = arr[ 1 ].slice(0, -1);\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n}\r\n\r\n@Pipe({ name: 'excludeUnit', standalone: true })\r\nexport class ExcludeUnit implements PipeTransform {\r\n transform(value: string): string {\r\n if ( value ) {\r\n const arr = value.split('(');\r\n if ( arr.length > 0 ) {\r\n value = arr[ 0 ];\r\n }\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'yesNo', standalone: true })\r\nexport class YesNoPipe implements PipeTransform {\r\n transform(value: boolean, ignoreNulls = false): string {\r\n let valueStr = '';\r\n if ( ignoreNulls ) {\r\n valueStr = value ? 'Yes' : value === false ? 'No' : '';\r\n } else {\r\n valueStr = value ? 'Yes' : 'No';\r\n }\r\n return valueStr;\r\n\r\n }\r\n}\r\n","import { NumberFormatPipe } from './number-format.pipe';\r\nimport { CurrencyFormatPipe } from './currency-format.pipe';\r\nimport { KeysPipe } from './keys.pipe';\r\nimport { DateFormatPipe } from './date-format.pipe';\r\nimport { ExcludeUnit, GetUnit } from './with-unit';\r\nimport { YesNoPipe } from './yes-no';\r\n\r\n\r\nimport { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n imports: [\r\n DateFormatPipe,\r\n KeysPipe,\r\n NumberFormatPipe,\r\n CurrencyFormatPipe,\r\n GetUnit,\r\n ExcludeUnit,\r\n YesNoPipe\r\n ],\r\n exports: [\r\n DateFormatPipe,\r\n KeysPipe,\r\n NumberFormatPipe,\r\n CurrencyFormatPipe,\r\n GetUnit,\r\n ExcludeUnit,\r\n YesNoPipe\r\n ]\r\n})\r\nexport class StoPipesModule {\r\n}\r\n","/*\r\n * Public API Surface of @ngx-stoui/core\r\n */\r\n\r\nexport * from './lib/abstract-and-interfaces/keyPress.enum';\r\nexport * from './lib/sto-directives';\r\n\r\nexport * from './lib/sto-pipes/currency-format.pipe';\r\nexport * from './lib/sto-pipes/date-format.pipe';\r\nexport * from './lib/sto-pipes/keys.pipe';\r\nexport * from './lib/sto-pipes/number-format.pipe';\r\nexport * from './lib/sto-pipes/sto-pipes.module';\r\n\r\nexport * from './lib/sto-pipes/with-unit';\r\nexport * from './lib/sto-pipes/yes-no';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["format","formatDate"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-stoui-core.mjs","sources":["../../../../libs/core/src/lib/abstract-and-interfaces/keyPress.enum.ts","../../../../libs/core/src/lib/sto-directives/context-menu.directive.ts","../../../../libs/core/src/lib/sto-directives/date-form-field-click.directive.ts","../../../../libs/core/src/lib/sto-directives/menu-overlay.directive.ts","../../../../libs/core/src/lib/sto-directives/quick-keys.directive.ts","../../../../libs/core/src/lib/sto-directives/sto-grid.directive.ts","../../../../libs/core/src/lib/sto-directives/sto-select-text-on-focus.directive.ts","../../../../libs/core/src/lib/sto-directives/directives.module.ts","../../../../libs/core/src/lib/sto-pipes/currency-format.pipe.ts","../../../../libs/core/src/lib/sto-pipes/date-format.pipe.ts","../../../../libs/core/src/lib/sto-pipes/keys.pipe.ts","../../../../libs/core/src/lib/sto-pipes/number-format.pipe.ts","../../../../libs/core/src/lib/sto-pipes/with-unit.ts","../../../../libs/core/src/lib/sto-pipes/yes-no.ts","../../../../libs/core/src/lib/sto-pipes/sto-pipes.module.ts","../../../../libs/core/src/index.ts","../../../../libs/core/src/ngx-stoui-core.ts"],"sourcesContent":["/**\nMIT License\n\nCopyright (c) 2017 Nathan Friend\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE. **/\n\nexport enum Key {\n Backspace = 8,\n Tab = 9,\n Enter = 13,\n Shift = 16,\n Ctrl = 17,\n Alt = 18,\n PauseBreak = 19,\n CapsLock = 20,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n\n LeftArrow = 37,\n UpArrow = 38,\n RightArrow = 39,\n DownArrow = 40,\n\n Insert = 45,\n Delete = 46,\n\n Zero = 48,\n ClosedParen = Zero,\n One = 49,\n ExclamationMark = One,\n Two = 50,\n AtSign = Two,\n Three = 51,\n PoundSign = Three,\n Hash = PoundSign,\n Four = 52,\n DollarSign = Four,\n Five = 53,\n PercentSign = Five,\n Six = 54,\n Caret = Six,\n Hat = Caret,\n Seven = 55,\n Ampersand = Seven,\n Eight = 56,\n Star = Eight,\n Asterik = Star,\n Nine = 57,\n OpenParen = Nine,\n\n A = 65,\n B = 66,\n C = 67,\n D = 68,\n E = 69,\n F = 70,\n G = 71,\n H = 72,\n I = 73,\n J = 74,\n K = 75,\n L = 76,\n M = 77,\n N = 78,\n O = 79,\n P = 80,\n Q = 81,\n R = 82,\n S = 83,\n T = 84,\n U = 85,\n V = 86,\n W = 87,\n X = 88,\n Y = 89,\n Z = 90,\n\n LeftWindowKey = 91,\n RightWindowKey = 92,\n SelectKey = 93,\n\n Numpad0 = 96,\n Numpad1 = 97,\n Numpad2 = 98,\n Numpad3 = 99,\n Numpad4 = 100,\n Numpad5 = 101,\n Numpad6 = 102,\n Numpad7 = 103,\n Numpad8 = 104,\n Numpad9 = 105,\n\n Multiply = 106,\n Add = 107,\n Subtract = 109,\n DecimalPoint = 110,\n Divide = 111,\n\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n\n NumLock = 144,\n ScrollLock = 145,\n\n SemiColon = 186,\n Equals = 187,\n Comma = 188,\n Dash = 189,\n Period = 190,\n UnderScore = Dash,\n PlusSign = Equals,\n ForwardSlash = 191,\n Tilde = 192,\n GraveAccent = Tilde,\n\n OpenBracket = 219,\n ClosedBracket = 221,\n Quote = 222\n}\n","import { Directive, HostListener, input } from '@angular/core';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { MenuOverlayDirective } from './menu-overlay.directive';\n\n@Directive({\n selector: '[stoContextMenu]',\n})\nexport class ContextMenuDirective {\n readonly menuTrigger = input.required<MatMenuTrigger>();\n readonly overlayDirective = input.required<MenuOverlayDirective>();\n readonly menuContext = input<unknown>();\n\n @HostListener('contextmenu', ['$event'])\n contextMenu(event: MouseEvent) {\n event.preventDefault();\n if (this.menuTrigger().menuOpen) {\n this.menuTrigger().closeMenu();\n }\n this.overlayDirective().updatePosition(event);\n setTimeout(() => {\n this.menuTrigger().menuData = this.menuContext();\n this.menuTrigger().openMenu();\n }, 150);\n }\n}\n","import {\n ContentChildren,\n Directive,\n HostListener,\n OnDestroy,\n OnInit,\n QueryList,\n input,\n} from '@angular/core';\nimport { MatDatepicker } from '@angular/material/datepicker';\nimport { MatInput } from '@angular/material/input';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Directive that can be placed on mat-form-fields that contains a mat-datepicker.\n * This directive has two tasks:\n * Clicking anywhere on the mat-form-field will open the datepicker dialog\n * When the datepicker is closed in any manner, we shift focus back to the datepicker input\n */\n@Directive({\n selector: '[stoDateFormFieldClick]',\n})\nexport class DateFormFieldClickDirective implements OnInit, OnDestroy {\n @ContentChildren(MatInput) inputs: QueryList<MatInput>;\n readonly stoDateFormFieldClick = input.required<MatDatepicker<Date>>();\n private destroy$ = new Subject();\n\n @HostListener('click')\n clickEvent() {\n this.stoDateFormFieldClick().open();\n }\n\n ngOnInit() {\n this.stoDateFormFieldClick()\n .closedStream.pipe(takeUntil(this.destroy$))\n .subscribe(() => this.inputs.first.focus());\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Directive, ElementRef, HostBinding, inject } from '@angular/core';\nimport { MatMenuPanel, MatMenuTrigger } from '@angular/material/menu';\nimport { fromEvent } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\n@Directive({\n selector: '[stoMenuOverlay]',\n exportAs: 'stoMenuOverlay',\n standalone: true\n})\nexport class MenuOverlayDirective {\n private trigger = inject(MatMenuTrigger, { host: true });\n\n @HostBinding('style.left.px')\n left = 0;\n @HostBinding('style.top.px')\n top = 0;\n private readonly menu: MatMenuPanel;\n\n constructor() {\n const trigger = this.trigger;\n const el = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n this.menu = trigger.menu as MatMenuPanel;\n this.trigger.menuOpened.pipe(\n switchMap(() =>\n fromEvent<MouseEvent>(document, 'click')\n .pipe(take(1))\n ),\n ).subscribe(() => {\n this.trigger.closeMenu();\n });\n this.setStyle(el.nativeElement);\n }\n\n public updatePosition(event: MouseEvent) {\n this.left = event.x;\n this.top = event.y;\n }\n\n private setStyle(element: HTMLButtonElement) {\n element.style.overflow = 'hidden';\n element.style.position = 'fixed';\n element.style.height = '1px';\n element.style.width = '1px';\n }\n}\n","import { Directive, HostListener, input, output } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Key } from '../abstract-and-interfaces/keyPress.enum';\n\n/**\n * QuickKeysDirective is used to implement shortcut keys on DOM elements, e.g to submit or reset a form on enter/escape\n * <form quickKeys (quickSubmit)=\"save()\" (quickCancel)=\"reset()\">\n */\n\n@Directive({\n selector: '[stoQuickKeys]',\n})\nexport class QuickKeysDirective {\n readonly quickKeys = input<unknown>();\n /**\n * Optional formGroup input, when used in combination with a reactive form\n */\n readonly formGroup = input<UntypedFormGroup>();\n /**\n * Emits when ctrl + enter is clicked in combination\n * <form (quickSubmit)=\"save()\">\n */\n readonly quickSubmit = output<void>();\n /**\n * Emits when escape is clicked\n * <form (quickCancel)=\"cancel()\">\n */\n readonly quickCancel = output<void>();\n\n /**\n * Listens on the host element for any keyup events\n * @param e\n */\n @HostListener('keyup', ['$event'])\n onKeyUp(e: KeyboardEvent) {\n if (this.formGroup()) {\n this.handleFormKeys(e);\n }\n this.handleGenericKeydown(e);\n }\n\n /**\n * Handler for generic keydowns, such as cancel events to close drawers\n * @param e\n * void\n */\n private handleGenericKeydown(e: KeyboardEvent) {\n // Shortcuts that are useful outside of forms\n if (e.keyCode === Key.Escape) {\n // TODO: The 'emit' function requires a mandatory void argument\n this.quickCancel.emit();\n }\n if (!this.formGroup() && e.keyCode === Key.Enter && e.ctrlKey) {\n // TODO: The 'emit' function requires a mandatory void argument\n this.quickSubmit.emit();\n }\n }\n\n /**\n * Handler for form specific shortcuts, such as saving the form\n * @param e\n */\n private handleFormKeys(e: KeyboardEvent) {\n if (this.formGroup()?.pristine) {\n return;\n }\n if (e.keyCode === Key.Enter && e.ctrlKey) {\n // TODO: The 'emit' function requires a mandatory void argument\n this.quickSubmit.emit();\n }\n }\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[stoGridSpacer]',\n host: {\n class: 'sto-grid__col sto-grid__col--spacer',\n },\n})\nexport class StoGridSpacerDirective {}\n\n@Directive({\n selector: '[stoGridColumn]',\n host: {\n class: 'sto-grid__col',\n '[class.sto-grid__col--2]': 'stoGridColumnDouble()',\n },\n})\nexport class StoGridColumnDirective {\n readonly stoGridColumnDouble = input(false);\n}\n\n@Directive({\n selector: '[stoGrid]',\n exportAs: 'stoGrid',\n host: {\n class: 'sto-grid',\n '[style.max-width.px]': 'maxWidth()',\n '[style.min-width.px]': 'minWidth()',\n },\n})\nexport class StoGridDirective {\n readonly maxWidth = input(1000);\n readonly minWidth = input(250);\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\n\n/**\n * stoSelectTextOnFocus listens for input focus events, and selects the contents of the input\n * A user service is established in {@link StoUserPreferenceService} that allows a user to toggle this feature\n */\n@Directive({\n selector: '[stoSelectTextOnFocus]',\n standalone: true\n})\nexport class StoSelectTextOnFocusDirective {\n private elementRef = inject(ElementRef);\n\n\n private _el: HTMLInputElement;\n\n constructor() {\n this._el = this.elementRef.nativeElement;\n }\n\n /**\n * Listens for focus events on the host (input) element, and focuses if applicable\n */\n @HostListener('focus')\n @HostListener('dblclick')\n onFocus() {\n if ( !this._el.readOnly ) {\n this._el.select();\n }\n\n }\n\n}\n","import { ContextMenuDirective } from './context-menu.directive';\nimport { DateFormFieldClickDirective } from './date-form-field-click.directive';\nimport { MenuOverlayDirective } from './menu-overlay.directive';\nimport { QuickKeysDirective } from './quick-keys.directive';\nimport {\n StoGridColumnDirective,\n StoGridDirective,\n StoGridSpacerDirective,\n} from './sto-grid.directive';\nimport { StoSelectTextOnFocusDirective } from './sto-select-text-on-focus.directive';\n\n/**\n * Directives have been made standalone, import them directly:\n * QuickKeysDirective\n * DateFormFieldClickDirective\n * StoSelectTextOnFocusDirective\n * StoGridDirective\n * StoGridColumnDirective\n * StoGridSpacerDirective\n * MenuOverlayDirective\n * ContextMenuDirective\n *\n */\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n imports: [\n QuickKeysDirective,\n DateFormFieldClickDirective,\n StoSelectTextOnFocusDirective,\n StoGridDirective,\n StoGridColumnDirective,\n StoGridSpacerDirective,\n MenuOverlayDirective,\n ContextMenuDirective,\n ],\n exports: [\n QuickKeysDirective,\n DateFormFieldClickDirective,\n StoSelectTextOnFocusDirective,\n StoGridDirective,\n StoGridColumnDirective,\n StoGridSpacerDirective,\n MenuOverlayDirective,\n ContextMenuDirective,\n ],\n})\nexport class StoDirectivesModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Pipe used to transform numbers to a currency format\n *\n * @example\n *\n * <span>{{ 5000.5824 | currentFormat:'$':3 }}</span>\n * Results in\n * <span>5 000,582 $</span>\n */\n@Pipe({\n name: 'currencyFormat',\n standalone: true\n})\nexport class CurrencyFormatPipe implements PipeTransform {\n transform(value: number, unit = '', maximumFractionDigits = 3): string | null {\n if ( !value ) {\n return null;\n }\n if ( typeof value === 'string' ) {\n value = parseFloat(value);\n if ( isNaN(value) ) {\n return '';\n }\n }\n\n const intl = new Intl.NumberFormat('en-US', { maximumFractionDigits }).format(value);\n return intl.replace(/,/g, ' ').replace('.', ',') + ` ${unit}`;\n }\n}\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { format as formatDate, isValid, parseISO } from 'date-fns';\n\n/**\n * Pipe used to transform dates, based on our default formats.\n *\n * @example\n *\n * public date = \"2018-08-27 14:00:30\"\n * <span>{{ date | dateFormat }}</span> -> Aug 27, 2018\n * <span>{{ date | dateFormat:'long' }}</span> -> Monday Aug 27, 2018\n */\n\n@Pipe({\n name: 'formatDate',\n standalone: true\n})\nexport class DateFormatPipe implements PipeTransform {\n\n transform(value: string | number | Date | null, format?: string): string | null {\n if ( !value ) {\n return null;\n }\n if ( typeof value === 'string' ) {\n const originalValue = value;\n value = parseISO(value);\n if ( !isValid(value) ) {\n // If invalid ISO date (e.g single-digit day), fall back to new Date()\n console.warn(`${originalValue} is not a valid ISO date string, falling back to native date`);\n value = new Date(originalValue);\n }\n }\n switch ( format ) {\n case 'long':\n return formatDate(value, 'EEEE MMM d, yyyy');\n case 'short':\n return formatDate(value, 'yyyy-MM-dd');\n case 'datetime':\n return formatDate(value, 'MMM d, yyyy, HH:mm');\n case 'datetimezone':\n return formatDate(value, `MMM d, yyyy, HH:mm:ss ('UTC'xxx)`);\n case 'datetime-long':\n return formatDate(value, 'EEEE MMM dd, yyyy, HH:mm');\n case 'datetime-short':\n return formatDate(value, 'yyyy-MM-dd, HH:mm');\n default:\n return formatDate(value, 'MMM d, yyyy');\n }\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Transforms an Object to an Array.\n *\n * @example\n *\n * public obj = {a: 1, b: 2, c: 3};\n * <span *ngFor=\"let key of obj | keys \"> {{ obj[key] }}, </span> -> 1, 2, 3,\n */\n\n@Pipe({\n name: 'keys',\n standalone: true\n})\nexport class KeysPipe implements PipeTransform {\n\n transform(value: Record<string, unknown>): Array<string> {\n if ( value ) {\n return Object.keys(value);\n }\n return [];\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Formats numbers to use our standard formatting (d ddd,ddd)\n *\n * @example\n *\n * {{ 1234,32 | numberFormat }} -> 1 234,320\n * {{ 1234,32 | numberFormat:'M3' }} -> 1 234,320 M3\n * {{ -1234,32 | numberFormat:'M3':true }} -> 1 234,320 M3\n * {{ 1234,32 | numberFormat:'M3':false:false }} -> 1 234 M3\n * {{ 1234,32 | numberFormat:'M3':false:true:5 }} -> 1 234,32000 M3\n */\n@Pipe({\n name: 'numberFormat',\n standalone: true,\n})\nexport class NumberFormatPipe implements PipeTransform {\n transform(\n value: number | string,\n unit = '',\n abs?: boolean,\n appendDecimals = true,\n numberOfDecimals = 3,\n ): string | null {\n if (value !== 0 && !value) {\n return '';\n }\n if (typeof value === 'string') {\n const newValue = parseFloat(value);\n if (isNaN(newValue)) {\n return null;\n }\n value = newValue;\n }\n if (abs) {\n value = Math.abs(value);\n }\n // We absolute the value to ensure that the rounding rules is always away from zero.\n // 1.5 => 2 and -1.5 => -2\n const isNegativeNumber = value < 0;\n value = Math.abs(value);\n\n if (!appendDecimals) {\n value = Math.round(value);\n }\n if (!isNaN(value) && appendDecimals) {\n value = parseFloat(this.toFixed(value, numberOfDecimals));\n }\n // Turn negative numbers back, but only if value is not -0\n if (isNegativeNumber && value !== 0) {\n value = value * -1;\n }\n const localized = this.prettyPrintValue(\n value,\n appendDecimals,\n numberOfDecimals,\n );\n return (\n localized.replace(/,/g, ' ').replace('.', ',') +\n `${unit ? ' ' + unit : ''}`\n );\n }\n\n private prettyPrintValue(\n value: number,\n appendDecimals: boolean,\n numberOfDecimals: number,\n ) {\n const intlOptions = {\n minimumFractionDigits: numberOfDecimals,\n maximumFractionDigits: numberOfDecimals,\n };\n const intl = new Intl.NumberFormat('en-US', intlOptions).format(value);\n const split = intl.split('.');\n let localized = split[0];\n\n if (appendDecimals) {\n const decimals = split.length === 2 ? split[1] : '';\n split[1] = decimals.padEnd(numberOfDecimals, '0');\n localized = split.join('.');\n }\n return localized;\n }\n\n // Normal toFixed has some issues: https://stackoverflow.com/questions/10015027/javascript-tofixed-not-rounding\n private toFixed(num: number, precision: number) {\n // This method also has some issues - namely, it's unable to parse negative numbers with huge floating points\n // -8.185452315956354e-12 becomes NaN\n let returnValue = +(\n Math.round(+(num + 'e' + precision)) +\n 'e' +\n -precision\n );\n if (isNaN(returnValue)) {\n returnValue = parseFloat(num.toFixed(precision));\n }\n return returnValue.toFixed(precision);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'getUnit', standalone: true })\nexport class GetUnit implements PipeTransform {\n transform(value: string, withParens?: boolean): string {\n if ( value ) {\n const arr = value.split('(');\n if ( arr.length > 0 ) {\n if ( withParens ) {\n value = '(' + arr[ 1 ];\n } else {\n arr[ 1 ].slice(0, -1);\n value = arr[ 1 ].slice(0, -1);\n }\n }\n }\n return value;\n }\n}\n\n@Pipe({ name: 'excludeUnit', standalone: true })\nexport class ExcludeUnit implements PipeTransform {\n transform(value: string): string {\n if ( value ) {\n const arr = value.split('(');\n if ( arr.length > 0 ) {\n value = arr[ 0 ];\n }\n }\n return value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'yesNo', standalone: true })\nexport class YesNoPipe implements PipeTransform {\n transform(value: boolean, ignoreNulls = false): string {\n let valueStr = '';\n if ( ignoreNulls ) {\n valueStr = value ? 'Yes' : value === false ? 'No' : '';\n } else {\n valueStr = value ? 'Yes' : 'No';\n }\n return valueStr;\n\n }\n}\n","import { NumberFormatPipe } from './number-format.pipe';\nimport { CurrencyFormatPipe } from './currency-format.pipe';\nimport { KeysPipe } from './keys.pipe';\nimport { DateFormatPipe } from './date-format.pipe';\nimport { ExcludeUnit, GetUnit } from './with-unit';\nimport { YesNoPipe } from './yes-no';\n\n\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n imports: [\n DateFormatPipe,\n KeysPipe,\n NumberFormatPipe,\n CurrencyFormatPipe,\n GetUnit,\n ExcludeUnit,\n YesNoPipe\n ],\n exports: [\n DateFormatPipe,\n KeysPipe,\n NumberFormatPipe,\n CurrencyFormatPipe,\n GetUnit,\n ExcludeUnit,\n YesNoPipe\n ]\n})\nexport class StoPipesModule {\n}\n","/*\n * Public API Surface of @ngx-stoui/core\n */\n\nexport * from './lib/abstract-and-interfaces/keyPress.enum';\nexport * from './lib/sto-directives';\n\nexport * from './lib/sto-pipes/currency-format.pipe';\nexport * from './lib/sto-pipes/date-format.pipe';\nexport * from './lib/sto-pipes/keys.pipe';\nexport * from './lib/sto-pipes/number-format.pipe';\nexport * from './lib/sto-pipes/sto-pipes.module';\n\nexport * from './lib/sto-pipes/with-unit';\nexport * from './lib/sto-pipes/yes-no';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["format","formatDate"],"mappings":"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"}
package/ngx-datatable.css CHANGED
@@ -248,6 +248,7 @@
248
248
  margin: 0;
249
249
  top: 0;
250
250
  left: 0;
251
+ z-index: 1;
251
252
  }
252
253
  .sto-mdl-table__progress-bar__container {
253
254
  display: block;
@@ -256,6 +257,7 @@
256
257
  width: 100%;
257
258
  height: 5px;
258
259
  transform: translate(0, 0) scale(1, 1);
260
+ background-color: var(--accent-highlight, rgb(170, 209, 249));
259
261
  }
260
262
  .sto-mdl-table__progress-bar__container__bar {
261
263
  position: absolute;
@@ -266,6 +268,7 @@
266
268
  height: 5px;
267
269
  transition: transform 0.2s linear;
268
270
  animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1);
271
+ background-color: var(--primary-resting, rgb(16, 108, 200));
269
272
  }
270
273
  .sto-mdl-table__body--empty {
271
274
  margin: 8px;
package/ngx-stoui.css CHANGED
@@ -895,6 +895,7 @@ body {
895
895
  margin: 0;
896
896
  top: 0;
897
897
  left: 0;
898
+ z-index: 1;
898
899
  }
899
900
  .sto-mdl-table__progress-bar__container {
900
901
  display: block;
@@ -903,6 +904,7 @@ body {
903
904
  width: 100%;
904
905
  height: 5px;
905
906
  transform: translate(0, 0) scale(1, 1);
907
+ background-color: var(--accent-highlight, rgb(170, 209, 249));
906
908
  }
907
909
  .sto-mdl-table__progress-bar__container__bar {
908
910
  position: absolute;
@@ -913,6 +915,7 @@ body {
913
915
  height: 5px;
914
916
  transition: transform 0.2s linear;
915
917
  animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1);
918
+ background-color: var(--primary-resting, rgb(16, 108, 200));
916
919
  }
917
920
  .sto-mdl-table__body--empty {
918
921
  margin: 8px;
@@ -2618,11 +2621,36 @@ body,
2618
2621
  .sto-datatable .datatable-header .datatable-header-column-group .datatable-header-cell {
2619
2622
  border-left: var(--mat-table-row-item-outline-width, 1px) solid var(--mat-table-row-item-outline-color, var(--divider));
2620
2623
  }
2624
+ .sto-datatable .datatable-body .progress-linear {
2625
+ display: block;
2626
+ position: sticky;
2627
+ width: 100%;
2628
+ height: 5px;
2629
+ padding: 0;
2630
+ margin: 0;
2631
+ top: 0;
2632
+ left: 0;
2633
+ z-index: 1;
2634
+ }
2621
2635
  .sto-datatable .datatable-body .progress-linear .container {
2622
- background-color: var(--accent-highlight);
2636
+ display: block;
2637
+ position: relative;
2638
+ overflow: hidden;
2639
+ width: 100%;
2640
+ height: 5px;
2641
+ transform: translate(0, 0) scale(1, 1);
2642
+ background-color: var(--accent-highlight, rgb(170, 209, 249));
2623
2643
  }
2624
2644
  .sto-datatable .datatable-body .progress-linear .container .bar {
2625
- background-color: var(--primary-resting);
2645
+ position: absolute;
2646
+ left: 0;
2647
+ top: 0;
2648
+ bottom: 0;
2649
+ width: 100%;
2650
+ height: 5px;
2651
+ transition: transform 0.2s linear;
2652
+ animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1);
2653
+ background-color: var(--primary-resting, rgb(16, 108, 200));
2626
2654
  }
2627
2655
  .sto-datatable .datatable-body .datatable-body-row {
2628
2656
  color: var(--mat-table-row-item-label-text-color, var(--text));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngx-stoui/core",
3
- "version": "21.0.3",
3
+ "version": "21.0.5",
4
4
  "author": {
5
5
  "name": "Ronnie Laugen",
6
6
  "email": "rhenri@equinor.com"
package/styles/README.md CHANGED
@@ -1,273 +1,273 @@
1
- # Styles Folder Architecture
2
-
3
- ## Overview
4
-
5
- The new `styles/` directory provides a clean, intuitive structure that eliminates the complex import chains of the old `style/` folder. All CSS variables are centralized, and the import path is straightforward.
6
-
7
- ## Directory Structure
8
-
9
- ```
10
- styles/
11
- ├── index.scss # Main entry point (import this!)
12
- ├── _tokens.scss # Design system tokens and CSS variables
13
- ├── _material-theme.scss # Material 3 theme configuration
14
- ├── _typography.scss # Typography scales (normal, small, large)
15
- ├── _utilities.scss # Utility classes (grid, helpers)
16
- ├── fonts/
17
- │ └── _fonts.scss # Font loading from CDN
18
- └── components/
19
- ├── _index.scss # Component barrel file
20
- ├── _action-footer.scss # Individual component styles
21
- ├── _appheader.scss
22
- ├── _card.scss
23
- ├── _datatable.scss
24
- ├── _daterange.scss
25
- ├── _dialog.scss
26
- ├── _drawer.scss
27
- ├── _filterpanel.scss
28
- ├── _input-overrides.scss
29
- ├── _message-panel.scss
30
- ├── _number-input.scss
31
- ├── _number-unit-input.scss
32
- ├── _preference-manager.scss
33
- ├── _select-filter.scss
34
- ├── _status-indicators.scss
35
- └── _wysiwyg.scss
36
- ```
37
-
38
- ## Import Flow
39
-
40
- ### New Structure (Simplified)
41
-
42
- ```
43
- ngx-stoui.scss
44
- └─> styles/index.scss
45
- ├─> _tokens.scss (CSS variables)
46
- ├─> _material-theme.scss (Material 3)
47
- ├─> _typography.scss (Typography scales)
48
- ├─> _utilities.scss (Grid utilities)
49
- ├─> fonts/_fonts.scss (Font loading)
50
- └─> components/_index.scss
51
- └─> All component files
52
- ```
53
-
54
- ### Old Structure (Complex)
55
-
56
- ```
57
- ngx-stoui.scss
58
- └─> style/theme/_theme.scss
59
- ├─> _colors.scss (M2 palettes)
60
- ├─> _theme-variables.scss (M2 functions)
61
- ├─> components.scss
62
- │ └─> 21 individual component imports
63
- └─> Circular dependencies
64
- ```
65
-
66
- ## Key Files
67
-
68
- ### `index.scss` - Main Entry Point
69
-
70
- Single file to import for all styles. Automatically includes:
71
-
72
- - Design tokens
73
- - Material theme
74
- - Typography
75
- - Utilities
76
- - Component styles
77
-
78
- **Usage:**
79
-
80
- ```scss
81
- @use './styles' as *;
82
- ```
83
-
84
- ### `_tokens.scss` - Design System Tokens
85
-
86
- **Single source of truth** for all CSS variables:
87
-
88
- - Light theme colors (`:root`, `body:not(.sto-dark-theme)`)
89
- - Dark theme colors (`body.sto-dark-theme`)
90
- - EDS (Equinor Design System) SCSS maps
91
- - No dependencies
92
-
93
- **Available CSS Variables:**
94
-
95
- ```scss
96
- // Primary colors
97
- --primary-resting, --primary-hover, --primary-text
98
-
99
- // Accent colors
100
- --accent-resting, --accent-hover, --accent-text
101
-
102
- // Status colors
103
- --success-*, --danger-*, --warning-*
104
-
105
- // Text colors
106
- --text, --text-secondary, --text-tertiary, --text-disabled
107
-
108
- // Background colors
109
- --bg-default, --bg-app, --bg-card, --bg-hover, --bg-focus
110
-
111
- // UI elements
112
- --divider, --border-disabled
113
- ```
114
-
115
- ### `_material-theme.scss` - Material 3 Configuration
116
-
117
- Material Design 3 theme setup with `mat.define-theme()`:
118
-
119
- - Azure/blue color scheme
120
- - Component theme includes
121
- - CSS variable overrides for Material components
122
-
123
- **Mixin:**
124
-
125
- ```scss
126
- @include material-theme.apply-material-theme();
127
- ```
128
-
129
- ### `_typography.scss` - Typography Scales
130
-
131
- Three typography hierarchies:
132
-
133
- - `$sto-typography` - Normal scale (13px base)
134
- - `$sto-sm-typography` - Small scale (10px base)
135
- - `$sto-l-typography` - Large scale (16px base)
136
-
137
- **Mixin:**
138
-
139
- ```scss
140
- @include typography.apply-typography();
141
- ```
142
-
143
- ### `_utilities.scss` - Utility Classes
144
-
145
- Flexible grid system and helper classes:
146
-
147
- - `.sto-grid` - Responsive grid using CSS Container Queries (auto 1→2→4 columns based on container width)
148
- - `.sto-grid--{n}` - Fixed column layouts (`--1`, `--2`, `--3`, `--4`, `--6`, `--12`) that override responsive behavior
149
- - `.sto-grid__col` - Grid column with span modifiers (`--2`, `--3`, `--4`)
150
- - `.sto-grid__col--spacer` - Hidden spacer column for layout alignment
151
-
152
- ### `components/_index.scss` - Component Barrel
153
-
154
- Imports all component styles and provides single mixin:
155
-
156
- ```scss
157
- @include components.apply-component-styles();
158
- ```
159
-
160
- ## Migration from Old Structure
161
-
162
- ### What Changed?
163
-
164
- 1. **Folder Name**: `style/` → `styles/` (avoids Windows permission issues)
165
-
166
- 2. **Import Chain**:
167
- - Old: 4-5 levels deep with circular dependencies
168
- - New: Flat structure, clear hierarchy
169
-
170
- 3. **CSS Variables**:
171
- - Old: Duplicated in `ngx-stoui.scss` and `_colors.scss`
172
- - New: Single source in `_tokens.scss`
173
-
174
- 4. **Material Theme**:
175
- - Old: Material 2 with palette extraction
176
- - New: Material 3 with direct theme definition
177
-
178
- 5. **Component Organization**:
179
- - Old: Nested in `style/theme/` with barrel file
180
- - New: Flat in `styles/components/` with barrel file
181
-
182
- ### Migration Status
183
-
184
- ✅ **Completed:**
185
-
186
- - Created new `styles/` folder structure
187
- - Migrated all 16 component files from `style/theme/`
188
- - Migrated form styles from `style/form/`
189
- - Migrated datatable styles from `style/datatable/`
190
- - Centralized CSS variables in `_tokens.scss`
191
- - Converted to Material 3 in `_material-theme.scss`
192
- - Updated `ngx-stoui.scss` to use new structure
193
- - Removed all legacy imports
194
- - Build successful
195
- - Lint passing
196
-
197
- ✅ **Migration Complete!** All files have been moved to the new structure. The old `style/` folder can now be removed.
198
-
199
- ### Old `style/` Folder (Deprecated)
200
-
201
- The old `style/` folder is now deprecated and can be safely deleted. All styles have been migrated to the new `styles/` structure.
202
-
203
- ## Best Practices
204
-
205
- ### 1. Use CSS Variables Directly
206
-
207
- ```scss
208
- // ✅ CORRECT
209
- .my-component {
210
- color: var(--text);
211
- background: var(--bg-card);
212
- }
213
-
214
- // ❌ AVOID (old pattern)
215
- .my-component {
216
- color: $text-color; // SCSS variable wrapper
217
- }
218
- ```
219
-
220
- ### 2. Component Styles
221
-
222
- Component files should export mixins:
223
-
224
- ```scss
225
- @mixin my-component-theme() {
226
- .my-component {
227
- border: 1px solid var(--divider);
228
- }
229
- }
230
- ```
231
-
232
- ### 3. Import Order
233
-
234
- When creating new files, follow this order:
235
-
236
- ```scss
237
- // 1. Design tokens (if needed)
238
- @use '../tokens';
239
-
240
- // 2. Material dependencies (if needed)
241
- @use '@angular/material' as mat;
242
-
243
- // 3. Component styles
244
- @mixin my-component-theme() {
245
- // styles here
246
- }
247
- ```
248
-
249
- ### 4. Flat Structure
250
-
251
- Keep component files flat - avoid nesting:
252
-
253
- - `components/_my-component.scss` ✅
254
- - `components/feature/_my-component.scss` ❌
255
-
256
- ## Benefits
257
-
258
- 1. **Discoverability**: Easy to find where styles are defined
259
- 2. **No Circular Dependencies**: Clear import hierarchy
260
- 3. **Single Source of Truth**: CSS variables in one place
261
- 4. **Modern Material**: Material 3 API
262
- 5. **Clean Separation**: Tokens, theme, typography, components
263
- 6. **Easy Debugging**: Flat structure, clear file names
264
- 7. **Performance**: Removed duplicate CSS variable definitions
265
-
266
- ## Future Improvements
267
-
268
- 1. Migrate `style/form/` to `styles/forms/`
269
- 2. Migrate `style/datatable/` to `styles/components/datatable/`
270
- 3. Convert remaining `@import` to `@use`/`@forward`
271
- 4. Remove old `style/` folder
272
- 5. Add Storybook integration for design tokens
273
- 6. Document CSS variable usage in component stories
1
+ # Styles Folder Architecture
2
+
3
+ ## Overview
4
+
5
+ The new `styles/` directory provides a clean, intuitive structure that eliminates the complex import chains of the old `style/` folder. All CSS variables are centralized, and the import path is straightforward.
6
+
7
+ ## Directory Structure
8
+
9
+ ```
10
+ styles/
11
+ ├── index.scss # Main entry point (import this!)
12
+ ├── _tokens.scss # Design system tokens and CSS variables
13
+ ├── _material-theme.scss # Material 3 theme configuration
14
+ ├── _typography.scss # Typography scales (normal, small, large)
15
+ ├── _utilities.scss # Utility classes (grid, helpers)
16
+ ├── fonts/
17
+ │ └── _fonts.scss # Font loading from CDN
18
+ └── components/
19
+ ├── _index.scss # Component barrel file
20
+ ├── _action-footer.scss # Individual component styles
21
+ ├── _appheader.scss
22
+ ├── _card.scss
23
+ ├── _datatable.scss
24
+ ├── _daterange.scss
25
+ ├── _dialog.scss
26
+ ├── _drawer.scss
27
+ ├── _filterpanel.scss
28
+ ├── _input-overrides.scss
29
+ ├── _message-panel.scss
30
+ ├── _number-input.scss
31
+ ├── _number-unit-input.scss
32
+ ├── _preference-manager.scss
33
+ ├── _select-filter.scss
34
+ ├── _status-indicators.scss
35
+ └── _wysiwyg.scss
36
+ ```
37
+
38
+ ## Import Flow
39
+
40
+ ### New Structure (Simplified)
41
+
42
+ ```
43
+ ngx-stoui.scss
44
+ └─> styles/index.scss
45
+ ├─> _tokens.scss (CSS variables)
46
+ ├─> _material-theme.scss (Material 3)
47
+ ├─> _typography.scss (Typography scales)
48
+ ├─> _utilities.scss (Grid utilities)
49
+ ├─> fonts/_fonts.scss (Font loading)
50
+ └─> components/_index.scss
51
+ └─> All component files
52
+ ```
53
+
54
+ ### Old Structure (Complex)
55
+
56
+ ```
57
+ ngx-stoui.scss
58
+ └─> style/theme/_theme.scss
59
+ ├─> _colors.scss (M2 palettes)
60
+ ├─> _theme-variables.scss (M2 functions)
61
+ ├─> components.scss
62
+ │ └─> 21 individual component imports
63
+ └─> Circular dependencies
64
+ ```
65
+
66
+ ## Key Files
67
+
68
+ ### `index.scss` - Main Entry Point
69
+
70
+ Single file to import for all styles. Automatically includes:
71
+
72
+ - Design tokens
73
+ - Material theme
74
+ - Typography
75
+ - Utilities
76
+ - Component styles
77
+
78
+ **Usage:**
79
+
80
+ ```scss
81
+ @use './styles' as *;
82
+ ```
83
+
84
+ ### `_tokens.scss` - Design System Tokens
85
+
86
+ **Single source of truth** for all CSS variables:
87
+
88
+ - Light theme colors (`:root`, `body:not(.sto-dark-theme)`)
89
+ - Dark theme colors (`body.sto-dark-theme`)
90
+ - EDS (Equinor Design System) SCSS maps
91
+ - No dependencies
92
+
93
+ **Available CSS Variables:**
94
+
95
+ ```scss
96
+ // Primary colors
97
+ --primary-resting, --primary-hover, --primary-text
98
+
99
+ // Accent colors
100
+ --accent-resting, --accent-hover, --accent-text
101
+
102
+ // Status colors
103
+ --success-*, --danger-*, --warning-*
104
+
105
+ // Text colors
106
+ --text, --text-secondary, --text-tertiary, --text-disabled
107
+
108
+ // Background colors
109
+ --bg-default, --bg-app, --bg-card, --bg-hover, --bg-focus
110
+
111
+ // UI elements
112
+ --divider, --border-disabled
113
+ ```
114
+
115
+ ### `_material-theme.scss` - Material 3 Configuration
116
+
117
+ Material Design 3 theme setup with `mat.define-theme()`:
118
+
119
+ - Azure/blue color scheme
120
+ - Component theme includes
121
+ - CSS variable overrides for Material components
122
+
123
+ **Mixin:**
124
+
125
+ ```scss
126
+ @include material-theme.apply-material-theme();
127
+ ```
128
+
129
+ ### `_typography.scss` - Typography Scales
130
+
131
+ Three typography hierarchies:
132
+
133
+ - `$sto-typography` - Normal scale (13px base)
134
+ - `$sto-sm-typography` - Small scale (10px base)
135
+ - `$sto-l-typography` - Large scale (16px base)
136
+
137
+ **Mixin:**
138
+
139
+ ```scss
140
+ @include typography.apply-typography();
141
+ ```
142
+
143
+ ### `_utilities.scss` - Utility Classes
144
+
145
+ Flexible grid system and helper classes:
146
+
147
+ - `.sto-grid` - Responsive grid using CSS Container Queries (auto 1→2→4 columns based on container width)
148
+ - `.sto-grid--{n}` - Fixed column layouts (`--1`, `--2`, `--3`, `--4`, `--6`, `--12`) that override responsive behavior
149
+ - `.sto-grid__col` - Grid column with span modifiers (`--2`, `--3`, `--4`)
150
+ - `.sto-grid__col--spacer` - Hidden spacer column for layout alignment
151
+
152
+ ### `components/_index.scss` - Component Barrel
153
+
154
+ Imports all component styles and provides single mixin:
155
+
156
+ ```scss
157
+ @include components.apply-component-styles();
158
+ ```
159
+
160
+ ## Migration from Old Structure
161
+
162
+ ### What Changed?
163
+
164
+ 1. **Folder Name**: `style/` → `styles/` (avoids Windows permission issues)
165
+
166
+ 2. **Import Chain**:
167
+ - Old: 4-5 levels deep with circular dependencies
168
+ - New: Flat structure, clear hierarchy
169
+
170
+ 3. **CSS Variables**:
171
+ - Old: Duplicated in `ngx-stoui.scss` and `_colors.scss`
172
+ - New: Single source in `_tokens.scss`
173
+
174
+ 4. **Material Theme**:
175
+ - Old: Material 2 with palette extraction
176
+ - New: Material 3 with direct theme definition
177
+
178
+ 5. **Component Organization**:
179
+ - Old: Nested in `style/theme/` with barrel file
180
+ - New: Flat in `styles/components/` with barrel file
181
+
182
+ ### Migration Status
183
+
184
+ ✅ **Completed:**
185
+
186
+ - Created new `styles/` folder structure
187
+ - Migrated all 16 component files from `style/theme/`
188
+ - Migrated form styles from `style/form/`
189
+ - Migrated datatable styles from `style/datatable/`
190
+ - Centralized CSS variables in `_tokens.scss`
191
+ - Converted to Material 3 in `_material-theme.scss`
192
+ - Updated `ngx-stoui.scss` to use new structure
193
+ - Removed all legacy imports
194
+ - Build successful
195
+ - Lint passing
196
+
197
+ ✅ **Migration Complete!** All files have been moved to the new structure. The old `style/` folder can now be removed.
198
+
199
+ ### Old `style/` Folder (Deprecated)
200
+
201
+ The old `style/` folder is now deprecated and can be safely deleted. All styles have been migrated to the new `styles/` structure.
202
+
203
+ ## Best Practices
204
+
205
+ ### 1. Use CSS Variables Directly
206
+
207
+ ```scss
208
+ // ✅ CORRECT
209
+ .my-component {
210
+ color: var(--text);
211
+ background: var(--bg-card);
212
+ }
213
+
214
+ // ❌ AVOID (old pattern)
215
+ .my-component {
216
+ color: $text-color; // SCSS variable wrapper
217
+ }
218
+ ```
219
+
220
+ ### 2. Component Styles
221
+
222
+ Component files should export mixins:
223
+
224
+ ```scss
225
+ @mixin my-component-theme() {
226
+ .my-component {
227
+ border: 1px solid var(--divider);
228
+ }
229
+ }
230
+ ```
231
+
232
+ ### 3. Import Order
233
+
234
+ When creating new files, follow this order:
235
+
236
+ ```scss
237
+ // 1. Design tokens (if needed)
238
+ @use '../tokens';
239
+
240
+ // 2. Material dependencies (if needed)
241
+ @use '@angular/material' as mat;
242
+
243
+ // 3. Component styles
244
+ @mixin my-component-theme() {
245
+ // styles here
246
+ }
247
+ ```
248
+
249
+ ### 4. Flat Structure
250
+
251
+ Keep component files flat - avoid nesting:
252
+
253
+ - `components/_my-component.scss` ✅
254
+ - `components/feature/_my-component.scss` ❌
255
+
256
+ ## Benefits
257
+
258
+ 1. **Discoverability**: Easy to find where styles are defined
259
+ 2. **No Circular Dependencies**: Clear import hierarchy
260
+ 3. **Single Source of Truth**: CSS variables in one place
261
+ 4. **Modern Material**: Material 3 API
262
+ 5. **Clean Separation**: Tokens, theme, typography, components
263
+ 6. **Easy Debugging**: Flat structure, clear file names
264
+ 7. **Performance**: Removed duplicate CSS variable definitions
265
+
266
+ ## Future Improvements
267
+
268
+ 1. Migrate `style/form/` to `styles/forms/`
269
+ 2. Migrate `style/datatable/` to `styles/components/datatable/`
270
+ 3. Convert remaining `@import` to `@use`/`@forward`
271
+ 4. Remove old `style/` folder
272
+ 5. Add Storybook integration for design tokens
273
+ 6. Document CSS variable usage in component stories