PageSourceSearch

https://www.prime1studio.com/on/demandware.static/Sites-Prime1Stud…/-/default/v1790923457643/js/login.js

js prime1studio.com collected 2026-10-02 10:32:47 UTC 23,164 bytes, 581 lines download raw bytes

vendor: 87 bytes, lines 1-4
1/******/ (() => { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
4/***/ "./
4app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/clientSideValidation.js":
5/*!***************************************************************************************************************************!*\
6  !*** ./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/clientSideValidation.js ***!
7  \***************************************************************************************************************************/
8/***/ ((module) => {
9
10"use strict";
11
12
13/**
14 * Validate whole form. Requires `this` to be set to form object
15 * @param {jQuery.event} event - Event to be canceled if form is invalid.
16 * @returns {boolean} - Flag to indicate if form is valid
17 */
18function _validateForm(event) {
19  var valid = true;
20  if (this.checkValidity && !this.checkValidity()) {
21    // safari
22    valid = false;
23    if (event) {
24      event.preventDefault();
25      event.stopPropagation();
26      event.stopImmediatePropagation();
27    }
28    $(this).find('input, select, textarea').each(function () {
29      if (!this.validity.valid) {
30        $(this).trigger('invalid', this.validity);
31      }
32    });
33  }
34  return valid;
35}
36
37/**
38 * Remove all validation. Should be called every time before revalidating form
39 * @param {element} form - Form to be cleared
40 * @returns {void}
41 */
42function clearForm(form) {
43  $(form).find('.form-control.is-invalid').removeClass('is-invalid');
44  $(form).find('.invalid-feedback').text('');
45}
46module.exports = {
47  invalid: function invalid() {
48    $('form input, form select, form textarea').on('invalid', function (e) {
49      e.preventDefault();
50      this.setCustomValidity('');
51      if (!this.validity.valid) {
52        var validationMessage = this.validationMessage;
53        $(this).addClass('is-invalid');
54        // Due to the input with type email has many validations
55        // So need to set it invalid with the pattern mismatch error
56        // (When all validity is false, but this.validity.valid is still not true)
57        if (this.validity.patternMismatch && $(this).data('pattern-mismatch') || Object.values(this.validity).every(function (value) {
58          return !value;
59        })) {
60          validationMessage = $(this).data('pattern-mismatch');
61        }
62        if ((this.validity.rangeOverflow || this.validity.rangeUnderflow) && $(this).data('range-error')) {
63          validationMessage = $(this).data('range-error');
64        }
65        if ((this.validity.tooLong || this.validity.tooShort) && $(this).data('range-error')) {
66          validationMessage = $(this).data('range-error');
67        }
68        if (this.validity.valueMissing && $(this).data('missing-error')) {
69          validationMessage = $(this).data('missing-error');
70        }
71        $(this).parents('.form-group').find('.invalid-feedback').text(validationMessage);
72      }
73    });
74  },
75  submit: function submit() {
76    $('form').on('submit', function (e) {
77      return _validateForm.call(this, e);
78    });
79  },
80  buttonClick: function buttonClick() {
81    $('form button[type="submit"], form input[type="submit"]').on('click', function () {
82      // clear all errors when trying to submit the form
83      clearForm($(this).parents('form'));
84    });
85  },
86  functions: {
87    validateForm: function validateForm(form, event) {
88      var isValidForm = _validateForm.call(form, event || null);
89      return isValidForm;
90    },
91    clearForm: clearForm
92  }
93};
94
95/***/ }),
96
97/***/ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/emailValidation.js":
98/*!**********************************************************************************************************************!*\
99  !*** ./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/emailValidation.js ***!
100  \**********************************************************************************************************************/
101/***/ ((module) => {
102
103"use strict";
104
105
106module.exports = function (email) {
107  var split = email.split('@');
108  var regex = email.match(/^[A-Za-z0-9_.+\/?-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/) && split.length == 2 && !split[0].match(/[\s,()\[\];:%*<>\""{}]/) && !split[0].match(/^[\.]|[\x01-\x1F]|[\x7f-\xff]/) && !split[1].match(/^\.|\.\.|\.$|[^a-zA-Z0-9\.\-\_]/);
109  return regex;
110};
111
112/***/ }),
113
114/***/ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/errorNotification.js":
115/*!************************************************************************************************************************!*\
116  !*** ./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/errorNotification.js ***!
117  \************************************************************************************************************************/
118/***/ ((module) => {
119
120module.exports = function (element, message) {
121  var errorHtml = "".concat('<div class="alert alert-danger alert-dismissible ' + 'fade show" role="alert">' + '<button type="button" class="close" data-dismiss="alert" aria-label="Close">' + '<span aria-hidden="true">&times;</span>' + '</button>').concat(message, "</div>");
122  $(element).append(errorHtml);
123};
124
125/***/ }),
126
127/***/ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/formValidation.js":
128/*!*********************************************************************************************************************!*\
129  !*** ./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/formValidation.js ***!
130  \*********************************************************************************************************************/
131/***/ ((module) => {
132
133function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
134/**
135 * Remove all validation. Should be called every time before revalidating form
136 * @param {element} form - Form to be cleared
137 * @returns {void}
138 */
139function clearFormErrors(form) {
140  $(form).find('.form-control.is-invalid').removeClass('is-invalid');
141}
142module.exports = function (formElement, payload) {
143  // clear form validation first
144  clearFormErrors(formElement);
145  $('.alert', formElement).remove();
146  if (_typeof(payload) === 'object' && payload.fields) {
147    Object.keys(payload.fields).forEach(function (key) {
148      if (payload.fields[key]) {
149        var feedbackElement = $(formElement).find("[name=\"".concat(key, "\"]")).parent().children('.invalid-feedback');
150        if (feedbackElement.length > 0) {
151          if (Array.isArray(payload[key])) {
152            feedbackElement.html(payload.fields[key].join('<br/>'));
153          } else {
154            feedbackElement.html(payload.fields[key]);
155          }
156          feedbackElement.siblings('.form-control').addClass('is-invalid');
157        }
158      }
159    });
160  }
161  if (payload && payload.error) {
162    var form = $(formElement).prop('tagName') === 'FORM' ? $(formElement) : $(formElement).parents('form');
163    form.prepend("<div class=\"alert alert-danger\" role=\"alert\">".concat(payload.error.join('<br/>'), "</div>"));
164  }
165};
166
167/***/ }),
168
169/***/ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/passwordValidation.js":
170/*!*************************************************************************************************************************!*\
171  !*** ./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/passwordValidation.js ***!
172  \*************************************************************************************************************************/
173/***/ ((module) => {
174
175"use strict";
176
177
178module.exports = function (password) {
179  var regex = /^(?=.*?[0-9])(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[!-/:-@[-`{-~])[0-9a-zA-Z!-/:-@[-`{-~]{8,12}$/;
180  return regex.test(password);
181};
182
183/***/ }),
184
185/***/ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/login/login.js":
186/*!*******************************************************************************************************!*\
187  !*** ./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/login/login.js ***!
188  \*******************************************************************************************************/
189/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
190
191"use strict";
192
193
194var formValidation = __webpack_require__(/*! ../components/formValidation */ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/formValidation.js");
195var clientSideValidation = __webpack_require__(/*! ../components/clientSideValidation */ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/clientSideValidation.js");
196var emailValidation = __webpack_require__(/*! ../components/emailValidation */ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/emailValidation.js");
197var passwordValidation = __webpack_require__(/*! ../components/passwordValidation */ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/passwordValidation.js");
198var createErrorNotification = __webpack_require__(/*! ../components/errorNotification */ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/components/errorNotification.js");
199function bodyFixedOn(isiOS, scrollPosition) {
200  if (isiOS) {
201    scrollPosition = $(window).scrollTop();
202    $('body').addClass('jsModalOpenedIOS');
203    $('body').css('top', "-".concat(scrollPosition, "px"));
204  } else {
205    $('body').addClass('jsModalOpened');
206  }
207}
208function bodyFixedOff(isiOS, scrollPosition) {
209  if (isiOS) {
210    $('body').removeClass('jsModalOpenedIOS');
211    $('body').css('top', '');
212    $(window).scrollTop(scrollPosition);
213  } else {
214    $('body').removeClass('jsModalOpened');
215  }
216}
217function popupModal(button, e) {
218  var $this = $(button);
219  var closeBtnUrl = $this.data('close-btn');
220  var closeButton = '<button title="Close (Esc)" type="button" class="mfp-close mfp-close--custom" onclick="$.magnificPopup.close();"><img src="' + closeBtnUrl + '"></button>';
221  if ($this.hasClass('jsNoDispClose')) {
222    closeButton = '';
223  }
224  var scrollPosition;
225  var ua = window.navigator.userAgent.toLowerCase();
226  var isiOS = ua.indexOf('iphone') > -1 || ua.indexOf('ipad') > -1 || ua.indexOf('macintosh') > -1 && 'ontouchend' in document;
227  $.ajax({
228    url: $this.attr('href'),
229    type: 'get',
230    data: []
231  }).done(function (data) {
232    $.spinner().stop();
233    $.magnificPopup.open({
234      items: {
235        src: data,
236        type: 'inline'
237      },
238      // 規約同意はモダル外クリックでは閉じない
239      closeOnBgClick: false,
240      mainClass: 'mfp-fade',
241      removalDelay: 600,
242      closeMarkup: "<button title=\"Close (Esc)\" type=\"button\" class=\"mfp-close mfp-close--custom\" onclick=\"$.magnificPopup.close();\"><img src=\"".concat(closeBtnUrl, "\"></button>"),
243      callbacks: {
244        open: function open() {
245          bodyFixedOn(isiOS, scrollPosition);
246        },
247        close: function close() {
248          bodyFixedOff(isiOS, scrollPosition);
249        }
250      }
251    });
252  }).fail(function (err) {
253    if (err.responseJSON.redirectUrl) {
254      window.location.href = err.responseJSON.redirectUrl;
255    }
256  });
257  e.preventDefault();
258}
259function setAgreementVersion(loginEmail, loginPassword) {
260  var signinContent = $('.signin-content');
261  var form = $('form.login');
262  var url = form.attr('action');
263  $.ajax({
264    url: url,
265    type: 'post',
266    dataType: 'json',
267    data: form.serialize(),
268    success: function success(data) {
269      if (data.success) {
270        // 成功時は何もせず画面遷移
271        window.location.href = data.redirectUrl;
272      } else {
273        // 失敗時はエラー表示
274        $('.jsModalContentOuter').spinner().stop();
275        $.magnificPopup.close();
276        var errorMessage = data.error[0];
277        signinContent.find('#form-backend-error').html(errorMessage);
278      }
279    },
280    error: function error(data) {
281      if (data.responseJSON.redirectUrl) {
282        window.location.href = data.responseJSON.redirectUrl;
283      } else {
284        // 失敗時はエラー表示
285        $('.jsModalContentOuter').spinner().stop();
286        $.magnificPopup.close();
287        var errorMessage = data.responseJSON.error.errorText;
288        signinContent.find('#form-backend-error').html(errorMessage);
289      }
290    }
291  });
292  return false;
293}
294
295/**
296 * 各種バリデーション後にログインし、もし規約同意バージョンが異なる場合はモーダルを表示する。
297 * 規約同意バージョンが同一ならばそのままログインする。
298 * @param {Event} e - イベント情報
299 * @returns {Boolean} false
300 */
301function _login(e) {
302  $.spinner().start();
303  /**
304   * フォーム情報取得
305   */
306  var form = $('form.login');
307
308  /**
309   * ログイン用メールアドレス
310   * @type {string}
311   */
312  var loginEmail = $('#login-form-email').val();
313  /**
314   * ログイン用パスワード
315   * @type {string}
316   */
317  var loginPassword = $('#login-form-password').val();
318
319  // エラーメッセージの除去
320  clientSideValidation.functions.clearForm(form.get(0));
321  form.find('#form-backend-error').html('');
322  var isValidPasswordEmail = true;
323
324  // Eメールアドレスのバリデーションチェック
325  if (!emailValidation(loginEmail)) {
326    var emailErrorMessage = $('#login-form-email').data('pattern-mismatch');
327    $('#login-form-email').addClass('is-invalid');
328    form.find('#form-address-error').html(emailErrorMessage);
329    isValidPasswordEmail = false;
330  }
331
332  // パスワードのバリデーションチェック
333  if (!passwordValidation(loginPassword)) {
334    var passwordErrorMessage = $('#login-form-password').data('pattern-mismatch');
335    $('#login-form-password').addClass('is-invalid');
336    form.find('#form-password-error').html(passwordErrorMessage);
337    isValidPasswordEmail = false;
338  }
339
340  // formのvalidationチェック
341  var isValid = clientSideValidation.functions.validateForm(form.get(0), e);
342  // validation失敗
343  if (!isValidPasswordEmail || !isValid) {
344    $.spinner().stop();
345    return false;
346  }
347  var button = $('.jsMagnific#login');
348  var url = button.data('loginurl');
349  // バックエンドへの送信処理
350  $.ajax({
351    url: url,
352    type: 'post',
353    dataType: 'json',
354    data: form.serialize(),
355    context: button,
356    success: function success(data) {
357      if (data.success) {
358        // 成功時は何もせず画面遷移
359        window.location.href = data.redirectUrl;
360      } else if (data.isDifferentAgreementVersion) {
361        // 規約同意バージョンに違いがある場合はダイアログを表示する
362        popupModal(this, e);
363      } else if (data.isExpiredPassword) {
364        // パスワード有効期限切れはリセットページに遷移
365        window.location.href = data.redirectUrl;
366      } else {
367        // 失敗時はエラー表示
368        $.spinner().stop();
369        var errorMessage = data.error[0];
370        form.find('#form-backend-error').html(errorMessage);
371      }
372    },
373    error: function error(data) {
374      if (data.responseJSON.redirectUrl) {
375        window.location.href = data.responseJSON.redirectUrl;
376      } else {
377        var errorMessage = data.responseJSON.error.errorText;
378        form.find('#form-backend-error').html(errorMessage);
379        $.spinner().stop();
380      }
381    }
382  });
383}
384module.exports = {
385  login: function login() {
386    // ログインボタン押下で発火
387    $('.jsMagnific#login').click(function (e) {
388      _login(e);
389    });
390    // ログインフォーム上でエンターキー押下で発火
391    $('form.login').keypress(function (e) {
392      if (e.which === 13) {
393        _login(e);
394      }
395    });
396  },
397  showmodal: function showmodal() {
398    $('.jsMagnific#registration').click(function (e) {
399      e.preventDefault();
400      $.spinner().start();
401      var form = $('form.registration');
402      var isValidPasswordEmail = true;
403
404      // エラーメッセージの除去
405      clientSideValidation.functions.clearForm(form.get(0));
406      // emailの正規表現チェック
407      var email = $('#register-email');
408      if (!emailValidation(email.val())) {
409        email.addClass('is-invalid');
410        email.parents('.form-group').find('.invalid-feedback').text(email.data('pattern-mismatch'));
411        isValidPasswordEmail = false;
412      }
413      // Validate email address
414      if (email.val().length > 80) {
415        email.addClass('is-invalid');
416        email.parents('.form-group').find('.invalid-feedback').text(email.data('range-error'));
417        isValidPasswordEmail = false;
418      }
419
420      // パスワードの正規表現チェック
421      var password = $('#register-password');
422      if (!passwordValidation(password.val())) {
423        password.addClass('is-invalid');
424        password.parents('.form-group').find('.invalid-feedback').text(password.data('pattern-mismatch'));
425        isValidPasswordEmail = false;
426      }
427
428      // formのvalidationチェック
429      var isValid = clientSideValidation.functions.validateForm(form.get(0), e);
430      // validation失敗
431      if (!isValidPasswordEmail || !isValid) {
432        $.spinner().stop();
433        return false;
434      }
435
436      // server-sideでのvalidationチェック
437      $.ajax({
438        url: $(this).data('checkform'),
439        type: 'post',
440        dataType: 'json',
441        data: form.serialize(),
442        context: $('.jsMagnific#registration'),
443        success: function success(data) {
444          if (data.isValid) {
445            popupModal(this, e);
446          } else {
447            $.spinner().stop();
448            formValidation(form, data);
449          }
450        },
451        error: function error(err) {
452          createErrorNotification($('.error-messaging'), err.responseJSON.errorMessage);
453          $.spinner().stop();
454        }
455      });
456      return false;
457    });
458  },
459  register: function register() {
460    $('form.registration').on('submit', function (e) {
461      var form = $(this);
462      e.preventDefault();
463      var url = form.attr('action');
464      $('form.registration').trigger('login:register', e);
465      $.ajax({
466        url: url,
467        type: 'post',
468        dataType: 'json',
469        data: form.serialize(),
470        success: function success(data) {
471          if (data.success) {
472            location.href = data.redirectUrl;
473          } else {
474            $('.jsModalContentOuter').spinner().stop();
475            $.magnificPopup.close();
476            formValidation(form, data);
477          }
478        },
479        error: function error(err) {
480          if (err.responseJSON.redirectUrl) {
481            window.location.href = err.responseJSON.redirectUrl;
482          } else {
483            $('.jsModalContentOuter').spinner().stop();
484            $.magnificPopup.close();
485            createErrorNotification($('.error-messaging'), err.responseJSON.errorMessage);
486          }
487        }
488      });
489      return false;
490    });
491  },
492  submitbtn: function submitbtn() {
493    $('body').on('click', '.jsButtonContinue#submitbtn', function (e) {
494      var formName = $(this).data('form-name');
495      $(this).prop('disabled', true);
496      $('.jsModalContentOuter').spinner().start();
497      // 規約同意モダルが新規会員登録から呼び出された場合
498      if (formName === 'registration') {
499        $('form.registration').trigger('submit');
500        // 規約同意モダルがログインから呼び出された場合
501      } else if (formName === 'login') {
502        // 顧客の規約同意バージョンを更新しログインする
503        var loginEmail = $('#login-form-email').val();
504        ;
505        var loginPassword = $('#login-form-password').val();
506        ;
507        setAgreementVersion(loginEmail, loginPassword);
508      }
509      return false;
510    });
511  }
512};
513
514/***/ }),
515
516/***/ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/util.js":
517/*!************************************************************************************************!*\
518  !*** ./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/util.js ***!
519  \************************************************************************************************/
520/***/ ((module) => {
521
522function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
523module.exports = function (include) {
524  if (typeof include === 'function') {
525    include();
526  } else if (_typeof(include) === 'object') {
527    Object.keys(include).forEach(function (key) {
528      if (typeof include[key] === 'function') {
529        include[key]();
530      }
531    });
532  }
533};
534
535/***/ })
535
536
537/******/ 	});
538/************************************************************************/
539/******/ 	// The module cache
540/******/ 	var __webpack_module_cache__ = {};
541/******/ 	
542/******/ 	// The require function
543/******/ 	function __webpack_require__(moduleId) {
544/******/ 		// Check if module is in cache
545/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
546/******/ 		if (cachedModule !== undefined) {
547/******/ 			return cachedModule.exports;
548/******/ 		}
549/******/ 		// Create a new module (and put it into the cache)
550/******/ 		var module = __webpack_module_cache__[moduleId] = {
551/******/ 			// no module.id needed
552/******/ 			// no module.loaded needed
553/******/ 			exports: {}
554/******/ 		};
555/******/ 	
556/******/ 		// Execute the module function
557/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
558/******/ 	
559/******/ 		// Return the exports of the module
560/******/ 		return module.exports;
561/******/ 	}
562/******/ 	
563/************************************************************************/
564var __webpack_exports__ = {};
565// This entry need to be wrapped in an IIFE because it need to be in strict mode.
566(() => {
567"use strict";
568/*!*************************************************************************************************!*\
569  !*** ./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/login.js ***!
570  \*************************************************************************************************/
571
572
573var processInclude = __webpack_require__(/*! ./util */ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/util.js");
574$(document).ready(function () {
575  processInclude(__webpack_require__(/*! ./login/login */ "./app_prime1studio_ec/cartridges/app_prime1studio_ec/cartridge/client/default/js/login/login.js"));
576});
577})();
578
579/******/ })()
580;
581//# sourceMappingURL=login.js.map

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.