@ngflux/ngflux 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,228 @@
1
+ @use 'sass:map';
2
+ @use 'system' as ngf;
3
+
4
+ :host {
5
+ display: block;
6
+ border: var(--border) !important;
7
+ font-size: 1rem;
8
+ color: #333;
9
+
10
+ $xs: map.get(ngf.$device, xs);
11
+ $sm: map.get(ngf.$device, sm);
12
+ $md: map.get(ngf.$device, md);
13
+ $lg: map.get(ngf.$device, lg);
14
+
15
+ --border: 1px solid #CCC;
16
+ --left-width: 100%;
17
+
18
+ .frame {
19
+ display: block;
20
+ position: relative;
21
+ container: frame / inline-size;
22
+ overflow: hidden;
23
+
24
+ &-header {
25
+ display: flex;
26
+ flex-direction: row;
27
+ box-shadow: 0px 0px 5px rgba(0, 0, 0, .5);
28
+ background-color: #FFF;
29
+ align-items: center;
30
+ position: relative;
31
+ padding: 0px 20px;
32
+ height: 40px;
33
+ z-index: 20;
34
+ gap: 15px;
35
+
36
+ > .image {
37
+ display: block;
38
+ object-position: center;
39
+ object-fit: cover;
40
+ aspect-ratio: 1;
41
+ height: 80%;
42
+ }
43
+
44
+ > .icon {
45
+ display: block;
46
+
47
+ > * {
48
+ font-size: 1.5em;
49
+ }
50
+ }
51
+
52
+ > h1 {
53
+ display: block;
54
+ font-size: 1.1em;
55
+ font-weight: 600;
56
+ color: inherit;
57
+ margin: 0px;
58
+ }
59
+
60
+ > ngf-frame-header-menu {
61
+ flex: 1 0 0;
62
+ }
63
+ }
64
+
65
+ &-body {
66
+ display: flex;
67
+ flex-direction: row;
68
+ position: relative;
69
+ min-height: 100px;
70
+
71
+ @container frame (min-width: #{$xs}) {
72
+ --left-width: 200px;
73
+ }
74
+
75
+ @container frame (min-width: #{$lg}) {
76
+ --left-width: 250px;
77
+ }
78
+
79
+ &-left {
80
+ display: flex;
81
+ flex-direction: column;
82
+ position: relative;
83
+ width: var(--left-width) !important;
84
+ box-shadow: 0px 0px 5px rgba(0, 0, 0, .5);
85
+ margin-left: calc(var(--left-width) * -1);
86
+ transition: all .3s ease-in-out;
87
+ background-color: #FFF;
88
+ z-index: 15;
89
+
90
+ &.drawer {
91
+ margin-left: 0px;
92
+ }
93
+
94
+ @container frame (min-width: #{$md}) {
95
+ margin-left: 0px;
96
+ }
97
+
98
+ .btn-row {
99
+ display: flex;
100
+ flex-direction: row;
101
+ align-items: center;
102
+ justify-content: end;
103
+ border-bottom: var(--border) !important;
104
+ padding: 2px;
105
+
106
+ @container frame (min-width: #{$xs}) {
107
+ display: none;
108
+ }
109
+
110
+ .close-btn {
111
+ display: block;
112
+ cursor: pointer;
113
+ padding: 0px 3px;
114
+ }
115
+ }
116
+
117
+ .search-form {
118
+ display: block;
119
+ position: relative;
120
+ border-bottom: var(--border) !important;
121
+ padding: 10px;
122
+
123
+ > input {
124
+ display: block;
125
+ background-color: #FFF;
126
+ border: var(--border) !important;
127
+ border-radius: 3px;
128
+ padding: 10px;
129
+ width: 100%;
130
+
131
+ &:focus {
132
+ outline: var(--border) !important;
133
+ box-shadow: none;
134
+ }
135
+ }
136
+
137
+ > .clear {
138
+ display: block;
139
+ position: absolute;
140
+ inset: 50% 20px auto auto;
141
+ transform: translateY(-50%);
142
+ cursor: pointer;
143
+ z-index: 5;
144
+ }
145
+ }
146
+
147
+ .menu-pane {
148
+ display: block;
149
+ flex: 1 1 auto;
150
+ overflow: hidden auto;
151
+ }
152
+ }
153
+
154
+ &-overlay {
155
+ display: none;
156
+ position: absolute;
157
+ inset: 0px;
158
+ background-color: rgba(0, 0, 0, .2);
159
+ z-index: 10;
160
+
161
+ &.drawer {
162
+ display: block;
163
+ }
164
+
165
+ @container frame (min-width: #{$md}) {
166
+ display: none;
167
+ }
168
+ }
169
+
170
+ &-right {
171
+ display: flex;
172
+ flex-direction: column;
173
+ background-color: #EEE;
174
+ margin-right: calc(var(--left-width) * -1);
175
+ transition: all .3s ease-in-out;
176
+ flex: 1 0 0;
177
+ width: 0px;
178
+
179
+ &.drawer {
180
+ margin-left: 0px;
181
+ }
182
+
183
+ @container frame (min-width: #{$md}) {
184
+ margin-left: 0px;
185
+ }
186
+ }
187
+ }
188
+
189
+ &-toolbar {
190
+ display: flex;
191
+ flex-direction: row;
192
+ border-bottom: var(--border) !important;
193
+ background-color: #FFF;
194
+ height: 30px;
195
+
196
+ > .spacer {
197
+ display: block;
198
+ flex: 1 0 0;
199
+ width: 0px;
200
+ }
201
+
202
+ > .drawer-btn {
203
+ display: block;
204
+ position: relative;
205
+ border-right: var(--border) !important;
206
+ cursor: pointer;
207
+ width: 30px;
208
+
209
+ @container frame (min-width: #{$md}) {
210
+ display: none;
211
+ }
212
+
213
+ > .ngf-icon {
214
+ position: absolute;
215
+ inset: 50% auto auto 50%;
216
+ transform: translate(-50%, -50%);
217
+ font-size: 1em;
218
+ }
219
+ }
220
+ }
221
+
222
+ &-content {
223
+ display: block;
224
+ flex: 1 1 auto;
225
+ overflow: hidden auto;
226
+ }
227
+ }
228
+ }
@@ -0,0 +1,102 @@
1
+ @use 'sass:map';
2
+ @use 'system' as ngf;
3
+
4
+ :host {
5
+ display: flex;
6
+ flex-direction: row;
7
+ justify-content: end;
8
+ container: main / inline-size scroll-state !important;
9
+ align-self: stretch;
10
+
11
+ $xs: map.get(ngf.$device, xs);
12
+ $sm: map.get(ngf.$device, sm);
13
+ $md: map.get(ngf.$device, md);
14
+ $lg: map.get(ngf.$device, lg);
15
+
16
+ --border: 1px solid #DDD;
17
+
18
+ .toggle {
19
+ display: flex;
20
+ flex-direction: row;
21
+ align-items: center;
22
+ justify-content: center;
23
+ border-left: var(--border) !important;
24
+ border-right: var(--border) !important;
25
+ padding: 0px 10px;
26
+ cursor: pointer;
27
+
28
+ @container main (min-width: #{$sm}) {
29
+ display: none;
30
+ }
31
+ }
32
+
33
+ .wrapper {
34
+ display: none;
35
+ position: relative;
36
+
37
+ &.open {
38
+ display: block;
39
+ }
40
+
41
+ @container main (min-width: #{$sm}) {
42
+ display: block;
43
+ }
44
+
45
+ > .menu {
46
+ display: block;
47
+ position: absolute;
48
+ inset: 100% 0px auto auto;
49
+ box-shadow: 0px 3px 3px rgba(0, 0, 0, .5);
50
+ background-color: #FFF;
51
+ list-style: none;
52
+ height: auto;
53
+ padding: 0px;
54
+ margin: 0px;
55
+
56
+ @container main (min-width: #{$sm}) {
57
+ display: flex;
58
+ flex-direction: row;
59
+ align-items: center;
60
+ justify-content: end;
61
+ position: static;
62
+ background-color: transparent;
63
+ box-shadow: none;
64
+ height: 100%;
65
+ inset: auto;
66
+ gap: 15px;
67
+ }
68
+
69
+ > li {
70
+ display: block;
71
+ padding: 0px;
72
+ margin: 0px;
73
+
74
+ > a {
75
+ display: flex;
76
+ flex-direction: row;
77
+ align-items: center;
78
+ text-decoration: none !important;
79
+ padding: 7px 20px;
80
+ gap: 5px;
81
+
82
+ @container main (min-width: #{$sm}) {
83
+ padding: 0px;
84
+ }
85
+
86
+ > .icon {
87
+ display: block;
88
+
89
+ > * {
90
+ font-size: 1.2em;
91
+ }
92
+ }
93
+
94
+ > .text {
95
+ display: block;
96
+ white-space: nowrap;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+ }
@@ -0,0 +1,83 @@
1
+ :host {
2
+ display: block;
3
+ font-size: var(--font-size) !important;
4
+
5
+ --color: #333;
6
+ --bg-color: transparent;
7
+ --font-size: .8rem;
8
+
9
+ --active-color: var(--ngf-primary);
10
+ --active-bg-color: rgba(var(--ngf-primary-rgb), .1);
11
+
12
+ --hover-color: var(--ngf-primary);
13
+ --hover-bg-color: rgba(var(--ngf-primary-rgb), .1);
14
+
15
+ &.has-parent {
16
+ padding: 0px 0px 0px 20px;
17
+ }
18
+
19
+ .wrapper {
20
+ display: block;
21
+ list-style: none;
22
+ padding: 0px;
23
+ margin: 0px;
24
+
25
+ > li {
26
+ display: block;
27
+ background-color: var(--bg-color) !important;
28
+ padding: 0px;
29
+ margin: 0px;
30
+
31
+ &:hover {
32
+ --bg-color: var(--hover-bg-color);
33
+ }
34
+
35
+ &.active {
36
+ --color: var(--active-color);
37
+ --bg-color: var(--active-bg-color);
38
+ }
39
+
40
+ > a {
41
+ display: flex;
42
+ flex-direction: row;
43
+ align-items: center;
44
+ padding: 5px;
45
+ text-decoration: none !important;
46
+ cursor: pointer;
47
+ width: 100%;
48
+ gap: 5px;
49
+
50
+ &, &:link {
51
+ color: var(--color) !important;
52
+ }
53
+
54
+ > .icon {
55
+ display: block;
56
+ width: 13px;
57
+
58
+ .ngf-icon {
59
+ font-size: 1em;
60
+ }
61
+ }
62
+
63
+ > .text {
64
+ display: block;
65
+ white-space: nowrap;
66
+ text-overflow: ellipsis;
67
+ overflow: hidden;
68
+ flex: 1 0 0;
69
+ width: 0px;
70
+ }
71
+
72
+ > .toggle {
73
+ display: block;
74
+ cursor: pointer;
75
+
76
+ .ngf-icon {
77
+ font-size: 1em;
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,38 @@
1
+ :host {
2
+ display: inline-block;
3
+ width: 200px;
4
+
5
+ --padding-y: 10px;
6
+ --border: 1px solid rgba(0, 0, 0, .2);
7
+ --background-color: #FFF;
8
+ --color: inherit;
9
+ --gap: 5px;
10
+
11
+ &.block {
12
+ display: block;
13
+ width: 100%;
14
+ }
15
+
16
+ > .wrapper {
17
+ display: flex;
18
+ flex-direction: row;
19
+ gap: var(--gap) !important;
20
+
21
+ > input {
22
+ display: block;
23
+ flex: 1 0 0;
24
+ width: 0px;
25
+ text-align: center;
26
+ font-size: 1em;
27
+ color: var(--color) !important;
28
+ padding: var(--padding-y) 0px var(--padding-y) 0px !important;
29
+ background-color: var(--background-color) !important;
30
+ border: var(--border) !important;
31
+
32
+ &:focus {
33
+ outline: var(--border);
34
+ box-shadow: none;
35
+ }
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,73 @@
1
+ :host {
2
+ display: block;
3
+ position: relative;
4
+ max-height: 200px;
5
+ overflow: hidden auto;
6
+
7
+ &.has-parent {
8
+ padding: 0px 0px 0px 10px;
9
+
10
+ &::before {
11
+ display: block;
12
+ position: absolute;
13
+ inset: 0px auto 0px 5px;
14
+ background-color: rgba(0, 0, 0, .2);
15
+ content: "";
16
+ width: 1px;
17
+ }
18
+ }
19
+
20
+ > .wrapper {
21
+ display: block;
22
+ list-style: none;
23
+ font-size: .9rem;
24
+ padding: 0px;
25
+ margin: 0px;
26
+
27
+ > li {
28
+ display: block;
29
+ cursor: pointer;
30
+
31
+ --background-color: transparent;
32
+ --color: inherit;
33
+
34
+ > .text {
35
+ padding: 5px;
36
+ background-color: var(--background-color) !important;
37
+ color: var(--color) !important;
38
+
39
+ &:hover {
40
+ --background-color: rgba(var(--ngf-primary-rgb), .1);
41
+ }
42
+ }
43
+
44
+ &.disabled {
45
+ pointer-events: none;
46
+ cursor: not-allowed;
47
+
48
+ --color: #666;
49
+ }
50
+
51
+ &.active {
52
+ > .text {
53
+ --background-color: var(--ngf-primary);
54
+ --color: #FFF;
55
+ }
56
+ }
57
+
58
+ &.has-parent {
59
+ position: relative;
60
+
61
+ &::before {
62
+ display: block;
63
+ position: absolute;
64
+ inset: 50% 100% auto -4px;
65
+ transform: translateY(-50%);
66
+ background-color: rgba(0, 0, 0, .2);
67
+ content: "";
68
+ height: 1px;
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,149 @@
1
+ :host {
2
+ display: inline-block;
3
+ border: var(--border) !important;
4
+ border-radius: 3px;
5
+ width: 200px;
6
+ font-size: .8rem;
7
+
8
+ --border: 1px solid rgba(0, 0, 0, .2);
9
+ --height: 40px;
10
+
11
+ &.block {
12
+ display: block;
13
+ width: 100%;
14
+ }
15
+
16
+ > .wrapper {
17
+ display: block;
18
+ position: relative;
19
+
20
+ .header {
21
+ display: flex;
22
+ flex-direction: row;
23
+ align-items: center;
24
+ border-bottom: var(--border) !important;
25
+ height: var(--height) !important;
26
+ padding: 0px 10px;
27
+ font-weight: 500;
28
+ color: #333;
29
+ gap: 10px;
30
+
31
+ &.single {
32
+ cursor: pointer;
33
+
34
+ --border: none;
35
+ }
36
+
37
+ > .text {
38
+ flex: 1 0 0;
39
+ width: 0px;
40
+ overflow: hidden;
41
+ text-overflow: ellipsis;
42
+ }
43
+
44
+ .ngf-icon {
45
+ font-size: 1.8em;
46
+ }
47
+ }
48
+
49
+ .body {
50
+ display: block;
51
+ background-color: #FFF;
52
+ font-size: 1em;
53
+
54
+ &.single {
55
+ display: none;
56
+ position: absolute;
57
+ inset: 100% 0px auto 0px;
58
+ box-shadow: 0px 0px 3px rgba(0, 0, 0, .7);
59
+ z-index: 5;
60
+
61
+ &.show {
62
+ display: block !important;
63
+ }
64
+ }
65
+
66
+ > .searchbox {
67
+ display: block;
68
+ position: relative;
69
+ border-bottom: var(--border) !important;
70
+ padding: 7px;
71
+
72
+ > input {
73
+ display: block;
74
+ width: 100% !important;
75
+ border: var(--border) !important;
76
+ background-color: #FFF;
77
+ font-size: .9rem;
78
+ padding: 5px;
79
+
80
+ &:focus {
81
+ box-shadow: none !important;
82
+ outline: none !important;
83
+ }
84
+ }
85
+
86
+ > .clear {
87
+ display: block;
88
+ position: absolute;
89
+ inset: 50% 15px auto auto;
90
+ transform: translateY(-50%);
91
+ cursor: pointer;
92
+
93
+ .ngf-icon {
94
+ font-size: 1em;
95
+ }
96
+ }
97
+ }
98
+ }
99
+
100
+ .footer {
101
+ display: block;
102
+ border-top: var(--border) !important;
103
+ font-size: .9em;
104
+ padding: 5px;
105
+
106
+ .none {
107
+ text-align: center;
108
+ color: #666;
109
+ }
110
+
111
+ .entries {
112
+ display: flex;
113
+ flex-direction: row;
114
+ flex-wrap: wrap;
115
+ gap: 5px;
116
+
117
+ &-item {
118
+ display: flex;
119
+ flex-direction: row;
120
+ align-items: center;
121
+ padding: 0px 3px;
122
+ border-radius: 2px;
123
+ background-color: var(--ngf-primary);
124
+ color: #FFF;
125
+ gap: 5px;
126
+
127
+ .btn {
128
+ cursor: pointer;
129
+
130
+ .ngf-icon {
131
+ font-size: 1em;
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+
138
+ > .clear-btn {
139
+ display: block;
140
+ border-top: var(--border) !important;
141
+ font-size: .8em;
142
+ padding: 3px;
143
+ text-align: center;
144
+ background-color: #444;
145
+ color: #FFF;
146
+ cursor: pointer;
147
+ }
148
+ }
149
+ }
@@ -0,0 +1,3 @@
1
+ :host {
2
+ display: block;
3
+ }
@@ -0,0 +1,10 @@
1
+ :host {
2
+ display: block;
3
+ border-bottom: 1px solid #CCC;
4
+ overflow: auto hidden;
5
+
6
+ > .wrapper {
7
+ display: flex;
8
+ flex-direction: row;
9
+ }
10
+ }
@@ -0,0 +1,3 @@
1
+ .wrapper {
2
+ display: block;
3
+ }
@@ -0,0 +1,3 @@
1
+ :host {
2
+ display: block;
3
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngflux/ngflux",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/NgFlux/ngflux.git"
@@ -2,3 +2,4 @@
2
2
  @use './icons.scss';
3
3
  @use './loading.scss';
4
4
  @use './dialog.scss';
5
+ @use './tab.scss';