From 5d81971a9e98a223a9054b5bbc49dd1310737759 Mon Sep 17 00:00:00 2001 From: Berend de Boer Date: Fri, 12 Feb 2021 10:21:39 +1300 Subject: [PATCH 1/6] fix: remove aria valuemin/max from indeterminate progress --- src/Internal/CircularProgress/Implementation.elm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Internal/CircularProgress/Implementation.elm b/src/Internal/CircularProgress/Implementation.elm index d02322ef..f088e040 100644 --- a/src/Internal/CircularProgress/Implementation.elm +++ b/src/Internal/CircularProgress/Implementation.elm @@ -51,6 +51,10 @@ view options _ = isIndeterminate = config.progress == Nothing + + isDeterminate = + config.progress /= Nothing + in Options.apply summary Html.div @@ -59,8 +63,8 @@ view options _ = , css "width" (String.fromInt config.size ++ "px" ) , css "height" (String.fromInt config.size ++ "px" ) , css "text-align" "left" - , aria "valuemin" "0" - , aria "valuemax" "1" + , aria "valuemin" "0" |> when isDeterminate + , aria "valuemax" "1" |> when isDeterminate , aria "valuenow" (String.fromFloat valuenow) |> when (not isIndeterminate) , role "progressbar" ] From 29e0fe492e91376967cf137363b6e730590d2577 Mon Sep 17 00:00:00 2001 From: Berend de Boer Date: Fri, 12 Feb 2021 10:23:08 +1300 Subject: [PATCH 2/6] fix: remove aria valuemin/max from indeterminate progress --- src/Internal/LinearProgress/Implementation.elm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Internal/LinearProgress/Implementation.elm b/src/Internal/LinearProgress/Implementation.elm index de374251..7d653c20 100644 --- a/src/Internal/LinearProgress/Implementation.elm +++ b/src/Internal/LinearProgress/Implementation.elm @@ -61,14 +61,16 @@ view options _ = let ({ config } as summary) = Options.collect defaultConfig options + + isDeterminate = not config.indeterminate in Options.apply summary Html.div [ cs "mdc-linear-progress" , cs "mdc-linear-progress--indeterminate" |> when config.indeterminate , cs "mdc-linear-progress--reversed" |> when config.reversed - , aria "valuemin" "0" - , aria "valuemax" "1" + , aria "valuemin" "0" |> when isDeterminate + , aria "valuemax" "1" |> when isDeterminate , aria "valuenow" (String.fromFloat config.value) |> when (not config.indeterminate) , role "progressbar" ] From dcfdfc39e26bad9e2fedb6bcad842d85559f9c0d Mon Sep 17 00:00:00 2001 From: Berend de Boer Date: Fri, 12 Feb 2021 10:28:44 +1300 Subject: [PATCH 3/6] vendor: upgrade to Material Components for the Web v9.0.0 --- package-lock.json | 1061 +++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 532 insertions(+), 531 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4cb21f73..d03e4d94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,159 +5,159 @@ "requires": true, "dependencies": { "@material/animation": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/animation/-/animation-8.0.0.tgz", - "integrity": "sha512-4+rCFDcfJap62a/8luuq1fmMA+EdVMASD4CBd9cN4LNOc/OPzBkLqv0PHFTnmHu9Y9biHD94uyDsbEcvtyGr+Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-9.0.0.tgz", + "integrity": "sha512-ZsiCrIfn6uRjE+/W50PwxOIFSSMWo/sXgOAXvM/0C6KSEGAyKOBGcVmpMuD2IxJV+EGMwFJVQIwR1zZWues9yQ==", "dev": true, "requires": { "tslib": "^1.9.3" } }, "@material/auto-init": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-8.0.0.tgz", - "integrity": "sha512-HVs1ghR0HY8bQjziF/+n7Q1pFgK+IQbo3I5/xWpSPdBMnrw1ZaJohA8ylukfxLV+M+L/45l1ouOVmbJ60/N2EQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-9.0.0.tgz", + "integrity": "sha512-Fn3EUApNuQSloxl+Q7bQp4rScKatODF3HyHzjfMDR5/mCM4Ih5hdcokbvGrycw6Tqaai6BHeMOxK2kFzH0Pe5w==", "dev": true, "requires": { - "@material/base": "^8.0.0", + "@material/base": "^9.0.0", "tslib": "^1.9.3" } }, "@material/banner": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/banner/-/banner-8.0.0.tgz", - "integrity": "sha512-+Cu577cQmJcsJSGENcEBoHIce3xr+XvVUXrkCGSL5LJ3N5FyxcMlkx6x2qFddAiW0uO69H0URMx3D7zIkequsg==", - "dev": true, - "requires": { - "@material/base": "^8.0.0", - "@material/button": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-9.0.0.tgz", + "integrity": "sha512-CFXfjYqUS7RWNxp9Zri99puLmmKP1+4DIO8gck71ZO0n5e0FZoTMdlMODW6Xd13p91np2ULTbvN8pSpBvWUHoQ==", + "dev": true, + "requires": { + "@material/base": "^9.0.0", + "@material/button": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/base": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/base/-/base-8.0.0.tgz", - "integrity": "sha512-lLB3lv/A7TqqfqeVnoguv0NV+wpzM0KAVXj0jrtg2BtbxlOYjkfl4uySyOCLGxB0y4vTv1rSXB5i7Xn73+OQHg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-9.0.0.tgz", + "integrity": "sha512-6Oalz/9iJCvivofmb3r5YHwAD1yy4mCHhdNwP2SugTf64qD1H6YUiavWM+OYZFETYT75UCnjMP2pEF9ynAg7VA==", "dev": true, "requires": { "tslib": "^1.9.3" } }, "@material/button": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/button/-/button-8.0.0.tgz", - "integrity": "sha512-16s11brFwfpWvvJxMtOyUZ7J70TNclV37M4aRlQ1Cjxhk2IUQzeRSADpCl/NdNAZQHEIhrGl2oy21sQqaNhBKg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-9.0.0.tgz", + "integrity": "sha512-8cvZJ6ljp9qqOmGHiQKn1fLjbhwG6r2793iEkvueu/eqdf2oD5NF1S45k29VygRfUS0cQ5Z2IV69GYKJv1ogMA==", "dev": true, "requires": { - "@material/density": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/touch-target": "^8.0.0", - "@material/typography": "^8.0.0" + "@material/density": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/touch-target": "^9.0.0", + "@material/typography": "^9.0.0" } }, "@material/card": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/card/-/card-8.0.0.tgz", - "integrity": "sha512-mVpIuWtBCbuMtzSjjoaqjXa5h8tskp1vUaz4O4BhVdojE7m7oDp2/pa9AgADQALtqr9Q6ndtXdWhA4J9cFcRmA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-9.0.0.tgz", + "integrity": "sha512-IJ91mWQXFQ0hZ09goMYhBCtXEnbmO9EeiedIVgu+gCd9Bu9iGCA74Hid6DBzmOkv65eZiMHdD7CW2E2RUGhIRg==", "dev": true, "requires": { - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0" + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0" } }, "@material/checkbox": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-8.0.0.tgz", - "integrity": "sha512-YKe8ZNlR5K2pBXH2elN8btsqptlSgGq2pkg6q6pXbVK7bL/+UUBiB4qSAZKz6T4JwDf+CdOAR3eJWPheEIOqqQ==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/density": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/touch-target": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-9.0.0.tgz", + "integrity": "sha512-clOW+gOVSJfsp8gOiYsKq5hXpcVAkm93b+w0OmQwV4Bj9+XAjAs2XCrLtdmJjQyTkb0Qb6X767+9cYutqpPzRQ==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/density": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/touch-target": "^9.0.0", "tslib": "^1.9.3" } }, "@material/chips": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/chips/-/chips-8.0.0.tgz", - "integrity": "sha512-olPfOW5hU3bIbntgdyA+rFD2uATfS6LlC9Azt2hqb2Ky9KmcOxP29SJrHcb5ZpoPYirUNkB/GiCqR9sBwND0Aw==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/checkbox": "^8.0.0", - "@material/density": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/touch-target": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-9.0.0.tgz", + "integrity": "sha512-6epLeyTGuKLUuj0FTdyIwBNAecBe1LAKF+GJMqiaDGiCXaYdEPChvCW0JTp1FLno7qgA/fy2Zry2vByNVIk3Fg==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/checkbox": "^9.0.0", + "@material/density": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/touch-target": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/circular-progress": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-8.0.0.tgz", - "integrity": "sha512-evLJrb8XvtbQnaoYmH4CjlBXALWoq5MmLhj3ZcEBMd6UclBje/CxjTjIhRsAtc/PyFmdT3LgxN5NE8JYvbFqnA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-9.0.0.tgz", + "integrity": "sha512-B77m1OjD9B6qgTfwkGOrOGzsugdqDLy0i6kpBPfjdJGJK4DGCU79NoBJCCe+Z0koOeZqPF75INphvUrt3hN/bg==", "dev": true, "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/progress-indicator": "^8.0.0", - "@material/theme": "^8.0.0", + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/progress-indicator": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/data-table": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-8.0.0.tgz", - "integrity": "sha512-RrR6MSDn4ZG/TpRN6+ZPne3uR0isK9DXUkquUxatNBT2DLb9Sro55L3GxaQLehRHoj2UcICO30UWYB/O8j+wvg==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/checkbox": "^8.0.0", - "@material/density": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/icon-button": "^8.0.0", - "@material/linear-progress": "^8.0.0", - "@material/list": "^8.0.0", - "@material/menu": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/select": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/touch-target": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-9.0.0.tgz", + "integrity": "sha512-iW50R+mfecjnHjEHeodDis5bkZRqL2Agzfb+5hdiWQ2m4i+6L0IY91MP9js8AmOsQsyIfWWem2/tka+aouSRuA==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/checkbox": "^9.0.0", + "@material/density": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/icon-button": "^9.0.0", + "@material/linear-progress": "^9.0.0", + "@material/list": "^9.0.0", + "@material/menu": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/select": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/touch-target": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.10.0" }, "dependencies": { @@ -170,554 +170,555 @@ } }, "@material/density": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/density/-/density-8.0.0.tgz", - "integrity": "sha512-44g0S8kZfVw02JfMCLQeYxbt143xiQvouR1mNKqC6+W+XhdBNS1IxKtk+kONiEIXVhb9JKnEp5zag+aC589RTw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-9.0.0.tgz", + "integrity": "sha512-HXQ0GKiIh4X08H7aEIPl6KOcHIUtpe0bqIxrj3VboTQf4C5wN4qkiLys3GaZsA3guvT/T1fCoQOyAGxOtJEh4w==", "dev": true }, "@material/dialog": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-8.0.0.tgz", - "integrity": "sha512-zRCdg9APj3dbgAASFiBuTflKJ05sq3BJQfjyNcVuXYz4DW6ySnDTCHkq/XwQLfBx79QEFQ9R1GYK/vbr7WWrnA==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/button": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/touch-target": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-9.0.0.tgz", + "integrity": "sha512-/VvKpT9rKOZu4tZNDpfrjWaHvbUpUghqU+XxYpgEmkbY0Szmld/Pug1xSNt4eIxD1pEXhSpRtOmBx9GYZq3OqA==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/button": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/touch-target": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/dom": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/dom/-/dom-8.0.0.tgz", - "integrity": "sha512-Y+sGqsyeFEu2whqdQ++LzXwmoRzhG3nEiPPwtX/Fgqrfdy7nyG1tvLXT+P+PLMDM6xO/H5+yjPV5OLFpKJjiIg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-9.0.0.tgz", + "integrity": "sha512-SOtGJqav0Gp0efFXl597AesZCuW8Ues1KUyR6fahVoEiP50mq2U3IhL4KdQqMXbQNyYYerl16BVR9n7bfi1a8A==", "dev": true, "requires": { - "@material/feature-targeting": "^8.0.0", + "@material/feature-targeting": "^9.0.0", "tslib": "^1.9.3" } }, "@material/drawer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-8.0.0.tgz", - "integrity": "sha512-vBeMgavv5aYgx1KQAFhlKr3W1+BGJoQQiNnPgDLtxBBkgfdaNxHo1DJz8cgYp1X6p3moRUqgzdKxAMj+pewL0g==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/list": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-9.0.0.tgz", + "integrity": "sha512-ijqfuxCrt0TMdkD4ajA09OA/3GR8kXt676872CE0gmbS8HIWg9LsZwAnD2gHS8WDN7Fgj5o9WmoI6QnPih3X/Q==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/list": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/elevation": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-8.0.0.tgz", - "integrity": "sha512-DF/bdPv20jnKw35rIGbJmVTaNKA710hzdmI8G4TWrW/asMkxynEjJKQriyXkesLY+c1GP7qJDEhpV+xkQUrJLg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-9.0.0.tgz", + "integrity": "sha512-UzpJybgat3tKYlTh8iLjoIO5+pR71mdzmUZQs4fHZ9YXl3A2IS+HyOAqI1tpfTwNfNJRif2GUl95ghJgMawSXw==", "dev": true, "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/theme": "^8.0.0" + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/theme": "^9.0.0" } }, "@material/fab": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/fab/-/fab-8.0.0.tgz", - "integrity": "sha512-WwWD7eiKsiX/Ys+0q+/0mUxdPdgX3ol7kpQOaCjHwNsircpe4ntT/BjXsNvsEl/S2sBOy+fC6UCxsx/UP6Djcw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-9.0.0.tgz", + "integrity": "sha512-A7Z6TamNazWoyI3ruhtXYc6YZASoED1DFt7cO8rx5TXGFcOVfgKJSgrxoQGZl9kDRRa5Y0kUAhNHqLIzy/MBtQ==", "dev": true, "requires": { - "@material/animation": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/touch-target": "^8.0.0", - "@material/typography": "^8.0.0" + "@material/animation": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/touch-target": "^9.0.0", + "@material/typography": "^9.0.0" } }, "@material/feature-targeting": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-8.0.0.tgz", - "integrity": "sha512-xMJ9RmnOQCLPB6bD0xS0p6NF36vKNkjoPQt8aOoimtBlhSOba68+5jeX/qEQYZgOG4jf0SnWq833gAxx61Ni6g==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-9.0.0.tgz", + "integrity": "sha512-SKkvI46TxxpTau9fsXJWAXTJXbu6ut5n6wdN5ZX1DHHLY2AR7abBAhDIvNhIcxH65FK8mo7Z63UfvDwy177ttQ==", "dev": true }, "@material/floating-label": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-8.0.0.tgz", - "integrity": "sha512-k8owllI0eTS3jRGSSALytdX5rvUSbNzK5rxZkdx81hRJ95oEYBuKyTgSPhiLjjpY2igtjO2amzfENLsHO9ABuA==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-9.0.0.tgz", + "integrity": "sha512-hteVKZ/si1b7vwIBmD7zbZMHpkxZ6R0EDZLdiI//BBj5Ff6H6s9iwoUOC9kFQgjwNKiw8aZo5U/jsmwOhbwHvA==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/form-field": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-8.0.0.tgz", - "integrity": "sha512-VHmQ4QQRP/omLlc5kHRtP4GASg5Q+b3E3rz8r8XoJ6GqJamSHazCVpjcvIkpKxzDZaVTggLNxhlBCfRQ3VxuEQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-9.0.0.tgz", + "integrity": "sha512-W67mI9GMRefM6kx3S3LOPMw6hagTFNTKTjHIAAXFJBPeNANsXYuUnwD7SlJyXwrQi7hZMPehyBrsdk/oQlo8QA==", "dev": true, "requires": { - "@material/base": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "@material/base": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/icon-button": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-8.0.0.tgz", - "integrity": "sha512-OcO2sw21ty7OzEQ+7tkYt5NGrrwwDuCvZegfL/eMUla1iQFYf/pZ+QCb1r3NEtbBJmsXzoBsDcUnaiM4PxFs3g==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-9.0.0.tgz", + "integrity": "sha512-8T8kChMS0lxZ+PyzhUNlGUjcbOk/DEyLDr3nYGYoreLddYe2Hss2N0RMvfdZ03fniAKe9w0ySQHk5PWDsO3KcQ==", "dev": true, "requires": { - "@material/base": "^8.0.0", - "@material/density": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/theme": "^8.0.0", + "@material/base": "^9.0.0", + "@material/density": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/image-list": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-8.0.0.tgz", - "integrity": "sha512-5WvCgaHtbqRwYR2tIUM3D5WYu1PkyodUOSQIfP5V+S6m/0AIFqy66PajRjvQzjQaeB1FCuimVwqp28CPDjukuA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-9.0.0.tgz", + "integrity": "sha512-BoRQQML0RI4sxqP1axjxCKrKiF4BaxaKdtY+lZK1rYKgSJyegmQcpzGG7BIYc3zgcesKFgCNS/RH+VFxvUjdYg==", "dev": true, "requires": { - "@material/feature-targeting": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0" + "@material/feature-targeting": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0" } }, "@material/layout-grid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-8.0.0.tgz", - "integrity": "sha512-B+vU+BYdFH83q8YoEhX5kAgvcyDPzAiWbnEUhWDyKF+m7Y2r+xSEtQ+nGfFIMS1njdSLhTRhVBhvBxIZ1wA4GQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-9.0.0.tgz", + "integrity": "sha512-Q/4NId+cQqrvwmqAAb4liW8yvR+p5MN8UbaBqrvsxdePB5nfEyCCi5cHPvosZFzH0meXdfgDeVEO+HLOpvjXSQ==", "dev": true }, "@material/line-ripple": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-8.0.0.tgz", - "integrity": "sha512-eShO/Xm7SWD9hpocIE+/+KWdYi4/dQEoTWyg7xZeLzbg70s+9cANLDE2+pkI8hsuMEhCTkC51XSOOBvTDSAZrQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-9.0.0.tgz", + "integrity": "sha512-hCIKLMSE+gccRRKRiDSPYg82m0enuHqoiahmNQtaVin5Qb90YteuipwFodkvW0VRnGSo0yFfhC033Hly/Nkjuw==", "dev": true, "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/theme": "^8.0.0", + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/linear-progress": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-8.0.0.tgz", - "integrity": "sha512-EN1QxsLIxZ8boh3s8H8tpgksZ55nb090D2SrSxzAq/ANc/XW3Dka1VtnW++GI6gr7YJOma7vfFjnMDMa1gNgRQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-9.0.0.tgz", + "integrity": "sha512-ayPOomgduJLnyMTClcCFjrXvJio0j/LBAZuDYjusHucutFMWEj+UJ9G2AcouaGdO60mFsM3GpdEGWdNK/+e1Vg==", "dev": true, "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/progress-indicator": "^8.0.0", - "@material/theme": "^8.0.0", + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/progress-indicator": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/list": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/list/-/list-8.0.0.tgz", - "integrity": "sha512-GlTNhyjpr9pNXnRKjLdt4+oNaHi51y1AcR4S14noSunZnd0DeMJ2yTe+56iDcA6OMpTIAefTtvWUqGrDnPEeVw==", - "dev": true, - "requires": { - "@material/base": "^8.0.0", - "@material/density": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-9.0.0.tgz", + "integrity": "sha512-lLJRAjOusHwX7xhhjaIHdh+DFQAcxsfBA2Q0OtzHTUKLLFEk1UXvybxjn/i4vCwwGWe5LoLkA3QbQq7xB086Qg==", + "dev": true, + "requires": { + "@material/base": "^9.0.0", + "@material/density": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/menu": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/menu/-/menu-8.0.0.tgz", - "integrity": "sha512-ucG+j9GC8uDwkqjDxMfP21bKuvbKx4ChB/UKBZd4PZrJWCvqdfuC6AJih57UGVcu+l6r59mpmhkvfGhEjehNew==", - "dev": true, - "requires": { - "@material/base": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/list": "^8.0.0", - "@material/menu-surface": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/theme": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-9.0.0.tgz", + "integrity": "sha512-tvyFVa3lqjonHJf326Q1j7VMN+Du3guIvrhm72QwXjwVPHJBIkEysI2+ZW5IgjHKC2KkP4WzOP5+uVbqnlitlw==", + "dev": true, + "requires": { + "@material/base": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/list": "^9.0.0", + "@material/menu-surface": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/menu-surface": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-8.0.0.tgz", - "integrity": "sha512-oQxLi80GrNRQ8jHMi5qXw9S9eRB62Y6xWV8yfG8k4buTTg61iFx9GEUDDene2RslH9eyggVBKJ2K0ibdPp+ZpQ==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-9.0.0.tgz", + "integrity": "sha512-6IX4s109tkykdmpQiSerxDd4H7KWVNuiccfxEn7xj/zGZPJ+2PhyXkXnJZzf30irMzi+W79vb6azelBZVmFYvw==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/notched-outline": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-8.0.0.tgz", - "integrity": "sha512-5aNqLRoRfb5RJN7nOpUdo+xDZx6cTPzQwkXo9Fm6f2irWDPFd3qNQ1WGnKbY8r6KKo8wMarWkTRTAqmiWx/02g==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-9.0.0.tgz", + "integrity": "sha512-KqMdGlwtIUGmvEL8IAqomIz4LWg1K/hHkepm4nqqXOlaHAV2iEneOMAlgNsNVgZEZmu47WDcNLsOTLgZj/3N9w==", "dev": true, "requires": { - "@material/base": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/floating-label": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", + "@material/base": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/floating-label": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/progress-indicator": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-8.0.0.tgz", - "integrity": "sha512-ZBVdi8lEYJLvn7VFfzWnfZx7J94PGAuj8wq0Rto0we44rGQR3fmVhKMx7B12V4Ip1hakPtk1eDKPJAIkqq0u/Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-9.0.0.tgz", + "integrity": "sha512-gxweWEuly67n9CpEBd+bsJ3cjnvYZy86WTXUUvUXCxA+IFnEjnFpcxqjz5VyIQgaKKL3GNkEjfVyXOnyZ++tkg==", "dev": true, "requires": { "tslib": "^1.9.3" } }, "@material/radio": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/radio/-/radio-8.0.0.tgz", - "integrity": "sha512-TthlhTB+a9XJXxdAydT+3zy1kHY1ATdLPQRy5fAYuY00smNYW584SftWV2avDNsqa8T+3/YvlvXWNQnCCfivyQ==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/density": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/touch-target": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-9.0.0.tgz", + "integrity": "sha512-nP1Jf47Hag64qnCPFePnk4x61yhKi4mJrOCCxRqm9gMzDcod+YrXWXQQPdlkSJxIlgrKesH2so0R+fJzzXr2RA==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/density": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/touch-target": "^9.0.0", "tslib": "^1.9.3" } }, "@material/ripple": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-8.0.0.tgz", - "integrity": "sha512-r6Ejin8Qp9e91kHdhfStfXf5I18l5ZuraQIegBqj20OLe7SdrpMaGA3e1g923e/wfDCYEX1sBUVerwVUFJ+rTQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-9.0.0.tgz", + "integrity": "sha512-hc5oNvknfrv0KsL21dW0eRF85DfyANAI0H/+UmNmf850KwwYO/wbs5FshW+vNYuK9ro9OrC/pS4g6suG6Gh4Jg==", "dev": true, "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/theme": "^8.0.0", + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/rtl": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-8.0.0.tgz", - "integrity": "sha512-P7+22B+2r+ol5pnLvq7VUaZPJGBZeX2PpVwELE7J3IruN6SnOZyt1h2LZI/sEMuyQhKrNs8Cpq2PLnbgeQhBJQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-9.0.0.tgz", + "integrity": "sha512-3Ey4UqEOhKlkmpUQqiXtQnWTgGpwjTPqmFqh7OEy/V5X/k5QqWAhz7LJRmzqDS69uyBibsdB3tFxAGAi1RrRbA==", "dev": true, "requires": { - "@material/theme": "^8.0.0" + "@material/theme": "^9.0.0" } }, "@material/segmented-button": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-8.0.0.tgz", - "integrity": "sha512-E25nXvNhRHYqhvwWXTxYGylNwQFA9tad0GreTf6eiyQLsQmqnM/BKhnqPRLYzX17jitgyb7GdY/kQyzUmwFzFg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-9.0.0.tgz", + "integrity": "sha512-vALiAo2VIGm+5Sd3QzVyZZcdW3Mn7XyadErk9dG3HXt4VNUBrvK6ltRC4v2CC/RF5VZ85MN6r7yoqB3G1PjY0Q==", "dev": true, "requires": { - "@material/base": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/touch-target": "^8.0.0", - "@material/typography": "^8.0.0" + "@material/base": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/touch-target": "^9.0.0", + "@material/typography": "^9.0.0" } }, "@material/select": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/select/-/select-8.0.0.tgz", - "integrity": "sha512-5ofZ6CbxIwrDzbEVRE60+8mYNce1TaUlnGs4WbauVKt60gquC9oYB5D9r27Q9Uqv5WlQvPL0vbTlRhAR7d1sYQ==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/density": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/floating-label": "^8.0.0", - "@material/line-ripple": "^8.0.0", - "@material/list": "^8.0.0", - "@material/menu": "^8.0.0", - "@material/menu-surface": "^8.0.0", - "@material/notched-outline": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-9.0.0.tgz", + "integrity": "sha512-IIjDD7I10q8U7ZRnhHOApy3jpPZ8Dz4i9KthZz4o3j+maFVOXhwoySqtsc5g97BUPruiFZnDzZQuO8Lo7GSoLA==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/density": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/floating-label": "^9.0.0", + "@material/line-ripple": "^9.0.0", + "@material/list": "^9.0.0", + "@material/menu": "^9.0.0", + "@material/menu-surface": "^9.0.0", + "@material/notched-outline": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/shape": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/shape/-/shape-8.0.0.tgz", - "integrity": "sha512-VX8QtZkzC6bViTw9krDRgXaMQ+TVdSJSRs2W24V6G7FbYyVQqBreTkp8knAWJPWj68MsGVp1kRRvR6U8tB4GDg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-9.0.0.tgz", + "integrity": "sha512-kcZIBnPk0IRy8LyEIGURXAmtDNQHyySmOjySmsCKQzgXnfUhyNsU2exylkCSfPgJT/AWaclaIIN6x+E5OplvPg==", "dev": true, "requires": { - "@material/feature-targeting": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/theme": "^8.0.0" + "@material/feature-targeting": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/theme": "^9.0.0" } }, "@material/slider": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/slider/-/slider-8.0.0.tgz", - "integrity": "sha512-AdqrIxe+K+Y3ukge/GQsPABVKCTBNDBAcxOCkuuuHza41Xn4a4DZG5J/fQZFt/a4t0ydLepyfIzemeAhHICEzw==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-9.0.0.tgz", + "integrity": "sha512-kaiKKZTA+F6w75k8g1hHXWlexhF8DfZZOtaIygl46rlf/t4aD8lDj1ZMYk/C1/xCjbdFIqCHzltns2xOk1In0w==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/snackbar": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-8.0.0.tgz", - "integrity": "sha512-VJA3C58o+b2PRpPsPrQ3dnS3S4L8NZ56Y9eEkOdaJ7mQUQqvYC3opYAT/MuawyGC9I7sUgscV7gHnYifm6JJHQ==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/button": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/icon-button": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-9.0.0.tgz", + "integrity": "sha512-566hzyW6zMWf11Mc37SOB7gHmZr9y5oUC5lJ7Bzi5k/ExGKsqR8acZAn8nvgrbUxu5ZYfWAQkaPuN7wNO6s+Vg==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/button": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/icon-button": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/switch": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/switch/-/switch-8.0.0.tgz", - "integrity": "sha512-ayz8zrbbmQcHhrbiu7E7AXJnGl8gS9S2KjQRpFybnKxJca77jMxLuMBzVHu6eoXmMa3otwIrcJDQbQrKD+UPDA==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/density": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/theme": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-9.0.0.tgz", + "integrity": "sha512-ym1erZw7JdqlyiJ0O17KfH+HH8wiF1jXWaEvDQ/ETJ+/eNqBneRTWNODAOPx9/D2j4FKJxSJlZqn0OCMOJdxGg==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/density": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/tab": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/tab/-/tab-8.0.0.tgz", - "integrity": "sha512-AQ/7EJpKG6Pz+s3XGwWXWZxEgjM6U3xZfKFgL8l8yGQtnyY24sJHbIrCmuS2HQ74DfkZg8FElovuSLOJ6yypVg==", - "dev": true, - "requires": { - "@material/base": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/tab-indicator": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-9.0.0.tgz", + "integrity": "sha512-fXO5/n1i9Os6u9+vmgEvdMAIpTMnZpvlye9QD2rbiMBj5Q7oQIcorlJ9V9N2DlmV+cpIylyZI9SGo2/8muaLEA==", + "dev": true, + "requires": { + "@material/base": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/tab-indicator": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/tab-bar": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-8.0.0.tgz", - "integrity": "sha512-m2zl7wp9zGaFbUGBdksF9Wq3lSY21FNhpiIlNxrqCwTMdAYPOIvjYaQD/kW/bpHEjqu8Anqyr3ovP9XdnbA3uQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-9.0.0.tgz", + "integrity": "sha512-kHYTqfmAIyu2Wue/bBlwHMgkzXdZLCEfLyulmM9P9CHRB/It11ofT3q3VtJBmtogh8bmA0PSZ7NaOtl2r6YiVQ==", "dev": true, "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/density": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/tab": "^8.0.0", - "@material/tab-scroller": "^8.0.0", + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/density": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/tab": "^9.0.0", + "@material/tab-scroller": "^9.0.0", "tslib": "^1.9.3" } }, "@material/tab-indicator": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-8.0.0.tgz", - "integrity": "sha512-2s3zjUtVvJ9pLP514mf83ZZFsy/CqNdwLE7ZU4sw27+ki1zqsgUmLPiWDAfmFyrN1Rvw2Tit3ZGuNJ7xFbAs3A==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-9.0.0.tgz", + "integrity": "sha512-4gjbdMq+bgRsegle8pckT0NBHYYoPCfOPJwrwWn3zPVsy/0Nm+XCbseXUDyLXRyCxaytqA7zEsIgBOufkdnB1g==", "dev": true, "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/theme": "^8.0.0", + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/theme": "^9.0.0", "tslib": "^1.9.3" } }, "@material/tab-scroller": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-8.0.0.tgz", - "integrity": "sha512-fB/8lamANa/L3rNSkf7kB+GEnpH9vW1UQ9QtXe1K4Lr2UlCO1L3aV2HvOV53Ga4w25CcLUSypF3AxBzngb012Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-9.0.0.tgz", + "integrity": "sha512-kNndv+MJIi/A+MRyYv6iAzu8KjkBOa7vkpWRl7Lqo1j8iMyb4q1o9klEFfYD1/qeK0tLgcuUE4TZUGluz38/9w==", "dev": true, "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/tab": "^8.0.0", + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/tab": "^9.0.0", "tslib": "^1.9.3" } }, "@material/textfield": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-8.0.0.tgz", - "integrity": "sha512-Ec9T5gctPgy2mOnBr690aB2bYzfQblDRhfABNEMX41+Q9ywhzMrKGBCjyYiCzwOWTLOWxsXMXPfnTSkDq991yA==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/density": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/floating-label": "^8.0.0", - "@material/line-ripple": "^8.0.0", - "@material/notched-outline": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-9.0.0.tgz", + "integrity": "sha512-Q6pwhqxRVOdPdwAPI/AEBDmtF51YnBXI+ja8OiP1Vh6xf7Kt4WFu4nYMa4QK6J3NoR2v/zMurAtx5YVuYVS5hQ==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/density": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/floating-label": "^9.0.0", + "@material/line-ripple": "^9.0.0", + "@material/notched-outline": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/theme": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/theme/-/theme-8.0.0.tgz", - "integrity": "sha512-YcU4oi1pd9K8KfPfhZHD7GGnn034SoaVld5534eEnTMgpUn2y7KHZJlPCjrdh1tIy+PBvnYAkxBtx+mKWRCKFQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-9.0.0.tgz", + "integrity": "sha512-3wpQ00Ho6lD3+aRXUkn1YGii7Hg5ukaOkGq5oLyp7bikS3FTbgX9V6pspRiFckR4CKCbGR5NayIuCt8JwbcFyw==", "dev": true, "requires": { - "@material/feature-targeting": "^8.0.0" + "@material/feature-targeting": "^9.0.0" } }, "@material/tooltip": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-8.0.0.tgz", - "integrity": "sha512-z0SgL6CWp59V2AnTLbmfzxKCXIo/fWQejiu6FNFnovjX9BMiQNoWd+BsNFdxZb8PZhSuTwToVG1CSHHKGrLLdw==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-9.0.0.tgz", + "integrity": "sha512-CH7YPah63UNlWCzJxhoKvyOPt4Scs9cBwIkc5mMDDcEZaRlcVh40Qzwtcc8PHq6kduEWDhj9klbeUaqX3ciUBg==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/top-app-bar": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-8.0.0.tgz", - "integrity": "sha512-cCP1eUAuFA8FbNgt+O3MI771IkIIMIUF6pc+hXBMddCBeec4VbSKUCqeRd1TR+RHPTf4BQ1QmutMSY8AkLIoyw==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/base": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/typography": "^8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-9.0.0.tgz", + "integrity": "sha512-6FJ7YTsXIv4gLF5zpSjffHTEwpVoNOnl0++B8Uozd03g/q/WkDQkkDgGiL0+XS34+QNzL72/7MFbvd+qEejurw==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/base": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/typography": "^9.0.0", "tslib": "^1.9.3" } }, "@material/touch-target": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-8.0.0.tgz", - "integrity": "sha512-vRaV8AYiZfN+90SxDrO38rmmwNrTQHwwWGViBWod2uedQLe+TisldKa0UlCBrVscuDMVO3cpDdsgVzzdpCHdxg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-9.0.0.tgz", + "integrity": "sha512-pvxp7U3UAlmY+AgeG9IxMlQsAiTOgITREzy4Egumtf1Ale2AQAfgDFGMs2NB1Izn+9vIgko/gHnlWgqHxexwwA==", "dev": true, "requires": { - "@material/base": "^8.0.0", - "@material/feature-targeting": "^8.0.0" + "@material/base": "^9.0.0", + "@material/feature-targeting": "^9.0.0" } }, "@material/typography": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@material/typography/-/typography-8.0.0.tgz", - "integrity": "sha512-1CKckX1JStAh4JvOGwyc3vJ8ggGJXBZJTZJDJNmXSyJeL8SkLdppeTjr02zN09VNrVehS41ArhScPF0zl0rMzQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-9.0.0.tgz", + "integrity": "sha512-+zyzGnV73d/RyG681L72hCnhd2fwwS9ErtEa3KESVJxVxKeuaaCpUJVDkOqg1C/e7tNX5n/GiU8KPwRPG2O9Jw==", "dev": true, "requires": { - "@material/feature-targeting": "^8.0.0", - "@material/theme": "^8.0.0" + "@material/feature-targeting": "^9.0.0", + "@material/theme": "^9.0.0" } }, "@webassemblyjs/ast": { @@ -3542,58 +3543,58 @@ } }, "material-components-web": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/material-components-web/-/material-components-web-8.0.0.tgz", - "integrity": "sha512-0troqbxoXPozViUqL1AeXXAc12L3zf92pc5hYvR+0kyfCkp2tj+No5/Px96X/14l2sPQIoh82v7Sh0MMt7lbdg==", - "dev": true, - "requires": { - "@material/animation": "^8.0.0", - "@material/auto-init": "^8.0.0", - "@material/banner": "^8.0.0", - "@material/base": "^8.0.0", - "@material/button": "^8.0.0", - "@material/card": "^8.0.0", - "@material/checkbox": "^8.0.0", - "@material/chips": "^8.0.0", - "@material/circular-progress": "^8.0.0", - "@material/data-table": "^8.0.0", - "@material/density": "^8.0.0", - "@material/dialog": "^8.0.0", - "@material/dom": "^8.0.0", - "@material/drawer": "^8.0.0", - "@material/elevation": "^8.0.0", - "@material/fab": "^8.0.0", - "@material/feature-targeting": "^8.0.0", - "@material/floating-label": "^8.0.0", - "@material/form-field": "^8.0.0", - "@material/icon-button": "^8.0.0", - "@material/image-list": "^8.0.0", - "@material/layout-grid": "^8.0.0", - "@material/line-ripple": "^8.0.0", - "@material/linear-progress": "^8.0.0", - "@material/list": "^8.0.0", - "@material/menu": "^8.0.0", - "@material/menu-surface": "^8.0.0", - "@material/notched-outline": "^8.0.0", - "@material/radio": "^8.0.0", - "@material/ripple": "^8.0.0", - "@material/rtl": "^8.0.0", - "@material/segmented-button": "^8.0.0", - "@material/select": "^8.0.0", - "@material/shape": "^8.0.0", - "@material/slider": "^8.0.0", - "@material/snackbar": "^8.0.0", - "@material/switch": "^8.0.0", - "@material/tab": "^8.0.0", - "@material/tab-bar": "^8.0.0", - "@material/tab-indicator": "^8.0.0", - "@material/tab-scroller": "^8.0.0", - "@material/textfield": "^8.0.0", - "@material/theme": "^8.0.0", - "@material/tooltip": "^8.0.0", - "@material/top-app-bar": "^8.0.0", - "@material/touch-target": "^8.0.0", - "@material/typography": "^8.0.0" + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/material-components-web/-/material-components-web-9.0.0.tgz", + "integrity": "sha512-YKqv5DaMy0FtqtvcJfE2hVSK1aIsvlBwni8+AdeF4YwKhxJU7qNuNntOzrt3TfKnylQGSPkJm+ReK9VYC93M0Q==", + "dev": true, + "requires": { + "@material/animation": "^9.0.0", + "@material/auto-init": "^9.0.0", + "@material/banner": "^9.0.0", + "@material/base": "^9.0.0", + "@material/button": "^9.0.0", + "@material/card": "^9.0.0", + "@material/checkbox": "^9.0.0", + "@material/chips": "^9.0.0", + "@material/circular-progress": "^9.0.0", + "@material/data-table": "^9.0.0", + "@material/density": "^9.0.0", + "@material/dialog": "^9.0.0", + "@material/dom": "^9.0.0", + "@material/drawer": "^9.0.0", + "@material/elevation": "^9.0.0", + "@material/fab": "^9.0.0", + "@material/feature-targeting": "^9.0.0", + "@material/floating-label": "^9.0.0", + "@material/form-field": "^9.0.0", + "@material/icon-button": "^9.0.0", + "@material/image-list": "^9.0.0", + "@material/layout-grid": "^9.0.0", + "@material/line-ripple": "^9.0.0", + "@material/linear-progress": "^9.0.0", + "@material/list": "^9.0.0", + "@material/menu": "^9.0.0", + "@material/menu-surface": "^9.0.0", + "@material/notched-outline": "^9.0.0", + "@material/radio": "^9.0.0", + "@material/ripple": "^9.0.0", + "@material/rtl": "^9.0.0", + "@material/segmented-button": "^9.0.0", + "@material/select": "^9.0.0", + "@material/shape": "^9.0.0", + "@material/slider": "^9.0.0", + "@material/snackbar": "^9.0.0", + "@material/switch": "^9.0.0", + "@material/tab": "^9.0.0", + "@material/tab-bar": "^9.0.0", + "@material/tab-indicator": "^9.0.0", + "@material/tab-scroller": "^9.0.0", + "@material/textfield": "^9.0.0", + "@material/theme": "^9.0.0", + "@material/tooltip": "^9.0.0", + "@material/top-app-bar": "^9.0.0", + "@material/touch-target": "^9.0.0", + "@material/typography": "^9.0.0" } }, "md5.js": { diff --git a/package.json b/package.json index 212c2208..0f16b32a 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "babel": "^6.23.0", "babel-loader": "^7.1.5", "babel-preset-env": "^1.7.0", - "material-components-web": "^8.0.0", + "material-components-web": "^9.0.0", "webpack": "^4.44.1", "webpack-cli": "^3.3.12" }, From 1edf26c28a736843e2af48dc10ac440f0680304a Mon Sep 17 00:00:00 2001 From: Berend de Boer Date: Fri, 12 Feb 2021 12:01:59 +1300 Subject: [PATCH 4/6] docs: add banner example --- src/Material/Banner.elm | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/Material/Banner.elm b/src/Material/Banner.elm index 9750759b..31e6b45d 100644 --- a/src/Material/Banner.elm +++ b/src/Material/Banner.elm @@ -17,7 +17,7 @@ module Material.Banner exposing # Resources - - [Buttons - Material Components for the Web](https://github.com/material-components/material-components-web/tree/master/packages/mdc-banner) + - [Banner - Material Components for the Web](https://github.com/material-components/material-components-web/tree/master/packages/mdc-banner) - [Material Design guidelines: Banners](https://material.io/guidelines/components/banners.html) - [Demo](https://aforemny.github.io/elm-mdc/#banners) @@ -26,10 +26,21 @@ module Material.Banner exposing import Material.Banner as Banner - Banner.view - [ + Banner.view [] + [ Banner.graphicTextWrapper [] + [ Banner.text [] [ text "There was a problem processing a transaction on your credit card." ] + ] + , Banner.actions [] + [ Button.view Mdc + "primary-action-button" + model.mdc + [ Button.ripple + , Banner.primaryAction + ] + [ text "Fix it" + ] + ] ] - [] # Usage From 0ac8c6940a8f8c95cc5a7c0f618ee59c5008ea5e Mon Sep 17 00:00:00 2001 From: Berend de Boer Date: Fri, 12 Feb 2021 20:35:42 +1300 Subject: [PATCH 5/6] feat: complete rewrite of slider to use --- demo/Demo/Slider.elm | 2 +- src/Internal/Slider/Implementation.elm | 759 +++++++------------------ src/Internal/Slider/Model.elm | 30 +- src/Material/Slider.elm | 14 +- 4 files changed, 211 insertions(+), 594 deletions(-) diff --git a/demo/Demo/Slider.elm b/demo/Demo/Slider.elm index 1d4d2dda..12d2df55 100644 --- a/demo/Demo/Slider.elm +++ b/demo/Demo/Slider.elm @@ -118,7 +118,7 @@ discreteSliderWithTickMarks lift model = , Slider.discrete , Slider.min 0 , Slider.max 100 - , Slider.step 1 + , Slider.step 10 , Slider.trackMarkers ] [] diff --git a/src/Internal/Slider/Implementation.elm b/src/Internal/Slider/Implementation.elm index 4f211c61..6350a519 100644 --- a/src/Internal/Slider/Implementation.elm +++ b/src/Internal/Slider/Implementation.elm @@ -5,7 +5,6 @@ module Internal.Slider.Implementation exposing , max , min , onChange - , onInput , react , step , trackMarkers @@ -14,13 +13,14 @@ module Internal.Slider.Implementation exposing ) import Browser.Dom as Dom -import Html as Html exposing (Html, text) +import Html as Html exposing (Html, text, div) import Html.Attributes as Html import Internal.Helpers exposing (delayedCmd) import Internal.Component as Component exposing (Index, Indexed) import Internal.GlobalEvents as GlobalEvents import Internal.Msg -import Internal.Options as Options exposing (cs, css, styled, when) +import Internal.Options as Options exposing (aria, cs, css, styled, when) +import Internal.Ripple.Implementation as Ripple import Internal.Slider.Model exposing (Model, Msg(..), defaultModel) import Json.Decode as Decode exposing (Decoder) import Svg @@ -34,87 +34,28 @@ update lift msg model = NoOp -> ( Nothing, Cmd.none ) - Focus -> - if not model.preventFocus then - ( Just { model | focus = True }, Cmd.none ) - - else - ( Nothing, Cmd.none ) - - Blur -> - ( Just - { model - | focus = False - , preventFocus = False - } - , Cmd.none - ) - - TransitionEnd -> - ( Just { model | inTransit = False }, Cmd.none ) - - RequestSliderDimensions id_ next clientX -> - -- Get current slider dimensions before determining what value the user clicked - ( Nothing - , getElement lift id_ (GotSliderDimensions next clientX) - ) - - GotSliderDimensions next clientX el -> - let - new_model = - { model - | left = el.element.x - , width = el.element.width - } - in - update lift (next clientX) new_model - - InteractionStart clientX -> + RippleMsg msg_ -> let - activeValue = - valueFromClientX model model clientX + ( rippleState, rippleCmd ) = + Ripple.update msg_ model.ripple in - ( Just - { model - | active = True - , inTransit = True - , activeValue = Just activeValue - , preventFocus = True - } - , Cmd.none + ( Just { model | ripple = rippleState } + , Cmd.map (lift << RippleMsg) rippleCmd ) - ThumbContainerPointer clientX -> - let - activeValue = - valueFromClientX model model clientX - in - ( Just - { model - | active = True - , inTransit = False - , activeValue = Just activeValue - , preventFocus = True - } - , Cmd.none - ) + Focus -> + ( Just { model | showThumbIndicator = True }, Cmd.none ) - Drag clientX -> - if model.active then - let - activeValue = - valueFromClientX model model clientX - in - ( Just - { model - | inTransit = False - , activeValue = Just activeValue - } - , Cmd.none - ) + Blur -> + ( Just { model | showThumbIndicator = False }, Cmd.none ) - else - ( Nothing, Cmd.none ) + DragStart inputId change_handler clientX -> + ( Just { model | dragStarted = True } + , Cmd.batch + [ cmd (change_handler clientX ) + , Task.attempt (\_ -> lift NoOp) (Dom.focus inputId) + ] + ) Init id_ min_ max_ step_ -> ( Just @@ -137,16 +78,18 @@ update lift msg model = } , Cmd.none ) - KeyDown -> - ( Just { model | focus = True }, Cmd.none ) - Up -> - -- Note: On mobile `Up` (tends to) fire before `InteractionStart`. + -- Note: On mobile `Up` (tends to) fire before `Dragtart`. + -- Note 2: not sure this still happens after the rewrite ( Nothing, delayedCmd 50 (lift ActualUp) ) ActualUp -> - ( Just { model | active = False, activeValue = Nothing }, Cmd.none ) + ( Just { model | dragStarted = False }, Cmd.none ) + +cmd : msg -> Cmd msg +cmd m = + Task.perform (always m) (Task.succeed ()) {-| Attempt to retrieve the dimension of the given element. @@ -161,98 +104,6 @@ getElement lift id_ msg = (Dom.getElement id_) -{-| Computes the new value from the clientX position. - -In order for this function to work the most current element left and width must be passed in. --} -valueFromClientX : { a | min : Float, max : Float } -> { b | left : Float, width : Float } -> Float -> Float -valueFromClientX config rect clientX = - let - isRtl = - False - - xPos = - clientX - rect.left - - pctComplete = - if isRtl then - 1 - (xPos / rect.width) - - else - xPos / rect.width - in - config.min + pctComplete * (config.max - config.min) - - -valueForKey : Maybe String -> Int -> { a | step : Float, min : Float, max : Float, discrete : Bool } -> Float -> Maybe Float -valueForKey key keyCode geometry currentValue = - let - isRtl = - False - - delta = - (if isRtl && (isArrowLeft || isArrowRight) then - (*) -1 - - else - identity - ) - <| - if geometry.discrete then - geometry.step - - else - (geometry.max - geometry.min) / 100 - - isArrowLeft = - key == Just "ArrowLeft" || keyCode == 37 - - isArrowRight = - key == Just "ArrowRight" || keyCode == 39 - - isArrowUp = - key == Just "ArrowUp" || keyCode == 38 - - isArrowDown = - key == Just "ArrowDown" || keyCode == 40 - - isHome = - key == Just "Home" || keyCode == 36 - - isEnd = - key == Just "End" || keyCode == 35 - - isPageUp = - key == Just "PageUp" || keyCode == 33 - - isPageDown = - key == Just "PageDown" || keyCode == 34 - - pageFactor = - 4 - in - Maybe.map (clamp geometry.min geometry.max) <| - if isArrowLeft || isArrowDown then - Just (currentValue - delta) - - else if isArrowRight || isArrowUp then - Just (currentValue + delta) - - else if isHome then - Just geometry.min - - else if isEnd then - Just geometry.max - - else if isPageUp then - Just (currentValue + delta * pageFactor) - - else if isPageDown then - Just (currentValue - delta * pageFactor) - - else - Nothing - type alias Config m = { id_ : Index @@ -261,10 +112,10 @@ type alias Config m = , max : Float , discrete : Bool , step : Float - , onInput : Maybe (Float -> m) , onChange : Maybe (Float -> m) , trackMarkers : Bool , disabled : Bool + , isRange : Bool } @@ -276,10 +127,10 @@ defaultConfig = , max = 100 , step = 1 , discrete = False - , onInput = Nothing , onChange = Nothing , trackMarkers = False , disabled = False + , isRange = False -- TODO implement range sliders } @@ -312,39 +163,56 @@ disabled = Options.option (\config -> { config | disabled = True }) + +onChange : (Float -> m) -> Property m +onChange handler = + Options.option (\config -> { config | onChange = Just handler }) + + +step : Float -> Property m +step value_ = + Options.option (\config -> { config | step = value_ }) + + +trackMarkers : Property m +trackMarkers = + Options.option (\config -> { config | trackMarkers = True }) + + + slider : Index -> (Msg m -> m) -> Model -> List (Property m) -> List (Html m) -> Html m slider domId lift model options _ = let ({ config } as summary) = Options.collect defaultConfig options - continuousValue = - if model.active then - model.activeValue - |> Maybe.withDefault config.value + clampedValue = + config.value + |> clamp config.min config.max - else - config.value + range = config.max - config.min - discreteValue = - discretize config continuousValue + pctComplete = (clampedValue - config.min) / range - translateX = - let - v = - discreteValue - |> clamp config.min config.max - - c = - if (config.max - config.min) /= 0 then - (v - config.min) - / (config.max - config.min) - |> clamp 0 1 - - else - 0 - in - c * model.width + rangePx = pctComplete * model.width + + number_of_tick_marks = + ( range / config.step |> ceiling ) + 1 + + active_marks = + ( ( range / config.step) + 1 ) * pctComplete |> ceiling + + tickMark i = + styled div + [ element (if i <= active_marks then "tick-mark--active" else "tick-mark--inactive" ) ] + [] + + inputId = domId ++ "--input" + + thumbId = domId ++ "--thumb" + + rippleInterface = + Ripple.view True thumbId (lift << RippleMsg) model.ripple [ ] downs = [ "mousedown" @@ -364,24 +232,6 @@ slider domId lift model options _ = , GlobalEvents.onPointerMove ] - trackScale = - if config.max - config.min == 0 then - 0 - - else - (discreteValue - config.min) / (config.max - config.min) - - -- keep calculation in css for better rounding/subpixel behavior - markerStyle min_ max_ step_ = - let - markerAmount = "((" ++ String.fromFloat max_ ++ " - " ++ String.fromFloat min_ ++ ") / " ++ String.fromFloat step_ ++ ")" - markerWidth = "2px" - markerBkgdImage = "linear-gradient(to right, currentColor " ++ markerWidth ++ ", transparent 0)" - markerBkgdLayout = "0 center / calc((100% - " ++ markerWidth ++ ") / " ++ markerAmount ++ ") 100% repeat-x" - in - markerBkgdImage ++ " " ++ markerBkgdLayout - - configChanged = config.min /= model.min || config.max /= model.max || @@ -389,136 +239,48 @@ slider domId lift model options _ = in Options.apply summary - Html.div + div [ Options.id config.id_ , block - , modifier "focus" |> when model.focus - , modifier "active" |> when model.active - , modifier "off" |> when (discreteValue <= config.min) , modifier "discrete" |> when config.discrete , modifier "disabled" |> when config.disabled - , modifier "in-transit" |> when model.inTransit - , modifier "display-markers" |> when config.trackMarkers - , Options.attribute (Html.tabindex 0) - , Options.aria "disabled" "true" |> when config.disabled - , Options.data "min" (String.fromFloat config.min) - , Options.data "max" (String.fromFloat config.max) - , Options.data "step" (String.fromFloat config.step) - , Options.role "slider" - , Options.aria "valuemin" (String.fromFloat config.min) - , Options.aria "valuemax" (String.fromFloat config.max) - , Options.aria "valuenow" (String.fromFloat discreteValue) + , modifier "tick-marks" |> when config.trackMarkers + , modifier "tick-marks" |> when config.trackMarkers + , when (not model.initialized || configChanged) <| GlobalEvents.onTick <| Decode.succeed (lift <| Init config.id_ config.min config.max config.step) , GlobalEvents.onResize <| Decode.succeed (lift <| Resize config.id_ config.min config.max config.step) - , Options.on "keydown" <| - Decode.map lift <| - Decode.map2 - (\key keyCode -> - let - activeValue = - valueForKey key keyCode config config.value - in - if activeValue /= Nothing then - KeyDown - - else - NoOp - ) - (Decode.oneOf - [ Decode.map Just (Decode.at [ "key" ] Decode.string) - , Decode.succeed Nothing - ] - ) - (Decode.at [ "keyCode" ] Decode.int) - , Options.onWithOptions "keydown" - (Decode.map - (\message -> - { message = message - , preventDefault = True - , stopPropagation = False - } - ) - (Decode.map lift <| - Decode.andThen identity <| - Decode.map2 - (\key keyCode -> - let - activeValue = - valueForKey key keyCode config config.value - in - if activeValue /= Nothing then - Decode.succeed NoOp - - else - Decode.fail "" - ) - (Decode.oneOf - [ Decode.map Just (Decode.at [ "key" ] Decode.string) - , Decode.succeed Nothing - ] + + , when (not config.disabled) <| + case config.onChange of + Just on_change -> + Options.many <| + List.map + (\event -> + Options.on event <| + Decode.map + (\clientX -> + let + activeValue = mapClientXOnSliderScale model.left model.width config.min config.max config.step clientX + in + lift ( DragStart inputId on_change activeValue) + ) + decodeClientX ) - (Decode.at [ "keyCode" ] Decode.int) - ) - ) - , when (config.onChange /= Nothing) <| - Options.on "keydown" <| - Decode.map2 - (\key keyCode -> - let - activeValue = - valueForKey key keyCode config config.value - |> Maybe.map (discretize config) - in - Maybe.map2 (<|) config.onChange activeValue - |> Maybe.withDefault (lift NoOp) - ) - (Decode.oneOf - [ Decode.map Just (Decode.at [ "key" ] Decode.string) - , Decode.succeed Nothing - ] - ) - (Decode.at [ "keyCode" ] Decode.int) - , when (config.onInput /= Nothing) <| - Options.on "keydown" <| - Decode.map2 - (\key keyCode -> - let - activeValue = - valueForKey key keyCode config config.value - |> Maybe.map (discretize config) - in - Maybe.map2 (<|) config.onInput activeValue - |> Maybe.withDefault (lift NoOp) - ) - (Decode.oneOf - [ Decode.map Just (Decode.at [ "key" ] Decode.string) - , Decode.succeed Nothing - ] - ) - (Decode.at [ "keyCode" ] Decode.int) - , Options.on "focus" (Decode.succeed (lift Focus)) - , Options.on "blur" (Decode.succeed (lift Blur)) - , Options.when (not config.disabled) <| - Options.many <| - List.map - (\event -> - Options.on event (Decode.map (lift << RequestSliderDimensions config.id_ InteractionStart) decodeClientX) - ) - downs - , when (config.onChange /= Nothing) <| + downs + Nothing -> Options.nop + , when model.dragStarted <| Options.many <| List.map - (\event -> - Options.on event <| + (\handler -> + handler <| Decode.map (\clientX -> let activeValue = - valueFromClientX config model clientX - |> discretize config + mapClientXOnSliderScale model.left model.width config.min config.max config.step clientX in Maybe.map (\changeHandler -> changeHandler activeValue) @@ -527,179 +289,127 @@ slider domId lift model options _ = ) decodeClientX ) - downs - , when (config.onInput /= Nothing) <| - Options.many <| - List.map - (\event -> - Options.on event <| - Decode.map - (\clientX -> - let - activeValue = - valueFromClientX config model clientX - |> discretize config - in - Maybe.map - (\inputHandler -> inputHandler activeValue) - config.onInput - |> Maybe.withDefault (lift NoOp) - ) - decodeClientX - ) - downs + moves , Options.many <| List.map (\handler -> handler (Decode.succeed (lift Up)) ) ups - , when ((config.onChange /= Nothing) && model.active) <| - Options.many <| - List.map - (\handler -> - handler <| - Decode.map - (\clientX -> - let - activeValue = - valueFromClientX config model clientX - |> discretize config - in - Maybe.map (\changeHandler -> changeHandler activeValue) config.onChange - |> Maybe.withDefault (lift NoOp) - ) - decodeClientX - ) - ups - , when ((config.onInput /= Nothing) && model.active) <| - Options.many <| - List.map - (\handler -> - handler <| - Decode.map - (\clientX -> - let - activeValue = - valueFromClientX config model clientX - |> discretize config - in - Maybe.map - (\inputHandler -> inputHandler activeValue) - config.onInput - |> Maybe.withDefault (lift NoOp) - ) - decodeClientX - ) - ups - , when model.active <| - Options.many <| - List.map - (\handler -> - handler (Decode.map (lift << RequestSliderDimensions config.id_ Drag) decodeClientX) - ) - moves - , when ((config.onInput /= Nothing) && model.active) <| - Options.many <| - List.map - (\handler -> - handler <| - Decode.map - (\clientX -> - let - activeValue = - valueFromClientX config model clientX - |> discretize config - in - Maybe.map - (\inputHandler -> inputHandler activeValue) - config.onInput - |> Maybe.withDefault (lift NoOp) - ) - decodeClientX - ) - moves ] [] - [ styled Html.div - [ element "track-container" + [ styled Html.input + [ element "input" + , Options.id inputId + , Options.attribute (Html.type_ "range") + , Options.attribute (Html.min <| String.fromFloat config.min) + , Options.attribute (Html.max <| String.fromFloat config.max) + , Options.attribute (Html.attribute "value" <| String.fromFloat clampedValue) + , Options.attribute (Html.step <| String.fromFloat config.step) + , Options.attribute (Html.disabled True) |> when config.disabled + , Options.onFocus (lift Focus) + , Options.onBlur (lift Blur) + , when (not config.disabled) <| + case config.onChange of + Just on_change -> + Options.onChange (String.toFloat >> Maybe.withDefault 0 >> on_change) + Nothing -> + Options.nop + ] + [] + , styled div + [ element "track" ] - [ styled Html.div - [ element "track" - , css "transform" ("scaleX(" ++ String.fromFloat trackScale ++ ")") - ] + [ styled div [ element "track--inactive" ] [] - , if config.discrete then - styled Html.div - [ element "track-marker-container" - , css "background" <| markerStyle config.min config.max config.step + , styled div [ element "track--active" ] + [ styled div + [ element "track--active_fill" + , css "transform" ("scaleX(" ++ String.fromFloat pctComplete ++ ")") ] [] + ] + , if config.discrete && config.trackMarkers then + -- TODO: add active and inactive markers + styled div [ element "tick-marks" ] + ( List.range 1 number_of_tick_marks + |> List.map tickMark + ) else text "" ] - , styled Html.div - [ element "thumb-container" - , Options.when (not config.disabled) <| - Options.many - (downs - |> List.map - (\event -> - Options.onWithOptions event - (Decode.map - (\message -> - { message = lift message - , stopPropagation = True - , preventDefault = False - } - ) - (Decode.map (RequestSliderDimensions config.id_ ThumbContainerPointer) decodeClientX) - ) - ) - ) - , Options.on "transitionend" (Decode.succeed (lift TransitionEnd)) - , css "transform" <| - "translateX(" - ++ String.fromFloat translateX - ++ "px) translateX(-50%)" + , styled div + [ element "thumb" + , element "thumb--with-indicator" |> when model.showThumbIndicator + , Options.id thumbId + , css "transform" ("translateX(" ++ String.fromFloat rangePx ++ "px)") + , rippleInterface.interactionHandler + , rippleInterface.properties ] - (List.concat - [ [ Svg.svg - [ Svg.class "mdc-slider__thumb" - , Svg.width "21" - , Svg.height "21" - ] - [ Svg.circle - [ Svg.cx "10.5" - , Svg.cy "10.5" - , Svg.r "7.875" - ] - [] - ] - , styled Html.div - [ element "focus-ring" - ] - [] - ] - , if config.discrete then - [ styled Html.div - [ element "pin" - ] - [ styled Html.div - [ element "pin-value-marker" - ] - [ text (String.fromFloat discreteValue) + [ if config.discrete then + styled div + [ element "value-indicator-container" + , aria "hidden" "true" + ] + [ styled div + [ element "value-indicator" ] + [ styled div + [ element "value-indicator-text" ] + [ text <| String.fromFloat clampedValue ] ] - ] - ] + ] + else + text "" + , styled div + [ element "thumb-knob" ] + [] + ] + ] - else - [] - ] - ) + + +{- Get the appropriate clientX value. + +NOTE: changedTouches is a property introduced by elm-mdc.js and only +valid for the globaltouchend event. +-} +decodeClientX : Decoder Float +decodeClientX = + Decode.oneOf + [ Decode.at [ "targetTouches", "0", "clientX" ] Decode.float + , Decode.at [ "changedTouches", "0", "pageX" ] Decode.float + , Decode.at [ "clientX" ] Decode.float ] +mapClientXOnSliderScale : Float -> Float -> Float -> Float -> Float -> Float -> Float +mapClientXOnSliderScale left width min_ max_ steps clientX = + let + xPos = clientX - left + + pctComplete = xPos / width + + -- Fit the percentage complete between the range [min,max] + -- by remapping from [0, 1] to [min, min+(max-min)]. + value_ = min_ + pctComplete * (max_ - min_) + + in + if value_ == max_ || value_ == min_ then + value_ + else + quantize steps value_ + + +{- Calculates the quantized value based on step value. +-} +quantize : Float -> Float -> Float +quantize steps value_ = + let + numSteps = value_ / steps |> round |> toFloat + in + numSteps * steps + + type alias Store s = { s | slider : Indexed Model } @@ -744,85 +454,6 @@ view = (Options.internalId domId :: options) -discretize : { a | min : Float, max : Float, step : Float, discrete : Bool } -> Float -> Float -discretize geometry continuousValue = - let - continuous = - not geometry.discrete - - steps = - geometry.step - |> (\steps_ -> - if steps_ == 0 then - 1 - - else - steps_ - ) - in - clamp geometry.min geometry.max <| - if continuous then - continuousValue - - else - let - numSteps = - round (continuousValue / steps) - - quantizedVal = - toFloat numSteps * steps - in - quantizedVal - - -{- Get the appropriate clientX value. - -NOTE: changedTouches is a property introduced by elm-mdc.js and only -valid for the globaltouchend event. --} -decodeClientX : Decoder Float -decodeClientX = - Decode.oneOf - [ Decode.at [ "targetTouches", "0", "clientX" ] Decode.float - , Decode.at [ "changedTouches", "0", "pageX" ] Decode.float - , Decode.at [ "clientX" ] Decode.float - ] - - -data : String -> Decoder a -> Decoder a -data key decoder = - Decode.at [ "dataset", key ] decoder - - -hasClass : String -> Decoder Bool -hasClass class = - Decode.map - (\className -> - String.contains (" " ++ class ++ " ") (" " ++ className ++ " ") - ) - (Decode.at [ "className" ] Decode.string) - - -onChange : (Float -> m) -> Property m -onChange handler = - Options.option (\config -> { config | onChange = Just handler }) - - -onInput : (Float -> m) -> Property m -onInput handler = - Options.option (\config -> { config | onInput = Just handler }) - - -step : Float -> Property m -step value_ = - Options.option (\config -> { config | step = value_ }) - - -trackMarkers : Property m -trackMarkers = - Options.option (\config -> { config | trackMarkers = True }) - - {- Make it easier to work with BEM conventions -} block : Property m diff --git a/src/Internal/Slider/Model.elm b/src/Internal/Slider/Model.elm index e1947fc7..7d4cd69c 100644 --- a/src/Internal/Slider/Model.elm +++ b/src/Internal/Slider/Model.elm @@ -6,15 +6,14 @@ module Internal.Slider.Model exposing import Browser.Dom as Dom +import Internal.Ripple.Model as Ripple type alias Model = - { initialized : Bool - , focus : Bool - , active : Bool - , activeValue : Maybe Float - , inTransit : Bool - , preventFocus : Bool + { ripple : Ripple.Model + , initialized : Bool + , dragStarted : Bool + , showThumbIndicator : Bool , min : Float , max : Float , step : Float @@ -25,12 +24,10 @@ type alias Model = defaultModel : Model defaultModel = - { initialized = False - , focus = False - , active = False - , activeValue = Nothing - , inTransit = False - , preventFocus = False + { ripple = Ripple.defaultModel + , initialized = False + , dragStarted = False + , showThumbIndicator = False , min = 0 , max = 100 , step = 1 @@ -41,17 +38,12 @@ defaultModel = type Msg m = NoOp + | RippleMsg Ripple.Msg | Init String Float Float Float | Resize String Float Float Float - | RequestSliderDimensions String (Float -> Msg m) Float - | GotSliderDimensions (Float -> Msg m) Float Dom.Element - | InteractionStart Float - | KeyDown + | DragStart String (Float -> m) Float | Focus | Blur - | ThumbContainerPointer Float - | TransitionEnd - | Drag Float | Up | ActualUp | GotElement Dom.Element diff --git a/src/Material/Slider.elm b/src/Material/Slider.elm index a05095ba..f1ab4450 100644 --- a/src/Material/Slider.elm +++ b/src/Material/Slider.elm @@ -3,7 +3,7 @@ module Material.Slider exposing , view , value, min, max , disabled - , onChange, onInput + , onChange , step , discrete , trackMarkers @@ -14,11 +14,12 @@ module Material.Slider exposing Note that vertical sliders and range (multi-thumb) sliders are not supported, due to their absence from the material design spec. -Slider uses custom `onChage` and `onInput` event handlers. +Slider uses custom `onChange` event handlers. # Resources + - [Slider - Material Components for the Web](https://github.com/material-components/material-components-web/tree/master/packages/mdc-slider) - [Material Design guidelines: Sliders](https://material.io/guidelines/components/sliders.html) - [Demo](https://aforemny.github.io/elm-mdc/slider) @@ -43,7 +44,7 @@ Slider uses custom `onChage` and `onInput` event handlers. @docs view @docs value, min, max @docs disabled -@docs onChange, onInput +@docs onChange, @docs step @@ -124,13 +125,6 @@ onChange = Slider.onChange -{-| Slider `onInput` event listener. --} -onInput : (Float -> m) -> Property m -onInput = - Slider.onInput - - {-| Specify the steps the value will be a multiple of. For example by specyfing 2 the allowed values will only be 0, 2, 4, 6, From 1302f644e7fc1837ab4e5f116b109805dbc47454 Mon Sep 17 00:00:00 2001 From: Berend de Boer Date: Fri, 12 Feb 2021 20:39:30 +1300 Subject: [PATCH 6/6] docs: describe changes --- CHANGELOG.md | 47 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62672c30..24b7ed6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,25 @@ -## Upgrade to 8.0.0 +# Upgrade to 9.0.0 + +Changes: +- Slider now uses , the change should be invisible + to elm-mdc users, but internally the slider has been completely + rewritten. + +Breaking changes: +- Slider: + - onInput has been removed. + - the slider now longer keeps of an internal value, in order to + (visually) change the value, you need to listen to the onChange event, and + update your model's value. + Previously you could update the slider as it kept track of an + internal value, but this behaviour is simpler to implement and + exactly how an input or Material.TextField works. + +Known issues: +- Select: menu does not get keyboard focus when opened. + + +# Upgrade to 8.0.0 New features: * Banner component. @@ -18,7 +39,7 @@ Known issues: - Select: menu does not get keyboard focus when opened. -## Upgrade to 7.0.0 +# Upgrade to 7.0.0 New features: * See Material Components for the Web [v7.0.0](https://github.com/material-components/material-components-web/blob/master/CHANGELOG.md) release for all details. @@ -35,7 +56,7 @@ Breaking changes: Textarea.outlined to get the previous default. * Textarea with internal character counter needs to get property Textfield.internalCounter -## Upgrade to 6.0.0 +# Upgrade to 6.0.0 New features: * TabBar: keyboard interaction now works. @@ -54,13 +75,13 @@ Breaking changes: In your elm.json replace "debois/elm-dom": "1.3.0" with "K-Adam/elm-dom": "1.0.0" -## Upgrade to 5.1.0 +# Upgrade to 5.1.0 * Upgrade to MDC 5.1.0. DOM changes, but all internal. No user visible changes. -## Upgrade to 4.0.0 +# Upgrade to 4.0.0 New features: * Support for the menu selection group. @@ -96,7 +117,7 @@ Possible bugs: Exactly why the CSS of the MDC demo is different is not yet known. -## Upgrade to 3.2.0 +# Upgrade to 3.2.0 Breaking changes: * Removed Toolbar (removed upstream). @@ -113,13 +134,13 @@ Fixes: * Lists: the activated item will receive the keyboard focus by default instead of the first. -## Upgrade to 3.1.1 +# Upgrade to 3.1.1 New features * Data table support. -## Upgrade to 2.3.1 +# Upgrade to 2.3.1 Changes: * Snackbar timeout default is now 5 seconds to be compatible with @@ -130,7 +151,7 @@ Demo: * Menu now looks like MDC demo. -## Upgrade to 2.2.0 +# Upgrade to 2.2.0 New features: * List: add support for disabled items. @@ -162,19 +183,19 @@ Implementation changes: -## Upgrade to 0.44.1 +# Upgrade to 0.44.1 * Textfield: * Material.TextField.HelperText now needs to be wrapped in Material.TextField.HelperLine. * Support for character counter via Material.TextField.CharacterCounter. -## Upgrade to 0.43 +# Upgrade to 0.43 * Snackbar.Contents: new record structure. -## Upgrade to 0.42 +# Upgrade to 0.42 * Textfield: * Box option is now the default, option removed. @@ -203,6 +224,6 @@ Implementation changes: * Lists: two line format needs special primaryText class. -## Upgrade to 0.39 +# Upgrade to 0.39 * Material.Drawer.Temporary replaced with Material.Drawer.Modal.