From ae4e660a059d18b48b33fe1807551c9eea695cf6 Mon Sep 17 00:00:00 2001 From: vagusX Date: Mon, 11 Apr 2022 11:13:16 +0800 Subject: [PATCH] feat: add new component `Segmented` (#34319) * feat: basic implements in antd * feat: use rc-segmented * feat: add some demos * feat: support dark theme * docs: add more demos * feat: support `icon` in segmented * docs: format content * test: add test cases * docs: update docs * chore: update * fix: lint issues * style: add border-radius for selected effect * style: change border-radius-base * chore: update gitignore * feat: segmented support block * chore: update gitignore * feat: support block * feat: add test case * feat: support size * docs: update demos * chore: update * chore: update * test: update * style: update colors * style: hover and focus styles * doc: add version mark in docs * fix: style lint issue * fix: some lint issues * doc: add version in demo mds * doc: add version mark before api details * Revert "doc: add version in demo mds" This reverts commit 2a9e86f6ffc2331f7d73eae6edac7c889358a838. * test: only test for thumb appear * style: update color vars * style: add transition * style: text vertial align * test: update snapshots * feat: add preview svg and support dark theme * fix: update test snapshot * docs: update docs * fix: remove useless z-index * build: add 1kb for bundlesize of antd.variable.min.css Co-authored-by: taian.lta --- .gitignore | 2 + .../__snapshots__/index.test.js.snap | 1 + components/index.tsx | 3 + .../__snapshots__/demo-extend.test.ts.snap | 861 ++++++++++++++++++ .../__tests__/__snapshots__/demo.test.js.snap | 861 ++++++++++++++++++ .../__snapshots__/index.test.tsx.snap | 638 +++++++++++++ .../segmented/__tests__/demo-extend.test.ts | 3 + components/segmented/__tests__/demo.test.js | 3 + components/segmented/__tests__/image.test.ts | 5 + components/segmented/__tests__/index.test.tsx | 360 ++++++++ components/segmented/demo/basic.md | 33 + components/segmented/demo/block.md | 23 + components/segmented/demo/controlled.md | 33 + components/segmented/demo/custom.md | 97 ++ components/segmented/demo/disabled.md | 35 + components/segmented/demo/dynamic.md | 43 + components/segmented/demo/size.md | 29 + components/segmented/demo/with-icon.md | 37 + components/segmented/index.en-US.md | 27 + components/segmented/index.tsx | 87 ++ components/segmented/index.zh-CN.md | 30 + components/segmented/style/index.less | 116 +++ components/segmented/style/index.tsx | 2 + components/segmented/style/mixins.less | 24 + components/style/themes/dark.less | 8 + components/style/themes/default.less | 8 + components/style/themes/variable.less | 8 + package.json | 3 +- tests/__snapshots__/index.test.js.snap | 1 + 29 files changed, 3380 insertions(+), 1 deletion(-) create mode 100644 components/segmented/__tests__/__snapshots__/demo-extend.test.ts.snap create mode 100644 components/segmented/__tests__/__snapshots__/demo.test.js.snap create mode 100644 components/segmented/__tests__/__snapshots__/index.test.tsx.snap create mode 100644 components/segmented/__tests__/demo-extend.test.ts create mode 100644 components/segmented/__tests__/demo.test.js create mode 100644 components/segmented/__tests__/image.test.ts create mode 100644 components/segmented/__tests__/index.test.tsx create mode 100644 components/segmented/demo/basic.md create mode 100644 components/segmented/demo/block.md create mode 100644 components/segmented/demo/controlled.md create mode 100644 components/segmented/demo/custom.md create mode 100644 components/segmented/demo/disabled.md create mode 100644 components/segmented/demo/dynamic.md create mode 100644 components/segmented/demo/size.md create mode 100644 components/segmented/demo/with-icon.md create mode 100644 components/segmented/index.en-US.md create mode 100644 components/segmented/index.tsx create mode 100644 components/segmented/index.zh-CN.md create mode 100644 components/segmented/style/index.less create mode 100644 components/segmented/style/index.tsx create mode 100644 components/segmented/style/mixins.less diff --git a/.gitignore b/.gitignore index 54b212c74d..5be4d3cb0b 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,5 @@ __image_snapshots__/ /jest-stare /imageSnapshots /imageDiffSnapshots + +.devcontainer* diff --git a/components/__tests__/__snapshots__/index.test.js.snap b/components/__tests__/__snapshots__/index.test.js.snap index 194d145727..3e17f31437 100644 --- a/components/__tests__/__snapshots__/index.test.js.snap +++ b/components/__tests__/__snapshots__/index.test.js.snap @@ -45,6 +45,7 @@ Array [ "Rate", "Result", "Row", + "Segmented", "Select", "Skeleton", "Slider", diff --git a/components/index.tsx b/components/index.tsx index 88b07ad7ae..3915e62f22 100644 --- a/components/index.tsx +++ b/components/index.tsx @@ -154,6 +154,9 @@ export { default as Row } from './row'; export type { SelectProps } from './select'; export { default as Select } from './select'; +export type { SegmentedProps } from './segmented'; +export { default as Segmented } from './segmented'; + export type { SkeletonProps } from './skeleton'; export { default as Skeleton } from './skeleton'; diff --git a/components/segmented/__tests__/__snapshots__/demo-extend.test.ts.snap b/components/segmented/__tests__/__snapshots__/demo-extend.test.ts.snap new file mode 100644 index 0000000000..d2102e19fa --- /dev/null +++ b/components/segmented/__tests__/__snapshots__/demo-extend.test.ts.snap @@ -0,0 +1,861 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders ./components/segmented/demo/basic.md extend context correctly 1`] = ` +
+ + + + + +
+`; + +exports[`renders ./components/segmented/demo/block.md extend context correctly 1`] = ` +
+ + + +
+`; + +exports[`renders ./components/segmented/demo/controlled.md extend context correctly 1`] = ` +
+ + + +
+`; + +exports[`renders ./components/segmented/demo/custom.md extend context correctly 1`] = ` +Array [ +
+ + + +
, +
, +
+ + + + +
, +] +`; + +exports[`renders ./components/segmented/demo/disabled.md extend context correctly 1`] = ` +Array [ +
+ + + +
, +
, +
+ + + + + +
, +] +`; + +exports[`renders ./components/segmented/demo/dynamic.md extend context correctly 1`] = ` +Array [ +
+ + + +
, +
, + , +] +`; + +exports[`renders ./components/segmented/demo/size.md extend context correctly 1`] = ` +Array [ +
+ + + + + +
, +
, +
+ + + + + +
, +
, +
+ + + + + +
, +] +`; + +exports[`renders ./components/segmented/demo/with-icon.md extend context correctly 1`] = ` +
+ + +
+`; diff --git a/components/segmented/__tests__/__snapshots__/demo.test.js.snap b/components/segmented/__tests__/__snapshots__/demo.test.js.snap new file mode 100644 index 0000000000..4d7e4a8add --- /dev/null +++ b/components/segmented/__tests__/__snapshots__/demo.test.js.snap @@ -0,0 +1,861 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders ./components/segmented/demo/basic.md correctly 1`] = ` +
+ + + + + +
+`; + +exports[`renders ./components/segmented/demo/block.md correctly 1`] = ` +
+ + + +
+`; + +exports[`renders ./components/segmented/demo/controlled.md correctly 1`] = ` +
+ + + +
+`; + +exports[`renders ./components/segmented/demo/custom.md correctly 1`] = ` +Array [ +
+ + + +
, +
, +
+ + + + +
, +] +`; + +exports[`renders ./components/segmented/demo/disabled.md correctly 1`] = ` +Array [ +
+ + + +
, +
, +
+ + + + + +
, +] +`; + +exports[`renders ./components/segmented/demo/dynamic.md correctly 1`] = ` +Array [ +
+ + + +
, +
, + , +] +`; + +exports[`renders ./components/segmented/demo/size.md correctly 1`] = ` +Array [ +
+ + + + + +
, +
, +
+ + + + + +
, +
, +
+ + + + + +
, +] +`; + +exports[`renders ./components/segmented/demo/with-icon.md correctly 1`] = ` +
+ + +
+`; diff --git a/components/segmented/__tests__/__snapshots__/index.test.tsx.snap b/components/segmented/__tests__/__snapshots__/index.test.tsx.snap new file mode 100644 index 0000000000..aac71f442c --- /dev/null +++ b/components/segmented/__tests__/__snapshots__/index.test.tsx.snap @@ -0,0 +1,638 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Segmented render empty segmented 1`] = ` +
+`; + +exports[`Segmented render label with ReactNode 1`] = ` +
+ + + +
+`; + +exports[`Segmented render segmented ok 1`] = ` +
+ + + +
+`; + +exports[`Segmented render segmented with \`block\` 1`] = ` +
+ + + +
+`; + +exports[`Segmented render segmented with \`size#large\` 1`] = ` +
+ + + +
+`; + +exports[`Segmented render segmented with \`size#small\` 1`] = ` +
+ + + +
+`; + +exports[`Segmented render segmented with mixed options 1`] = ` +
+ + + +
+`; + +exports[`Segmented render segmented with numeric options 1`] = ` +
+ + + + + +
+`; + +exports[`Segmented render segmented with options null/undefined 1`] = ` +
+