diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index dc1cd37..286b89b 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -415,6 +415,31 @@ function showCatNestedControl($cats, $checked = [], $parent = null) } } +/** + * @param $cats array categories or groups as nested ul li wih checkbox + * @param $checked array witch one checked default + * @param $parent null|integer parent id + * @return string + */ +function showCatNested($cats, $parent = null) +{ + $ret = ""; + foreach ($cats as $cat) { + if ($cat->parent_id == $parent) { + $ret .= "
  • "; + $ret .= ""; + $ret .= $cat->name . ''; + $ret .= showCatNested($cats, $cat->id); + $ret .= "
  • "; + } + } + if ($parent == null) { + return $ret; + } else { + return ""; + } +} + /** * find model name form morph * @param $modelable_type diff --git a/resources/views/segments/products/ProductGrid/ProductGrid.blade.php b/resources/views/segments/products/ProductGrid/ProductGrid.blade.php index bbfdf9d..ac1d538 100644 --- a/resources/views/segments/products/ProductGrid/ProductGrid.blade.php +++ b/resources/views/segments/products/ProductGrid/ProductGrid.blade.php @@ -1,4 +1,4 @@ -
    +

    {{$title}} diff --git a/resources/views/segments/products/ProductGrid/ProductGrid.scss b/resources/views/segments/products/ProductGrid/ProductGrid.scss index 11ba1ef..a95d820 100644 --- a/resources/views/segments/products/ProductGrid/ProductGrid.scss +++ b/resources/views/segments/products/ProductGrid/ProductGrid.scss @@ -1,5 +1,4 @@ .ProductGrid { - // scss padding: 1rem 0; img { diff --git a/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.blade.php b/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.blade.php new file mode 100644 index 0000000..499367d --- /dev/null +++ b/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.blade.php @@ -0,0 +1,60 @@ +
    +
    +

    + {{$title}} +

    +
    + @if(!getSetting($data->area->name.'_'.$data->part.'_invert')) +
    + @include('segments.products.ProductGridSidebar.inc.product-sidebar') +
    + @endif + + @if(getSetting($data->area->name.'_'.$data->part.'_invert')) +
    + @include('segments.products.ProductGridSidebar.inc.product-sidebar') +
    + @endif +
    +
    +
    diff --git a/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.js b/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.js new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.json b/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.json new file mode 100644 index 0000000..468488e --- /dev/null +++ b/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.json @@ -0,0 +1,10 @@ +{ + "name": "ProductGridSidebar", + "version": "1.0", + "author": "xStack", + "email": "xshop@xstack.ir", + "license": "GPL-3.0-or-later", + "url": "https:\/\/xstack.ir", + "author_url": "https:\/\/4xmen.ir", + "packages": [] +} \ No newline at end of file diff --git a/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.php b/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.php new file mode 100644 index 0000000..151138d --- /dev/null +++ b/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.php @@ -0,0 +1,31 @@ +section = 'theme'; + $setting->key = $part->area->name . '_' . $part->part.'_invert'; + $setting->value = 0; + $setting->size = 12; + $setting->type = 'CHECKBOX'; +// $setting->data = json_encode(['xmin' => 2, 'xmax' => 90]); + $setting->title = $part->area->name . ' ' . $part->part. ' invert sidebar position'; + $setting->save(); + } + public static function onRemove(Part $part = null) + { + Setting::where('key',$part->area->name . '_' . $part->part.'_invert')->first()?->delete(); + } + + public static function onMount(Part $part = null) + { + return $part; + } +} diff --git a/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.scss b/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.scss new file mode 100644 index 0000000..f20bfbd --- /dev/null +++ b/resources/views/segments/products/ProductGridSidebar/ProductGridSidebar.scss @@ -0,0 +1,162 @@ +.ProductGridSidebar { + padding: 1rem 0; + + h1{ + font-size: 30px; + font-weight: 200; + text-align: center; + position: relative; + margin-bottom: 1rem; + padding-bottom: 4px; + &:after{ + position: absolute; + content: ' '; + height: 1px; + width: 70%; + bottom: 0; + left: 15%; + right: 15%; + background: linear-gradient(90deg,#ffffff00 0%, var(--xshop-primary) 50%, #ffffff00 100%); + } + } + img { + width: 100%; + height: 250px; + object-fit: cover; + } + + .product-item { + border: 1px solid silver; + box-shadow: var(--xshop-shadow); + border-radius: var(--xshop-border-radius); + position: relative; + overflow: hidden; + + h3 { + margin-top: 1rem; + text-align: center; + font-size: 20px; + font-weight: 300; + color: var(--xshop-text); + } + + .prices { + display: grid; + grid-auto-columns: minmax(0, 1fr); + grid-auto-flow: column; + text-align: center; + + span { + display: block; + padding: .5rem; + } + + .old-price{ + text-decoration: red line-through; + color: gray; + } + } + + .fav-btn, .compare-btn { + position: absolute; + inset-inline-start: -12%; + top: 3%; + width: 40px; + height: 40px; + background: #ffffff55; + font-size: 25px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + z-index: 4; + cursor: pointer; + transition: .4s; + + &:hover { + background: var(--xshop-primary); + color: var(--xshop-diff); + } + } + + .fav-btn { + top: calc(3% + 50px); + + &[data-is-fav="-1"]{ + display: none; + } + &[data-is-fav="1"]{ + .ri-heart-line{ + display: none; + } + } + &[data-is-fav="0"]{ + .ri-heart-fill{ + display: none; + } + } + } + + &:hover { + .fav-btn, .compare-btn { + inset-inline-start: 3%; + } + } + } + + aside{ + + h4{ + background: var(--xshop-primary); + color: var(--xshop-diff); + padding: .5rem 1rem; + text-align: center; + border-radius: var(--xshop-border-radius); + opacity: .75; + font-size: 20px; + font-weight: 300; + } + + + .side-item{ + background: #00000010; + border-radius: var(--xshop-border-radius); + margin-bottom: 1rem; + .side-data{ + padding: 1rem; + } + } + + .side-list{ + ul{ + list-style: none; + padding: 0; + padding-top: 2px; + li{ + position: relative; + padding: 2px; + a{ + display: block; + } + &:before{ + position: absolute; + content: "\F035"; + font-family: 'remixicon'; + inset-inline-start: -20px; + top: -2px; + color: var(--xshop-secondary); + } + + &.active{ + padding-top: 5px; + padding-bottom: 0; + background: var(--xshop-primary); + a{ + color: var(--xshop-diff); + } + } + } + } + } + } +} diff --git a/resources/views/segments/products/ProductGridSidebar/inc/product-sidebar.blade.php b/resources/views/segments/products/ProductGridSidebar/inc/product-sidebar.blade.php new file mode 100644 index 0000000..439a269 --- /dev/null +++ b/resources/views/segments/products/ProductGridSidebar/inc/product-sidebar.blade.php @@ -0,0 +1,25 @@ + diff --git a/resources/views/segments/products/ProductGridSidebar/screenshot.png b/resources/views/segments/products/ProductGridSidebar/screenshot.png new file mode 100644 index 0000000..81c8bad Binary files /dev/null and b/resources/views/segments/products/ProductGridSidebar/screenshot.png differ