diff --git a/packages/core/example/css/index.css b/packages/core/example/css/index.css index 2216f97..caff957 100644 --- a/packages/core/example/css/index.css +++ b/packages/core/example/css/index.css @@ -3,6 +3,8 @@ html, body { padding: 0; width: 100%; height: 100%; + font-size: 12px; + color: #333333; } #mount canvas { @@ -49,4 +51,42 @@ html, body { .transform input { width: 100px; margin-right: 12px; +} + +.elem-item { + height: 32px; + width: 200px; + border: 1px solid #999999; + border-bottom: none; + line-height: 30px; + color: #666; + font-size: 14px; +} + +.elem-item:last-child { + border-bottom: 1px solid #999999; +} + +.elem-item-name { + margin-left: 10px; + cursor: pointer; +} + +.elem-item-btn { + float: right; + font-size: 12px; + height: 24px; + width: 40px; + border-radius: 12px; + border: 1px solid #cccccc; + text-align: center; + line-height: 24px; + margin-top: 2px; + margin-right: 6px; + cursor: pointer; +} + +.elem-item-btn:hover { + color: #4183c4; + border-color: #4183c4; } \ No newline at end of file diff --git a/packages/core/example/lib/data.js b/packages/core/example/lib/data.js index e04269b..2492686 100644 --- a/packages/core/example/lib/data.js +++ b/packages/core/example/lib/data.js @@ -3,6 +3,7 @@ const data = { bgColor: '#ffffff', elements: [ { + name: 'rect-001', x: 10, y: 10, w: 200, @@ -13,6 +14,7 @@ const data = { } }, { + name: 'rect-002', x: 80, y: 80, w: 200, @@ -23,6 +25,7 @@ const data = { } }, { + name: 'rect-003', x: 160, y: 160, w: 200, @@ -33,6 +36,7 @@ const data = { } }, { + name: 'rect-004', x: 400 - 10, y: 300 - 10, w: 200, diff --git a/packages/core/example/lib/element.js b/packages/core/example/lib/element.js new file mode 100644 index 0000000..c1887b6 --- /dev/null +++ b/packages/core/example/lib/element.js @@ -0,0 +1,55 @@ + +const dom = document.querySelector('#elem-list'); + +let hasInited = false; + +export function doElemens(core) { + if (hasInited === true) return; + renderElemens(core); + listenElements(core); +} + +function renderElemens(core) { + const data = core.getData(); + const elems = data.elements; + const items = elems.map((ele) => { + return ` +
+ ${ele.name || 'Unnamed'} + Up + Down +
+ `; + }); + dom.innerHTML = items.join(''); +} + +function listenElements(core) { + const names = dom.querySelectorAll('[data-elem-name]'); + const upBtns = dom.querySelectorAll('[data-elem-btn-up]'); + const downBtns = dom.querySelectorAll('[data-elem-btn-down]'); + + names.forEach((el) => { + el.addEventListener('click', () => { + const uuid = el.getAttribute('data-elem-name'); + core.selectElement(uuid); + }, false); + }); + + upBtns.forEach((el) => { + el.addEventListener('click', () => { + const uuid = el.getAttribute('data-elem-btn-up'); + core.moveUpElement(uuid); + renderElemens(core); + }, false); + }); + + downBtns.forEach((el) => { + el.addEventListener('click', () => { + const uuid = el.getAttribute('data-elem-btn-down'); + core.moveDownElement(uuid); + renderElemens(core); + }, false); + }) +} + diff --git a/packages/core/example/main.js b/packages/core/example/main.js index a8220a8..217a090 100644 --- a/packages/core/example/main.js +++ b/packages/core/example/main.js @@ -1,6 +1,7 @@ import data from './lib/data.js'; import { doScale } from './lib/scale.js'; import { doScroll } from './lib/scroll.js'; +import { doElemens } from './lib/element.js'; const { Core } = window.iDraw; @@ -24,4 +25,5 @@ const core = new Core(mount, { core.setData(data); doScale(core, defaultConf.scale); doScroll(core, defaultConf); +doElemens(core); diff --git a/packages/types/src/lib/element.ts b/packages/types/src/lib/element.ts index 8394215..21ad0b8 100644 --- a/packages/types/src/lib/element.ts +++ b/packages/types/src/lib/element.ts @@ -1,6 +1,7 @@ import { TypePaintData } from './paint'; type TypeElement = { + name?: string; uuid: string; x: number; y: number;