From aed9c56c56c5faea288e37beb54d2034cb86fc17 Mon Sep 17 00:00:00 2001 From: Alain Dumesny Date: Fri, 12 Dec 2025 11:11:54 -0800 Subject: [PATCH 1/3] doc update --- doc/CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CHANGES.md b/doc/CHANGES.md index 407701909..e03dbc4bb 100644 --- a/doc/CHANGES.md +++ b/doc/CHANGES.md @@ -140,7 +140,7 @@ Change log * fix: [#3181](https://github.com/gridstack/gridstack.js/issues/3181) re-initing from DOM missing x:0, y:0 messing layout * fix: [#3191](https://github.com/gridstack/gridstack.js/pull/3191) touch issue on Linux * fix: [#3194](https://github.com/gridstack/gridstack.js/pull/3194) `updateOption()` update lazyLoad -* fix: [#3201](https://github.com/gridstack/gridstack.js/pull/3201) updating higher column layout can cause negative values in `layoutsNodesChange()`. +* fix: [#3201](https://github.com/gridstack/gridstack.js/pull/3201) updating higher column layout can cause negative values in `layoutsNodesChange()` ## 12.3.3 (2025-08-13) * fix: [#3139](https://github.com/gridstack/gridstack.js/pull/3139) `Utils:removeInternalForSave()` to skip arrays From e8b628f32c89767ef7abca63b7e140bae5e52802 Mon Sep 17 00:00:00 2001 From: Alain Dumesny Date: Fri, 12 Dec 2025 13:36:03 -0800 Subject: [PATCH 2/3] test --- doc/CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CHANGES.md b/doc/CHANGES.md index e03dbc4bb..407701909 100644 --- a/doc/CHANGES.md +++ b/doc/CHANGES.md @@ -140,7 +140,7 @@ Change log * fix: [#3181](https://github.com/gridstack/gridstack.js/issues/3181) re-initing from DOM missing x:0, y:0 messing layout * fix: [#3191](https://github.com/gridstack/gridstack.js/pull/3191) touch issue on Linux * fix: [#3194](https://github.com/gridstack/gridstack.js/pull/3194) `updateOption()` update lazyLoad -* fix: [#3201](https://github.com/gridstack/gridstack.js/pull/3201) updating higher column layout can cause negative values in `layoutsNodesChange()` +* fix: [#3201](https://github.com/gridstack/gridstack.js/pull/3201) updating higher column layout can cause negative values in `layoutsNodesChange()`. ## 12.3.3 (2025-08-13) * fix: [#3139](https://github.com/gridstack/gridstack.js/pull/3139) `Utils:removeInternalForSave()` to skip arrays From 40348d98184599837ca82b95320003498bcfa562 Mon Sep 17 00:00:00 2001 From: Alain Dumesny Date: Fri, 12 Dec 2025 16:10:57 -0800 Subject: [PATCH 3/3] pakage fixes * npm publish packagaing got broken in 12.3.3 | 12.4.0 this should fix it * .scss cleaned up and no longer published (sicne don't generate column in CSS anymore) --- Gruntfile.js | 1 - angular/package.json | 2 +- angular/yarn.lock | 2 +- react/package.json | 2 +- src/gridstack.scss | 293 +++++++++++++++++++++---------------------- tsconfig.build.json | 3 +- 6 files changed, 145 insertions(+), 158 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index d5364258b..9cd070ea2 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -38,7 +38,6 @@ module.exports = function(grunt) { copy: { dist: { files: { - 'dist/src/gridstack.scss': ['src/gridstack.scss'], 'dist/angular/README.md': ['angular/README.md'], 'dist/angular/src/gridstack.component.ts': ['angular/projects/lib/src/lib/gridstack.component.ts'], 'dist/angular/src/gridstack-item.component.ts': ['angular/projects/lib/src/lib/gridstack-item.component.ts'], diff --git a/angular/package.json b/angular/package.json index 24c7ae968..2ee4a91bd 100644 --- a/angular/package.json +++ b/angular/package.json @@ -21,7 +21,7 @@ "@angular/platform-browser": "^14", "@angular/platform-browser-dynamic": "^14", "@angular/router": "^14", - "gridstack": "^12.3.3-dev", + "gridstack": "12.3.3", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" diff --git a/angular/yarn.lock b/angular/yarn.lock index c577bca87..2d64c501e 100644 --- a/angular/yarn.lock +++ b/angular/yarn.lock @@ -3752,7 +3752,7 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -gridstack@^12.3.3-dev: +gridstack@12.3.3: version "12.3.3" resolved "https://registry.yarnpkg.com/gridstack/-/gridstack-12.3.3.tgz#0c4fc3cdf6e1c16e6095bc79ff7240a590d2c200" integrity sha512-Bboi4gj7HXGnx1VFXQNde4Nwi5srdUSuCCnOSszKhFjBs8EtMEWhsKX02BjIKkErq/FjQUkNUbXUYeQaVMQ0jQ== diff --git a/react/package.json b/react/package.json index b8f5fd05d..4308e840d 100644 --- a/react/package.json +++ b/react/package.json @@ -13,7 +13,7 @@ "test:ui": "vitest --ui" }, "dependencies": { - "gridstack": "^12.3.3-dev", + "gridstack": "^12.3.3", "react": "^18.3.1", "react-dom": "^18.3.1", "react-fast-compare": "^3.2.2", diff --git a/src/gridstack.scss b/src/gridstack.scss index 5e8731e5f..dab3b50a8 100644 --- a/src/gridstack.scss +++ b/src/gridstack.scss @@ -3,155 +3,144 @@ * Copyright (c) 2021-2025 Alain Dumesny - see GridStack root license */ -$animation_speed: .3s !default; - -@function fixed($float) { - @return calc(round($float * 1000) / 1000); // total 4-5 digits being % -} - -@mixin vendor($property, $value...){ - // -webkit-#{$property}: $value; - // -moz-#{$property}: $value; - // -ms-#{$property}: $value; - // -o-#{$property}: $value; - #{$property}: $value; -} - -.grid-stack { - position: relative; -} - -.grid-stack-rtl { - direction: ltr; - > .grid-stack-item { - direction: rtl; - } -} - -.grid-stack-placeholder > .placeholder-content { - background-color: rgba(0,0,0,0.1); - margin: 0; - position: absolute; - width: auto; - z-index: 0 !important; -} - -// make those more unique as to not conflict with side panel items -.grid-stack > .grid-stack-item { - position: absolute; - padding: 0; - top: 0; left: 0; // some default to reduce at least first row/column inline styles - width: var(--gs-column-width); // reduce 1x1 items inline styles - height: var(--gs-cell-height); - - > .grid-stack-item-content { - margin: 0; - position: absolute; - width: auto; - overflow-x: hidden; - overflow-y: auto; - } - &.size-to-content:not(.size-to-content-max) > .grid-stack-item-content { - overflow-y: hidden; - } -} - -.grid-stack { - > .grid-stack-item > .grid-stack-item-content, - > .grid-stack-placeholder > .placeholder-content { - top: var(--gs-item-margin-top); - right: var(--gs-item-margin-right); - bottom: var(--gs-item-margin-bottom); - left: var(--gs-item-margin-left); - } -} - -.grid-stack-item { - > .ui-resizable-handle { - position: absolute; - font-size: 0.1px; - display: block; - -ms-touch-action: none; - touch-action: none; - } - - &.ui-resizable-disabled > .ui-resizable-handle, - &.ui-resizable-autohide > .ui-resizable-handle { display: none; } - - > .ui-resizable-ne, - > .ui-resizable-nw, - > .ui-resizable-se, - > .ui-resizable-sw { - background-image: url('data:image/svg+xml;utf8,'); - background-repeat: no-repeat; - background-position: center; - } - - > .ui-resizable-ne { - @include vendor(transform, rotate(45deg)); - } - > .ui-resizable-sw { - @include vendor(transform, rotate(45deg)); - } - - > .ui-resizable-nw { - @include vendor(transform, rotate(-45deg)); - } - > .ui-resizable-se { - @include vendor(transform, rotate(-45deg)); - } - - > .ui-resizable-nw { cursor: nw-resize; width: 20px; height: 20px; top: var(--gs-item-margin-top); left: var(--gs-item-margin-left); } - > .ui-resizable-n { cursor: n-resize; height: 10px; top: var(--gs-item-margin-top); left: 25px; right: 25px; } - > .ui-resizable-ne { cursor: ne-resize; width: 20px; height: 20px; top: var(--gs-item-margin-top); right: var(--gs-item-margin-right); } - > .ui-resizable-e { cursor: e-resize; width: 10px; top: 15px; bottom: 15px; right: var(--gs-item-margin-right);} - > .ui-resizable-se { cursor: se-resize; width: 20px; height: 20px; bottom: var(--gs-item-margin-bottom); right: var(--gs-item-margin-right); } - > .ui-resizable-s { cursor: s-resize; height: 10px; left: 25px; bottom: var(--gs-item-margin-bottom); right: 25px; } - > .ui-resizable-sw { cursor: sw-resize; width: 20px; height: 20px; bottom: var(--gs-item-margin-bottom); left: var(--gs-item-margin-left); } - > .ui-resizable-w { cursor: w-resize; width: 10px; top: 15px; bottom: 15px; left: var(--gs-item-margin-left); } - - &.ui-draggable-dragging { - &> .ui-resizable-handle { - display: none !important; - } - } - - &.ui-draggable-dragging { - will-change: left, top; - } - - &.ui-resizable-resizing { - will-change: width, height; - } -} - -// not .grid-stack-item specific to also affect dragIn regions -.ui-draggable-dragging, -.ui-resizable-resizing { - z-index: 10000; // bootstrap modal has a z-index of 1050 - - > .grid-stack-item-content { - box-shadow: 1px 4px 6px rgba(0, 0, 0, 0.2); - opacity: 0.8; - } -} - -.grid-stack-animate, -.grid-stack-animate .grid-stack-item { - @include vendor(transition, left $animation_speed, top $animation_speed, height $animation_speed, width $animation_speed); -} - -.grid-stack-animate .grid-stack-item.ui-draggable-dragging, -.grid-stack-animate .grid-stack-item.ui-resizable-resizing, -.grid-stack-animate .grid-stack-item.grid-stack-placeholder{ - @include vendor(transition, left 0s, top 0s, height 0s, width 0s); -} - -// make those more unique as to not conflict with side panel items, but apply to all column layouts (so not in loop below) -.grid-stack > .grid-stack-item[gs-y="0"] { - top: 0px; -} -.grid-stack > .grid-stack-item[gs-x="0"] { - left: 0%; -} - + $animation_speed: .3s !default; + + .grid-stack { + position: relative; + } + + .grid-stack-rtl { + direction: ltr; + > .grid-stack-item { + direction: rtl; + } + } + + .grid-stack-placeholder > .placeholder-content { + background-color: rgba(0,0,0,0.1); + margin: 0; + position: absolute; + width: auto; + z-index: 0 !important; + } + + // make those more unique as to not conflict with side panel items + .grid-stack > .grid-stack-item { + position: absolute; + padding: 0; + top: 0; left: 0; // some default to reduce at least first row/column inline styles + width: var(--gs-column-width); // reduce 1x1 items inline styles + height: var(--gs-cell-height); + + > .grid-stack-item-content { + margin: 0; + position: absolute; + width: auto; + overflow-x: hidden; + overflow-y: auto; + } + &.size-to-content:not(.size-to-content-max) > .grid-stack-item-content { + overflow-y: hidden; + } + } + + .grid-stack { + > .grid-stack-item > .grid-stack-item-content, + > .grid-stack-placeholder > .placeholder-content { + top: var(--gs-item-margin-top); + right: var(--gs-item-margin-right); + bottom: var(--gs-item-margin-bottom); + left: var(--gs-item-margin-left); + } + } + + .grid-stack-item { + > .ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; + } + + &.ui-resizable-disabled > .ui-resizable-handle, + &.ui-resizable-autohide > .ui-resizable-handle { display: none; } + + > .ui-resizable-ne, + > .ui-resizable-nw, + > .ui-resizable-se, + > .ui-resizable-sw { + background-image: url('data:image/svg+xml;utf8,'); + background-repeat: no-repeat; + background-position: center; + } + + > .ui-resizable-ne { + transform: rotate(45deg); + } + > .ui-resizable-sw { + transform: rotate(45deg); + } + + > .ui-resizable-nw { + transform: rotate(-45deg); + } + > .ui-resizable-se { + transform: rotate(-45deg); + } + + > .ui-resizable-nw { cursor: nw-resize; width: 20px; height: 20px; top: var(--gs-item-margin-top); left: var(--gs-item-margin-left); } + > .ui-resizable-n { cursor: n-resize; height: 10px; top: var(--gs-item-margin-top); left: 25px; right: 25px; } + > .ui-resizable-ne { cursor: ne-resize; width: 20px; height: 20px; top: var(--gs-item-margin-top); right: var(--gs-item-margin-right); } + > .ui-resizable-e { cursor: e-resize; width: 10px; top: 15px; bottom: 15px; right: var(--gs-item-margin-right);} + > .ui-resizable-se { cursor: se-resize; width: 20px; height: 20px; bottom: var(--gs-item-margin-bottom); right: var(--gs-item-margin-right); } + > .ui-resizable-s { cursor: s-resize; height: 10px; left: 25px; bottom: var(--gs-item-margin-bottom); right: 25px; } + > .ui-resizable-sw { cursor: sw-resize; width: 20px; height: 20px; bottom: var(--gs-item-margin-bottom); left: var(--gs-item-margin-left); } + > .ui-resizable-w { cursor: w-resize; width: 10px; top: 15px; bottom: 15px; left: var(--gs-item-margin-left); } + + &.ui-draggable-dragging { + &> .ui-resizable-handle { + display: none !important; + } + } + + &.ui-draggable-dragging { + will-change: left, top; + } + + &.ui-resizable-resizing { + will-change: width, height; + } + } + + // not .grid-stack-item specific to also affect dragIn regions + .ui-draggable-dragging, + .ui-resizable-resizing { + z-index: 10000; // bootstrap modal has a z-index of 1050 + + > .grid-stack-item-content { + box-shadow: 1px 4px 6px rgba(0, 0, 0, 0.2); + opacity: 0.8; + } + } + + .grid-stack-animate, + .grid-stack-animate .grid-stack-item { + transition: left $animation_speed, top $animation_speed, height $animation_speed, width $animation_speed; + } + + .grid-stack-animate .grid-stack-item.ui-draggable-dragging, + .grid-stack-animate .grid-stack-item.ui-resizable-resizing, + .grid-stack-animate .grid-stack-item.grid-stack-placeholder{ + transition: left 0s, top 0s, height 0s, width 0s; + } + + // make those more unique as to not conflict with side panel items, but apply to all column layouts (so not in loop below) + .grid-stack > .grid-stack-item[gs-y="0"] { + top: 0px; + } + .grid-stack > .grid-stack-item[gs-x="0"] { + left: 0%; + } + + \ No newline at end of file diff --git a/tsconfig.build.json b/tsconfig.build.json index 5607a3d35..3cfaa1d4d 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -4,8 +4,7 @@ "skipLibCheck": true }, "include": [ - "./src/**/*.ts", - "./angular/projects/lib/src/**/*.ts" + "./src/**/*.ts" ], "exclude": [ "./src/**/*.spec.ts",