jsl-ui 9.29.0 → 10.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/docs/AutoSuggestComponent.md +17 -0
  2. package/docs/ButtonComponent.md +22 -0
  3. package/docs/CheckBoxComponent.md +12 -0
  4. package/docs/DateComponent.md +12 -0
  5. package/docs/DateRangeComponent.md +13 -0
  6. package/docs/DateTimeComponent.md +13 -0
  7. package/docs/DialogComponent.md +15 -0
  8. package/docs/ExpanderComponent.md +13 -0
  9. package/docs/FormComponent.md +15 -0
  10. package/docs/FormFieldComponent.md +15 -0
  11. package/docs/GridComponent.md +19 -0
  12. package/docs/InputComponent.md +15 -0
  13. package/docs/IntervalComponent.md +13 -0
  14. package/docs/LoadingComponent.md +12 -0
  15. package/docs/NavigationComponent.md +17 -0
  16. package/docs/Notification.md +14 -0
  17. package/docs/NotificationComponent.md +13 -0
  18. package/docs/NumberComponent.md +12 -0
  19. package/docs/OverlayComponent.md +12 -0
  20. package/docs/ProgressComponent.md +12 -0
  21. package/docs/README.md +24 -0
  22. package/docs/RibbonMenuComponent.md +14 -0
  23. package/docs/SelectComponent.md +15 -0
  24. package/docs/SplitterComponent.md +14 -0
  25. package/docs/StackPanelComponent.md +13 -0
  26. package/docs/TabsComponent.md +16 -0
  27. package/docs/TimeComponent.md +13 -0
  28. package/docs/TreeViewComponent.md +16 -0
  29. package/examples/showcase/checks-and-expanders.ts +163 -0
  30. package/examples/showcase/cultures.ts +39 -0
  31. package/examples/showcase/dates.ts +182 -0
  32. package/examples/showcase/dialogs.ts +184 -0
  33. package/examples/showcase/feedback-and-navigation.ts +174 -0
  34. package/examples/showcase/fields.ts +178 -0
  35. package/examples/showcase/fonts/Jost-Variable.ttf +0 -0
  36. package/examples/showcase/fonts/OFL-Jost.txt +93 -0
  37. package/examples/showcase/grids.ts +216 -0
  38. package/examples/showcase/index.html +60 -0
  39. package/examples/showcase/layout-and-navigation.ts +47 -0
  40. package/examples/showcase/nivona.css +98 -0
  41. package/examples/showcase/package.json +10 -0
  42. package/examples/showcase/selects.ts +158 -0
  43. package/examples/showcase/showcase.css +231 -0
  44. package/examples/showcase/showcase.ts +220 -0
  45. package/examples/showcase/tabs.ts +161 -0
  46. package/examples/showcase/themes.css +83 -0
  47. package/examples/showcase/themes.ts +54 -0
  48. package/lib/components/IntervalComponent.d.ts +5 -0
  49. package/lib/components/IntervalComponent.js +29 -13
  50. package/lib/components/auto-suggest/AutoSuggestComponent.d.ts +11 -9
  51. package/lib/components/auto-suggest/AutoSuggestComponent.js +25 -38
  52. package/lib/components/button/ButtonComponent.d.ts +30 -1
  53. package/lib/components/button/ButtonComponent.js +85 -4
  54. package/lib/components/checkbox/CheckBoxComponent.d.ts +11 -1
  55. package/lib/components/checkbox/CheckBoxComponent.js +66 -56
  56. package/lib/components/checkbox/CheckBoxStyle.scss +72 -85
  57. package/lib/components/date/DateComponent.d.ts +10 -0
  58. package/lib/components/date/DateComponent.js +92 -44
  59. package/lib/components/date-range/DateRangeComponent.d.ts +14 -3
  60. package/lib/components/date-range/DateRangeComponent.js +96 -86
  61. package/lib/components/date-range/DateRangeStyle.scss +35 -11
  62. package/lib/components/date-time/DateTimeComponent.d.ts +8 -0
  63. package/lib/components/date-time/DateTimeComponent.js +64 -23
  64. package/lib/components/date-time/DateTimeStyle.scss +10 -7
  65. package/lib/components/dialog/DialogComponent.d.ts +21 -7
  66. package/lib/components/dialog/DialogComponent.js +179 -122
  67. package/lib/components/expander/ExpanderComponent.d.ts +15 -1
  68. package/lib/components/expander/ExpanderComponent.js +85 -64
  69. package/lib/components/expander/ExpanderStyle.scss +61 -47
  70. package/lib/components/form-field/FormFieldComponent.d.ts +45 -15
  71. package/lib/components/form-field/FormFieldComponent.js +249 -96
  72. package/lib/components/form-field/FormFieldStyle.scss +36 -87
  73. package/lib/components/form-field/create-control.d.ts +7 -0
  74. package/lib/components/form-field/create-control.js +48 -0
  75. package/lib/components/input/InputComponent.d.ts +18 -1
  76. package/lib/components/input/InputComponent.js +68 -93
  77. package/lib/components/loading/LoadingComponent.d.ts +9 -2
  78. package/lib/components/loading/LoadingComponent.js +13 -12
  79. package/lib/components/loading/LoadingStyle.css +19 -29
  80. package/lib/components/navigation/NavigationComponent.d.ts +34 -10
  81. package/lib/components/navigation/NavigationComponent.js +261 -33
  82. package/lib/components/navigation/NavigationStyle.scss +62 -226
  83. package/lib/components/notification/Notification.d.ts +37 -4
  84. package/lib/components/notification/Notification.js +160 -41
  85. package/lib/components/notification/Notification.scss +103 -19
  86. package/lib/components/number/NumberComponent.d.ts +16 -2
  87. package/lib/components/number/NumberComponent.js +54 -53
  88. package/lib/components/overlay/OverlayComponent.d.ts +13 -7
  89. package/lib/components/overlay/OverlayComponent.js +46 -114
  90. package/lib/components/overlay/overlay.css +18 -57
  91. package/lib/components/progress/ProgressComponent.d.ts +1 -0
  92. package/lib/components/progress/ProgressComponent.js +6 -6
  93. package/lib/components/progress/ProgressStyle.scss +5 -15
  94. package/lib/components/ribbon-menu/RibbonMenuComponent.js +2 -2
  95. package/lib/components/ribbon-menu/RibbonMenuStyle.scss +6 -76
  96. package/lib/components/select/SelectComponent.d.ts +33 -3
  97. package/lib/components/select/SelectComponent.js +312 -278
  98. package/lib/components/select/SelectDDAreaComponent.d.ts +13 -7
  99. package/lib/components/select/SelectDDAreaComponent.js +215 -256
  100. package/lib/components/select/SelectStyle.scss +204 -186
  101. package/lib/components/slider/nouislider.css +40 -54
  102. package/lib/components/stack-panel/SplitterComponent.d.ts +19 -3
  103. package/lib/components/stack-panel/SplitterComponent.js +94 -111
  104. package/lib/components/stack-panel/SplitterStyle.scss +9 -45
  105. package/lib/components/stack-panel/StackPanelComponent.js +3 -3
  106. package/lib/components/stack-panel/StackPanelStyle.scss +10 -52
  107. package/lib/components/tabs/TabsComponent.d.ts +17 -1
  108. package/lib/components/tabs/TabsComponent.js +247 -123
  109. package/lib/components/tabs/TabsStyle.scss +138 -75
  110. package/lib/components/time/TimeComponent.d.ts +5 -0
  111. package/lib/components/time/TimeComponent.js +61 -69
  112. package/lib/components/time/TimeComponent.scss +4 -4
  113. package/lib/components/tree-view/TreeViewComponent.d.ts +10 -4
  114. package/lib/components/tree-view/TreeViewComponent.js +65 -32
  115. package/lib/components/tree-view/TreeViewStyle.scss +12 -96
  116. package/lib/core/jq.js +11 -8
  117. package/lib/grid/slick-default-theme.css +133 -31
  118. package/lib/grid/slick.creator.js +23 -5
  119. package/lib/grid/slick.formatters.js +4 -3
  120. package/lib/grid/slick.grid.css +38 -26
  121. package/lib/grid/slick.grid.d.ts +1 -0
  122. package/lib/grid/slick.grid.js +2 -3
  123. package/lib/grid.css +514 -116
  124. package/lib/index.css +2522 -1023
  125. package/lib/index.css.map +1 -1
  126. package/lib/index.d.ts +1 -0
  127. package/lib/index.js +1 -1
  128. package/lib/index.js.map +1 -1
  129. package/lib/interaction/moveable.d.ts +1 -0
  130. package/lib/interaction/moveable.js +8 -0
  131. package/lib/interaction/resizable.d.ts +1 -0
  132. package/lib/interaction/resizable.js +9 -0
  133. package/lib/ui/auto.suggest.css +31 -14
  134. package/lib/ui/auto.suggest.d.ts +1 -0
  135. package/lib/ui/auto.suggest.js +88 -18
  136. package/lib/ui/base.css +2 -48
  137. package/lib/ui/button.css +147 -0
  138. package/lib/ui/date-input.css +11 -0
  139. package/lib/ui/date.picker/css/tiny-date-picker.css +124 -325
  140. package/lib/ui/date.picker/date-picker-options.js +4 -3
  141. package/lib/ui/date.picker/lib/date-manip.js +9 -0
  142. package/lib/ui/date.picker/mode/base-mode.d.ts +2 -1
  143. package/lib/ui/date.picker/mode/base-mode.js +112 -22
  144. package/lib/ui/date.picker/mode/dropdown-mode.d.ts +2 -4
  145. package/lib/ui/date.picker/mode/dropdown-mode.js +29 -42
  146. package/lib/ui/date.picker/mode/index.d.ts +2 -1
  147. package/lib/ui/date.picker/mode/modal-mode.d.ts +2 -1
  148. package/lib/ui/date.picker/mode/modal-mode.js +4 -2
  149. package/lib/ui/date.picker/mode/permanent-mode.d.ts +2 -1
  150. package/lib/ui/date.picker/views/day-picker.js +24 -15
  151. package/lib/ui/date.picker/views/month-picker.js +1 -1
  152. package/lib/ui/date.picker/views/year-picker.js +3 -2
  153. package/lib/ui/date.picker.d.ts +2 -1
  154. package/lib/ui/dialog.css +144 -108
  155. package/lib/ui/dialog.d.ts +19 -1
  156. package/lib/ui/dialog.js +178 -60
  157. package/lib/ui/input.css +35 -0
  158. package/lib/ui/number.input.js +50 -37
  159. package/lib/ui/theme.css +28 -0
  160. package/package.json +13 -8
  161. package/lib/components/drop-down/DropDownComponent.d.ts +0 -27
  162. package/lib/components/drop-down/DropDownComponent.js +0 -60
  163. package/lib/components/expander/OldExpanderStyle.scss +0 -37
  164. package/lib/ui/drop.down.d.ts +0 -52
  165. package/lib/ui/drop.down.js +0 -2112
package/lib/grid.css CHANGED
@@ -1,5 +1,5 @@
1
1
  .slick-header.ui-state-default, .slick-headerrow.ui-state-default, .slick-footerrow.ui-state-default, .slick-top-panel-scroller.ui-state-default, .slick-group-header.ui-state-default {
2
- background: #fff;
2
+ background: var(--jsl-color-surface);
3
3
  width: 100%;
4
4
  position: relative;
5
5
  overflow: auto;
@@ -31,9 +31,9 @@
31
31
 
32
32
  .slick-header-column.ui-state-default, .slick-group-header-column.ui-state-default {
33
33
  text-overflow: ellipsis;
34
+ border-right: 1px solid var(--jsl-color-border-subtle);
35
+ border-top: 1px solid var(--jsl-color-border-subtle);
34
36
  float: left;
35
- border-top: 1px solid silver;
36
- border-right: 1px solid silver;
37
37
  height: 20px;
38
38
  margin: 0;
39
39
  padding: 4px;
@@ -45,15 +45,26 @@
45
45
  border-left: 0 !important;
46
46
  }
47
47
 
48
+ .slick-header-column.ui-state-default {
49
+ height: var(--jsl-grid-header-height, 26px);
50
+ line-height: var(--jsl-grid-header-height, 26px);
51
+ }
52
+
48
53
  .slick-footerrow-column.ui-state-default {
49
54
  text-overflow: ellipsis;
55
+ border-right: 1px solid var(--jsl-color-border-subtle);
50
56
  float: left;
51
57
  vertical-align: middle;
52
- border: 0;
53
- border-right: 1px solid silver;
58
+ border-top: 0;
59
+ border-bottom: 0;
60
+ border-left: 0;
61
+ align-content: center;
62
+ height: auto;
54
63
  margin: 0;
55
64
  padding: 4px;
56
65
  line-height: 20px;
66
+ top: 0;
67
+ bottom: 0;
57
68
  }
58
69
 
59
70
  .slick-headerrow-column.ui-state-default, .slick-footerrow-column.ui-state-default {
@@ -61,7 +72,7 @@
61
72
  }
62
73
 
63
74
  .slick-header-column-sorted {
64
- font-style: italic;
75
+ font-style: inherit;
65
76
  }
66
77
 
67
78
  .slick-sort-indicator {
@@ -74,9 +85,9 @@
74
85
 
75
86
  .slick-sort-indicator-numbered {
76
87
  float: left;
77
- color: #6190cd;
78
88
  width: 8px;
79
89
  height: 5px;
90
+ color: var(--jsl-color-text-secondary);
80
91
  margin-top: 0;
81
92
  margin-left: 4px;
82
93
  font-style: normal;
@@ -96,25 +107,26 @@
96
107
  }
97
108
 
98
109
  .slick-cell, .slick-headerrow-column, .slick-footerrow-column {
110
+ border: 1px solid #0000;
111
+ border-right: 1px dotted var(--jsl-color-border-subtle);
99
112
  text-overflow: ellipsis;
100
113
  vertical-align: middle;
101
114
  z-index: 1;
102
115
  white-space: nowrap;
103
116
  cursor: default;
104
- border: 1px solid #0000;
105
- border-right: 1px dotted silver;
106
117
  margin: 0;
107
- padding: 1px 2px 2px 1px;
118
+ padding: 1px 2px 1px 1px;
108
119
  position: absolute;
109
120
  overflow: hidden;
121
+ box-sizing: content-box !important;
110
122
  }
111
123
 
112
124
  .slick-headerrow-column {
113
- border-bottom-color: silver;
125
+ border-bottom-color: var(--jsl-color-border-subtle);
114
126
  }
115
127
 
116
128
  .slick-footerrow-column {
117
- border-top-color: silver;
129
+ border-top-color: var(--jsl-color-border-subtle);
118
130
  }
119
131
 
120
132
  .slick-group-toggle {
@@ -122,13 +134,13 @@
122
134
  }
123
135
 
124
136
  .slick-cell.highlighted {
137
+ background: var(--jsl-color-surface-selected);
125
138
  -o-transition: all .5s;
126
- background: #00f3;
127
139
  transition: all .5s;
128
140
  }
129
141
 
130
142
  .slick-cell.flashing {
131
- border: 1px solid red !important;
143
+ border: 1px solid var(--jsl-color-danger) !important;
132
144
  }
133
145
 
134
146
  .slick-cell.editable {
@@ -141,24 +153,24 @@
141
153
  }
142
154
 
143
155
  .slick-reorder-proxy {
156
+ background: var(--jsl-color-accent);
144
157
  opacity: .15;
145
- filter: alpha(opacity= 15);
158
+ filter: alpha(opacity = 15);
146
159
  cursor: move;
147
- background: #00f;
148
160
  display: inline-block;
149
161
  }
150
162
 
151
163
  .slick-reorder-guide {
164
+ background: var(--jsl-color-accent);
152
165
  opacity: .7;
153
166
  height: 2px;
154
- filter: alpha(opacity= 70);
155
- background: #00f;
167
+ filter: alpha(opacity = 70);
156
168
  display: inline-block;
157
169
  }
158
170
 
159
171
  .slick-selection {
160
172
  z-index: 10;
161
- border: 2px dashed #000;
173
+ border: 2px dashed var(--jsl-color-focus);
162
174
  position: absolute;
163
175
  }
164
176
 
@@ -183,7 +195,7 @@
183
195
  }
184
196
 
185
197
  .slick-viewport {
186
- background: #fff;
198
+ background: var(--jsl-color-surface);
187
199
  outline: 0;
188
200
  width: 100%;
189
201
  position: relative;
@@ -215,7 +227,7 @@ input.editor-text, textarea.editor-text {
215
227
 
216
228
  .slickgrid {
217
229
  box-sizing: border-box;
218
- border: 1px solid #b0b0b0;
230
+ border: solid 1px var(--jsl-color-border);
219
231
  border-radius: 3px;
220
232
  }
221
233
 
@@ -226,8 +238,8 @@ input.editor-text, textarea.editor-text {
226
238
  }
227
239
 
228
240
  .slick-ghost-content {
229
- background: #c8c8c880;
230
- border: 2px solid #bbb;
241
+ border: solid 2px var(--jsl-color-border);
242
+ background: var(--jsl-color-surface-selected);
231
243
  position: absolute;
232
244
  left: 0;
233
245
  right: 0;
@@ -238,8 +250,8 @@ input.editor-text, textarea.editor-text {
238
250
  }
239
251
 
240
252
  .slick-filtered-header {
241
- color: #3b99ff;
242
- background: #e7e7e7;
253
+ color: var(--jsl-color-accent);
254
+ background: var(--jsl-color-surface-selected);
243
255
  }
244
256
 
245
257
  .slick-preheader-panel .slick-column-name {
@@ -266,77 +278,110 @@ input.editor-text, textarea.editor-text {
266
278
  }
267
279
 
268
280
  .slick-header-columns {
269
- border-bottom: 2px solid silver;
281
+ border-bottom: 2px solid var(--jsl-color-border-subtle);
282
+ background: var(--jsl-color-surface-subtle);
270
283
  }
271
284
 
272
285
  .slick-header-column {
273
- text-align: center;
274
- border-right: 1px solid silver;
275
- font-weight: bold;
286
+ border-right: 1px solid var(--jsl-color-border-subtle);
287
+ text-align: inherit;
288
+ font-weight: 600;
276
289
  }
277
290
 
278
291
  .slick-header-column:hover, .slick-header-column-active {
279
- color: #fff;
280
- background: #3b99ff;
292
+ background: var(--jsl-color-surface-hover);
293
+ color: var(--jsl-color-text);
281
294
  }
282
295
 
283
296
  .slick-header-column > .slick-header-menubutton:hover {
284
- background-color: #0000004d;
297
+ background-color: var(--jsl-color-surface-selected);
285
298
  }
286
299
 
287
300
  .slick-headerrow {
288
- background: #fafafa;
301
+ background: var(--jsl-color-surface-subtle);
289
302
  }
290
303
 
291
304
  .slick-headerrow-column {
292
- background: #fafafa;
305
+ background: var(--jsl-color-surface-subtle);
293
306
  border-bottom: 0;
294
307
  height: 100%;
295
308
  }
296
309
 
297
310
  .slick-row {
298
- background: #fff;
311
+ background: var(--jsl-color-surface);
312
+ line-height: inherit;
299
313
  border: 0;
300
- line-height: 26px;
314
+ align-items: center;
315
+ display: flex;
301
316
  position: absolute;
302
317
  }
303
318
 
304
319
  .slick-row.selected {
305
320
  z-index: 10;
306
- background: #dfe8f6;
321
+ background: var(--jsl-color-surface-selected);
307
322
  }
308
323
 
309
324
  .slick-cell {
325
+ align-content: center;
310
326
  padding-left: 4px;
311
327
  padding-right: 4px;
312
328
  }
313
329
 
330
+ .slick-cell.editable .select-comp {
331
+ max-width: none;
332
+ height: 100%;
333
+ min-height: 0;
334
+ display: flex;
335
+ }
336
+
337
+ .slick-cell.editable .select-comp > .sel-expander {
338
+ border-radius: .25rem;
339
+ height: 100%;
340
+ min-height: 0;
341
+ padding: 0 .5rem;
342
+ }
343
+
344
+ .slick-cell.editable .select-comp.multiple > .sel-expander {
345
+ padding-top: 0;
346
+ padding-bottom: 0;
347
+ }
348
+
349
+ .slick-cell.editable .select-comp .sel-chip {
350
+ padding: .0625rem .375rem;
351
+ font-size: .6875rem;
352
+ }
353
+
314
354
  .slick-group {
315
- border-bottom: 2px solid silver;
355
+ border-bottom: 2px solid var(--jsl-color-border-subtle);
316
356
  }
317
357
 
318
358
  .slick-group .slick-cell {
319
- background: #d4e4ec;
359
+ background: var(--jsl-color-surface-selected);
360
+ align-items: center;
361
+ display: flex;
320
362
  }
321
363
 
322
364
  .slick-group-toggle {
323
365
  vertical-align: middle;
366
+ flex-shrink: 0;
324
367
  width: 20px;
325
368
  height: 20px;
326
369
  margin-right: 5px;
327
370
  }
328
371
 
329
372
  .slick-group-toggle.expanded {
330
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 122.88 119.8'%3E%3Cpath d='M23.59,0h75.7a23.63,23.63,0,0,1,23.59,23.59V96.21A23.64,23.64,0,0,1,99.29,119.8H23.59a23.53,23.53,0,0,1-16.67-6.93l-.38-.42A23.49,23.49,0,0,1,0,96.21V23.59A23.63,23.63,0,0,1,23.59,0Zm59.7,53.51a6.39,6.39,0,1,1,0,12.77H39.59a6.39,6.39,0,1,1,0-12.77Zm16-40.74H23.59A10.86,10.86,0,0,0,12.77,23.59V96.21a10.77,10.77,0,0,0,2.9,7.37l.28.26A10.76,10.76,0,0,0,23.59,107h75.7a10.87,10.87,0,0,0,10.82-10.82V23.59A10.86,10.86,0,0,0,99.29,12.77Z'/%3E%3C/svg%3E") center no-repeat;
373
+ background-color: currentColor;
374
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 122.88 119.8'%3E%3Cpath d='M23.59,0h75.7a23.63,23.63,0,0,1,23.59,23.59V96.21A23.64,23.64,0,0,1,99.29,119.8H23.59a23.53,23.53,0,0,1-16.67-6.93l-.38-.42A23.49,23.49,0,0,1,0,96.21V23.59A23.63,23.63,0,0,1,23.59,0Zm59.7,53.51a6.39,6.39,0,1,1,0,12.77H39.59a6.39,6.39,0,1,1,0-12.77Zm16-40.74H23.59A10.86,10.86,0,0,0,12.77,23.59V96.21a10.77,10.77,0,0,0,2.9,7.37l.28.26A10.76,10.76,0,0,0,23.59,107h75.7a10.87,10.87,0,0,0,10.82-10.82V23.59A10.86,10.86,0,0,0,99.29,12.77Z'/%3E%3C/svg%3E") center / contain no-repeat;
331
375
  }
332
376
 
333
377
  .slick-group-toggle.collapsed {
334
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 122.88 119.72' style='enable-background:new 0 0 122.88 119.72' xml:space='preserve'%3E%3Cg%3E%3Cpath d='M22.72,0h77.45c6.25,0,11.93,2.56,16.05,6.67c4.11,4.11,6.67,9.79,6.67,16.05v74.29c0,6.25-2.56,11.93-6.67,16.05 l-0.32,0.29c-4.09,3.94-9.64,6.38-15.73,6.38H22.72c-6.25,0-11.93-2.56-16.05-6.67l-0.3-0.32C2.43,108.64,0,103.09,0,97.01V22.71 c0-6.25,2.55-11.93,6.67-16.05C10.78,2.55,16.46,0,22.72,0L22.72,0z M55.47,38.34c0-3.3,2.67-5.97,5.97-5.97 c3.3,0,5.97,2.67,5.97,5.97v15.55h15.55c3.3,0,5.97,2.67,5.97,5.97c0,3.3-2.67,5.97-5.97,5.97H67.41v15.55 c0,3.3-2.67,5.97-5.97,5.97c-3.3,0-5.97-2.67-5.97-5.97V65.83H39.91c-3.3,0-5.97-2.67-5.97-5.97c0-3.3,2.67-5.97,5.97-5.97h15.55 V38.34L55.47,38.34z M100.16,10.24H22.72c-3.43,0-6.54,1.41-8.81,3.67c-2.26,2.26-3.67,5.38-3.67,8.81v74.29 c0,3.33,1.31,6.35,3.43,8.59l0.24,0.22c2.26,2.26,5.38,3.67,8.81,3.67h77.45c3.32,0,6.35-1.31,8.59-3.44l0.21-0.23 c2.26-2.26,3.67-5.38,3.67-8.81V22.71c0-3.42-1.41-6.54-3.67-8.81C106.71,11.65,103.59,10.24,100.16,10.24L100.16,10.24z'/%3E%3C/g%3E%3C/svg%3E") center no-repeat;
378
+ background-color: currentColor;
379
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 122.88 119.72' style='enable-background:new 0 0 122.88 119.72' xml:space='preserve'%3E%3Cg%3E%3Cpath d='M22.72,0h77.45c6.25,0,11.93,2.56,16.05,6.67c4.11,4.11,6.67,9.79,6.67,16.05v74.29c0,6.25-2.56,11.93-6.67,16.05 l-0.32,0.29c-4.09,3.94-9.64,6.38-15.73,6.38H22.72c-6.25,0-11.93-2.56-16.05-6.67l-0.3-0.32C2.43,108.64,0,103.09,0,97.01V22.71 c0-6.25,2.55-11.93,6.67-16.05C10.78,2.55,16.46,0,22.72,0L22.72,0z M55.47,38.34c0-3.3,2.67-5.97,5.97-5.97 c3.3,0,5.97,2.67,5.97,5.97v15.55h15.55c3.3,0,5.97,2.67,5.97,5.97c0,3.3-2.67,5.97-5.97,5.97H67.41v15.55 c0,3.3-2.67,5.97-5.97,5.97c-3.3,0-5.97-2.67-5.97-5.97V65.83H39.91c-3.3,0-5.97-2.67-5.97-5.97c0-3.3,2.67-5.97,5.97-5.97h15.55 V38.34L55.47,38.34z M100.16,10.24H22.72c-3.43,0-6.54,1.41-8.81,3.67c-2.26,2.26-3.67,5.38-3.67,8.81v74.29 c0,3.33,1.31,6.35,3.43,8.59l0.24,0.22c2.26,2.26,5.38,3.67,8.81,3.67h77.45c3.32,0,6.35-1.31,8.59-3.44l0.21-0.23 c2.26-2.26,3.67-5.38,3.67-8.81V22.71c0-3.42-1.41-6.54-3.67-8.81C106.71,11.65,103.59,10.24,100.16,10.24L100.16,10.24z'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
335
380
  }
336
381
 
337
382
  .slick-group-totals {
338
- color: gray;
339
- background: #fff;
383
+ color: var(--jsl-color-text-secondary);
384
+ background: var(--jsl-color-surface);
340
385
  }
341
386
 
342
387
  .slick-group-select-checkbox {
@@ -347,40 +392,40 @@ input.editor-text, textarea.editor-text {
347
392
  }
348
393
 
349
394
  .slick-cell.selected {
350
- background-color: #cde6f7;
395
+ background-color: var(--jsl-color-surface-selected);
351
396
  }
352
397
 
353
398
  .slick-cell.active {
399
+ border-color: var(--jsl-color-focus);
354
400
  border-style: solid;
355
- border-color: #017dbe;
356
401
  }
357
402
 
358
403
  .slick-sortable-placeholder {
359
- background: silver !important;
404
+ background: var(--jsl-color-surface-selected) !important;
360
405
  }
361
406
 
362
407
  .slick-row.odd {
363
- background: #ededed;
408
+ background: var(--jsl-color-surface-subtle);
364
409
  }
365
410
 
366
411
  .slick-row.ui-state-active {
367
- background: #f5f7d7;
412
+ background: var(--jsl-color-surface-selected);
368
413
  }
369
414
 
370
415
  .slick-row.loading {
371
416
  opacity: .5;
372
- filter: alpha(opacity= 50);
417
+ filter: alpha(opacity = 50);
373
418
  }
374
419
 
375
420
  .slick-cell.invalid {
376
- border-color: red;
421
+ border-color: var(--jsl-color-danger);
377
422
  animation-name: slickgrid-invalid-hilite;
378
423
  animation-duration: .2s;
379
424
  }
380
425
 
381
426
  @keyframes slickgrid-invalid-hilite {
382
427
  from {
383
- box-shadow: 0 0 6px red;
428
+ box-shadow: 0 0 6px var(--jsl-color-danger);
384
429
  }
385
430
 
386
431
  to {
@@ -389,8 +434,108 @@ input.editor-text, textarea.editor-text {
389
434
  }
390
435
 
391
436
  .new-row .slick-cell {
392
- background: #3b99ff55;
393
- border-top: 1px solid #aaa;
437
+ border-top: solid 1px var(--jsl-color-border);
438
+ background: var(--jsl-color-surface-selected);
439
+ }
440
+
441
+ .slickgrid {
442
+ font: inherit;
443
+ color: var(--jsl-color-text);
444
+ background: var(--jsl-color-surface);
445
+ }
446
+
447
+ .slick-row:not(.slick-group):not(.slick-group-totals) > .slick-cell:not(.active):not(.invalid):not(.flashing) {
448
+ border-right-color: #0000;
449
+ }
450
+
451
+ .slickgrid .right {
452
+ text-align: right;
453
+ }
454
+
455
+ .slickgrid .center {
456
+ text-align: center;
457
+ }
458
+
459
+ .slickgrid .tabular-nums {
460
+ font-variant-numeric: tabular-nums;
461
+ }
462
+
463
+ .slick-header-column .slick-column-name {
464
+ float: none;
465
+ text-overflow: ellipsis;
466
+ vertical-align: top;
467
+ max-width: 100%;
468
+ margin-bottom: 0;
469
+ display: inline-block;
470
+ overflow: hidden;
471
+ }
472
+
473
+ .slick-header-sortable .slick-column-name {
474
+ max-width: calc(100% - 1.25rem);
475
+ }
476
+
477
+ .slick-header-column .slick-sort-indicator, .slick-header-column .slick-sort-indicator-numbered {
478
+ float: none;
479
+ vertical-align: top;
480
+ height: var(--jsl-grid-header-height, 26px);
481
+ line-height: var(--jsl-grid-header-height, 26px);
482
+ color: var(--jsl-color-accent);
483
+ margin: 0 0 0 .375rem;
484
+ display: inline-block;
485
+ position: relative;
486
+ }
487
+
488
+ .slick-header-column .slick-sort-indicator {
489
+ width: .65rem;
490
+ }
491
+
492
+ .slick-header-column.right .slick-sort-indicator, .slick-header-column.right .slick-sort-indicator-numbered {
493
+ float: left;
494
+ margin-left: 0;
495
+ margin-right: .375rem;
496
+ }
497
+
498
+ .slick-sort-indicator-asc:before, .slick-sort-indicator-desc:before {
499
+ content: "";
500
+ background: currentColor;
501
+ width: 8px;
502
+ height: 5px;
503
+ position: absolute;
504
+ top: 50%;
505
+ left: 0;
506
+ transform: translateY(-50%);
507
+ }
508
+
509
+ .slick-sort-indicator-asc:before {
510
+ clip-path: polygon(50% 0, 100% 100%, 0 100%);
511
+ }
512
+
513
+ .slick-sort-indicator-desc:before {
514
+ clip-path: polygon(0 0, 100% 0, 50% 100%);
515
+ }
516
+
517
+ .slick-header-column .slick-sort-indicator-numbered {
518
+ width: auto;
519
+ min-width: .65rem;
520
+ font-size: .8em;
521
+ }
522
+
523
+ .slick-header-column .slick-sort-indicator.slick-sort-indicator-numbered {
524
+ min-width: 1.5rem;
525
+ padding-left: .75rem;
526
+ }
527
+
528
+ .slickgrid:has(.slick-header-column.frozen) > .slick-pane-left:after {
529
+ content: "";
530
+ background: var(--jsl-color-border);
531
+ pointer-events: none;
532
+ z-index: 20;
533
+ width: 1px;
534
+ position: absolute;
535
+ top: 0;
536
+ bottom: 0;
537
+ right: 0;
538
+ box-shadow: -2px 0 4px #00000014;
394
539
  }
395
540
 
396
541
  .resizable {
@@ -547,105 +692,358 @@ input.editor-text, textarea.editor-text {
547
692
  width: 15px;
548
693
  }
549
694
 
550
- .jsl-dialog {
551
- z-index: 2002;
552
- pointer-events: all;
553
- background: #fff;
554
- border: 2px solid #ddd;
555
- border-radius: .8rem;
556
- position: relative;
557
- top: 50%;
558
- left: 50%;
559
- transform: translate(-50%, -50%);
560
- }
561
-
562
- .jsl-dialog .jsl-button {
563
- vertical-align: middle;
564
- cursor: pointer;
695
+ :where(:root) {
696
+ --jsl-color-canvas: #f7f7f8;
697
+ --jsl-color-surface: #fff;
698
+ --jsl-color-surface-subtle: #fafafa;
699
+ --jsl-color-surface-hover: #f0f0f2;
700
+ --jsl-color-surface-selected: #e8e8eb;
701
+ --jsl-color-border: #d4d4d8;
702
+ --jsl-color-border-subtle: #e4e4e7;
703
+ --jsl-color-text: #27272a;
704
+ --jsl-color-text-secondary: #52525b;
705
+ --jsl-color-text-muted: #71717a;
706
+ --jsl-color-accent: #3f3f46;
707
+ --jsl-color-accent-hover: #27272a;
708
+ --jsl-color-accent-active: #18181b;
709
+ --jsl-color-on-accent: #fff;
710
+ --jsl-color-focus: #52525b;
711
+ --jsl-color-danger: #b42318;
712
+ --jsl-color-success: #15803d;
713
+ --jsl-color-warning: #b45309;
714
+ --jsl-color-info: #2563eb;
715
+ --jsl-color-disabled-surface: #f4f4f5;
716
+ --jsl-color-disabled-text: #71717a;
717
+ --jsl-color-overlay: #18181b73;
718
+ --jsl-shadow-dialog: 0 24px 64px #0000002e, 0 4px 16px #00000014;
719
+ }
720
+
721
+ .jsl-button, .jsl-button:any-link {
722
+ --jsl-button-height: 2rem;
723
+ --jsl-button-padding: .875rem;
565
724
  box-sizing: border-box;
566
- letter-spacing: .1rem;
725
+ height: var(--jsl-button-height);
726
+ padding: 0 var(--jsl-button-padding);
727
+ vertical-align: middle;
728
+ border-radius: var(--jsl-button-radius, .375rem);
729
+ background: var(--jsl-button-primary, var(--jsl-color-accent));
730
+ color: var(--jsl-button-on-primary, var(--jsl-color-on-accent));
731
+ font: inherit;
732
+ letter-spacing: normal;
567
733
  text-align: center;
734
+ text-transform: none;
568
735
  white-space: nowrap;
569
- border-radius: .3rem;
570
- height: 2rem;
571
- padding: 0 1rem;
572
- line-height: 2rem;
736
+ cursor: pointer;
737
+ border: 1px solid #0000;
738
+ justify-content: center;
739
+ align-items: center;
740
+ gap: .5rem;
741
+ margin: 0;
742
+ font-size: .875rem;
743
+ font-weight: 500;
744
+ line-height: 1.25;
573
745
  text-decoration: none;
574
- display: inline-block;
746
+ transition: background-color .12s, border-color .12s, box-shadow .12s;
747
+ display: inline-flex;
748
+ position: relative;
575
749
  }
576
750
 
577
- .dlg-close-btn {
578
- color: #555;
579
- box-sizing: border-box;
580
- cursor: pointer;
581
- background: #d8d8d8;
582
- border-top-right-radius: .8rem;
583
- width: 2.5rem;
584
- font-size: 2rem;
585
- font-weight: bold;
586
- line-height: 2.8rem;
751
+ .jsl-button, button.jsl-button[type] {
752
+ appearance: none;
753
+ }
754
+
755
+ .jsl-button:where(:hover), .jsl-button:any-link:where(:hover) {
756
+ background: var(--jsl-button-primary-hover, var(--jsl-color-accent-hover));
757
+ }
758
+
759
+ .jsl-button:where(:active, .active, [aria-pressed="true"]), .jsl-button:any-link:where(:active, .active, [aria-pressed="true"]) {
760
+ background: var(--jsl-button-primary-active, var(--jsl-color-accent-active));
761
+ box-shadow: inset 0 0 0 1px;
762
+ }
763
+
764
+ .jsl-button.jsl-button-outline {
765
+ border-color: var(--jsl-button-border, var(--jsl-color-border));
766
+ background: var(--jsl-button-surface, var(--jsl-color-surface));
767
+ color: var(--jsl-button-text, var(--jsl-color-text));
768
+ }
769
+
770
+ .jsl-button.jsl-button-ghost {
771
+ color: var(--jsl-button-text, var(--jsl-color-text));
772
+ background: none;
773
+ }
774
+
775
+ .jsl-button.jsl-button-outline:where(:hover), .jsl-button.jsl-button-ghost:where(:hover) {
776
+ background: var(--jsl-button-hover-surface, var(--jsl-color-surface-hover));
777
+ border-color: var(--jsl-button-border, var(--jsl-color-border));
778
+ }
779
+
780
+ .jsl-button.jsl-button-outline:where(:active, .active, [aria-pressed="true"]), .jsl-button.jsl-button-ghost:where(:active, .active, [aria-pressed="true"]) {
781
+ background: var(--jsl-button-selected-surface, var(--jsl-color-surface-selected));
782
+ border-color: var(--jsl-button-primary, var(--jsl-color-accent));
783
+ color: var(--jsl-button-selected-text, var(--jsl-color-text));
784
+ box-shadow: none;
785
+ }
786
+
787
+ .jsl-button:focus-visible {
788
+ outline: 2px solid var(--jsl-button-focus, var(--jsl-color-focus));
789
+ outline-offset: 3px;
790
+ }
791
+
792
+ .jsl-button.jsl-button-small {
793
+ --jsl-button-height: 1.75rem;
794
+ --jsl-button-padding: .625rem;
795
+ gap: .375rem;
796
+ font-size: .8125rem;
797
+ }
798
+
799
+ .jsl-button.jsl-button-large {
800
+ --jsl-button-height: 2.5rem;
801
+ --jsl-button-padding: 1rem;
802
+ font-size: .9375rem;
803
+ }
804
+
805
+ .jsl-button.jsl-button-icon-only {
806
+ width: var(--jsl-button-height);
807
+ flex-shrink: 0;
808
+ padding: 0;
809
+ }
810
+
811
+ .jsl-button-icon {
812
+ pointer-events: none;
813
+ flex: none;
814
+ justify-content: center;
815
+ align-items: center;
816
+ width: 1.125em;
817
+ height: 1.125em;
818
+ line-height: 1;
819
+ display: inline-flex;
820
+ }
821
+
822
+ .jsl-button-icon > img, .jsl-button-icon > svg {
823
+ object-fit: contain;
824
+ width: 100%;
825
+ height: 100%;
826
+ display: block;
827
+ }
828
+
829
+ .jsl-button-label-hidden {
830
+ clip-path: inset(50%);
831
+ white-space: nowrap;
832
+ border: 0;
833
+ width: 1px;
834
+ height: 1px;
835
+ margin: -1px;
836
+ padding: 0;
587
837
  position: absolute;
588
- top: 0;
589
- bottom: 0;
590
- right: 0;
838
+ overflow: hidden;
591
839
  }
592
840
 
593
- .dlg-close-btn:hover {
594
- color: #fff;
595
- background: #b22121;
841
+ .jsl-button:disabled, .jsl-button.disabled, .jsl-button[aria-disabled="true"] {
842
+ background: var(--jsl-button-disabled-surface, var(--jsl-color-disabled-surface));
843
+ border-color: var(--jsl-button-disabled-border, var(--jsl-color-border-subtle));
844
+ color: var(--jsl-button-disabled-text, var(--jsl-color-disabled-text));
845
+ box-shadow: none;
846
+ cursor: not-allowed;
847
+ }
848
+
849
+ @media (prefers-reduced-motion: reduce) {
850
+ .jsl-button {
851
+ transition: none;
852
+ }
596
853
  }
597
854
 
598
855
  .jsl-dialog-overlay {
599
- z-index: 2001;
600
- background: #000c;
601
- height: 100vh;
856
+ z-index: var(--jsl-dialog-z-index, 2001);
857
+ background: var(--jsl-dialog-backdrop, var(--jsl-color-overlay));
602
858
  position: fixed;
603
859
  inset: 0;
604
860
  }
605
861
 
862
+ .jsl-dialog {
863
+ box-sizing: border-box;
864
+ border: 1px solid var(--jsl-dialog-border, var(--jsl-color-border-subtle));
865
+ border-radius: var(--jsl-dialog-radius, .75rem);
866
+ background: var(--jsl-dialog-surface, var(--jsl-color-surface));
867
+ width: 32rem;
868
+ max-width: calc(100% - 2rem);
869
+ max-height: calc(100% - 2rem);
870
+ color: var(--jsl-color-text);
871
+ box-shadow: var(--jsl-dialog-shadow, var(--jsl-shadow-dialog));
872
+ font: inherit;
873
+ pointer-events: auto;
874
+ isolation: isolate;
875
+ flex-direction: column;
876
+ line-height: 1.5;
877
+ display: flex;
878
+ position: absolute;
879
+ top: 50%;
880
+ left: 50%;
881
+ transform: translate(-50%, -50%);
882
+ }
883
+
884
+ .jsl-dialog:focus {
885
+ outline: none;
886
+ }
887
+
888
+ .jsl-dialog.resizable {
889
+ position: absolute;
890
+ }
891
+
892
+ .jsl-dialog:focus-visible {
893
+ outline: 2px solid var(--jsl-color-focus);
894
+ outline-offset: 3px;
895
+ }
896
+
606
897
  .jsl-dialog > .dlg-header {
607
- box-sizing: content-box;
608
- text-align: center;
609
- background: #f8f8f8;
610
- border-bottom: 1px solid #ededed;
611
- border-top-left-radius: .8rem;
612
- border-top-right-radius: .8rem;
898
+ box-sizing: border-box;
899
+ border-bottom: 1px solid var(--jsl-color-border-subtle);
900
+ border-radius: var(--jsl-dialog-radius, .75rem) var(--jsl-dialog-radius, .75rem) 0 0;
901
+ flex: none;
902
+ align-items: center;
903
+ gap: 1rem;
904
+ min-width: 0;
905
+ padding: 1.125rem 1.5rem;
906
+ font-size: 1rem;
907
+ font-weight: 600;
908
+ line-height: 1.5;
909
+ display: flex;
910
+ }
911
+
912
+ .jsl-dialog .dlg-title {
913
+ overflow-wrap: anywhere;
914
+ flex: 1;
915
+ min-width: 0;
916
+ }
917
+
918
+ .jsl-dialog-moveable > .dlg-header {
919
+ cursor: move;
920
+ touch-action: none;
921
+ }
922
+
923
+ .jsl-dialog .dlg-close-btn {
924
+ box-sizing: border-box;
925
+ width: 2rem;
613
926
  height: 2rem;
614
- padding: .6rem;
615
- font-size: 1.5rem;
927
+ color: var(--jsl-color-text-secondary);
928
+ font: inherit;
929
+ cursor: pointer;
930
+ background: none;
931
+ border: 1px solid #0000;
932
+ border-radius: .375rem;
933
+ flex: none;
934
+ justify-content: center;
935
+ align-items: center;
936
+ margin: -.25rem -.5rem -.25rem auto;
937
+ padding: 0;
938
+ display: inline-flex;
616
939
  position: relative;
617
940
  }
618
941
 
942
+ .jsl-dialog .dlg-close-btn:before, .jsl-dialog .dlg-close-btn:after {
943
+ content: "";
944
+ background: currentColor;
945
+ border-radius: 1px;
946
+ width: .875rem;
947
+ height: 1.5px;
948
+ position: absolute;
949
+ transform: rotate(45deg);
950
+ }
951
+
952
+ .jsl-dialog .dlg-close-btn:after {
953
+ transform: rotate(-45deg);
954
+ }
955
+
956
+ .jsl-dialog .dlg-close-btn:hover {
957
+ background: var(--jsl-color-surface-hover);
958
+ color: var(--jsl-color-text);
959
+ }
960
+
961
+ .jsl-dialog .dlg-close-btn:focus-visible {
962
+ outline: 2px solid var(--jsl-color-focus);
963
+ outline-offset: 2px;
964
+ }
965
+
619
966
  .jsl-dialog > .dlg-body {
620
967
  box-sizing: border-box;
621
- margin-bottom: 3rem;
622
- padding: 1rem;
968
+ overflow-wrap: anywhere;
969
+ overscroll-behavior: contain;
970
+ flex: auto;
971
+ min-width: 0;
972
+ min-height: 0;
973
+ padding: 1.5rem;
623
974
  overflow: auto;
624
975
  }
625
976
 
626
977
  .jsl-dialog > .dlg-footer {
627
978
  box-sizing: border-box;
628
- text-align: right;
629
- background: #f8f8f8;
630
- border-top: 1px solid #ededed;
631
- border-bottom-right-radius: .8rem;
632
- border-bottom-left-radius: .8rem;
633
- height: 3rem;
634
- padding: .5rem;
635
- position: absolute;
636
- bottom: 0;
637
- left: 0;
638
- right: 0;
979
+ border-top: 1px solid var(--jsl-color-border-subtle);
980
+ border-radius: 0 0 var(--jsl-dialog-radius, .75rem) var(--jsl-dialog-radius, .75rem);
981
+ background: var(--jsl-color-surface-subtle);
982
+ text-align: end;
983
+ flex: none;
984
+ padding: 1rem 1.5rem;
639
985
  }
640
986
 
641
- .jsl-dialog > .dlg-footer button {
642
- margin-left: 1rem;
987
+ .jsl-dialog > .dlg-footer > div, .jsl-dialog > .dlg-footer > form {
988
+ flex-wrap: wrap;
989
+ justify-content: flex-end;
990
+ align-items: center;
991
+ gap: .5rem;
992
+ display: flex;
993
+ }
994
+
995
+ .jsl-dialog > .dlg-footer > button + button {
996
+ margin-inline-start: .5rem;
997
+ }
998
+
999
+ .jsl-dialog > .dlg-header[hidden], .jsl-dialog > .dlg-footer[hidden] {
1000
+ display: none;
643
1001
  }
644
1002
 
645
1003
  .jsl-dialog .slickgrid {
646
1004
  border-radius: 0;
647
1005
  }
648
1006
 
1007
+ .jsl-dialog.resizable > .dlg-res-handle.rs-r.rs-b {
1008
+ cursor: nwse-resize;
1009
+ touch-action: none;
1010
+ background: none;
1011
+ width: 1rem;
1012
+ height: 1rem;
1013
+ bottom: .125rem;
1014
+ right: .125rem;
1015
+ }
1016
+
1017
+ .jsl-dialog .dlg-res-handle:after {
1018
+ content: "";
1019
+ border-right: 1px solid var(--jsl-color-text-muted);
1020
+ border-bottom: 1px solid var(--jsl-color-text-muted);
1021
+ width: .4rem;
1022
+ height: .4rem;
1023
+ position: absolute;
1024
+ bottom: .2rem;
1025
+ right: .2rem;
1026
+ }
1027
+
1028
+ @media (width <= 480px) {
1029
+ .jsl-dialog {
1030
+ max-width: calc(100% - 1.5rem);
1031
+ max-height: calc(100% - 1.5rem);
1032
+ }
1033
+
1034
+ .jsl-dialog > .dlg-header {
1035
+ padding: 1rem 1.125rem;
1036
+ }
1037
+
1038
+ .jsl-dialog > .dlg-body {
1039
+ padding: 1.125rem;
1040
+ }
1041
+
1042
+ .jsl-dialog > .dlg-footer {
1043
+ padding: .875rem 1.125rem;
1044
+ }
1045
+ }
1046
+
649
1047
  .v-r-comp, .v-r-comp .v-r-child > * {
650
1048
  height: 100%;
651
1049
  }