diff --git a/public/demo/images/dock/appstore.svg b/public/demo/images/dock/appstore.svg
new file mode 100644
index 000000000..fc5126465
--- /dev/null
+++ b/public/demo/images/dock/appstore.svg
@@ -0,0 +1,83 @@
+
diff --git a/public/demo/images/dock/finder.svg b/public/demo/images/dock/finder.svg
new file mode 100644
index 000000000..601eb187a
--- /dev/null
+++ b/public/demo/images/dock/finder.svg
@@ -0,0 +1,67 @@
+
diff --git a/public/demo/images/dock/github.svg b/public/demo/images/dock/github.svg
new file mode 100644
index 000000000..837467db9
--- /dev/null
+++ b/public/demo/images/dock/github.svg
@@ -0,0 +1,89 @@
+
diff --git a/public/demo/images/dock/photos.svg b/public/demo/images/dock/photos.svg
new file mode 100644
index 000000000..e13afbb1c
--- /dev/null
+++ b/public/demo/images/dock/photos.svg
@@ -0,0 +1,187 @@
+
diff --git a/public/demo/images/dock/preview.png b/public/demo/images/dock/preview.png
new file mode 100644
index 000000000..9edf5d270
Binary files /dev/null and b/public/demo/images/dock/preview.png differ
diff --git a/public/demo/images/dock/safari.svg b/public/demo/images/dock/safari.svg
new file mode 100644
index 000000000..c2d94d38b
--- /dev/null
+++ b/public/demo/images/dock/safari.svg
@@ -0,0 +1,57 @@
+
diff --git a/public/demo/images/dock/settings.png b/public/demo/images/dock/settings.png
new file mode 100644
index 000000000..9701b7587
Binary files /dev/null and b/public/demo/images/dock/settings.png differ
diff --git a/public/demo/images/dock/terminal.svg b/public/demo/images/dock/terminal.svg
new file mode 100644
index 000000000..c4d526965
--- /dev/null
+++ b/public/demo/images/dock/terminal.svg
@@ -0,0 +1,11 @@
+
diff --git a/public/demo/images/dock/trash.png b/public/demo/images/dock/trash.png
new file mode 100644
index 000000000..b76ead7f1
Binary files /dev/null and b/public/demo/images/dock/trash.png differ
diff --git a/src/assets/images/dock/window.jpg b/src/assets/images/dock/window.jpg
new file mode 100644
index 000000000..8372ed942
Binary files /dev/null and b/src/assets/images/dock/window.jpg differ
diff --git a/src/assets/menu/menu.json b/src/assets/menu/menu.json
index a56f052e1..0656175c7 100644
--- a/src/assets/menu/menu.json
+++ b/src/assets/menu/menu.json
@@ -672,6 +672,11 @@
{
"name": "TieredMenu",
"to": "/tieredmenu"
+ },
+ {
+ "name": "Dock",
+ "to": "/dock",
+ "badge": "New"
}
]
},
diff --git a/src/components/dock/Dock.d.ts b/src/components/dock/Dock.d.ts
new file mode 100644
index 000000000..7686ba197
--- /dev/null
+++ b/src/components/dock/Dock.d.ts
@@ -0,0 +1,17 @@
+import { VNode } from 'vue';
+
+interface DockProps {
+ position?: string;
+ model?: any[];
+ class?: string;
+ style?: any;
+}
+
+declare class Dock {
+ $props: DockProps;
+ $slots: {
+ 'item': VNode[];
+ }
+}
+
+export default Dock;
diff --git a/src/components/dock/Dock.vue b/src/components/dock/Dock.vue
new file mode 100644
index 000000000..e1f01b675
--- /dev/null
+++ b/src/components/dock/Dock.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/dock/DockSub.vue b/src/components/dock/DockSub.vue
new file mode 100644
index 000000000..f0c6ecce7
--- /dev/null
+++ b/src/components/dock/DockSub.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/dock/package.json b/src/components/dock/package.json
new file mode 100644
index 000000000..a60167bef
--- /dev/null
+++ b/src/components/dock/package.json
@@ -0,0 +1,9 @@
+{
+ "main": "./dock.cjs.js",
+ "module": "./dock.esm.js",
+ "unpkg": "./dock.min.js",
+ "types": "./Dock.d.ts",
+ "browser": {
+ "./sfc": "./Dock.vue"
+ }
+ }
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index 7e9272f47..067414f6c 100644
--- a/src/main.js
+++ b/src/main.js
@@ -34,6 +34,7 @@ import DataViewLayoutOptions from './components/dataviewlayoutoptions/DataViewLa
import DeferredContent from './components/deferredcontent/DeferredContent';
import Dialog from './components/dialog/Dialog';
import Divider from './components/divider/Divider';
+import Dock from './components/dock/Dock';
import Dropdown from './components/dropdown/Dropdown';
import Editor from './components/editor/Editor';
import Fieldset from './components/fieldset/Fieldset';
@@ -155,6 +156,7 @@ app.component('DataViewLayoutOptions', DataViewLayoutOptions);
app.component('DeferredContent', DeferredContent);
app.component('Dialog', Dialog);
app.component('Divider', Divider);
+app.component('Dock', Dock);
app.component('Dropdown', Dropdown);
app.component('Editor', Editor);
app.component('Fieldset', Fieldset);
diff --git a/src/router/index.js b/src/router/index.js
index 0fd79f847..948143942 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -332,6 +332,11 @@ const routes = [
name: 'divider',
component: () => import('../views/divider/DividerDemo.vue')
},
+ {
+ path: '/dock',
+ name: 'dock',
+ component: () => import('../views/dock/DockDemo.vue')
+ },
{
path: '/dropdown',
name: 'dropdown',