PageSourceSearch

https://ronherman.jp/assets/front/js/item_list.js?1738300309

js ronherman.jp collected 2026-10-03 21:20:11 UTC 10,035 bytes, 324 lines download raw bytes

1$(function(){
2
3	if ($('#scroll-header-pc.splide').length > 0) {
4		const scroll_pc_header = new Splide("#scroll-header-pc.splide", {
5			type: 'loop',
6			perPage: 7,
7			gap: '4rem',
8			drag: false,
9			arrows: false,
10			pagination: false,
11			autoScroll: {
12				speed: 0.8,
13				pauseOnHover: false,
14				pauseOnFocus: false,
15			}
16		});
17		scroll_pc_header.mount(window.splide.Extensions);
18	}
19
20	if ($('#scroll-header-sp.splide').length > 0) {
21		const scroll_sp_header = new Splide("#scroll-header-sp.splide", {
22			type: 'loop',
23			perPage: 3,
24			gap: '2.5vw',
25			drag: false,
26			arrows: false,
27			pagination: false,
28			autoScroll: {
29				speed: 0.6,
30				pauseOnHover: false,
31				pauseOnFocus: false,
32			}
33		});
34		scroll_sp_header.mount(window.splide.Extensions);
35	}
36
37	if ($('.scroll-footer.splide').length > 0) {
38		const scroll_sp_header = new Splide(".scroll-footer.splide", {
39			type: 'loop',
40			perPage: 7,
41			gap: '4rem',
42			drag: false,
43			arrows: false,
44			pagination: false,
45			autoScroll: {
46				speed: 0.8,
47				pauseOnHover: false,
48				pauseOnFocus: false,
49			},
50			mediaQuery: 'max',
51			breakpoints: { 640: { perPage: 3, gap: '2.5vw', autoScroll: { speed: 0.6 } } }
52		});
53		scroll_sp_header.mount(window.splide.Extensions);
54	}
55
56	// フィルタリングメニュー
57	var filters_targets = ['goods_status_id', 'new', 'sold', 'goods_class', 'category_id', 'brand_id', 'color_search_group_id'];
58	var sort_targets = ['per_page'];
59	var filters_params = [];
60	var sort_params = [];
61	let is_jewelry_checked = false;
62
63	var params = location.search.replace(/^\?/, '').split('&');
64
65	if (poplink_category_id != '') {
66		params.push('category_id=' + poplink_category_id);
67	}
68
69	var sale_flag = false;
70	var rhc_flag = false;
71
72	$.each(params, function(index, param) {
73		param = param.split('=');
74		var key = param[0];
75		var value = param[1];
76		if (key == 'goods_status_id' && value == 2) {
77			sale_flag = true;
78		}
79		if (key == 'category_id' && value == rhc_category_id) {
80			rhc_flag = true;
81		}
82	});
83
84	$.each(params, function(index, param) {
85		param = param.split('=');
86		var key = param[0];
87		var value = param[1];
88
89		if (typeof value !== 'undefined'){
90			value = value.replaceAll('%2C', ',');
91		}
92
93		$('[data-filtering-target-name="' + key + '"][data-filtering-target-value="' + value + '"]')
94			.data('isChecked', true).parent('li').addClass('checked');
95
96		if (key == 'goods_class' && value) {
97			var target_values = value.split(',');
98			$.each(target_values, function(){
99				$('[data-filtering-target-name="' + key + '"][data-filtering-target-value="' + this + '"]')
100					.data('isChecked', true).parent('li').addClass('checked');
101			});
102		}
103
104		if (key == 'category_id' && value) {
105			let target_jewelry_categories = sub_jewelry_category_ids.split(',');
106			let target_categories = value.split(',');
107			$.each(target_categories, function(i, category_value) {
108				if ($.inArray(category_value, target_jewelry_categories) !== -1) {
109					if (is_jewelry_checked === false) {
110						is_jewelry_checked = true;
111					}
112				}
113			});
114			if (is_jewelry_checked === true) {
115				$('[data-filtering-target-name="' + key + '"][data-filtering-target-value="' + jewelry_category_id + '"]')
116					.data('isChecked', true).parent('li').addClass('checked');
117			}
118		}
119
120		// 選択中ラベルを配列にセット
121		if (filters_targets.indexOf(key) >= 0) {
122			filters_params.push($('[data-filtering-target-name="' + key + '"][data-filtering-target-value="' + value + '"]:not(.conditions-select-button, .show-for-small .jsFiltering').text());
123		} else if (sort_targets.indexOf(key) >= 0) {
124			sort_params.push($('[data-filtering-target-name="' + key + '"][data-filtering-target-value="' + value + '"]').text());
125		}
126
127		if (key == 'category_id' && value != '' && !rhc_flag) {
128			if (is_jewelry_checked === true) {
129				$('.plp-nav-category .plp-nav-dropdown-item__value-label').text($('.item-list .plp [data-filtering-target-name="' + key + '"][data-filtering-target-value="' + jewelry_category_id + '"]:not(.conditions-select-button, .show-for-small .jsFiltering').text());
130			} else {
131				$('.plp-nav-category .plp-nav-dropdown-item__value-label').text($('.item-list .plp [data-filtering-target-name="' + key + '"][data-filtering-target-value="' + value + '"]:not(.conditions-select-button, .show-for-small .jsFiltering').text());
132			}
133		}
134		if (key == 'per_page' && value != '') {
135			$('.plp-nav-view .plp-nav-dropdown-item__value-label').text($('.item-list .plp [data-filtering-target-name="' + key + '"][data-filtering-target-value="' + value + '"]').text());
136		}
137		if (key == 'goods_class' && value != '' && (sale_flag || rhc_flag)) {
138			var display_label = $('.item-list .plp #plp-category [data-filtering-target-name="' + key + '"][data-filtering-target-value="' + value + '"]:not(.conditions-select-button, .show-for-small .jsFiltering').text();
139			if (display_label != '') {
140				$('.plp-nav-category .plp-nav-dropdown-item__value-label').text(display_label);
141			}
142		}
143	});
144
145	var display_category_label = $('.plp-nav-category .plp-nav-dropdown-item__value-label').text();
146	if (display_category_label == '') {
147		$('.plp-nav-category .plp-nav-dropdown-item__value-label').text('---');
148	}
149
150	if ($('.plp-nav__goods-class li.checked').length < 1)
151	{
152		$('[data-filtering-target-name="goods_class"][data-filtering-target-value=""]').parent('li').addClass('checked');
153	}
154
155	// 選択中ラベルをセット
156	$('.conditions-selected-label.conditions-filters').html(filters_params.join('<br>'));
157	$('.conditions-selected-label.conditions-sort').html(sort_params.join('<br>'));
158
159	if ($(window).width() <= 640) {
160		$('.conditions-select-button').data('isSubmit', false);
161	}
162
163	$('.sale-plp-nav li.checked a').bind('click', function() {
164		$(this).attr('href', '/item');
165	});
166
167	$(window).on('resize', function () {
168		if ($(window).width() <= 640) {
169			$('.conditions-select-button').data('isSubmit', false);
170		} else {
171			$('.conditions-select-button').data('isSubmit', true);
172		}
173	});
174
175	(function() {
176
177		// formキャッシュ
178		var $form = $('#filteringForm');
179
180		// フィルタリングメニューclick
181		$(document).on('click', '.jsFiltering', function(e){
182
183			e.preventDefault();
184
185			// cache
186			var $this = $(this);
187			var targetName = $this.data('filteringTargetName');
188			var targetValue = $this.data('filteringTargetValue');
189			var otherTargetNames = $this.data('otherTargetNames') || [];
190			var otherTargetValues = $this.data('otherTargetValues') || [];
191			var isClearAll = $this.data('filteringClearAll') || false;
192			var isSubmit = $this.data('isSubmit') || false;
193			var isChecked = $this.data('isChecked') || false;
194
195			if (targetName == "col_cnt" && isChecked) {
196				return false;
197			}
198
199			// formデフォルト値クリア
200			if (isClearAll) {
201				$form.find('input:not(.jsFixedValue)').val('');
202			}
203
204			// 該当の値を変更
205			$form.find('[name="' + targetName + '"]').val(isChecked ? '' : targetValue);
206
207			// 同ターゲットの項目をクリア
208			if (!isChecked) {
209				$('[data-filtering-target-name="' + targetName + '"]').data('isChecked', false)
210					.parent('li').removeClass('checked');
211			}
212
213			var length = otherTargetNames.length;
214			for (var i = 0; i < length; ++i) {
215				// 該当の値を変更
216				$form.find('[name="' + otherTargetNames[i] + '"]').val(isChecked ? '' : otherTargetValues[i]);
217			}
218
219			// よきにはからう
220			$this.data('isChecked', !isChecked);
221			$this.parent('li').toggleClass('checked');
222
223			// submit
224			if (isSubmit) {
225				$form.submit();
226			}
227		});
228
229		// 金額範囲だけベタ
230		$(document).on('click', '.jsFilteringPrice', function(e){
231
232			e.preventDefault();
233
234			var $this = $(this);
235			var isChecked = $this.data('isChecked') || false;
236
237			// 該当の値を変更
238			$form.find('[name="price_from"]').val(isChecked ? '' : $this.data('price_from'));
239			$form.find('[name="price_to"]').val(isChecked ? '' : $this.data('price_to'));
240
241			// 同ターゲットの項目をクリア
242			if (!isChecked) {
243				$('.jsFilteringPrice').data('isChecked', false)
244					.parent('li').removeClass('checked');
245			}
246
247			// よきにはからう
248			$this.data('isChecked', !isChecked);
249			$this.parent('li').toggleClass('checked');
250		});
251
252		// フィルタリングクリア
253		$(document).on('click', '.jsResetFiltering', function(){
254
255			$('.jsFiltering[data-is-submit="false"], .jsFilteringPrice').each(function(){
256				var _$this = $(this);
257				if (_$this.data('isChecked')) {
258					_$this.trigger('click');
259				}
260			});
261		});
262
263		// フィルタリングsubmit
264		$(document).on('click', '.jsSubmitFiltering', function(){
265
266			var $originalForm = $($(this).data('targetForm'));
267			$originalForm.submit();
268		});
269
270		// ダミーformの変更はメインformへ転送
271		$(document).on('change', '.dummyForm', function(e){
272
273			e.preventDefault();
274
275			var $this = $(this);
276			var $originalForm = $($this.data('targetForm'));
277			var $target = $(e.target);
278			var targetValue;
279			if ($target.attr('type') === 'checkbox') {
280				targetValue = $target.prop('checked') === true ? $target.val() : null;
281			} else {
282				targetValue = $target.val();
283			}
284
285			$originalForm.find('[name="' + $target.attr('name') + '"]').val(targetValue).trigger('change');
286
287			if ($target.data('isSubmitOnChange')) {
288				$this.submit();
289			}
290		});
291
292		// ダミーformのsubmitはメインformへ転送
293		$(document).on('submit', '.dummyForm', function(e){
294
295			e.preventDefault();
296
297			var $this = $(this);
298			var $originalForm = $($this.data('targetForm'));
299			$this.find('[name]').each(function(){
300				var _$this = $(this);
301				var value;
302				if (_$this.attr('type') === 'checkbox') {
303					value = _$this.prop('checked') === true ? _$this.val() : null;
304				} else {
305					value = _$this.val();
306				}
307				$originalForm.find('[name="' + _$this.attr('name') + '"]').val(value);
308			});
309
310			$originalForm.submit();
311		});
312
313		// メインformのsubmit時に不要な値を除去
314		$form.on('submit', function(){
315			$(this).find('input').each(function(){
316				var $this = $(this);
317				if ($this.val() == '') {
318					$this.remove();
319				}
320			});
321		});
322
323	}());
324});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.