plain-design 1.0.0-beta.84 → 1.0.0-beta.86

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plain-design",
3
- "version": "1.0.0-beta.84",
3
+ "version": "1.0.0-beta.86",
4
4
  "description": "",
5
5
  "main": "dist/plain-design.min.js",
6
6
  "module": "dist/plain-design.commonjs.min.js",
@@ -8,13 +8,21 @@ import DropdownOption from "../DropdownOption";
8
8
  export const ThemeColorSelector = designComponent({
9
9
  name: 'theme-color-selector',
10
10
  inheritPropsType: Dropdown,
11
- setup() {
11
+ emits: {
12
+ onChange: (primaryKey: string) => true,
13
+ },
14
+ setup({ event: { emit } }) {
12
15
 
13
16
  const classes = useClassCache(() => [
14
17
  getComponentCls('theme-selector'),
15
18
  getComponentCls('theme-color-selector'),
16
19
  ]);
17
20
 
21
+ const change = (key: string) => {
22
+ PageThemeUtils.primary(key);
23
+ emit.onChange(key);
24
+ };
25
+
18
26
  return () => (
19
27
  <Dropdown
20
28
  trigger="hover"
@@ -27,7 +35,7 @@ export const ThemeColorSelector = designComponent({
27
35
  </div>
28
36
  ),
29
37
  popper: () => Object.entries(ThemePrimaryColors).map(([key]) => (
30
- <DropdownOption key={key} onClick={() => PageThemeUtils.primary(key)}>
38
+ <DropdownOption key={key} onClick={() => change(key)}>
31
39
  <ThemeColor className="dropdown-theme-color" primaryKey={key}/>
32
40
  </DropdownOption>
33
41
  ))
@@ -7,15 +7,23 @@ import './theme-dark-selector.scss';
7
7
 
8
8
  export const ThemeDarkSelector = designComponent({
9
9
  name: 'theme-dark-selector',
10
- setup() {
11
- const toggleDarkTheme = () => {PageThemeUtils.toggle();};
10
+ emits: {
11
+ onChange: (dark: boolean) => true,
12
+ },
13
+ setup({ event: { emit } }) {
14
+
12
15
  const classes = useClassCache(() => [
13
16
  getComponentCls('theme-selector'),
14
17
  getComponentCls('theme-dark-selector'),
15
18
  ]);
19
+
20
+ const change = () => {
21
+ PageThemeUtils.toggle();
22
+ emit.onChange(!!PageThemeUtils.state.dark);
23
+ };
16
24
  return () => (
17
25
  <Tooltip message={i18n.$it('theme.darkOrLight').d("深浅主题")}>
18
- <div className={classes.value} onClick={toggleDarkTheme}>
26
+ <div className={classes.value} onClick={change}>
19
27
  <Icon icon={PageThemeUtils.state.dark ? 'pi-sun' : 'pi-moon'}/>
20
28
  </div>
21
29
  </Tooltip>
@@ -7,15 +7,24 @@ import './theme-locale-selector.scss';
7
7
 
8
8
  export const ThemeLocaleSelector = designComponent({
9
9
  name: 'theme-locale-selector',
10
- setup() {
10
+ emits: {
11
+ onChange: (locale: string) => true,
12
+ },
13
+ setup({ event: { emit } }) {
11
14
  const classes = useClassCache(() => [
12
15
  getComponentCls('theme-selector'),
13
16
  getComponentCls('theme-locale-selector'),
14
17
  ]);
18
+
19
+ const change = (key: string, fn: () => any) => {
20
+ i18n.switchTo(key, fn);
21
+ emit.onChange(key);
22
+ };
23
+
15
24
  return () => (
16
25
  <Dropdown trigger="hover" align="center" placement="bottom" hideOnClickReference={false} v-slots={{
17
26
  popper: () => i18n.state.localeOptions.map(opt => (
18
- <DropdownOption label={opt.label} key={opt.label} onClick={() => i18n.switchTo(opt.key, () => opt.lang)}/>
27
+ <DropdownOption label={opt.label} key={opt.label} onClick={() => change(opt.key, () => opt.lang)}/>
19
28
  )),
20
29
  default: () => (
21
30
  <div className={classes.value}>
@@ -9,7 +9,10 @@ import './theme-shape-selector.scss';
9
9
 
10
10
  export const ThemeShapeSelector = designComponent({
11
11
  name: 'theme-shape-selector',
12
- setup() {
12
+ emits: {
13
+ onChange: (shape: typeof ThemeShape.TYPE) => true,
14
+ },
15
+ setup({ event: { emit } }) {
13
16
 
14
17
  const radiusOptions = computed((): { label: string, val: string | undefined }[] => [
15
18
  { label: i18n.$it('theme.radiusOptions.round').d('圆角'), val: undefined },
@@ -17,7 +20,10 @@ export const ThemeShapeSelector = designComponent({
17
20
  { label: i18n.$it('theme.radiusOptions.none').d('无圆角'), val: ThemeShape.none },
18
21
  ]);
19
22
 
20
- const toggleShape = (val: any) => {PageThemeUtils.shape(val);};
23
+ const change = (shape: typeof ThemeShape.TYPE) => {
24
+ PageThemeUtils.shape(shape);
25
+ emit.onChange(shape);
26
+ };
21
27
 
22
28
  const classes = useClassCache(() => [
23
29
  getComponentCls('theme-selector'),
@@ -36,7 +42,7 @@ export const ThemeShapeSelector = designComponent({
36
42
  </div>
37
43
  ),
38
44
  popper: () => radiusOptions.value.map(opt => (
39
- <DropdownOption label={opt.label} val={opt.val} key={opt.val || ""} onClick={() => toggleShape(opt.val)}/>
45
+ <DropdownOption label={opt.label} val={opt.val} key={opt.val || ""} onClick={() => change(opt.val as any)}/>
40
46
  )),
41
47
  }}
42
48
  />
@@ -5,11 +5,14 @@ import i18n from "../i18n";
5
5
  import Icon from "../Icon";
6
6
  import PageThemeUtils from "../PageThemeUtils";
7
7
  import './theme-size-selector.scss';
8
+ import {ThemeSize} from "../../uses/useStyle";
8
9
 
9
10
  export const ThemeSizeSelector = designComponent({
10
11
  name: 'theme-size-selector',
11
- props: {},
12
- setup() {
12
+ emits: {
13
+ onChange: (size: typeof ThemeSize.TYPE) => true,
14
+ },
15
+ setup({ event: { emit } }) {
13
16
 
14
17
  const sizeOptions = computed((): { label: string, val: string }[] => [
15
18
  { label: i18n.$it('theme.sizeOptions.large').d('大'), val: 'large' },
@@ -18,7 +21,10 @@ export const ThemeSizeSelector = designComponent({
18
21
  { label: i18n.$it('theme.sizeOptions.mini').d('极小'), val: 'mini' },
19
22
  ]);
20
23
 
21
- const toggleSize = (val: any) => {PageThemeUtils.size(val);};
24
+ const change = (size: typeof ThemeSize.TYPE) => {
25
+ PageThemeUtils.size(size);
26
+ emit.onChange(size);
27
+ };
22
28
 
23
29
  const classes = useClassCache(() => [
24
30
  getComponentCls('theme-selector'),
@@ -27,7 +33,7 @@ export const ThemeSizeSelector = designComponent({
27
33
  return () => (
28
34
  <Dropdown trigger="hover" align="center" placement="bottom" hideOnClickReference={false} v-slots={{
29
35
  popper: () => sizeOptions.value.map(opt => (
30
- <DropdownOption label={opt.label} val={opt.val} key={opt.val} onClick={() => toggleSize(opt.val)}/>
36
+ <DropdownOption label={opt.label} val={opt.val} key={opt.val} onClick={() => change(opt.val as any)}/>
31
37
  )),
32
38
  default: () => (
33
39
  <div className={classes.value}>
@@ -55,7 +55,7 @@
55
55
  }
56
56
 
57
57
  @mixin hover($component) {
58
- &:not(.#{$component}-disabled):not(.#{$component}-loading):not(.#{$component}-readonly) {
58
+ &:not(.#{$component}-disabled):not(.#{$component}-loading):not(.#{$component}-readonly):not(.#{$component}-focus) {
59
59
  &:hover, &.#{$component}-hover {
60
60
  @content;
61
61
  }