neo.mjs 6.18.0 → 6.18.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 (44) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/colors/view/HeaderToolbar.mjs +6 -6
  3. package/apps/portal/view/HeaderToolbar.mjs +1 -2
  4. package/apps/portal/view/home/MainContainer.mjs +39 -8
  5. package/apps/portal/view/home/parts/AfterMath.mjs +19 -16
  6. package/apps/portal/view/home/parts/BaseContainer.mjs +31 -0
  7. package/apps/portal/view/home/parts/Colors.mjs +43 -19
  8. package/apps/portal/view/home/parts/Features.mjs +6 -6
  9. package/apps/portal/view/home/parts/Helix.mjs +55 -19
  10. package/apps/portal/view/home/parts/HelloWorld.mjs +11 -10
  11. package/apps/portal/view/home/parts/How.mjs +66 -0
  12. package/apps/portal/view/home/parts/MainNeo.mjs +17 -14
  13. package/examples/ServiceWorker.mjs +2 -2
  14. package/examples/model/dialog/EditUserDialog.mjs +1 -8
  15. package/package.json +1 -1
  16. package/resources/data/deck/learnneo/pages/Events.md +15 -9
  17. package/resources/data/deck/learnneo/pages/GuideEvents.md +142 -19
  18. package/resources/data/deck/learnneo/pages/GuideViewModels.md +444 -0
  19. package/resources/data/deck/learnneo/tree.json +1 -0
  20. package/resources/scss/src/apps/portal/HeaderToolbar.scss +143 -125
  21. package/resources/scss/src/apps/portal/home/MainContainer.scss +0 -45
  22. package/resources/scss/src/apps/portal/home/parts/BaseContainer.scss +27 -0
  23. package/resources/scss/src/apps/portal/home/parts/MainNeo.scss +24 -0
  24. package/resources/scss/src/apps/portal/learn/ContentTreeList.scss +1 -1
  25. package/resources/scss/src/calendar/view/EditEventContainer.scss +1 -1
  26. package/resources/scss/src/calendar/view/calendars/List.scss +1 -1
  27. package/resources/scss/src/dialog/Base.scss +1 -6
  28. package/resources/scss/theme-dark/dialog/Base.scss +1 -0
  29. package/resources/scss/theme-light/dialog/Base.scss +1 -0
  30. package/resources/scss/theme-neo-light/Global.scss +13 -11
  31. package/resources/scss/theme-neo-light/dialog/Base.scss +1 -0
  32. package/src/DefaultConfig.mjs +2 -2
  33. package/src/button/Base.mjs +3 -2
  34. package/src/calendar/view/EditEventContainer.mjs +1 -1
  35. package/src/component/Base.mjs +49 -16
  36. package/src/controller/Base.mjs +5 -5
  37. package/src/core/Observable.mjs +23 -7
  38. package/src/dialog/Base.mjs +23 -45
  39. package/src/form/field/Color.mjs +5 -5
  40. package/src/main/addon/IntersectionObserver.mjs +20 -1
  41. package/src/model/Component.mjs +11 -9
  42. package/src/selection/DateSelectorModel.mjs +2 -2
  43. package/src/util/HashHistory.mjs +45 -12
  44. package/src/worker/Base.mjs +15 -8
@@ -1,55 +1,54 @@
1
1
  .learnneo-header-toolbar {
2
- border-bottom: 1px solid #f2f2f2;
2
+ border-bottom: 1px solid #f2f2f2;
3
3
 
4
- .logo {
5
- margin-left: 1em;
6
- }
7
-
8
- .neo-button {
9
- margin-left: 10px;
10
-
11
- &.no-text {
12
- margin-left: 0;
13
- width: 1.2em;
14
-
15
- &.github-button {
16
- margin-left: 5em;
17
- }
18
-
19
- .neo-button-glyph {
20
- font-size: 24px;
21
- }
4
+ .logo {
5
+ margin-left: 1em;
22
6
  }
23
7
 
24
- .neo-button-glyph {
25
- &.neo-logo-blue {
26
- background-image: url("../../../../../../../resources/images/logo/neo_logo_primary.svg");
27
- height: 24px;
28
- width: 24px;
29
- }
8
+ .neo-button {
9
+ margin-left: 10px;
10
+
11
+ &.no-text {
12
+ margin-left: 0;
13
+ width : 1.2em;
14
+
15
+ &.github-button {
16
+ margin-left: 5em;
17
+ }
18
+
19
+ .neo-button-glyph {
20
+ font-size: 24px;
21
+ }
22
+ }
23
+
24
+ .neo-button-glyph {
25
+ &.neo-logo-blue {
26
+ background-image: url("../../../../../../resources/images/logo/neo_logo_primary.svg");
27
+ height : 24px;
28
+ width : 24px;
29
+ }
30
+ }
30
31
  }
31
- }
32
32
 
33
- .separate-bar {
34
- position: absolute;
35
- right: 20px;
36
- top: 60px;
37
- width: 40px;
38
-
39
- z-index: 9;
40
- transform: rotate(0);
41
- animation: fade-in-animation 200ms linear;
42
- }
33
+ .separate-bar {
34
+ animation: fade-in-animation 200ms linear;
35
+ position: absolute;
36
+ right : 20px;
37
+ top : 60px;
38
+ transform: rotate(0);
39
+ width : 40px;
40
+ z-index : 9;
41
+ }
43
42
 
44
- // find parallel class hide-sidebar
45
- &:has(+div .hide-sidebar) .separate-bar {
46
- animation: fade-animation 200ms linear forwards;
47
- }
43
+ // find parallel class hide-sidebar
44
+ &:has(+div .hide-sidebar) .separate-bar {
45
+ animation: fade-animation 200ms linear forwards;
46
+ }
48
47
  }
49
48
 
50
49
  .vector {
51
- animation: fade-and-scale-animation auto linear;
52
- animation-timeline: --page-scroll;
50
+ animation: fade-and-scale-animation auto linear;
51
+ animation-timeline: --page-scroll;
53
52
  }
54
53
 
55
54
  //@scroll-timeline --page-scroll {
@@ -60,71 +59,72 @@
60
59
 
61
60
 
62
61
  /* Style and position the progress bar */
63
- #progress {
64
- position: fixed;
65
- z-index: 1000;
66
- top: 0;
67
- height: 2px;
68
- width: 100%;
69
- background: var(--button-background-color);
70
- background: var(--sem-color-surface-primary-background);
62
+ .portal-home-progress {
63
+ position: fixed;
64
+ z-index: 1000;
65
+ top: 0;
66
+ height: 2px;
67
+ width: 100%;
68
+ background: var(--button-background-color);
69
+ background: var(--sem-color-surface-primary-background);
71
70
 
72
- scale: 0 1;
73
- transform-origin: left;
71
+ scale: 0 1;
72
+ transform-origin: left;
74
73
 
75
- /* Attach the animation using an anonymous Scroll Progress Timeline */
76
- animation: grow-progress linear;
77
- animation-timeline: --page-scroll;
74
+ /* Attach the animation using an anonymous Scroll Progress Timeline */
75
+ animation: grow-progress linear;
76
+ animation-timeline: --page-scroll;
78
77
  }
79
78
 
80
79
  @keyframes grow-progress {
81
- to { scale: 1 1; }
80
+ to {
81
+ scale: 1 1;
82
+ }
82
83
  }
83
84
 
84
85
  .hello-world {
85
- animation-timeline: view(block 100% -500%);
86
+ animation-timeline: view(block 100% -500%);
86
87
 
87
- animation-name: appear-animation;
88
- animation-fill-mode: both;
89
- animation-duration: 1ms; /* Firefox requires this to apply the animation */
90
- animation-timing-function: linear;
88
+ animation-name: appear-animation;
89
+ animation-fill-mode: both;
90
+ animation-duration: 1ms; /* Firefox requires this to apply the animation */
91
+ animation-timing-function: linear;
91
92
  }
92
93
 
93
94
  @keyframes appear-animation {
94
- 0% {
95
- transform: translateX(-400%);
96
- opacity: 0;
97
- }
98
- 90% {
99
- opacity: .3;
100
- }
101
- 100% {
102
- transform: translateX(0);
103
- opacity: 1;
104
- }
95
+ 0% {
96
+ transform: translateX(-400%);
97
+ opacity : 0;
98
+ }
99
+ 90% {
100
+ opacity: .3;
101
+ }
102
+ 100% {
103
+ transform: translateX(0);
104
+ opacity : 1;
105
+ }
105
106
  }
106
107
 
107
108
  .cool-stuff {
108
- animation-timeline: view(block 100% -500%);
109
-
110
- animation-name: appear-cool-stuff;
111
- animation-fill-mode: both;
112
- animation-duration: 1ms; /* Firefox requires this to apply the animation */
113
- animation-timing-function: linear;
109
+ animation-timeline : view(block 100% -500%);
110
+ animation-name : appear-cool-stuff;
111
+ animation-fill-mode : both;
112
+ animation-duration : 1ms; /* Firefox requires this to apply the animation */
113
+ animation-timing-function: linear;
114
114
  }
115
115
 
116
116
  @keyframes appear-cool-stuff {
117
- 0% {
118
- transform: translateX(400%);
119
- opacity: 0;
120
- }
121
- 90% {
122
- opacity: .3;
123
- }
124
- 100% {
125
- transform: translateX(0);
126
- opacity: 1;
127
- }
117
+ 0% {
118
+ transform: translateX(400%);
119
+ opacity : 0;
120
+ }
121
+ 90% {
122
+ opacity: .3;
123
+ }
124
+ 100% {
125
+ transform: translateX(0);
126
+ opacity : 1;
127
+ }
128
128
  }
129
129
 
130
130
 
@@ -133,65 +133,83 @@
133
133
  //}
134
134
 
135
135
  .portal-home-maincontainer {
136
- scroll-timeline: --page-scroll block;
136
+ scroll-timeline: --page-scroll block;
137
137
  }
138
138
 
139
139
  @keyframes rotateAnimation {
140
- from { transform: rotate(0deg); }
141
- to { transform: rotate(360deg); }
140
+ from {
141
+ transform: rotate(0deg);
142
+ }
143
+ to {
144
+ transform: rotate(360deg);
145
+ }
142
146
  }
143
147
 
144
148
  @keyframes fade-and-scale-animation {
145
- 0% {
146
- opacity: 1;
147
- transform: scale(1);
148
- }
149
- 12%, 100% {
150
- opacity: 0;
151
- transform: scale(1.5);
152
- }
149
+ 0% {
150
+ opacity : 1;
151
+ transform: scale(1);
152
+ }
153
+ 12%, 100% {
154
+ opacity : 0;
155
+ transform: scale(1.5);
156
+ }
153
157
  }
154
158
 
155
159
  @keyframes fade-in-animation {
156
- from { opacity: 0; right: -10px}
157
- to { opacity: 1; right: 20px;}
160
+ from {
161
+ opacity: 0;
162
+ right : -10px
163
+ }
164
+ to {
165
+ opacity: 1;
166
+ right : 20px;
167
+ }
158
168
  }
169
+
159
170
  @keyframes fade-animation {
160
- from { opacity: 1; right: 20px;}
161
- to { opacity: 0; right: -10px}
171
+ from {
172
+ opacity: 1;
173
+ right : 20px;
174
+ }
175
+ to {
176
+ opacity: 0;
177
+ right : -10px
178
+ }
162
179
  }
163
180
 
164
181
  .button-group {
165
- overflow: visible;
182
+ overflow: visible;
166
183
  }
167
184
 
168
185
  .get-started-button {
169
- opacity: 0;
170
- animation: show-get-started-button 400ms 1300ms linear forwards;
186
+ opacity : 0;
187
+ animation: show-get-started-button 400ms 1300ms linear forwards;
171
188
  }
172
189
 
173
190
  .neo-github {
174
- opacity: 0;
175
- animation: show-github-button 600ms 1150ms linear forwards;
191
+ opacity : 0;
192
+ animation: show-github-button 600ms 1150ms linear forwards;
176
193
  }
177
194
 
178
195
  @keyframes show-get-started-button {
179
- from {
180
- opacity: 0;
181
- transform: translate(70px, 30px);
182
- }
183
- to {
184
- opacity: 1;
185
- transform: translate(0, 0);
186
- }
196
+ from {
197
+ opacity : 0;
198
+ transform: translate(70px, 30px);
199
+ }
200
+ to {
201
+ opacity : 1;
202
+ transform: translate(0, 0);
203
+ }
187
204
  }
205
+
188
206
  @keyframes show-github-button {
189
- from {
190
- opacity: 0;
191
- transform: translate(-70px, 50px);
192
- }
193
- to {
194
- opacity: 1;
195
- transform: translate(0, 0);
196
- }
207
+ from {
208
+ opacity : 0;
209
+ transform: translate(-70px, 50px);
210
+ }
211
+ to {
212
+ opacity : 1;
213
+ transform: translate(0, 0);
214
+ }
197
215
  }
@@ -2,49 +2,4 @@
2
2
  overflow-x : hidden!important;
3
3
  scroll-behavior : smooth;
4
4
  scroll-snap-type: y mandatory;
5
-
6
- .page {
7
- min-height : 100%;
8
- scroll-snap-align: center;
9
-
10
- .neo-h1 {
11
- font-size: min(max(5.5vw, 30px), 64px);
12
- }
13
-
14
- .neo-h2 {
15
- font-size: min(max(3.5vw, 24px), 44px);
16
- }
17
-
18
- .neo-content {
19
- font-size: min(max(2.3vw, 16px), 30px);
20
- }
21
-
22
- .page-live-preview {
23
- margin: 0;
24
- }
25
- }
26
-
27
- .button-group {
28
- display : flex !important;
29
- flex-direction: row-reverse !important;
30
- gap : 8px !important;
31
- }
32
-
33
- .neo-h1 {
34
- font-size : 32px;
35
- font-weight : 600;
36
- text-align : center;
37
- margin-bottom: 1.25em;
38
- }
39
-
40
- .vector {
41
- background-image : url("../../../../../../../resources/images/logo/neo_logo_text_primary.svg");
42
- background-position: center center;
43
- background-repeat : no-repeat;
44
- background-size : contain;
45
- height : 10vW;
46
- margin : 0 0 3rem 0;
47
- max-height : 130px;
48
- width : 100%;
49
- }
50
5
  }
@@ -0,0 +1,27 @@
1
+ .portal-home-content-view {
2
+ min-height : 100%;
3
+ scroll-snap-align: center;
4
+
5
+ .neo-h1 {
6
+ font-size : min(max(5.5vw, 30px), 64px);
7
+ text-align : center;
8
+ margin : 0;
9
+ line-height: 1em;
10
+ }
11
+
12
+ .neo-h2 {
13
+ font-size : min(max(3.5vw, 24px), 44px);
14
+ font-weight: 600;
15
+ text-align : center;
16
+ margin : 0;
17
+ line-height: 1em;
18
+ }
19
+
20
+ .neo-content {
21
+ font-size: min(max(2.3vw, 16px), 30px);
22
+ }
23
+
24
+ .page-live-preview {
25
+ margin: 0;
26
+ }
27
+ }
@@ -0,0 +1,24 @@
1
+ .portal-home-main-neo.portal-home-content-view {
2
+ padding: 3em;
3
+
4
+ .button-group {
5
+ display : flex !important;
6
+ flex-direction: row-reverse !important;
7
+ gap : 8px !important;
8
+ }
9
+
10
+ .neo-h1 {
11
+ margin-bottom: 1.25em;
12
+ }
13
+
14
+ .vector {
15
+ background-image : url("../../../../../../../../resources/images/logo/neo_logo_text_primary.svg");
16
+ background-position: center center;
17
+ background-repeat : no-repeat;
18
+ background-size : contain;
19
+ height : 10vW;
20
+ margin : 0 0 3rem 0;
21
+ max-height : 130px;
22
+ width : 100%;
23
+ }
24
+ }
@@ -7,7 +7,7 @@
7
7
  padding : 8px 2px 8px 8px;
8
8
 
9
9
  .neo-list-container {
10
- padding: 0 3px 3px 3px;
10
+ padding: 3px;
11
11
  }
12
12
 
13
13
  .neo-list-container>.neo-list-item {
@@ -5,7 +5,7 @@
5
5
  padding : .7em;
6
6
  position : absolute;
7
7
  top : 0;
8
- z-index : 10000;
8
+ z-index : 900;
9
9
 
10
10
  &:before {
11
11
  border-bottom: 12px solid transparent;
@@ -1,4 +1,4 @@
1
- .neo-calendars-list {
1
+ .neo-calendars-list.neo-list {
2
2
  .neo-checkboxfield {
3
3
  align-items: center;
4
4
  display : flex;
@@ -30,6 +30,7 @@
30
30
 
31
31
  .neo-dialog {
32
32
  border : 1px solid var(--dialog-border-color);
33
+ box-shadow : var(--dialog-box-shadow);
33
34
  display : flex;
34
35
  flex-direction: column;
35
36
 
@@ -61,12 +62,6 @@
61
62
  }
62
63
  }
63
64
 
64
- &.neo-centered {
65
- left : 50%;
66
- top : 50%;
67
- transform : translate(-50%, -50%);
68
- }
69
-
70
65
  &.neo-panel {
71
66
  .neo-footer-toolbar {
72
67
  border : none;
@@ -1,5 +1,6 @@
1
1
  :root .neo-theme-dark { // .neo-dialog
2
2
  --dialog-border-color: #3c3f41;
3
+ --dialog-box-shadow : 0 5px 10px rgba(0,0,0,.4);
3
4
  --dialog-header-color: floralwhite;
4
5
  --dialog-icon-color : floralwhite;
5
6
  }
@@ -1,5 +1,6 @@
1
1
  :root .neo-theme-light { // .neo-dialog
2
2
  --dialog-border-color: #ddd;
3
+ --dialog-box-shadow : 0 5px 10px rgba(0,0,0,.4);
3
4
  --dialog-header-color: #1c60a0;
4
5
  --dialog-icon-color : #1c60a0;
5
6
  }
@@ -46,17 +46,19 @@
46
46
  font-style: italic;
47
47
  }
48
48
 
49
- code &:not(.hljs) {
50
- background-color: #F0F2F0;
51
- border : 1px solid var(--sem-color-border-subtle);
52
- border-radius : 4px;
53
- color : var(--sem-color-fg-neutral-contrast);
54
- font-family : var(--core-fontfamily-mono);
55
- font-size : var(--core-fontsize-body);
56
- font-weight : var(--core-fontweight-regular);
57
- line-height : var(--core-lineheight-headline);
58
- padding : 2px 0.3em;
59
- font-size : 16px;
49
+ code {
50
+ &:not(.hljs) {
51
+ background-color: #F0F2F0;
52
+ border : 1px solid var(--sem-color-border-subtle);
53
+ border-radius : 4px;
54
+ color : var(--sem-color-fg-neutral-contrast);
55
+ font-family : var(--core-fontfamily-mono);
56
+ font-size : var(--core-fontsize-body);
57
+ font-weight : var(--core-fontweight-regular);
58
+ line-height : var(--core-lineheight-headline);
59
+ padding : 2px 0.3em;
60
+ font-size : 16px;
61
+ }
60
62
  }
61
63
 
62
64
  mark {
@@ -1,5 +1,6 @@
1
1
  :root .neo-theme-neo-light { // .neo-dialog
2
2
  --dialog-border-color: #ddd;
3
+ --dialog-box-shadow : 0 5px 10px rgba(0,0,0,.4);
3
4
  --dialog-header-color: #1c60a0;
4
5
  --dialog-icon-color : #1c60a0;
5
6
  }
@@ -260,12 +260,12 @@ const DefaultConfig = {
260
260
  useVdomWorker: true,
261
261
  /**
262
262
  * buildScripts/injectPackageVersion.mjs will update this value
263
- * @default '6.18.0'
263
+ * @default '6.18.2'
264
264
  * @memberOf! module:Neo
265
265
  * @name config.version
266
266
  * @type String
267
267
  */
268
- version: '6.18.0'
268
+ version: '6.18.2'
269
269
  };
270
270
 
271
271
  Object.assign(DefaultConfig, {
@@ -440,12 +440,13 @@ class Base extends Component {
440
440
  * @protected
441
441
  */
442
442
  changeRoute() {
443
- let me = this;
443
+ let me = this,
444
+ {windowId} = me;
444
445
 
445
446
  if (me.editRoute) {
446
447
  Neo.Main.editRoute(me.route)
447
448
  } else {
448
- Neo.Main.setRoute({value: me.route})
449
+ Neo.Main.setRoute({value: me.route, windowId})
449
450
  }
450
451
  }
451
452
 
@@ -239,7 +239,7 @@ class EditEventContainer extends FormContainer {
239
239
  */
240
240
  onCalendarFieldChange(data) {
241
241
  if (!Neo.isEmpty(data.value)) {
242
- this.record.calendarId = data.record[data.component.store.keyProperty]
242
+ this.record.calendarId = data.value[data.component.store.keyProperty]
243
243
  }
244
244
  }
245
245