From cf0309e8db218ae2aa10cf1a53f8b420e9c532d3 Mon Sep 17 00:00:00 2001 From: Sagnik Ganguly Date: Thu, 11 Aug 2022 13:16:55 +0530 Subject: [PATCH] FIXED: Issue #20: SGNForm component file input not working UPDATED: Redesigned "Browse" button of SGNForm component file input --- src/css/SGNUIKit-free.css | 4 ++++ src/css/SGNUIKit-pro.css | 4 ++++ src/css/components/SGNForms/inputs/file.css | 6 ++--- src/js/components/forms/inputs.js | 25 ++++++++++++--------- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/css/SGNUIKit-free.css b/src/css/SGNUIKit-free.css index a57b3608..51ee3f85 100644 --- a/src/css/SGNUIKit-free.css +++ b/src/css/SGNUIKit-free.css @@ -109,9 +109,13 @@ main > .sgn-center-container { } :root, [class^="sgn-"], [class^="sgn-"] * { + --sgn-border-radius-inner-diff: .2rem; --sgn-border-radius-xs: .2rem; --sgn-border-radius-sm: .5rem; --sgn-border-radius-md: 1rem; + --sgn-border-inner-radius-xs: calc(var(--sgn-border-radius-xs) - 0rem); + --sgn-border-inner-radius-sm: calc(var(--sgn-border-radius-sm) - var(--sgn-border-radius-inner-diff)); + --sgn-border-inner-radius-md: calc(var(--sgn-border-radius-md) - var(--sgn-border-radius-inner-diff)); --sgn-shadow-spread: 1rem; } diff --git a/src/css/SGNUIKit-pro.css b/src/css/SGNUIKit-pro.css index b6d0eef8..c41ca64c 100644 --- a/src/css/SGNUIKit-pro.css +++ b/src/css/SGNUIKit-pro.css @@ -109,9 +109,13 @@ main > .sgn-center-container { } :root, [class^="sgn-"], [class^="sgn-"] * { + --sgn-border-radius-inner-diff: .2rem; --sgn-border-radius-xs: .2rem; --sgn-border-radius-sm: .5rem; --sgn-border-radius-md: 1rem; + --sgn-border-inner-radius-xs: calc(var(--sgn-border-radius-xs) - 0rem); + --sgn-border-inner-radius-sm: calc(var(--sgn-border-radius-sm) - var(--sgn-border-radius-inner-diff)); + --sgn-border-inner-radius-md: calc(var(--sgn-border-radius-md) - var(--sgn-border-radius-inner-diff)); --sgn-shadow-spread: 1rem; } diff --git a/src/css/components/SGNForms/inputs/file.css b/src/css/components/SGNForms/inputs/file.css index da78abf8..d0f52f98 100644 --- a/src/css/components/SGNForms/inputs/file.css +++ b/src/css/components/SGNForms/inputs/file.css @@ -11,12 +11,12 @@ cursor: pointer; } -.sgn-form.sgn-input-file > .sgn-form-wrapper > .sgn-input-wrapper:before { +.sgn-form.sgn-input-file > .sgn-form-wrapper > .sgn-input-wrapper:after { content: 'Browse'; color: inherit; background-color: var(--sgnf-background); - padding: var(--padding-xs) var(--padding-md); - border-radius: var(--sgn-border-radius-sm) 0 0 var(--sgn-border-radius-sm); + padding: var(--padding-sm) var(--padding-md); + border-radius: 0 var(--sgn-border-inner-radius-sm) var(--sgn-border-inner-radius-sm) 0; z-index: 0; } diff --git a/src/js/components/forms/inputs.js b/src/js/components/forms/inputs.js index d6f3c806..f76fed30 100644 --- a/src/js/components/forms/inputs.js +++ b/src/js/components/forms/inputs.js @@ -104,6 +104,16 @@ return result; } + function click(node) { + try { + node.dispatchEvent(new MouseEvent('click')) + } catch(e) { + const evt = document.createEvent('MouseEvents') + evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null) + node.dispatchEvent(evt); + } + } + const init = () => { //region Variables const nodeName = ($_this.prop('nodeName')) ? $_this.prop('nodeName') : $_this[0].nodeName; @@ -436,24 +446,14 @@ $('.sgn-form.sgn-select .form-control').blur(); $('.sgn-form.sgn-select.open').removeClass('open'); - //console.log($wrapper, $input, $this); if(!$wrapper.hasClass('active')) $wrapper.removeClass('edited').addClass('active'); if($inputGroup.length > 0) $inputGroup.removeClass('edited').addClass('active'); - /*if(!$input.is(':focus')) - $input.focus(); - - if(!$wrapper.hasClass('sgn-select')) { - if(!$input.is(':focus')) - $container.removeClass('active'); - else - $wrapper.trigger('sgninput.click'); - }*/ - $wrapper.trigger('sgninput.click'); + e.preventDefault(); return false; }); @@ -487,9 +487,12 @@ $input.on('focus', function() { const $container = $(this).parents('.sgn-form'); + if(!$container.hasClass('active')) $container.click(); + setTimeout(() => click($(this)[0]), 100); + $(this).trigger('sgninput.focus'); });