yummy-guide-generic-administrate 0.6.0 → 0.6.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.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f3caffae44b6ea10fc063a2cc8fb8a3938e3cc42078c4af3bc2a08d4188cf01a
|
|
4
|
+
data.tar.gz: cea155304d262445a29199f9c5e57c574600508dca66206f49b81b3d3db66fb2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6a2e5a4b98e6cea96bfdc9e0cb026212c6ed37f39518800368329cc8ba1fcff202859acb8b3340754b493544b92f33e191d92606de032575c889e436ae39b789
|
|
7
|
+
data.tar.gz: 669b6a383ff6d184527e7324def8875626dc46dd0b5d9c5d55d3b5f18fd8f4e97188d6a943ffa65e4076a70eefd0389e41abbd7b77d97f9e98466a3c580ecc43
|
data/README.md
CHANGED
|
@@ -409,6 +409,10 @@ FILTER_ATTRIBUTES = {
|
|
|
409
409
|
</tr>
|
|
410
410
|
```
|
|
411
411
|
|
|
412
|
+
`filter_form.js` を読み込んでいる場合、`data-behavior="filter-field-clear"` を持つ
|
|
413
|
+
button は同じ `tr` 内の input / select / textarea / checkbox / radio / datetime
|
|
414
|
+
filter だけをクリアします。
|
|
415
|
+
|
|
412
416
|
複数画面で再利用する filter 型は `YummyGuide::Administrate::Filters::Base` を継承して作ります。
|
|
413
417
|
単一 input なら `input` を実装し、行全体を制御したい場合は `row` または `input_cell` を上書きします。
|
|
414
418
|
|
|
@@ -43,6 +43,12 @@
|
|
|
43
43
|
});
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
+
formEl.querySelectorAll('[data-behavior="filter-field-clear"]').forEach(function(buttonEl) {
|
|
47
|
+
buttonEl.addEventListener("click", function(event) {
|
|
48
|
+
clearFilterField(formEl, event);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
|
|
46
52
|
formEl.querySelectorAll('[data-behavior="checkbox-group-select-all"]').forEach(function(buttonEl) {
|
|
47
53
|
buttonEl.addEventListener("click", function() {
|
|
48
54
|
setCheckboxGroupState(formEl, buttonEl.dataset.target, true);
|
|
@@ -58,6 +64,19 @@
|
|
|
58
64
|
syncDatetimeFilterFields(formEl);
|
|
59
65
|
}
|
|
60
66
|
|
|
67
|
+
function clearFilterField(formEl, event) {
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
|
|
70
|
+
var rowEl = event.currentTarget.closest("tr");
|
|
71
|
+
if (!rowEl) return;
|
|
72
|
+
|
|
73
|
+
clearTextControls(rowEl);
|
|
74
|
+
clearChoiceControls(rowEl);
|
|
75
|
+
clearSelectControls(rowEl);
|
|
76
|
+
clearDatetimeFilters(rowEl);
|
|
77
|
+
syncDatetimeFilterFields(formEl);
|
|
78
|
+
}
|
|
79
|
+
|
|
61
80
|
function clearFormFields(formEl) {
|
|
62
81
|
formEl.querySelectorAll("input, select, textarea").forEach(function(fieldEl) {
|
|
63
82
|
if (fieldEl.disabled || fieldEl.type === "hidden" || fieldEl.type === "submit") {
|
|
@@ -86,6 +105,57 @@
|
|
|
86
105
|
syncDatetimeFilterFields(formEl);
|
|
87
106
|
}
|
|
88
107
|
|
|
108
|
+
function clearTextControls(rowEl) {
|
|
109
|
+
rowEl.querySelectorAll("input, textarea").forEach(function(inputEl) {
|
|
110
|
+
var inputType = (inputEl.getAttribute("type") || "").toLowerCase();
|
|
111
|
+
|
|
112
|
+
if (inputType === "checkbox" || inputType === "radio") return;
|
|
113
|
+
if (inputType === "hidden" && inputEl.dataset.datetimePart !== "combined") return;
|
|
114
|
+
|
|
115
|
+
inputEl.value = "";
|
|
116
|
+
inputEl.setAttribute("value", "");
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function clearChoiceControls(rowEl) {
|
|
121
|
+
rowEl.querySelectorAll('input[type="checkbox"], input[type="radio"]').forEach(function(inputEl) {
|
|
122
|
+
inputEl.checked = false;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function clearSelectControls(rowEl) {
|
|
127
|
+
rowEl.querySelectorAll("select").forEach(function(selectEl) {
|
|
128
|
+
if (selectEl.querySelector('option[value=""]')) {
|
|
129
|
+
selectEl.value = "";
|
|
130
|
+
} else if (selectEl.querySelector('option[value="all"]')) {
|
|
131
|
+
selectEl.value = "all";
|
|
132
|
+
} else {
|
|
133
|
+
selectEl.selectedIndex = -1;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function clearDatetimeFilters(rowEl) {
|
|
139
|
+
rowEl.querySelectorAll("[data-datetime-filter]").forEach(function(groupEl) {
|
|
140
|
+
var combinedEl = groupEl.querySelector('[data-datetime-part="combined"]');
|
|
141
|
+
var dateEl = groupEl.querySelector('[data-datetime-part="date"]');
|
|
142
|
+
|
|
143
|
+
if (combinedEl) {
|
|
144
|
+
combinedEl.value = "";
|
|
145
|
+
combinedEl.setAttribute("value", "");
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (dateEl) {
|
|
149
|
+
dateEl.value = "";
|
|
150
|
+
dateEl.setAttribute("value", "");
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
clearDatetimeTimeParts(groupEl);
|
|
154
|
+
syncDatetimeTimeDisabledState(groupEl);
|
|
155
|
+
syncBlankMinuteOptionState(groupEl);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
|
|
89
159
|
function setCheckboxGroupState(formEl, groupName, checked) {
|
|
90
160
|
if (!groupName) return;
|
|
91
161
|
|
|
@@ -216,4 +286,3 @@
|
|
|
216
286
|
|
|
217
287
|
document.addEventListener("turbo:load", initializeFromDocument);
|
|
218
288
|
})();
|
|
219
|
-
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yummy-guide-generic-administrate
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- akatsuki-kk
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-05-
|
|
11
|
+
date: 2026-05-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: administrate
|