diff --git a/packages/artplayer-document/docs/en/Options.md b/packages/artplayer-document/docs/en/Options.md index cd3c32c68..0971f6cc4 100644 --- a/packages/artplayer-document/docs/en/Options.md +++ b/packages/artplayer-document/docs/en/Options.md @@ -618,6 +618,62 @@ var art = new Artplayer({ }); ``` +## settings + +- Type: `Array` +- Default: `[]` + +Initialize custom setting panel + +| Property | Type | Description | +| --------- | ------------------- | ------------------------------------------------------------- | +| `disable` | `Boolean` | Whether to disable the component | +| `name` | `String` | The unique name of the component, used to mark the class name | +| `index` | `Number` | Component index, priority for display | +| `html` | `String`、`Element` | DOM element of the component | +| `style` | `Object` | Component style object | +| `click` | `Function` | Component click event | +| `mounted` | `Function` | Triggered after the component is mounted | +| `tooltip` | `String` | Prompt text of the component | + +
▶ Run Code
+ +```js +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + setting: true, + settings: [ + { + disable: false, + name: 'button', + index: 10, + html: 'Custom button1', + tooltip: 'Custom button1', + style: { + color: 'red', + }, + click: function () { + console.log('You clicked custom button 1'); + }, + mounted: function () { + console.log('Custom button mounting is complete 1'); + }, + }, + { + html: 'Custom button2', + tooltip: 'Custom button2', + style: { + color: 'green', + }, + click: function () { + console.log('You clicked custom button 2'); + }, + }, + ], +}); +``` + ## contextmenu - Type: `Array` diff --git a/packages/artplayer-document/docs/zh-cn/Options.md b/packages/artplayer-document/docs/zh-cn/Options.md index 5880c7dab..619044ed9 100644 --- a/packages/artplayer-document/docs/zh-cn/Options.md +++ b/packages/artplayer-document/docs/zh-cn/Options.md @@ -618,6 +618,62 @@ var art = new Artplayer({ }); ``` +## settings + +- 类型: `Array` +- 默认: `[]` + +初始化自定义的设置面板 + +| 属性 | 类型 | 描述 | +| --------- | ------------------- | -------------------------- | +| `disable` | `Boolean` | 是否禁用组件 | +| `name` | `String` | 组件唯一名称,用于标记类名 | +| `index` | `Number` | 组件索引,用于显示的优先级 | +| `html` | `String`、`Element` | 组件的 DOM 元素 | +| `style` | `Object` | 组件样式对象 | +| `click` | `Function` | 组件点击事件 | +| `mounted` | `Function` | 组件挂载后触发 | +| `tooltip` | `String` | 组件的提示文本 | + +
▶ Run Code
+ +```js +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + setting: true, + settings: [ + { + disable: false, + name: 'button', + index: 10, + html: '自定义按钮', + tooltip: '自定义按钮的提示1', + style: { + color: 'red', + }, + click: function () { + console.log('你点击了自定义按钮1'); + }, + mounted: function () { + console.log('自定义按钮挂载完成1'); + }, + }, + { + html: '自定义按钮2', + tooltip: '自定义按钮的提示2', + style: { + color: 'green', + }, + click: function () { + console.log('你点击了自定义按钮2'); + }, + }, + ], +}); +``` + ## contextmenu - 类型: `Array` diff --git a/packages/artplayer-document/docs/zh-cn/Questions/Handle single component.md b/packages/artplayer-document/docs/zh-cn/Questions/Handle single component.md index 0e5f860cc..bd3e9d552 100644 --- a/packages/artplayer-document/docs/zh-cn/Questions/Handle single component.md +++ b/packages/artplayer-document/docs/zh-cn/Questions/Handle single component.md @@ -50,13 +50,13 @@ art.on('ready', () => { } }); - // Use the query method to get the DOM element of the component + // 使用查询 query 获取组件的DOM元素 var $layer1 = art.query('.art-layer-layer1'); var $contextmenu1 = art.query('.art-contextmenu-contextmenu1'); var $control1 = art.query('.art-control-control1'); var $setting1 = art.query('.art-setting-setting1'); - // Recommended use the name to get the DOM element of the component + // 推荐使用 name 获取组件的DOM元素 var $layer1 = art.layers['layer1']; var $contextmenu1 = art.contextmenu['contextmenu1']; var $control1 = art.controls['control1']; diff --git a/packages/artplayer/package.json b/packages/artplayer/package.json index bd4ebfefc..efa952d5e 100644 --- a/packages/artplayer/package.json +++ b/packages/artplayer/package.json @@ -1,6 +1,6 @@ { "name": "artplayer", - "version": "4.0.0", + "version": "4.0.1", "expose": "Artplayer", "description": "ArtPlayer.js is a modern and full featured HTML5 video player", "main": "dist/artplayer.js", diff --git a/packages/artplayer/src/index.js b/packages/artplayer/src/index.js index 420335d61..4fc138a47 100644 --- a/packages/artplayer/src/index.js +++ b/packages/artplayer/src/index.js @@ -138,6 +138,7 @@ export default class Artplayer extends Emitter { layers: [], contextmenu: [], controls: [], + settings: [], quality: [], highlight: [], plugins: [], diff --git a/packages/artplayer/src/scheme/index.js b/packages/artplayer/src/scheme/index.js index b72208be1..f5fc1c212 100644 --- a/packages/artplayer/src/scheme/index.js +++ b/packages/artplayer/src/scheme/index.js @@ -65,6 +65,7 @@ export default { whitelist: [`${s}|${f}|${r}`], layers: [component], contextmenu: [component], + settings: [component], controls: [ { ...component, diff --git a/packages/artplayer/src/setting/index.js b/packages/artplayer/src/setting/index.js index c731b0fa8..55f47955a 100644 --- a/packages/artplayer/src/setting/index.js +++ b/packages/artplayer/src/setting/index.js @@ -20,8 +20,8 @@ export default class Setting extends Component { if (option.setting) { art.once('ready', () => { - proxy($setting, 'click', e => { - if (e.target === $setting) { + proxy($setting, 'click', (event) => { + if (event.target === $setting) { this.show = false; } }); @@ -53,6 +53,10 @@ export default class Setting extends Component { name: 'playbackRate', }), ); + + option.settings.forEach((item) => { + this.add(item); + }); }); art.on('blur', () => { diff --git a/packages/artplayer/types/artplayer.d.ts b/packages/artplayer/types/artplayer.d.ts index af0cc864e..bc7012339 100644 --- a/packages/artplayer/types/artplayer.d.ts +++ b/packages/artplayer/types/artplayer.d.ts @@ -53,6 +53,7 @@ export default class Artplayer { layers?: Component[]; contextmenu?: Component[]; controls?: Component[]; + settings?: Component[]; quality?: { default?: boolean; html: string;