Skip to content

工具栏生成器 [WIP]

基于操作菜单 操作菜单 实现的组件,与特定的功能关联起来使用,跟导航类似,但比导航更轻量更灵活。

使用方法

html
<div id="toolbarExp"></div>
<div id="toolbarExp2"></div>

<script>
new zui.Toolbar('#toolbarExp', {
    items: [
        {
            type: 'dropdown',
            icon: 'icon-ellipsis-h',
            caret: false,
            hint: '更多',
            dropdown: {
                items: [
                    {text: '取消置顶'},
                    {text: '开启免打扰'},
                    {text: '取消订阅'},
                ],
            },
        },
        {icon: 'icon-phone', hint: '发起会议', className: 'text-secondary'},
        {icon: 'icon-chat-dot', hint: '消息记录', className: 'text-warning'},
        {icon: 'icon-step-forward', hint: '打开侧边栏', className: 'text-important'},
    ],
    onClickItem: (info) => {
        console.log('> toolbar.onClickItem', info);
    },
});
new zui.Toolbar('#toolbarExp2', {
    items: [
        {text: '全部'},
        {text: '未关闭', active: true, className: 'primary-pale font-bold'},
        {text: '未开始'},
        {text: '进行中'},
        {text: '已挂起'},
        {text: '已关闭'},
        {text: '搜索', icon: 'icon-search'},
    ],
});
</script>

结合编辑器使用

html
<div id="editToolbar"></div>

<script>
new zui.Toolbar('#editToolbar', {
    items: [
        {
            type: 'dropdown',
            icon: 'icon-header',
            caret: true,
            hint: '段落',
            dropdown: {
                items: [
                    {text: '标题1'},
                    {text: '标题2'},
                    {text: '标题3'},
                    {text: '正文'},
                ],
            },
        },
        {
            type: 'dropdown',
            icon: 'icon-font',
            caret: true,
            hint: '字体',
            dropdown: {
                items: [
                    {text: '宋体'},
                    {text: '新宋体'},
                    {text: '仿宋体'},
                    {text: '黑体'},
                ],
            },
        },
        {icon: 'icon-bold', hint: '粗体'},
        {icon: 'icon-italic', hint: '斜体'},
        {icon: 'icon-underline', hint: '下划线'},
        {icon: 'icon-strikethrough', hint: '消除线'},
        {icon: 'icon-eraser', hint: '清楚格式'},
        {icon: 'icon-align-justify', hint: '全屏'},
        {icon: 'icon-align-left', hint: '左对齐'},
        {icon: 'icon-list', hint: '项目符号'},
        {icon: 'icon-smile', hint: '插入表情'},
        {icon: 'icon-picture', hint: '图片'},
        {icon: 'icon-link', hint: '超级链接'},
        {icon: 'icon-reply', hint: '后退'},
        {icon: 'icon-share-alt', hint: '前进'},
        {icon: 'icon-resize', hint: '全屏'},


    ],
});
</script>

展示分割线

工具栏展示分割线。

html
<div id="dividerToolbar"></div>

<script>
new zui.Toolbar('#dividerToolbar', {
    items: [
        {icon: 'icon-smile', hint: '表情'},
        {icon: 'icon-picture', hint: '图片'},
        {icon: 'icon-cut', hint: '截取屏幕'},
        {type: 'divider'},
        {icon: 'icon-folder-close-alt', hint: '文件'},
        {icon: 'icon-code', hint: '代码'},
        {icon: 'icon-question-sign', hint: '技巧'},
    ],
});
</script>

展示间距

工具栏添加间距展示想要的布局。

html
<div id="spaceToolbar1"></div>

<script>
 new zui.Toolbar('#spaceToolbar1', {
    items: [
        {icon: 'icon-ellipsis-v', hint: '菜单'},
        {type: 'space', space: 10},
        {icon: 'icon-check-plus', hint: '添加'},
    ],
});
</script>

禁用

js
new zui.Toolbar('#disabledToolbar', {
    btnProps: {btnType: 'primary'},
    items: [
        {icon: 'icon-smile', hint: '表情'},
        {icon: 'icon-picture', hint: '图片'},
        {icon: 'icon-code', hint: '代码', disabled: true},
        {icon: 'icon-question-sign', hint: '技巧'},
    ],
    onClickItem: (info) => {
        console.log('> disabledToolbar.onClickItem', info);
    },
});

引入

通过 npm

js
import {Toolbar} from 'zui/toolbar';

const toolbar = new Toolbar(element, options);

通过全局对象 zui

js
const toolbar = new zui.Toolbar(element, options);

使用 React 组件

jsx
import {render} from 'react';
import {Toolbar} from 'zui/toolbar/main-react';

render(element, <Toolbar {...options} />);

使用 jQuery 扩展

js
$(element).toolbar(options);

const toolbar = $(element).data('zui.toolbar');

选项

操作菜单 选项基础上添加新的参数选项。

wrap

限制工具栏按钮过多超出时是否换行。

  • 类型:boolean
  • 必选:否;
  • 默认值:false

gap

自定义工具栏按钮的间距,与 .toolbar 同级生成 .gap-* 的工具类控制按钮间距。

  • 类型:number | string
  • 必选:否

items

继承了 操作菜单 选项和按钮选项,同时添加了其他选项。

btnProps

继承按钮组件的属性, 统一处理工具栏按钮属性外观等。

itemRender

指定一个回调函数用于对组件渲染进行自定义。

参数items 选项的单个配置;

返回值items 选项的单个配置。

beforeRender

指定一个回调函数在渲染之前调用,可重新配置组件选项。

参数:用户为按钮组组件件设置的 options

返回值:组件选项数据。

afterRender

指定一个回调函数在渲染之后调用。

参数:

  • firstRender:判断是否第一次渲染;
  • menu:组件信息。

beforeDestroy

指定一个回调函数在组件销毁之前调用,无参数。

API

ToolbarItemOptions

ts
type ToolbarItemOptions = ToolbarItemProps | ToolbarDropdownProps | ToolbarBtnGroupProps | ToolbarDividerProps | ToolbarSpaceProps;

ToolbarItemProps

选项:

继承了操作菜单的 ActionItemProps 选项和按钮的 ButtonProps ,同时添加了其他选项 btnType,用来设置按钮外观类型。

btnType

设置工具栏单个按钮的外观类型。

  • 类型:string
  • 必选:否。

ToolbarDropdownProps

选项:

在原有属性基础上固定 type 属性,并继承了下拉菜单的 DropdownButtonOptions 选项,同时添加了其他选项。

type
  • 类型:string
  • 属性值:dropdown
  • 必选:是。
children

ToolbarBtnGroupProps

选项:

在原有属性基础上固定 type 属性,并继承了操作菜单的 ActionBasicProps 选项和按钮组的 BtnGroupOptions选项,同时添加了其他选项。

type
  • 类型:string
  • 属性值:btn-group
  • 必选:是。

ToolbarDividerProps

选项:

继承了工具栏的 ActionDividerProps 选项。

ToolbarSpaceProps

选项:

继承了工具栏的 ActionSpaceProps 选项。

type
  • 类型:string
  • 属性值:space
  • 必选:是。
space
  • 类型:number | [leading: number, trailing: number]
  • 必选:否。
flex
  • 类型:number | 'auto' | 'none'
  • 必选:否。