@cdmx/wappler_ag_grid 0.0.8 → 0.1.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.
@@ -17,6 +17,11 @@
17
17
  "name": "id",
18
18
  "title": "Id",
19
19
  "type": "number"
20
+ },
21
+ {
22
+ "name": "fields",
23
+ "title": "Fields",
24
+ "type": "object"
20
25
  }
21
26
  ],
22
27
  "outputType": "object",
@@ -352,7 +357,23 @@
352
357
  "title": "Row Click Events",
353
358
  "type": "boolean",
354
359
  "defaultValue": false,
355
- "help": "This enabled row click en=vents whcihc can then be used in Dynamic events => Grid Events => Row Clicked"
360
+ "help": "This enabled row click events which can then be used in Dynamic events => Grid Events => Row Clicked"
361
+ },
362
+ {
363
+ "name": "rowCheckboxEvent",
364
+ "attribute": "dmx-bind:row_checkbox_event",
365
+ "title": "Row Checkbox Events",
366
+ "type": "boolean",
367
+ "defaultValue": false,
368
+ "help": "This enabled row checkbox events which can then be used in Dynamic events => Grid Events => Checkbox Checked || Checkbox Unchecked"
369
+ },
370
+ {
371
+ "name": "rowStatusEvent",
372
+ "attribute": "dmx-bind:row_status_event",
373
+ "title": "Row Status Events",
374
+ "type": "boolean",
375
+ "defaultValue": false,
376
+ "help": "This enabled row status events which can then be used in Dynamic events => Grid Events => Checkbox Checked || Checkbox Unchecked"
356
377
  }
357
378
  ]
358
379
  },
@@ -665,6 +686,10 @@
665
686
  "src": "ag-theme-material.css",
666
687
  "dst": "css/ag-theme-material.css"
667
688
  },
689
+ {
690
+ "src": "switch-toggle-slider.css",
691
+ "dst": "css/switch-toggle-slider.css"
692
+ },
668
693
  {
669
694
  "src": "dmx-ag-grid.js",
670
695
  "dst": "js/dmx-ag-grid.js"
@@ -692,6 +717,10 @@
692
717
  {
693
718
  "src": "css/ag-theme-material.css",
694
719
  "type": "css"
720
+ },
721
+ {
722
+ "src": "css/switch-toggle-slider.css",
723
+ "type": "css"
695
724
  }
696
725
  ],
697
726
  "cssOrder": [],
@@ -768,6 +797,143 @@
768
797
  "allowedOn": {
769
798
  "dmx-ag-grid": true
770
799
  }
800
+ },
801
+ {
802
+ "name": "dmx-ag-grid-checkbox-checked",
803
+ "attributeStartsWith": "dmx-on",
804
+ "attribute": "row_checkbox_checked",
805
+ "display": "fieldset",
806
+ "title": "Checkbox Checked",
807
+ "icon": "fa fa-lg fa-chevron-right",
808
+ "groupTitle": "Grid Events",
809
+ "groupIcon": "fa fa-lg fa-cubes",
810
+ "defaultValue": false,
811
+ "show": [
812
+ "rowCheckboxChecked"
813
+ ],
814
+ "noChangeOnHide": true,
815
+ "type": "boolean",
816
+ "groupEnabler": true,
817
+ "children": [
818
+ {
819
+ "name": "rowCheckboxChecked",
820
+ "attributeStartsWith": "dmx-on",
821
+ "attribute": "row_checkbox_checked",
822
+ "isValue": true,
823
+ "actionsPicker": true,
824
+ "title": "Action:",
825
+ "type": "text",
826
+ "help": "Choose the action to execute.",
827
+ "defaultValue": "",
828
+ "initDisplay": "none"
829
+ }
830
+ ],
831
+ "allowedOn": {
832
+ "dmx-ag-grid": true
833
+ }
834
+ },
835
+ {
836
+ "name": "dmx-ag-grid-checkbox-unchecked",
837
+ "attributeStartsWith": "dmx-on",
838
+ "attribute": "row_checkbox_unchecked",
839
+ "display": "fieldset",
840
+ "title": "Checkbox Unchecked",
841
+ "icon": "fa fa-lg fa-chevron-right",
842
+ "groupTitle": "Grid Events",
843
+ "groupIcon": "fa fa-lg fa-cubes",
844
+ "defaultValue": false,
845
+ "show": [
846
+ "rowCheckboxUnchecked"
847
+ ],
848
+ "noChangeOnHide": true,
849
+ "type": "boolean",
850
+ "groupEnabler": true,
851
+ "children": [
852
+ {
853
+ "name": "rowCheckboxUnchecked",
854
+ "attributeStartsWith": "dmx-on",
855
+ "attribute": "row_checkbox_unchecked",
856
+ "isValue": true,
857
+ "actionsPicker": true,
858
+ "title": "Action:",
859
+ "type": "text",
860
+ "help": "Choose the action to execute.",
861
+ "defaultValue": "",
862
+ "initDisplay": "none"
863
+ }
864
+ ],
865
+ "allowedOn": {
866
+ "dmx-ag-grid": true
867
+ }
868
+ }
869
+ ,
870
+ {
871
+ "name": "dmx-ag-grid-status-checked",
872
+ "attributeStartsWith": "dmx-on",
873
+ "attribute": "row_status_checked",
874
+ "display": "fieldset",
875
+ "title": "Status Checked",
876
+ "icon": "fa fa-lg fa-chevron-right",
877
+ "groupTitle": "Grid Events",
878
+ "groupIcon": "fa fa-lg fa-cubes",
879
+ "defaultValue": false,
880
+ "show": [
881
+ "rowStatusChecked"
882
+ ],
883
+ "noChangeOnHide": true,
884
+ "type": "boolean",
885
+ "groupEnabler": true,
886
+ "children": [
887
+ {
888
+ "name": "rowStatusChecked",
889
+ "attributeStartsWith": "dmx-on",
890
+ "attribute": "row_status_checked",
891
+ "isValue": true,
892
+ "actionsPicker": true,
893
+ "title": "Action:",
894
+ "type": "text",
895
+ "help": "Choose the action to execute.",
896
+ "defaultValue": "",
897
+ "initDisplay": "none"
898
+ }
899
+ ],
900
+ "allowedOn": {
901
+ "dmx-ag-grid": true
902
+ }
903
+ },
904
+ {
905
+ "name": "dmx-ag-grid-status-unchecked",
906
+ "attributeStartsWith": "dmx-on",
907
+ "attribute": "row_status_unchecked",
908
+ "display": "fieldset",
909
+ "title": "Status Unchecked",
910
+ "icon": "fa fa-lg fa-chevron-right",
911
+ "groupTitle": "Grid Events",
912
+ "groupIcon": "fa fa-lg fa-cubes",
913
+ "defaultValue": false,
914
+ "show": [
915
+ "rowStatusUnchecked"
916
+ ],
917
+ "noChangeOnHide": true,
918
+ "type": "boolean",
919
+ "groupEnabler": true,
920
+ "children": [
921
+ {
922
+ "name": "rowStatusUnchecked",
923
+ "attributeStartsWith": "dmx-on",
924
+ "attribute": "row_status_unchecked",
925
+ "isValue": true,
926
+ "actionsPicker": true,
927
+ "title": "Action:",
928
+ "type": "text",
929
+ "help": "Choose the action to execute.",
930
+ "defaultValue": "",
931
+ "initDisplay": "none"
932
+ }
933
+ ],
934
+ "allowedOn": {
935
+ "dmx-ag-grid": true
936
+ }
771
937
  }
772
938
  ],
773
939
  "static_events": []
package/dmx-ag-grid.js CHANGED
@@ -85,7 +85,10 @@ dmx.Component('ag-grid', {
85
85
  fixedTopOffset: { type: Number, default: 80 },
86
86
  fixedHorizonatalScroll: { type: Boolean, default: false },
87
87
  timezone: {type: Text, default: '' },
88
- row_click_event: {type: Boolean, default: false }
88
+ row_click_event: {type: Boolean, default: false },
89
+ row_checkbox_event: {type: Boolean, default: false },
90
+ row_status_event: {type: Boolean, default: false }
91
+
89
92
  },
90
93
 
91
94
  methods: {
@@ -106,6 +109,8 @@ dmx.Component('ag-grid', {
106
109
  const timezone = this.props.timezone || false;
107
110
  const dataChanges = this.props.data_changes;
108
111
  const grid_theme = this.props.grid_theme;
112
+ const enableCheckboxEvent = this.props.row_checkbox_event;
113
+ const enableStatusToggle = this.props.row_status_event;
109
114
  let columnDefs = [];
110
115
  let exportToCSV = this.props.exportToCSV;
111
116
 
@@ -115,16 +120,100 @@ dmx.Component('ag-grid', {
115
120
  console.error('No row data provided.');
116
121
  return;
117
122
  }
118
- window.clickEvent = (columnName, value) => {
119
- // this.set('fields', {"field": columnName, "data": value});
120
- this.set('id', value);
123
+ function formatValue(value, key, dataType, timezone) {
124
+ params = {"value":value}
125
+ if (dataType === 'number') {
126
+ if (/(amount|amt)$/.test(key)) {
127
+ return Number(value).toLocaleString("en-US", {
128
+ minimumFractionDigits: 2,
129
+ maximumFractionDigits: 2,
130
+ });
131
+ } else {
132
+ return blankOrNullValueFormatter(params);
133
+ }
134
+ } else if (dataType === 'date') {
135
+ return formatTime(params, timezone);
136
+ }
137
+ else {
138
+ return blankOrNullValueFormatter(params);
139
+ }
140
+ }
141
+ window.clickEvent = (columnName, value, idValue) => {
142
+ this.set('fields', {"field": columnName, "data": value});
143
+ this.set('id', idValue);
121
144
  this.dispatchEvent('row_clicked')
122
145
  };
146
+ window.handleCheckboxClick = (event, columnName, value, idValue) => {
147
+ const isChecked = event.target.checked;
148
+ if (isChecked) {
149
+ // Code for when the checkbox is checked
150
+ this.set('id', idValue);
151
+ this.set('fields', {"field": columnName, "data": value});
152
+ this.dispatchEvent('row_checkbox_checked')
153
+ } else {
154
+ // Code for when the checkbox is unchecked
155
+ this.set('id', idValue);
156
+ this.set('fields', {"field": columnName, "data": value});
157
+ this.dispatchEvent('row_checkbox_unchecked')
158
+ }
159
+ };
160
+ window.handleStatusToggle = (event, columnName, value, idValue) => {
161
+ const isChecked = event.target.checked;
162
+ if (isChecked) {
163
+ // Code for when the checkbox is checked
164
+ this.set('id', idValue);
165
+ this.set('fields', {"field": columnName, "data": value});
166
+ this.dispatchEvent('row_status_checked')
167
+ } else {
168
+ // Code for when the checkbox is unchecked
169
+ this.set('id', idValue);
170
+ this.set('fields', {"field": columnName, "data": value});
171
+ this.dispatchEvent('row_status_unchecked')
172
+ }
173
+ };
123
174
  function clickCellRenderer(params) {
124
175
  const idValue = params.data.id;
125
- const columnName = params.colDef.field;
126
- const value = params.value != null ? params.value.toString() : '-';
127
- return `<div onclick="clickEvent('${columnName}', '${idValue}')" style="cursor: pointer;">${value}</div>`;
176
+ const columnName = params.colDef.field;
177
+ const dataType = detectDataType([params.value]);
178
+ const value = formatValue(params.value, columnName, dataType, timezone);
179
+ return `<div onclick="clickEvent('${columnName}', '${value}', '${idValue}')" style="cursor: pointer;">${value}</div>`;
180
+ }
181
+ function checkboxCellRenderer(params) {
182
+ const idValue = params.data.id;
183
+ const columnName = params.colDef.field;
184
+ const dataType = detectDataType([params.value]);
185
+ const value = formatValue(params.value, columnName, dataType, timezone);
186
+
187
+ if (columnName === "id") {
188
+ return `
189
+ <input
190
+ type="checkbox"
191
+ onclick="handleCheckboxClick(event, '${columnName}', '${value}', '${idValue}')"
192
+ />
193
+ `;
194
+ } else if (columnName == "status" && enableStatusToggle) {
195
+ // Assuming `value` is a boolean representing the status
196
+ const checked = value==true ? "checked" : "";
197
+ return `
198
+ <label class="switch switch-success">
199
+ <input
200
+ type="checkbox" class="switch-input"
201
+ ${checked}
202
+ onclick="handleStatusToggle(event, '${columnName}', '${value}', '${idValue}')"
203
+ />
204
+ <span class="switch-toggle-slider" role="status">
205
+ </span>
206
+ <span class="switch-on">
207
+ <i class="bx bx-check"></i>
208
+ </span>
209
+ <span class="switch-off">
210
+ <i class="bx bx-x"></i>
211
+ </span>
212
+ </label>
213
+ `;
214
+ } else {
215
+ return value;
216
+ }
128
217
  }
129
218
 
130
219
 
@@ -338,7 +427,7 @@ const cstyles = this.props.cstyles
338
427
  minWidth: parseInt(cwidths[key].min_width),
339
428
  maxWidth: parseInt(cwidths[key].max_width),
340
429
  }),
341
- cellRenderer: enableClickEvent ? 'clickCellRenderer' : undefined
430
+ cellRenderer: enableClickEvent ? 'clickCellRenderer' : (enableCheckboxEvent ? 'checkboxCellRenderer' : undefined)
342
431
  };
343
432
  });
344
433
  }
@@ -372,7 +461,8 @@ const cstyles = this.props.cstyles
372
461
  suppressPropertyNamesCheck: this.props.suppressPropertyNamesCheck,
373
462
  localeText: this.props.localeText,
374
463
  components: {
375
- clickCellRenderer: clickCellRenderer
464
+ clickCellRenderer: clickCellRenderer,
465
+ checkboxCellRenderer: checkboxCellRenderer
376
466
  }
377
467
  };
378
468
 
@@ -450,7 +540,11 @@ const cstyles = this.props.cstyles
450
540
  },
451
541
 
452
542
  events: {
453
- row_clicked: Event
543
+ row_clicked: Event,
544
+ row_checkbox_checked: Event,
545
+ row_checkbox_unchecked: Event,
546
+ row_status_checked: Event,
547
+ row_status_unchecked: Event
454
548
  },
455
549
 
456
550
  render: function(node) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdmx/wappler_ag_grid",
3
- "version": "0.0.8",
3
+ "version": "0.1.0",
4
4
  "type": "module",
5
5
  "description": "App Connect module for AG Grid Table Generation",
6
6
  "license": "MIT",
@@ -0,0 +1,345 @@
1
+ .select-wrapper-status {
2
+ position: relative;
3
+ }
4
+
5
+ .select-wrapper-status i.fa {
6
+ position: absolute;
7
+ right: 20px;
8
+ top: 50%;
9
+ transform: translateY(-50%);
10
+ }
11
+ .switch {
12
+ margin-right: 0.75rem;
13
+ position: relative;
14
+ vertical-align: middle;
15
+ margin-bottom: 0;
16
+ display: inline-block;
17
+ border-radius: 30rem;
18
+ min-height: 1.35rem;
19
+ font-size: 0.9375rem;
20
+ line-height: 1.4;
21
+ }
22
+
23
+ .switch .switch-label:first-child {
24
+ padding-right: 0.5rem;
25
+ }
26
+
27
+ .switch .switch-input~.switch-label {
28
+ padding-left: 3rem;
29
+ }
30
+
31
+ .switch .switch-toggle-slider {
32
+ width: 2.5rem;
33
+ height: 1.35rem;
34
+ font-size: 0.625rem;
35
+ line-height: 1.35rem;
36
+ border: 1px solid transparent;
37
+ top: 0;
38
+ }
39
+
40
+ .switch .switch-toggle-slider i {
41
+ position: relative;
42
+ font-size: 0.9375rem;
43
+ top: -1.35px;
44
+ }
45
+
46
+ .switch .switch-label {
47
+ top: 0.01875rem;
48
+ }
49
+
50
+ .switch .switch-input:checked~.switch-toggle-slider::after {
51
+ left: 1.15rem;
52
+ }
53
+
54
+ .switch .switch-toggle-slider::after {
55
+ top: -1px;
56
+ margin: 0.25rem 0 0 0.25rem;
57
+ width: 13px;
58
+ height: 13px;
59
+ }
60
+
61
+ .switch .switch-on {
62
+ padding-left: 0.25rem;
63
+ padding-right: 1.1rem;
64
+ }
65
+
66
+ .switch .switch-off {
67
+ padding-left: 1.1rem;
68
+ padding-right: 0.25rem;
69
+ }
70
+
71
+ [dir=rtl] .switch .switch-label {
72
+ padding-right: 3rem;
73
+ padding-left: 0;
74
+ }
75
+
76
+ [dir=rtl] .switch .switch-input:checked~.switch-toggle-slider::after {
77
+ left: auto;
78
+ right: 1.15rem;
79
+ }
80
+
81
+ [dir=rtl] .switch .switch-toggle-slider::after {
82
+ margin-left: 0;
83
+ margin-right: 0.25rem;
84
+ }
85
+
86
+ [dir=rtl] .switch .switch-on {
87
+ padding-left: 1.1rem;
88
+ padding-right: 0.25rem;
89
+ }
90
+
91
+ [dir=rtl] .switch .switch-off {
92
+ padding-left: 0.25rem;
93
+ padding-right: 1.1rem;
94
+ }
95
+
96
+ [dir=rtl] .switch {
97
+ margin-left: 0.75rem;
98
+ margin-right: 0;
99
+ }
100
+
101
+ .switch-input {
102
+ opacity: 0;
103
+ position: absolute;
104
+ padding: 0;
105
+ margin: 0;
106
+ z-index: -1;
107
+ }
108
+
109
+ .switch-toggle-slider {
110
+ position: absolute;
111
+ overflow: hidden;
112
+ border-radius: 30rem;
113
+ background: #e9ecee;
114
+ color: #677788;
115
+ -webkit-transition-duration: 0.2s;
116
+ transition-duration: 0.2s;
117
+ -webkit-transition-property: left, right, background, -webkit-box-shadow;
118
+ transition-property: left, right, background, -webkit-box-shadow;
119
+ transition-property: left, right, background, box-shadow;
120
+ transition-property: left, right, background, box-shadow, -webkit-box-shadow;
121
+ cursor: pointer;
122
+ -webkit-user-select: none;
123
+ -moz-user-select: none;
124
+ -ms-user-select: none;
125
+ user-select: none;
126
+ }
127
+
128
+ .switch-label {
129
+ display: inline-block;
130
+ font-weight: 400;
131
+ color: #677788;
132
+ position: relative;
133
+ cursor: default;
134
+ }
135
+
136
+ .switch-off,
137
+ .switch-on {
138
+ height: 100%;
139
+ width: 100%;
140
+ text-align: center;
141
+ position: absolute;
142
+ top: 0;
143
+ -webkit-transition-duration: 0.2s;
144
+ transition-duration: 0.2s;
145
+ -webkit-transition-property: left, right;
146
+ transition-property: left, right;
147
+ }
148
+
149
+ .switch-on {
150
+ left: -100%;
151
+ }
152
+
153
+ [dir=rtl] .switch-on {
154
+ left: auto;
155
+ right: -100%;
156
+ }
157
+
158
+ .switch-input:not(:checked)~.switch-toggle-slider .switch-on {
159
+ color: transparent;
160
+ }
161
+
162
+ .switch-off {
163
+ left: 0;
164
+ }
165
+
166
+ [dir=rtl] .switch-off {
167
+ right: 0;
168
+ left: auto;
169
+ }
170
+
171
+ .switch-input:checked~.switch-toggle-slider .switch-on {
172
+ left: 0;
173
+ }
174
+
175
+ [dir=rtl] .switch-input:checked~.switch-toggle-slider .switch-on {
176
+ right: 0;
177
+ left: auto;
178
+ }
179
+
180
+ .switch-input:checked~.switch-toggle-slider .switch-off {
181
+ left: 100%;
182
+ color: transparent;
183
+ }
184
+
185
+ [dir=rtl] .switch-input:checked~.switch-toggle-slider .switch-off {
186
+ right: 100%;
187
+ left: auto;
188
+ }
189
+
190
+ .switch-toggle-slider::after {
191
+ content: "";
192
+ position: absolute;
193
+ left: 0;
194
+ display: block;
195
+ border-radius: 999px;
196
+ background: #fff;
197
+ -webkit-box-shadow: -1px 2px 3px 0 rgba(0, 0, 0, 0.2);
198
+ box-shadow: -1px 2px 3px 0 rgba(0, 0, 0, 0.2);
199
+ -webkit-transition-duration: 0.2s;
200
+ transition-duration: 0.2s;
201
+ -webkit-transition-property: left, right, background;
202
+ transition-property: left, right, background;
203
+ }
204
+
205
+ [dir=rtl] .switch-toggle-slider::after {
206
+ right: 0;
207
+ left: auto;
208
+ }
209
+
210
+ .switches-stacked::after {
211
+ display: block;
212
+ clear: both;
213
+ content: "";
214
+ }
215
+
216
+ .switches-stacked .switch {
217
+ display: block;
218
+ }
219
+
220
+ html:not([dir=rtl]) .switches-stacked .switch {
221
+ margin-right: 0;
222
+ }
223
+
224
+ [dir=rtl] .switches-stacked .switch {
225
+ margin-left: 0;
226
+ }
227
+
228
+ .switches-stacked .switch:not(:last-child) {
229
+ margin-bottom: 0.75rem;
230
+ }
231
+
232
+ .switch-square,
233
+ .switch-square .switch-toggle-slider {
234
+ border-radius: 0.25rem;
235
+ }
236
+
237
+ .switch-square .switch-toggle-slider::after {
238
+ border-radius: calc(0.25rem - 2px);
239
+ }
240
+
241
+ .switch-input:disabled~.switch-toggle-slider {
242
+ opacity: 0.65;
243
+ }
244
+
245
+ .switch-input:disabled~.switch-toggle-slider::after {
246
+ -webkit-box-shadow: none;
247
+ box-shadow: none;
248
+ }
249
+
250
+ .switch-input:disabled~.switch-label {
251
+ color: #a8b1bb;
252
+ }
253
+
254
+ .switch-success.switch .switch-input:checked~.switch-toggle-slider {
255
+ background: #39da8a;
256
+ color: #fff;
257
+ }
258
+
259
+ .switch-success.switch .switch-input:active~.switch-toggle-slider {
260
+ -webkit-box-shadow: none;
261
+ box-shadow: none;
262
+ }
263
+
264
+ .switch-success.switch .switch-input:focus~.switch-toggle-slider {
265
+ -webkit-box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
266
+ box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
267
+ }
268
+
269
+ .switch-info.switch .switch-input:checked~.switch-toggle-slider {
270
+ background: #00cfdd;
271
+ color: #fff;
272
+ }
273
+
274
+ .switch-info.switch .switch-input:active~.switch-toggle-slider {
275
+ -webkit-box-shadow: none;
276
+ box-shadow: none;
277
+ }
278
+
279
+ .switch-info.switch .switch-input:focus~.switch-toggle-slider {
280
+ -webkit-box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
281
+ box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
282
+ }
283
+
284
+ .switch-warning.switch .switch-input:checked~.switch-toggle-slider {
285
+ background: #fdac41;
286
+ color: #fff;
287
+ }
288
+
289
+ .switch-warning.switch .switch-input:active~.switch-toggle-slider {
290
+ -webkit-box-shadow: none;
291
+ box-shadow: none;
292
+ }
293
+
294
+ .switch-warning.switch .switch-input:focus~.switch-toggle-slider {
295
+ -webkit-box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
296
+ box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
297
+ }
298
+
299
+ .switch-danger.switch .switch-input:checked~.switch-toggle-slider {
300
+ background: #ff5b5c;
301
+ color: #fff;
302
+ }
303
+
304
+ .switch-danger.switch .switch-input:active~.switch-toggle-slider {
305
+ -webkit-box-shadow: none;
306
+ box-shadow: none;
307
+ }
308
+
309
+ .switch-danger.switch .switch-input:focus~.switch-toggle-slider {
310
+ -webkit-box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
311
+ box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
312
+ }
313
+
314
+ .switch-dark.switch .switch-input:checked~.switch-toggle-slider {
315
+ background: #495563;
316
+ color: #fff;
317
+ }
318
+
319
+ .switch-dark.switch .switch-input:active~.switch-toggle-slider {
320
+ -webkit-box-shadow: none;
321
+ box-shadow: none;
322
+ }
323
+
324
+ .switch-dark.switch .switch-input:focus~.switch-toggle-slider {
325
+ -webkit-box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
326
+ box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
327
+ }
328
+
329
+ .switch-gray.switch .switch-input:checked~.switch-toggle-slider {
330
+ background: rgba(38, 60, 85, 0.5);
331
+ color: #fff;
332
+ }
333
+
334
+ .switch-gray.switch .switch-input:active~.switch-toggle-slider {
335
+ -webkit-box-shadow: none;
336
+ box-shadow: none;
337
+ }
338
+
339
+ .switch-gray.switch .switch-input:focus~.switch-toggle-slider {
340
+ -webkit-box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
341
+ box-shadow: 0 0 0 0.12rem rgba(147, 158, 170, 0.3);
342
+ }
343
+
344
+
345
+