plain-design 1.0.0-beta.33 → 1.0.0-beta.34

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.33",
3
+ "version": "1.0.0-beta.34",
4
4
  "description": "",
5
5
  "main": "dist/plain-design.min.js",
6
6
  "module": "dist/plain-design.commonjs.min.js",
@@ -22,6 +22,16 @@
22
22
  transform-origin: left;
23
23
  font-weight: 700;
24
24
  }
25
+
26
+ &.dropdown-panel-size-equal {
27
+ width: 100%;
28
+ }
29
+
30
+ .dropdown-separator {
31
+ height: 1px;
32
+ background-color: plv(border-color);
33
+ margin: 2px 0;
34
+ }
25
35
  }
26
36
 
27
37
  &.dropdown-panel-align-center {
@@ -89,17 +89,19 @@ export function renderDropdownPanel(
89
89
  attrs,
90
90
  externalClass,
91
91
  content,
92
+ sizeEqual,
92
93
  }: {
93
94
  size: string,
94
95
  align?: string,
95
96
  attrs?: any,
96
97
  externalClass?: any,
97
98
  content: RenderNode,
99
+ sizeEqual?: boolean,
98
100
  }
99
101
  ) {
100
102
  return (
101
103
  <div {...mergeAttrs({
102
- class: [externalClass, getComponentCls('dropdown-panel'), `dropdown-panel-size-${size}`, `dropdown-panel-align-${align || DropdownOptionAlign.start}`],
104
+ class: [externalClass, getComponentCls('dropdown-panel'), `dropdown-panel-size-${size}`, `dropdown-panel-align-${align || DropdownOptionAlign.start}`, sizeEqual ? 'dropdown-panel-size-equal' : ''],
103
105
  }, attrs)}>
104
106
  {content}
105
107
  </div>
@@ -44,7 +44,7 @@ export const Dropdown = designComponent({
44
44
  scopeSlots: {
45
45
  reference: (scope: { open?: boolean }) => {},
46
46
  },
47
- setup({ props, slots, event: { emit }, scopeSlots }) {
47
+ setup({ props, slots, event: { emit }, scopeSlots, attrs }) {
48
48
 
49
49
  const { styleComputed } = useStyle();
50
50
 
@@ -99,7 +99,7 @@ export const Dropdown = designComponent({
99
99
  return node?.type?.use?.name === DropdownOption.use.name || node?.type?.use?.name === DropdownGroup.use.name;
100
100
  });
101
101
 
102
- const publicDropdownPanelParams = { size: styleComputed.value.size, align: props.align };
102
+ const publicDropdownPanelParams = { size: styleComputed.value.size, align: props.align, sizeEqual: attrs.sizeEqual };
103
103
 
104
104
  if (hasScroll || !dropdownOptions || dropdownOptions.length <= props.scrollOptionLength) {
105
105
  return renderDropdownPanel({
@@ -0,0 +1,8 @@
1
+ import {designComponent} from "plain-design-composition";
2
+
3
+ export const DropdownSeparator = designComponent({
4
+ name: 'dropdown-separator',
5
+ setup() {
6
+ return () => (<div className="dropdown-separator"/>);
7
+ },
8
+ });
@@ -27,6 +27,7 @@ export {RadioGroup} from "./components/RadioGroup";
27
27
  export {DropdownOption} from "./components/DropdownOption";
28
28
  export {Dropdown} from "./components/Dropdown";
29
29
  export {DropdownGroup} from "./components/DropdownGroup";
30
+ export {DropdownSeparator} from "./components/DropdownSeparator";
30
31
  export {VirtualList} from "./components/VirtualList";
31
32
  export {Segment} from "./components/Segment";
32
33
  export {SegmentGroup} from "./components/SegmentGroup";
@@ -1,17 +1,18 @@
1
1
  import {designPage} from "plain-design-composition";
2
2
  import {DemoRow} from "../../Demo/DemoRow";
3
- import {$message, Button, ButtonGroup, Dropdown, DropdownGroup, DropdownOption, Scroll, VirtualList} from "../../../../packages";
3
+ import {$message, Button, ButtonGroup, Dropdown, DropdownGroup, DropdownOption, DropdownSeparator, Scroll, VirtualList} from "../../../../packages";
4
4
  import AddressData from '../../../data/address.json';
5
5
 
6
6
  export const demo1 = designPage(() => {
7
7
  return () => (
8
8
  <DemoRow title="基本用法">
9
- <Dropdown onSelect={(data) => $message('select ' + data.props.val)}>
9
+ <Dropdown onSelect={(data) => $message('select ' + data.props.val)} sizeEqual>
10
10
  {{
11
11
  default: () => <Button label="Click to open dropdown"/>,
12
12
  popper: () => <>
13
13
  <DropdownOption label="选项一" val="tag-1" onClick={() => $message('click tag-1')}/>
14
14
  <DropdownOption label="选项二" val="tag-2" onClick={() => $message('click tag-2')}/>
15
+ <DropdownSeparator/>
15
16
  <DropdownOption label="选项三" val="tag-3" onClick={() => $message('click tag-3')}/>
16
17
  </>
17
18
  }}