rails_nexus 2.0.2 → 2.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d639de5385a9975d43e4cb943e95e1080fc982bf39363d8ca650ffa4e413807
4
- data.tar.gz: d0ee669e29976192aba3b2215b9d804772d3e362669252e545e340fc5c80a337
3
+ metadata.gz: 4210d9b64f2039e57601450447c13d86c04267be0e256936a29362d2c1a55cf0
4
+ data.tar.gz: 454c4e8a1dcf8ca764e92ebb27de1d3f9fd5111cfe428c291d07bcaae797c69a
5
5
  SHA512:
6
- metadata.gz: a0e758654cfebfdd74880b6e9ea2c415ad8ed1cb3ce63ec2e619664597ff7fbfd8c449e277228d0dbcce66c8f59db400ac8fd0326d2a97a1afa05eab68ae6347
7
- data.tar.gz: 5c68c28e6debd2b86d76653e8b6a24b83c33b506dc84acdbd919e560e781445653771b19993acc30a35e334f8f49ecced1b2cbc78236ea28cb7aaffc5d6c6661
6
+ metadata.gz: a8238683c943a267cd49ad1fd9fce34735e056969396148a6cb91640afb73bfaafc7cd9f46e325a4735f9b751465f60bd74ad5be9b9ec322dfc391f016ee8e37
7
+ data.tar.gz: 3b47e65343f08ef0a63932af7619a61a9c629c40a5d961e5b5ee033b6c1c662b44e3650a69c5e1644afab4da24f415b70621f0ecdf3fab7788276530f75ad5d6
@@ -54,6 +54,20 @@
54
54
  if (this.hasDrawerTarget) this.drawerTarget.classList.remove("open")
55
55
  if (this.hasOverlayTarget) this.overlayTarget.classList.remove("open")
56
56
  }
57
+
58
+ toggleShortcuts(event) {
59
+ var dialog = document.querySelector("[data-rails_nexus-target='shortcutsDialog']")
60
+ if (!dialog) return
61
+
62
+ var isOpening = !dialog.classList.contains("open")
63
+ dialog.classList.toggle("open", isOpening)
64
+ event.currentTarget.setAttribute("aria-expanded", isOpening.toString())
65
+
66
+ if (isOpening) {
67
+ var closeButton = dialog.querySelector("button")
68
+ if (closeButton) closeButton.focus()
69
+ }
70
+ }
57
71
  }
58
72
 
59
73
 
@@ -277,11 +291,17 @@
277
291
  this.closeShortcuts()
278
292
  } else {
279
293
  this.shortcutsDialogTarget.classList.add("open")
294
+ var button = document.getElementById("rn-shortcuts-button")
295
+ if (button) button.setAttribute("aria-expanded", "true")
280
296
  }
281
297
  }
282
298
 
283
299
  closeShortcuts() {
284
- if (this.hasShortcutsDialogTarget) this.shortcutsDialogTarget.classList.remove("open")
300
+ if (this.hasShortcutsDialogTarget) {
301
+ this.shortcutsDialogTarget.classList.remove("open")
302
+ var button = document.getElementById("rn-shortcuts-button")
303
+ if (button) button.setAttribute("aria-expanded", "false")
304
+ }
285
305
  }
286
306
 
287
307
  // ─── Navigation (prev/next) ───────────────────────────────
@@ -1026,12 +1026,12 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1026
1026
  /* ─── Sidebar ───────────────────────────────────────────────── */
1027
1027
  .rn-sidebar {
1028
1028
  width: 16rem;
1029
- background: var(--rn-sidebar-bg);
1030
- color: var(--rn-sidebar-text);
1029
+ background: var(--rn-surface);
1030
+ color: var(--rn-text-secondary);
1031
1031
  display: flex;
1032
1032
  flex-direction: column;
1033
1033
  flex-shrink: 0;
1034
- border-right: 1px solid var(--rn-sidebar-border);
1034
+ border-right: 1px solid var(--rn-border);
1035
1035
  position: sticky;
1036
1036
  top: 0;
1037
1037
  height: 100vh;
@@ -1041,7 +1041,7 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1041
1041
 
1042
1042
  .rn-sidebar-logo {
1043
1043
  padding: 1rem;
1044
- border-bottom: 1px solid var(--rn-sidebar-border);
1044
+ border-bottom: 1px solid var(--rn-border);
1045
1045
  display: flex;
1046
1046
  align-items: center;
1047
1047
  justify-content: space-between;
@@ -1061,10 +1061,25 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1061
1061
  flex-shrink: 0;
1062
1062
  }
1063
1063
  .rn-logo-text {
1064
+ display: block;
1064
1065
  font-size: 0.9375rem;
1065
1066
  font-weight: 700;
1066
1067
  letter-spacing: -0.01em;
1067
- color: #f8fafc;
1068
+ color: var(--rn-text);
1069
+ }
1070
+ .rn-logo-copy {
1071
+ display: flex;
1072
+ min-width: 0;
1073
+ flex-direction: column;
1074
+ line-height: 1.15;
1075
+ }
1076
+ .rn-logo-subtitle {
1077
+ margin-top: 0.2rem;
1078
+ color: var(--rn-text-muted);
1079
+ font-size: 0.625rem;
1080
+ font-weight: 500;
1081
+ letter-spacing: 0.04em;
1082
+ text-transform: uppercase;
1068
1083
  }
1069
1084
 
1070
1085
  .rn-sidebar-nav {
@@ -1075,8 +1090,26 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1075
1090
  gap: 0.125rem;
1076
1091
  overflow-y: auto;
1077
1092
  }
1093
+ .rn-nav-section {
1094
+ display: flex;
1095
+ flex-direction: column;
1096
+ gap: 0.125rem;
1097
+ }
1098
+ .rn-nav-section + .rn-nav-section { margin-top: 0.75rem; }
1099
+ .rn-nav-section-label {
1100
+ display: block;
1101
+ margin: 0.625rem 0.75rem 0.25rem;
1102
+ color: var(--rn-text-muted);
1103
+ font-size: 0.625rem;
1104
+ font-weight: 700;
1105
+ letter-spacing: 0.1em;
1106
+ line-height: 1;
1107
+ text-transform: uppercase;
1108
+ }
1109
+ .rn-sidebar-nav > .rn-nav-section-label:not(:first-child) { margin-top: 1rem; }
1078
1110
 
1079
1111
  .rn-nav-item {
1112
+ position: relative;
1080
1113
  display: flex;
1081
1114
  align-items: center;
1082
1115
  gap: 0.625rem;
@@ -1084,19 +1117,30 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1084
1117
  border-radius: 0.5rem;
1085
1118
  font-size: 0.875rem;
1086
1119
  font-weight: 500;
1087
- color: var(--rn-sidebar-text);
1120
+ color: var(--rn-text-secondary);
1088
1121
  transition: all var(--rn-transition);
1089
1122
  text-decoration: none;
1090
1123
  }
1091
1124
  .rn-nav-item:hover {
1092
- color: var(--rn-sidebar-text-hover);
1093
- background: var(--rn-sidebar-active-bg);
1125
+ color: var(--rn-text);
1126
+ background: var(--rn-surface-hover);
1094
1127
  text-decoration: none;
1095
1128
  }
1096
1129
  .rn-nav-item.active {
1097
- color: #f8fafc;
1098
- background: var(--rn-sidebar-active-bg);
1130
+ color: var(--rn-primary);
1131
+ background: var(--rn-primary-light);
1132
+ }
1133
+ .rn-nav-item.active::before {
1134
+ position: absolute;
1135
+ top: 0.625rem;
1136
+ bottom: 0.625rem;
1137
+ left: -0.75rem;
1138
+ width: 2px;
1139
+ border-radius: 999px;
1140
+ background: var(--rn-primary);
1141
+ content: "";
1099
1142
  }
1143
+ .rn-nav-item svg { flex-shrink: 0; }
1100
1144
  .rn-nav-item--muted {
1101
1145
  font-size: 0.8125rem;
1102
1146
  opacity: 0.8;
@@ -1110,22 +1154,38 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1110
1154
  border-radius: 0.625rem;
1111
1155
  font-size: 0.625rem;
1112
1156
  font-weight: 600;
1113
- background: var(--rn-sidebar-active-bg);
1114
- color: var(--rn-sidebar-text);
1157
+ background: var(--rn-bg-secondary);
1158
+ color: var(--rn-text-secondary);
1115
1159
  line-height: 1.25;
1116
1160
  }
1117
1161
  .rn-sidebar-section-divider {
1118
1162
  height: 1px;
1119
- background: var(--rn-sidebar-border);
1163
+ background: var(--rn-border);
1120
1164
  margin: 0.5rem 0;
1121
1165
  opacity: 0.5;
1122
1166
  }
1123
1167
 
1124
1168
  .rn-sidebar-footer {
1125
1169
  padding: 0.75rem 1rem;
1126
- border-top: 1px solid var(--rn-sidebar-border);
1170
+ border-top: 1px solid var(--rn-border);
1171
+ display: flex;
1172
+ align-items: center;
1173
+ justify-content: space-between;
1174
+ gap: 0.75rem;
1127
1175
  font-size: 0.6875rem;
1128
- color: #475569;
1176
+ color: var(--rn-text-muted);
1177
+ }
1178
+ .rn-sidebar-status {
1179
+ display: inline-flex;
1180
+ align-items: center;
1181
+ gap: 0.375rem;
1182
+ }
1183
+ .rn-status-dot {
1184
+ width: 0.375rem;
1185
+ height: 0.375rem;
1186
+ border-radius: 999px;
1187
+ background: var(--rn-success);
1188
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--rn-success) 14%, transparent);
1129
1189
  }
1130
1190
 
1131
1191
  /* ─── Mobile Sidebar ────────────────────────────────────────── */
@@ -1134,7 +1194,9 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1134
1194
  inset-y: 0;
1135
1195
  left: 0;
1136
1196
  width: 16rem;
1137
- background: var(--rn-sidebar-bg);
1197
+ background: var(--rn-surface);
1198
+ display: flex;
1199
+ flex-direction: column;
1138
1200
  z-index: 50;
1139
1201
  transform: translateX(-100%);
1140
1202
  transition: transform 200ms ease-out;
@@ -1168,6 +1230,63 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1168
1230
  backdrop-filter: blur(8px);
1169
1231
  background: color-mix(in srgb, var(--rn-surface) 85%, transparent);
1170
1232
  }
1233
+ .rn-topbar-title,
1234
+ .rn-topbar-actions {
1235
+ display: flex;
1236
+ align-items: center;
1237
+ }
1238
+ .rn-topbar-title { gap: 0.625rem; }
1239
+ .rn-topbar-actions { gap: 0.375rem; }
1240
+ .rn-topbar-heading {
1241
+ display: block;
1242
+ color: var(--rn-text);
1243
+ font-size: 0.875rem;
1244
+ font-weight: 650;
1245
+ line-height: 1.1;
1246
+ }
1247
+ .rn-topbar-subtitle {
1248
+ display: block;
1249
+ margin-top: 0.15rem;
1250
+ color: var(--rn-text-muted);
1251
+ font-size: 0.6875rem;
1252
+ line-height: 1.1;
1253
+ }
1254
+ .rn-mobile-menu-button { display: none; }
1255
+ @media (max-width: 1023px) {
1256
+ .rn-mobile-menu-button { display: inline-flex; }
1257
+ }
1258
+
1259
+ /* ─── Shell Footer ─────────────────────────────────────────── */
1260
+ .rn-footer {
1261
+ min-height: 3.25rem;
1262
+ padding: 0.75rem 1.5rem;
1263
+ border-top: 1px solid var(--rn-border-light);
1264
+ display: flex;
1265
+ align-items: center;
1266
+ justify-content: space-between;
1267
+ gap: 1rem;
1268
+ background: var(--rn-surface);
1269
+ color: var(--rn-text-muted);
1270
+ font-size: 0.75rem;
1271
+ }
1272
+ .rn-footer-version { color: var(--rn-text-secondary); }
1273
+ .rn-footer-credit,
1274
+ .rn-footer-github {
1275
+ display: inline-flex;
1276
+ align-items: center;
1277
+ gap: 0.375rem;
1278
+ }
1279
+ .rn-footer a { font-weight: 600; }
1280
+ @media (max-width: 639px) {
1281
+ .rn-topbar { padding: 0 1rem; }
1282
+ .rn-topbar-subtitle { display: none; }
1283
+ .rn-footer {
1284
+ align-items: flex-start;
1285
+ flex-direction: column;
1286
+ gap: 0.25rem;
1287
+ padding: 0.75rem 1rem;
1288
+ }
1289
+ }
1171
1290
 
1172
1291
  .rn-icon-btn {
1173
1292
  display: inline-flex;
@@ -1594,26 +1713,44 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1594
1713
  white-space: nowrap;
1595
1714
  }
1596
1715
 
1716
+ .rn-exceptions-toolbar {
1717
+ min-height: 3.25rem;
1718
+ padding: 0.625rem 1rem;
1719
+ display: flex;
1720
+ align-items: center;
1721
+ justify-content: space-between;
1722
+ gap: 1rem;
1723
+ }
1724
+ .rn-exceptions-toolbar-summary,
1725
+ .rn-exceptions-toolbar-actions {
1726
+ display: flex;
1727
+ align-items: center;
1728
+ gap: 0.75rem;
1729
+ }
1597
1730
  .rn-exceptions-table {
1598
1731
  table-layout: fixed;
1599
- min-width: 74rem;
1600
- }
1601
- .rn-exceptions-table .rn-col-severity { width: 2rem; padding-right: 0; }
1602
- .rn-exceptions-table .rn-col-exception { width: 11.5rem; }
1603
- .rn-exceptions-table .rn-col-platform { width: 6.5rem; }
1604
- .rn-exceptions-table .rn-col-source { width: 12rem; }
1605
- .rn-exceptions-table .rn-col-message { width: 16rem; }
1606
- .rn-exceptions-table .rn-col-count { width: 5rem; text-align: center; }
1607
- .rn-exceptions-table .rn-col-workflow { width: 12rem; }
1608
- .rn-exceptions-table .rn-col-time { width: 7rem; }
1609
- .rn-exceptions-table .rn-col-actions { width: 5rem; }
1732
+ min-width: 64rem;
1733
+ }
1734
+ .rn-exceptions-table th,
1735
+ .rn-exceptions-table td { padding-right: 0.75rem; padding-left: 0.75rem; }
1736
+ .rn-exceptions-table .rn-col-severity { width: 1.5rem; padding-right: 0; }
1737
+ .rn-exceptions-table .rn-col-exception { width: 10.5rem; }
1738
+ .rn-exceptions-table .rn-col-platform { width: 5.5rem; }
1739
+ .rn-exceptions-table .rn-col-source { width: 10rem; }
1740
+ .rn-exceptions-table .rn-col-message { width: auto; }
1741
+ .rn-exceptions-table .rn-col-count { width: 4.5rem; text-align: center; }
1742
+ .rn-exceptions-table .rn-col-workflow { width: 10.5rem; }
1743
+ .rn-exceptions-table .rn-col-time { width: 6.5rem; }
1744
+ .rn-exceptions-table .rn-col-actions { width: 4.5rem; }
1610
1745
  .rn-exceptions-table .rn-exception-name {
1611
1746
  display: block;
1612
1747
  overflow: hidden;
1748
+ color: var(--rn-text);
1613
1749
  text-overflow: ellipsis;
1614
1750
  white-space: nowrap;
1615
- font-weight: 600;
1751
+ font-weight: 650;
1616
1752
  font-size: 0.8125rem;
1753
+ line-height: 1.35;
1617
1754
  }
1618
1755
  .rn-exceptions-table .rn-source {
1619
1756
  display: flex;
@@ -1631,7 +1768,7 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1631
1768
  overflow: hidden;
1632
1769
  color: var(--rn-text-muted);
1633
1770
  font-size: 0.6875rem;
1634
- line-height: 1;
1771
+ line-height: 1.2;
1635
1772
  text-overflow: ellipsis;
1636
1773
  white-space: nowrap;
1637
1774
  }
@@ -1642,18 +1779,147 @@ code, pre { font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", mon
1642
1779
  gap: 0.25rem;
1643
1780
  }
1644
1781
  .rn-exceptions-table .rn-workflow-state .rn-row-meta { flex-basis: 100%; }
1782
+ .rn-exceptions-table .rn-msg {
1783
+ max-width: none;
1784
+ display: -webkit-box;
1785
+ overflow: hidden;
1786
+ white-space: normal;
1787
+ line-height: 1.35;
1788
+ -webkit-box-orient: vertical;
1789
+ -webkit-line-clamp: 2;
1790
+ }
1791
+ .rn-severity-dot {
1792
+ display: block;
1793
+ width: 0.5rem;
1794
+ height: 0.5rem;
1795
+ margin-top: 0.3rem;
1796
+ border-radius: 999px;
1797
+ background: var(--rn-danger);
1798
+ box-shadow: 0 0 0 3px var(--rn-danger-light);
1799
+ }
1800
+ .rn-severity-warning { background: var(--rn-warning); box-shadow: 0 0 0 3px var(--rn-warning-light); }
1801
+ .rn-severity-info { background: var(--rn-info); box-shadow: 0 0 0 3px var(--rn-info-light); }
1802
+ .rn-occurrence-count {
1803
+ display: inline-flex;
1804
+ min-width: 1.75rem;
1805
+ height: 1.5rem;
1806
+ padding: 0 0.4rem;
1807
+ border: 1px solid var(--rn-border);
1808
+ border-radius: 999px;
1809
+ align-items: center;
1810
+ justify-content: center;
1811
+ background: var(--rn-bg-secondary);
1812
+ color: var(--rn-text-secondary);
1813
+ font-size: 0.6875rem;
1814
+ font-weight: 700;
1815
+ }
1816
+ .rn-row-actions {
1817
+ display: flex;
1818
+ align-items: center;
1819
+ justify-content: flex-end;
1820
+ gap: 0.125rem;
1821
+ opacity: 0.35;
1822
+ transition: opacity var(--rn-transition);
1823
+ }
1824
+ .rn-exceptions-table tr:hover .rn-row-actions,
1825
+ .rn-exceptions-table tr:focus-within .rn-row-actions,
1826
+ .rn-exceptions-table tr.selected .rn-row-actions { opacity: 1; }
1645
1827
  .rn-exceptions-table tbody tr {
1646
1828
  position: relative;
1647
1829
  border-left: 3px solid transparent;
1830
+ outline: none;
1648
1831
  }
1649
1832
  .rn-exceptions-table tbody tr:hover {
1650
1833
  border-left-color: var(--rn-primary);
1651
1834
  }
1835
+ .rn-exceptions-table tbody tr:focus-visible {
1836
+ border-left-color: var(--rn-primary);
1837
+ box-shadow: inset 0 0 0 2px var(--rn-primary-ring);
1838
+ }
1652
1839
  .rn-exceptions-table tbody tr.selected {
1653
1840
  border-left-color: var(--rn-primary);
1654
1841
  background: var(--rn-primary-light);
1655
1842
  }
1656
1843
 
1844
+ @media (max-width: 1100px) {
1845
+ .rn-exceptions-table { display: block; min-width: 0; }
1846
+ .rn-exceptions-table thead { display: none; }
1847
+ .rn-exceptions-table tbody {
1848
+ padding: 0.75rem;
1849
+ display: grid;
1850
+ gap: 0.625rem;
1851
+ }
1852
+ .rn-exceptions-table tbody tr {
1853
+ padding: 0.875rem 0.875rem 0.875rem 0.75rem;
1854
+ border: 1px solid var(--rn-border-light);
1855
+ border-left: 3px solid transparent;
1856
+ border-radius: 0.625rem;
1857
+ display: grid;
1858
+ grid-template-columns: 0.5rem minmax(0, 1fr) auto auto;
1859
+ grid-template-areas:
1860
+ "severity exception exception actions"
1861
+ "severity message message message"
1862
+ "severity source source source"
1863
+ "severity platform count time"
1864
+ "severity workflow workflow workflow";
1865
+ column-gap: 0.75rem;
1866
+ row-gap: 0.5rem;
1867
+ background: var(--rn-surface);
1868
+ box-shadow: var(--rn-shadow-sm);
1869
+ }
1870
+ .rn-exceptions-table tbody tr:hover,
1871
+ .rn-exceptions-table tbody tr.selected {
1872
+ border-left-color: var(--rn-primary);
1873
+ background: var(--rn-surface-hover);
1874
+ }
1875
+ .rn-exceptions-table tbody tr.selected { box-shadow: 0 0 0 2px var(--rn-primary-ring); }
1876
+ .rn-exceptions-table td {
1877
+ width: auto !important;
1878
+ padding: 0;
1879
+ border: 0;
1880
+ min-width: 0;
1881
+ }
1882
+ .rn-exceptions-table .rn-col-severity { grid-area: severity; }
1883
+ .rn-exceptions-table .rn-col-exception { grid-area: exception; }
1884
+ .rn-exceptions-table .rn-col-platform { grid-area: platform; }
1885
+ .rn-exceptions-table .rn-col-source { grid-area: source; }
1886
+ .rn-exceptions-table .rn-col-message { grid-area: message; }
1887
+ .rn-exceptions-table .rn-col-count { grid-area: count; text-align: left; }
1888
+ .rn-exceptions-table .rn-col-workflow { grid-area: workflow; }
1889
+ .rn-exceptions-table .rn-col-time { grid-area: time; text-align: right; }
1890
+ .rn-exceptions-table .rn-col-actions { grid-area: actions; }
1891
+ .rn-exceptions-table .rn-exception-name { font-size: 0.875rem; }
1892
+ .rn-exceptions-table .rn-source::before {
1893
+ margin-right: 0.375rem;
1894
+ color: var(--rn-text-muted);
1895
+ content: "Source";
1896
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
1897
+ font-size: 0.6875rem;
1898
+ }
1899
+ .rn-exceptions-table .rn-row-actions { opacity: 1; }
1900
+ .rn-exceptions-table .rn-severity-dot { height: 100%; min-height: 1.5rem; margin-top: 0; }
1901
+ .rn-exceptions-table .rn-workflow-state { align-items: center; }
1902
+ }
1903
+
1904
+ @media (max-width: 639px) {
1905
+ .rn-exceptions-toolbar { align-items: flex-start; flex-direction: column; }
1906
+ .rn-exceptions-toolbar-summary { width: 100%; justify-content: space-between; }
1907
+ .rn-exceptions-toolbar-actions { width: 100%; justify-content: flex-end; }
1908
+ .rn-exceptions-toolbar-actions > span { display: none; }
1909
+ .rn-exceptions-table tbody { padding: 0.5rem; }
1910
+ .rn-exceptions-table tbody tr {
1911
+ grid-template-columns: 0.5rem minmax(0, 1fr) auto;
1912
+ grid-template-areas:
1913
+ "severity exception actions"
1914
+ "severity message message"
1915
+ "severity source source"
1916
+ "severity workflow workflow"
1917
+ "severity platform count"
1918
+ "severity time time";
1919
+ }
1920
+ .rn-exceptions-table .rn-col-time { text-align: left; }
1921
+ }
1922
+
1657
1923
  /* ─── Row count indicator ───────────────────────────────────── */
1658
1924
  .rn-count-indicator {
1659
1925
  width: 1.5rem;
@@ -95,11 +95,15 @@ module RailsNexus
95
95
  params.require(:backup_config).permit(
96
96
  :name, :description, :database_name, :adapter, :host, :port,
97
97
  :username, :password, :storage_path, :keep_count,
98
- :compress, :encrypt, :encrypt_password,
98
+ :compress, :encrypted, :encryption_password,
99
99
  :rsync_enabled, :rsync_host, :rsync_port, :rsync_user, :rsync_path, :rsync_mirror,
100
100
  :notify_command, :notify_on_success, :notify_on_failure,
101
101
  :schedule_cron, :enabled,
102
- skip_tables: []
102
+ :s3_enabled, :s3_access_key, :s3_secret_key, :s3_bucket, :s3_region, :s3_prefix,
103
+ :gpg_enabled, :gpg_password,
104
+ :email_notify, :email_to,
105
+ :archive_enabled, :bzip2_compress, :split_chunks,
106
+ skip_tables: [], archive_paths: [], archive_excludes: []
103
107
  )
104
108
  end
105
109
 
@@ -274,12 +274,14 @@ export default class extends Controller {
274
274
  this.closeShortcuts()
275
275
  } else {
276
276
  this.shortcutsDialogTarget.classList.add("open")
277
+ document.getElementById("rn-shortcuts-button")?.setAttribute("aria-expanded", "true")
277
278
  }
278
279
  }
279
280
 
280
281
  closeShortcuts() {
281
282
  if (this.hasShortcutsDialogTarget) {
282
283
  this.shortcutsDialogTarget.classList.remove("open")
284
+ document.getElementById("rn-shortcuts-button")?.setAttribute("aria-expanded", "false")
283
285
  }
284
286
  }
285
287
 
@@ -12,4 +12,17 @@ export default class extends Controller {
12
12
  this.drawerTarget.classList.remove("open")
13
13
  this.overlayTarget.classList.remove("open")
14
14
  }
15
+
16
+ toggleShortcuts(event) {
17
+ const dialog = document.querySelector("[data-rails_nexus-target='shortcutsDialog']")
18
+ if (!dialog) return
19
+
20
+ const isOpening = !dialog.classList.contains("open")
21
+ dialog.classList.toggle("open", isOpening)
22
+ event.currentTarget.setAttribute("aria-expanded", isOpening.toString())
23
+
24
+ if (isOpening) {
25
+ dialog.querySelector("button")?.focus()
26
+ }
27
+ }
15
28
  }