Merge pull request #1628 from acelaya-forks/feature/shlink-web-component-0.16.1

Update to shlink-web-component 0.16.1
This commit is contained in:
Alejandro Celaya
2025-08-08 09:18:51 +02:00
committed by GitHub
6 changed files with 136 additions and 209 deletions

View File

@@ -6,10 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased] ## [Unreleased]
### Added ### Added
* *Nothing* * [shlink-web-component#755](https://github.com/shlinkio/shlink-web-component/issues/755) Add support for `any-value-query-param` and `valueless-query-param` redirect conditions when using Shlink >=4.5.0.
* [shlink-web-component#756](https://github.com/shlinkio/shlink-web-component/issues/756) Add support for desktop device types on device redirect conditions, when using Shlink >=4.5.0.
* [shlink-web-component#713](https://github.com/shlinkio/shlink-web-component/issues/713) Expose a new `ShlinkSidebarToggleButton` component that can be used to customize the location of the sidebar toggle, rather than making it assume there's a header bar and position it there.
* [shlink-web-component#657](https://github.com/shlinkio/shlink-web-component/issues/657) Allow visits table columns to be customized via settings, and add a new optional "Region" column.
As a side effect, the "Show user agent" toggle has been removed from the list, as this can now be globally configured in the settings.
### Changed ### Changed
* Update to FontAwesome 7 * Update to FontAwesome 7
* Update to Recharts 3
* Update to `@shlinkio/shlink-web-component` 0.16.1
### Deprecated ### Deprecated
* *Nothing* * *Nothing*
@@ -18,7 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
* *Nothing* * *Nothing*
### Fixed ### Fixed
* *Nothing* * [shlink-web-component#698](https://github.com/shlinkio/shlink-web-component/issues/698) Fix line chart selection triggering after clicking a dot in the chart. It now works only when dragging while the mouse is clicked.
## [4.4.1] - 2025-06-23 ## [4.4.1] - 2025-06-23

269
package-lock.json generated
View File

@@ -18,7 +18,7 @@
"@shlinkio/data-manipulation": "^1.0.3", "@shlinkio/data-manipulation": "^1.0.3",
"@shlinkio/shlink-frontend-kit": "^1.1.0", "@shlinkio/shlink-frontend-kit": "^1.1.0",
"@shlinkio/shlink-js-sdk": "^2.2.1", "@shlinkio/shlink-js-sdk": "^2.2.1",
"@shlinkio/shlink-web-component": "^0.16.0", "@shlinkio/shlink-web-component": "^0.16.1",
"bottlejs": "^2.0.1", "bottlejs": "^2.0.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"compare-versions": "^6.1.1", "compare-versions": "^6.1.1",
@@ -1735,6 +1735,7 @@
"version": "7.27.0", "version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz",
"integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"regenerator-runtime": "^0.14.0" "regenerator-runtime": "^0.14.0"
@@ -1746,7 +1747,8 @@
"node_modules/@babel/runtime/node_modules/regenerator-runtime": { "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
"version": "0.14.0", "version": "0.14.0",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
"integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
"dev": true
}, },
"node_modules/@babel/template": { "node_modules/@babel/template": {
"version": "7.27.2", "version": "7.27.2",
@@ -3536,9 +3538,9 @@
"integrity": "sha512-ydqy3oPRSQ0Ovd1rLs/5BqJehyVlS8txHE5BLH1wRDFFRTpPBrzzNi/tM2sDh/oTfzTuRCGBBsiWBzSHFFCO+Q==" "integrity": "sha512-ydqy3oPRSQ0Ovd1rLs/5BqJehyVlS8txHE5BLH1wRDFFRTpPBrzzNi/tM2sDh/oTfzTuRCGBBsiWBzSHFFCO+Q=="
}, },
"node_modules/@shlinkio/shlink-web-component": { "node_modules/@shlinkio/shlink-web-component": {
"version": "0.16.0", "version": "0.16.1",
"resolved": "https://registry.npmjs.org/@shlinkio/shlink-web-component/-/shlink-web-component-0.16.0.tgz", "resolved": "https://registry.npmjs.org/@shlinkio/shlink-web-component/-/shlink-web-component-0.16.1.tgz",
"integrity": "sha512-Zn5PTa2rGzNwClLf4M6pNoO9rHGpZpxC/Wh09jBVyQp/bFvncuQfSV5IZQQJz5bky2FKmiNPBv4pZ/TgtZGr3g==", "integrity": "sha512-ayhX1nygWxWQsWT8CdRwCq9EppXuhS/b3aEulenOVmWANat9SZdeIth+djZ9IuIeNQrR2NacE8zakIKKi4V6fg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@formkit/drag-and-drop": "^0.5.3", "@formkit/drag-and-drop": "^0.5.3",
@@ -3555,7 +3557,7 @@
"react-external-link": "^2.5.0", "react-external-link": "^2.5.0",
"react-leaflet": "^5.0", "react-leaflet": "^5.0",
"react-swipeable": "^7.0.2", "react-swipeable": "^7.0.2",
"recharts": "^2.15.4" "recharts": "^3.1.0"
}, },
"peerDependencies": { "peerDependencies": {
"@fortawesome/fontawesome-svg-core": "^7.0.0", "@fortawesome/fontawesome-svg-core": "^7.0.0",
@@ -3565,7 +3567,7 @@
"@fortawesome/react-fontawesome": "^0.2.3", "@fortawesome/react-fontawesome": "^0.2.3",
"@reduxjs/toolkit": "^2.5.0", "@reduxjs/toolkit": "^2.5.0",
"@shlinkio/shlink-frontend-kit": "^1.1.0", "@shlinkio/shlink-frontend-kit": "^1.1.0",
"@shlinkio/shlink-js-sdk": "^2.0.0", "@shlinkio/shlink-js-sdk": "^2.2.1",
"react": "^19.1", "react": "^19.1",
"react-dom": "^19.1", "react-dom": "^19.1",
"react-redux": "^9.2.0", "react-redux": "^9.2.0",
@@ -5570,6 +5572,7 @@
}, },
"node_modules/csstype": { "node_modules/csstype": {
"version": "3.0.7", "version": "3.0.7",
"devOptional": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/csvtojson": { "node_modules/csvtojson": {
@@ -5941,16 +5944,6 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/dom-helpers": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
"integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.8.7",
"csstype": "^3.0.2"
}
},
"node_modules/dunder-proto": { "node_modules/dunder-proto": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -6203,6 +6196,16 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/es-toolkit": {
"version": "1.39.8",
"resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.8.tgz",
"integrity": "sha512-A8QO9TfF+rltS8BXpdu8OS+rpGgEdnRhqIVxO/ZmNvnXBYgOdSsxukT55ELyP94gZIntWJ+Li9QRrT2u1Kitpg==",
"license": "MIT",
"workspaces": [
"docs",
"benchmarks"
]
},
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.25.0", "version": "0.25.0",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz",
@@ -6727,9 +6730,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/eventemitter3": { "node_modules/eventemitter3": {
"version": "4.0.7", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/expect-type": { "node_modules/expect-type": {
@@ -6747,15 +6750,6 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/fast-equals": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz",
"integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==",
"license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/fast-glob": { "node_modules/fast-glob": {
"version": "3.3.3", "version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
@@ -7359,9 +7353,10 @@
} }
}, },
"node_modules/immer": { "node_modules/immer": {
"version": "10.0.3", "version": "10.1.1",
"resolved": "https://registry.npmjs.org/immer/-/immer-10.0.3.tgz", "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz",
"integrity": "sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==", "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==",
"license": "MIT",
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/immer" "url": "https://opencollective.com/immer"
@@ -9313,21 +9308,6 @@
} }
} }
}, },
"node_modules/react-smooth": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz",
"integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==",
"license": "MIT",
"dependencies": {
"fast-equals": "^5.0.1",
"prop-types": "^15.8.1",
"react-transition-group": "^4.4.5"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/react-swipeable": { "node_modules/react-swipeable": {
"version": "7.0.2", "version": "7.0.2",
"resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-7.0.2.tgz", "resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-7.0.2.tgz",
@@ -9337,22 +9317,6 @@
"react": "^16.8.3 || ^17 || ^18 || ^19.0.0 || ^19.0.0-rc" "react": "^16.8.3 || ^17 || ^18 || ^19.0.0 || ^19.0.0-rc"
} }
}, },
"node_modules/react-transition-group": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
"integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
"license": "BSD-3-Clause",
"dependencies": {
"@babel/runtime": "^7.5.5",
"dom-helpers": "^5.0.1",
"loose-envify": "^1.4.0",
"prop-types": "^15.6.2"
},
"peerDependencies": {
"react": ">=16.6.0",
"react-dom": ">=16.6.0"
}
},
"node_modules/readdirp": { "node_modules/readdirp": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz",
@@ -9369,43 +9333,32 @@
} }
}, },
"node_modules/recharts": { "node_modules/recharts": {
"version": "2.15.4", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.1.2.tgz",
"integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", "integrity": "sha512-vhNbYwaxNbk/IATK0Ki29k3qvTkGqwvCgyQAQ9MavvvBwjvKnMTswdbklJpcOAoMPN/qxF3Lyqob0zO+ZXkZ4g==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"clsx": "^2.0.0", "@reduxjs/toolkit": "1.x.x || 2.x.x",
"eventemitter3": "^4.0.1", "clsx": "^2.1.1",
"lodash": "^4.17.21", "decimal.js-light": "^2.5.1",
"react-is": "^18.3.1", "es-toolkit": "^1.39.3",
"react-smooth": "^4.0.4", "eventemitter3": "^5.0.1",
"recharts-scale": "^0.4.4", "immer": "^10.1.1",
"tiny-invariant": "^1.3.1", "react-redux": "8.x.x || 9.x.x",
"victory-vendor": "^36.6.8" "reselect": "5.1.1",
"tiny-invariant": "^1.3.3",
"use-sync-external-store": "^1.2.2",
"victory-vendor": "^37.0.2"
}, },
"engines": { "engines": {
"node": ">=14" "node": ">=18"
}, },
"peerDependencies": { "peerDependencies": {
"react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
} }
}, },
"node_modules/recharts-scale": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz",
"integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==",
"license": "MIT",
"dependencies": {
"decimal.js-light": "^2.4.1"
}
},
"node_modules/recharts/node_modules/react-is": {
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"license": "MIT"
},
"node_modules/redent": { "node_modules/redent": {
"version": "3.0.0", "version": "3.0.0",
"dev": true, "dev": true,
@@ -9552,9 +9505,10 @@
} }
}, },
"node_modules/reselect": { "node_modules/reselect": {
"version": "5.1.0", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.0.tgz", "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz",
"integrity": "sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg==" "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==",
"license": "MIT"
}, },
"node_modules/resolve": { "node_modules/resolve": {
"version": "1.22.8", "version": "1.22.8",
@@ -10954,9 +10908,9 @@
} }
}, },
"node_modules/victory-vendor": { "node_modules/victory-vendor": {
"version": "36.9.2", "version": "37.3.6",
"resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz",
"integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==",
"license": "MIT AND ISC", "license": "MIT AND ISC",
"dependencies": { "dependencies": {
"@types/d3-array": "^3.0.3", "@types/d3-array": "^3.0.3",
@@ -13032,6 +12986,7 @@
"version": "7.27.0", "version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz",
"integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==",
"dev": true,
"requires": { "requires": {
"regenerator-runtime": "^0.14.0" "regenerator-runtime": "^0.14.0"
}, },
@@ -13039,7 +12994,8 @@
"regenerator-runtime": { "regenerator-runtime": {
"version": "0.14.0", "version": "0.14.0",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
"integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
"dev": true
} }
} }
}, },
@@ -13998,9 +13954,9 @@
"integrity": "sha512-ydqy3oPRSQ0Ovd1rLs/5BqJehyVlS8txHE5BLH1wRDFFRTpPBrzzNi/tM2sDh/oTfzTuRCGBBsiWBzSHFFCO+Q==" "integrity": "sha512-ydqy3oPRSQ0Ovd1rLs/5BqJehyVlS8txHE5BLH1wRDFFRTpPBrzzNi/tM2sDh/oTfzTuRCGBBsiWBzSHFFCO+Q=="
}, },
"@shlinkio/shlink-web-component": { "@shlinkio/shlink-web-component": {
"version": "0.16.0", "version": "0.16.1",
"resolved": "https://registry.npmjs.org/@shlinkio/shlink-web-component/-/shlink-web-component-0.16.0.tgz", "resolved": "https://registry.npmjs.org/@shlinkio/shlink-web-component/-/shlink-web-component-0.16.1.tgz",
"integrity": "sha512-Zn5PTa2rGzNwClLf4M6pNoO9rHGpZpxC/Wh09jBVyQp/bFvncuQfSV5IZQQJz5bky2FKmiNPBv4pZ/TgtZGr3g==", "integrity": "sha512-ayhX1nygWxWQsWT8CdRwCq9EppXuhS/b3aEulenOVmWANat9SZdeIth+djZ9IuIeNQrR2NacE8zakIKKi4V6fg==",
"requires": { "requires": {
"@formkit/drag-and-drop": "^0.5.3", "@formkit/drag-and-drop": "^0.5.3",
"@json2csv/plainjs": "^7.0.6", "@json2csv/plainjs": "^7.0.6",
@@ -14016,7 +13972,7 @@
"react-external-link": "^2.5.0", "react-external-link": "^2.5.0",
"react-leaflet": "^5.0", "react-leaflet": "^5.0",
"react-swipeable": "^7.0.2", "react-swipeable": "^7.0.2",
"recharts": "^2.15.4" "recharts": "^3.1.0"
}, },
"dependencies": { "dependencies": {
"react-leaflet": { "react-leaflet": {
@@ -15388,7 +15344,8 @@
} }
}, },
"csstype": { "csstype": {
"version": "3.0.7" "version": "3.0.7",
"devOptional": true
}, },
"csvtojson": { "csvtojson": {
"version": "2.0.10", "version": "2.0.10",
@@ -15636,15 +15593,6 @@
"version": "0.5.13", "version": "0.5.13",
"dev": true "dev": true
}, },
"dom-helpers": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
"integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"requires": {
"@babel/runtime": "^7.8.7",
"csstype": "^3.0.2"
}
},
"dunder-proto": { "dunder-proto": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -15844,6 +15792,11 @@
"is-symbol": "^1.0.4" "is-symbol": "^1.0.4"
} }
}, },
"es-toolkit": {
"version": "1.39.8",
"resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.8.tgz",
"integrity": "sha512-A8QO9TfF+rltS8BXpdu8OS+rpGgEdnRhqIVxO/ZmNvnXBYgOdSsxukT55ELyP94gZIntWJ+Li9QRrT2u1Kitpg=="
},
"esbuild": { "esbuild": {
"version": "0.25.0", "version": "0.25.0",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz",
@@ -16222,9 +16175,9 @@
"version": "1.0.31" "version": "1.0.31"
}, },
"eventemitter3": { "eventemitter3": {
"version": "4.0.7", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
}, },
"expect-type": { "expect-type": {
"version": "1.2.1", "version": "1.2.1",
@@ -16236,11 +16189,6 @@
"version": "3.1.3", "version": "3.1.3",
"dev": true "dev": true
}, },
"fast-equals": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz",
"integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw=="
},
"fast-glob": { "fast-glob": {
"version": "3.3.3", "version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
@@ -16685,9 +16633,9 @@
"dev": true "dev": true
}, },
"immer": { "immer": {
"version": "10.0.3", "version": "10.1.1",
"resolved": "https://registry.npmjs.org/immer/-/immer-10.0.3.tgz", "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz",
"integrity": "sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==" "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw=="
}, },
"immutable": { "immutable": {
"version": "5.0.2", "version": "5.0.2",
@@ -17912,33 +17860,12 @@
"set-cookie-parser": "^2.6.0" "set-cookie-parser": "^2.6.0"
} }
}, },
"react-smooth": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz",
"integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==",
"requires": {
"fast-equals": "^5.0.1",
"prop-types": "^15.8.1",
"react-transition-group": "^4.4.5"
}
},
"react-swipeable": { "react-swipeable": {
"version": "7.0.2", "version": "7.0.2",
"resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-7.0.2.tgz", "resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-7.0.2.tgz",
"integrity": "sha512-v1Qx1l+aC2fdxKa9aKJiaU/ZxmJ5o98RMoFwUqAAzVWUcxgfHFXDDruCKXhw6zIYXm6V64JiHgP9f6mlME5l8w==", "integrity": "sha512-v1Qx1l+aC2fdxKa9aKJiaU/ZxmJ5o98RMoFwUqAAzVWUcxgfHFXDDruCKXhw6zIYXm6V64JiHgP9f6mlME5l8w==",
"requires": {} "requires": {}
}, },
"react-transition-group": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
"integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
"requires": {
"@babel/runtime": "^7.5.5",
"dom-helpers": "^5.0.1",
"loose-envify": "^1.4.0",
"prop-types": "^15.6.2"
}
},
"readdirp": { "readdirp": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz",
@@ -17948,33 +17875,21 @@
"peer": true "peer": true
}, },
"recharts": { "recharts": {
"version": "2.15.4", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.1.2.tgz",
"integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", "integrity": "sha512-vhNbYwaxNbk/IATK0Ki29k3qvTkGqwvCgyQAQ9MavvvBwjvKnMTswdbklJpcOAoMPN/qxF3Lyqob0zO+ZXkZ4g==",
"requires": { "requires": {
"clsx": "^2.0.0", "@reduxjs/toolkit": "1.x.x || 2.x.x",
"eventemitter3": "^4.0.1", "clsx": "^2.1.1",
"lodash": "^4.17.21", "decimal.js-light": "^2.5.1",
"react-is": "^18.3.1", "es-toolkit": "^1.39.3",
"react-smooth": "^4.0.4", "eventemitter3": "^5.0.1",
"recharts-scale": "^0.4.4", "immer": "^10.1.1",
"tiny-invariant": "^1.3.1", "react-redux": "8.x.x || 9.x.x",
"victory-vendor": "^36.6.8" "reselect": "5.1.1",
}, "tiny-invariant": "^1.3.3",
"dependencies": { "use-sync-external-store": "^1.2.2",
"react-is": { "victory-vendor": "^37.0.2"
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
}
}
},
"recharts-scale": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz",
"integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==",
"requires": {
"decimal.js-light": "^2.4.1"
} }
}, },
"redent": { "redent": {
@@ -18090,9 +18005,9 @@
"dev": true "dev": true
}, },
"reselect": { "reselect": {
"version": "5.1.0", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.0.tgz", "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz",
"integrity": "sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg==" "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w=="
}, },
"resolve": { "resolve": {
"version": "1.22.8", "version": "1.22.8",
@@ -19066,9 +18981,9 @@
"requires": {} "requires": {}
}, },
"victory-vendor": { "victory-vendor": {
"version": "36.9.2", "version": "37.3.6",
"resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz",
"integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==",
"requires": { "requires": {
"@types/d3-array": "^3.0.3", "@types/d3-array": "^3.0.3",
"@types/d3-ease": "^3.0.0", "@types/d3-ease": "^3.0.0",

View File

@@ -31,7 +31,7 @@
"@shlinkio/data-manipulation": "^1.0.3", "@shlinkio/data-manipulation": "^1.0.3",
"@shlinkio/shlink-frontend-kit": "^1.1.0", "@shlinkio/shlink-frontend-kit": "^1.1.0",
"@shlinkio/shlink-js-sdk": "^2.2.1", "@shlinkio/shlink-js-sdk": "^2.2.1",
"@shlinkio/shlink-web-component": "^0.16.0", "@shlinkio/shlink-web-component": "^0.16.1",
"bottlejs": "^2.0.1", "bottlejs": "^2.0.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"compare-versions": "^6.1.1", "compare-versions": "^6.1.1",

View File

@@ -1,4 +1,5 @@
import { changeThemeInMarkup, getSystemPreferredTheme } from '@shlinkio/shlink-frontend-kit'; import { changeThemeInMarkup, getSystemPreferredTheme } from '@shlinkio/shlink-frontend-kit';
import { ShlinkSidebarToggleButton, ShlinkSidebarVisibilityProvider } from '@shlinkio/shlink-web-component';
import type { Settings } from '@shlinkio/shlink-web-component/settings'; import type { Settings } from '@shlinkio/shlink-web-component/settings';
import { clsx } from 'clsx'; import { clsx } from 'clsx';
import type { FC } from 'react'; import type { FC } from 'react';
@@ -62,35 +63,38 @@ const App: FCWithDeps<AppProps, AppDeps> = (
return ( return (
<div className="h-full"> <div className="h-full">
<MainHeader /> <ShlinkSidebarVisibilityProvider>
<ShlinkSidebarToggleButton className="fixed top-3.5 left-3 z-901" />
<MainHeader />
<div className="h-full pt-(--header-height)"> <div className="h-full pt-(--header-height)">
<div <div
data-testid="shlink-wrapper" data-testid="shlink-wrapper"
className={clsx( className={clsx(
'min-h-full pb-[calc(var(--footer-height)+var(--footer-margin))] -mb-[calc(var(--footer-height)+var(--footer-margin))]', 'min-h-full pb-[calc(var(--footer-height)+var(--footer-margin))] -mb-[calc(var(--footer-height)+var(--footer-margin))]',
{ 'flex items-center pt-4': isHome }, { 'flex items-center pt-4': isHome },
)} )}
> >
<Routes> <Routes>
<Route index element={<Home />} /> <Route index element={<Home />} />
<Route path="/settings"> <Route path="/settings">
{['', '*'].map((path) => <Route key={path} path={path} element={<Settings />} />)} {['', '*'].map((path) => <Route key={path} path={path} element={<Settings />} />)}
</Route> </Route>
<Route path="/manage-servers" element={<ManageServers />} /> <Route path="/manage-servers" element={<ManageServers />} />
<Route path="/server/create" element={<CreateServer />} /> <Route path="/server/create" element={<CreateServer />} />
<Route path="/server/:serverId/edit" element={<EditServer />} /> <Route path="/server/:serverId/edit" element={<EditServer />} />
<Route path="/server/:serverId"> <Route path="/server/:serverId">
{['', '*'].map((path) => <Route key={path} path={path} element={<ShlinkWebComponentContainer />} />)} {['', '*'].map((path) => <Route key={path} path={path} element={<ShlinkWebComponentContainer />} />)}
</Route> </Route>
<Route path="*" element={<NotFound />} /> <Route path="*" element={<NotFound />} />
</Routes> </Routes>
</div> </div>
<div className="h-(--footer-height) mt-(--footer-margin) md:px-4"> <div className="h-(--footer-height) mt-(--footer-margin) md:px-4">
<ShlinkVersionsContainer /> <ShlinkVersionsContainer />
</div>
</div> </div>
</div> </ShlinkSidebarVisibilityProvider>
<AppUpdateBanner isOpen={appUpdated} onClose={resetAppUpdate} forceUpdate={forceUpdate} /> <AppUpdateBanner isOpen={appUpdated} onClose={resetAppUpdate} forceUpdate={forceUpdate} />
</div> </div>

View File

@@ -1,4 +1,4 @@
import type { ShlinkWebComponentType, TagColorsStorage } from '@shlinkio/shlink-web-component'; import type { ShlinkWebComponentProps, TagColorsStorage } from '@shlinkio/shlink-web-component';
import type { Settings } from '@shlinkio/shlink-web-component/settings'; import type { Settings } from '@shlinkio/shlink-web-component/settings';
import type { FC } from 'react'; import type { FC } from 'react';
import { memo } from 'react'; import { memo } from 'react';
@@ -17,7 +17,7 @@ type ShlinkWebComponentContainerProps = WithSelectedServerProps & {
type ShlinkWebComponentContainerDeps = { type ShlinkWebComponentContainerDeps = {
buildShlinkApiClient: ShlinkApiClientBuilder, buildShlinkApiClient: ShlinkApiClientBuilder,
TagColorsStorage: TagColorsStorage, TagColorsStorage: TagColorsStorage,
ShlinkWebComponent: ShlinkWebComponentType, ShlinkWebComponent: FC<ShlinkWebComponentProps>,
ServerError: FC, ServerError: FC,
}; };
@@ -51,6 +51,7 @@ const ShlinkWebComponentContainer: FCWithDeps<
createNotFound={(nonPrefixedHomePath) => ( createNotFound={(nonPrefixedHomePath) => (
<NotFound to={`${routesPrefix}${nonPrefixedHomePath}`}>List short URLs</NotFound> <NotFound to={`${routesPrefix}${nonPrefixedHomePath}`}>List short URLs</NotFound>
)} )}
autoSidebarToggle={false}
/> />
); );
})); }));

View File

@@ -13,7 +13,7 @@ export const Settings: FC<SettingsProps> = ({ settings, setSettings }) => (
<NoMenuLayout> <NoMenuLayout>
<ShlinkWebSettings <ShlinkWebSettings
settings={settings} settings={settings}
updateSettings={setSettings} onUpdateSettings={setSettings}
defaultShortUrlsListOrdering={DEFAULT_SHORT_URLS_ORDERING} defaultShortUrlsListOrdering={DEFAULT_SHORT_URLS_ORDERING}
/> />
</NoMenuLayout> </NoMenuLayout>