feat:add style namespace
This commit is contained in:
@@ -45,7 +45,7 @@ describe('控件-列举型', () => {
|
|||||||
|
|
||||||
cy.get('@canvas').type(`{leftArrow}`)
|
cy.get('@canvas').type(`{leftArrow}`)
|
||||||
|
|
||||||
cy.get('.select-control-popup li').eq(0).click()
|
cy.get('.ce-select-control-popup li').eq(0).click()
|
||||||
|
|
||||||
cy.get('@canvas').type('{ctrl}s')
|
cy.get('@canvas').type('{ctrl}s')
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ describe('控件-文本型', () => {
|
|||||||
|
|
||||||
cy.get('@canvas').type(`{leftArrow}`)
|
cy.get('@canvas').type(`{leftArrow}`)
|
||||||
|
|
||||||
cy.get('.inputarea').type(text)
|
cy.get('.ce-inputarea').type(text)
|
||||||
|
|
||||||
cy.get('@canvas').type('{ctrl}s')
|
cy.get('@canvas').type('{ctrl}s')
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ describe('基础功能', () => {
|
|||||||
it('模式切换', () => {
|
it('模式切换', () => {
|
||||||
cy.get('@canvas').click()
|
cy.get('@canvas').click()
|
||||||
|
|
||||||
cy.get('.cursor').should('have.css', 'display', 'block')
|
cy.get('.ce-cursor').should('have.css', 'display', 'block')
|
||||||
|
|
||||||
cy.get('.editor-mode').click().click()
|
cy.get('.editor-mode').click().click()
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ describe('基础功能', () => {
|
|||||||
|
|
||||||
cy.get('@canvas').click()
|
cy.get('@canvas').click()
|
||||||
|
|
||||||
cy.get('.cursor').should('have.css', 'display', 'none')
|
cy.get('.ce-cursor').should('have.css', 'display', 'none')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('页面缩放', () => {
|
it('页面缩放', () => {
|
||||||
|
|||||||
+1
-1
@@ -219,7 +219,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="editor" editor-component="main"></div>
|
<div class="editor"></div>
|
||||||
<div class="footer" editor-component="footer">
|
<div class="footer" editor-component="footer">
|
||||||
<div>
|
<div>
|
||||||
<div class="page-mode">
|
<div class="page-mode">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.block-item {
|
.ce-block-item {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@@ -0,0 +1,132 @@
|
|||||||
|
.ce-contextmenu-container {
|
||||||
|
z-index: 9;
|
||||||
|
position: fixed;
|
||||||
|
display: none;
|
||||||
|
padding: 4px;
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: 0 2px 12px 0 rgb(56 56 56 / 20%);
|
||||||
|
border: 1px solid #e2e6ed;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-content .ce-contextmenu-sub-item::after {
|
||||||
|
position: absolute;
|
||||||
|
content: "";
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
right: 12px;
|
||||||
|
background: url(../../images/submenu-dropdown.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-content .ce-contextmenu-item {
|
||||||
|
min-width: 140px;
|
||||||
|
padding: 0 32px 0 16px;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
white-space: nowrap;
|
||||||
|
box-sizing: border-box;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-content .ce-contextmenu-item.hover {
|
||||||
|
background: rgba(25, 55, 88, .04);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-content .ce-contextmenu-item span {
|
||||||
|
max-width: 300px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #3d4757;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-content .ce-contextmenu-item span.ce-shortcut {
|
||||||
|
color: #767c85;
|
||||||
|
height: 30px;
|
||||||
|
flex: 1;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 30px;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-content .ce-contextmenu-item i {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: middle;
|
||||||
|
display: inline-block;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-divider {
|
||||||
|
background-color: #e2e6ed;
|
||||||
|
margin: 4px 16px;
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-print {
|
||||||
|
background-image: url(../../../assets/images/print.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-image {
|
||||||
|
background-image: url(../../../assets/images/image.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-image-change {
|
||||||
|
background-image: url(../../../assets/images/image-change.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-insert-row-col {
|
||||||
|
background-image: url(../../../assets/images/insert-row-col.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-insert-top-row {
|
||||||
|
background-image: url(../../../assets/images/insert-top-row.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-insert-bottom-row {
|
||||||
|
background-image: url(../../../assets/images/insert-bottom-row.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-insert-left-col {
|
||||||
|
background-image: url(../../../assets/images/insert-left-col.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-insert-right-col {
|
||||||
|
background-image: url(../../../assets/images/insert-right-col.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-delete-row-col {
|
||||||
|
background-image: url(../../../assets/images/delete-row-col.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-delete-row {
|
||||||
|
background-image: url(../../../assets/images/delete-row.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-delete-col {
|
||||||
|
background-image: url(../../../assets/images/delete-col.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-delete-table {
|
||||||
|
background-image: url(../../../assets/images/delete-table.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-merge-cell {
|
||||||
|
background-image: url(../../../assets/images/merge-cell.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-contextmenu-merge-cancel-cell {
|
||||||
|
background-image: url(../../../assets/images/merge-cancel-cell.svg);
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
.select-control-popup {
|
.ce-select-control-popup {
|
||||||
max-width: 160px;
|
max-width: 160px;
|
||||||
min-width: 69px;
|
min-width: 69px;
|
||||||
max-height: 225px;
|
max-height: 225px;
|
||||||
@@ -13,14 +13,14 @@
|
|||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.select-control-popup ul {
|
.ce-select-control-popup ul {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
padding: 3px 0;
|
padding: 3px 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.select-control-popup ul li {
|
.ce-select-control-popup ul li {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -34,11 +34,11 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.select-control-popup ul li:hover {
|
.ce-select-control-popup ul li:hover {
|
||||||
background-color: #EEF2FD;
|
background-color: #EEF2FD;
|
||||||
}
|
}
|
||||||
|
|
||||||
.select-control-popup ul li.active {
|
.ce-select-control-popup ul li.active {
|
||||||
color: var(--COLOR-HOVER, #5175f4);
|
color: var(--COLOR-HOVER, #5175f4);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
.date-container {
|
.ce-date-container {
|
||||||
display: none;
|
display: none;
|
||||||
width: 300px;
|
width: 300px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -15,19 +15,19 @@
|
|||||||
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-container.active {
|
.ce-date-container.active {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-wrap {
|
.ce-date-wrap {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-wrap.active {
|
.ce-date-wrap.active {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-title {
|
.ce-date-title {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -36,40 +36,40 @@
|
|||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-title>span {
|
.ce-date-title>span {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-title>span:not(.date-title__now) {
|
.ce-date-title>span:not(.ce-date-title__now) {
|
||||||
font-family: cursive;
|
font-family: cursive;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-title>span:not(.date-title__now):hover {
|
.ce-date-title>span:not(.ce-date-title__now):hover {
|
||||||
color: #5175F4;
|
color: #5175F4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-title .date-title__pre-year {
|
.ce-date-title .ce-date-title__pre-year {
|
||||||
width: 15%;
|
width: 15%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-title .date-title__pre-month {
|
.ce-date-title .ce-date-title__pre-month {
|
||||||
width: 15%;
|
width: 15%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-title .date-title__now {
|
.ce-date-title .ce-date-title__now {
|
||||||
width: 40%;
|
width: 40%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-title .date-title__next-year {
|
.ce-date-title .ce-date-title__next-year {
|
||||||
width: 15%;
|
width: 15%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-title .date-title__next-month {
|
.ce-date-title .ce-date-title__next-month {
|
||||||
width: 15%;
|
width: 15%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-week {
|
.ce-date-week {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
border-bottom: 1px solid #e4e7ed;
|
border-bottom: 1px solid #e4e7ed;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-week>span {
|
.ce-date-week>span {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
width: calc(100%/7);
|
width: calc(100%/7);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-day {
|
.ce-date-day {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-day>div {
|
.ce-date-day>div {
|
||||||
width: calc(100%/7);
|
width: calc(100%/7);
|
||||||
height: 40px;
|
height: 40px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -105,85 +105,85 @@
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-day>div:hover {
|
.ce-date-day>div:hover {
|
||||||
color: #5175F4;
|
color: #5175F4;
|
||||||
opacity: .8;
|
opacity: .8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-day>div.active {
|
.ce-date-day>div.active {
|
||||||
color: #5175F4;
|
color: #5175F4;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-day>div.disable {
|
.ce-date-day>div.disable {
|
||||||
color: #c0c4cc;
|
color: #c0c4cc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-day>div.select {
|
.ce-date-day>div.select {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #5175F4;
|
background-color: #5175F4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap {
|
.ce-time-wrap {
|
||||||
display: none;
|
display: none;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
height: 286px;
|
height: 286px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap ::-webkit-scrollbar {
|
.ce-time-wrap ::-webkit-scrollbar {
|
||||||
width: 0;
|
width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap.active {
|
.ce-time-wrap.active {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap li {
|
.ce-time-wrap li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap>li {
|
.ce-time-wrap>li {
|
||||||
width: 33.3%;
|
width: 33.3%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap>li>span {
|
.ce-time-wrap>li>span {
|
||||||
transform: translateY(-5px);
|
transform: translateY(-5px);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap>li>ol {
|
.ce-time-wrap>li>ol {
|
||||||
height: calc(100% - 20px);
|
height: calc(100% - 20px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
border: 1px solid #e2e2e2;
|
border: 1px solid #e2e2e2;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap>li:first-child>ol {
|
.ce-time-wrap>li:first-child>ol {
|
||||||
border-right: 0;
|
border-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap>li:last-child>ol {
|
.ce-time-wrap>li:last-child>ol {
|
||||||
border-left: 0;
|
border-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap>li>ol>li {
|
.ce-time-wrap>li>ol>li {
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: all .3s;
|
transition: all .3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap>li>ol>li:hover {
|
.ce-time-wrap>li>ol>li:hover {
|
||||||
background-color: #eaeaea;
|
background-color: #eaeaea;
|
||||||
}
|
}
|
||||||
|
|
||||||
.time-wrap>li>ol>li.active {
|
.ce-time-wrap>li>ol>li.active {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
background: #5175F4;
|
background: #5175F4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-menu {
|
.ce-date-menu {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 28px;
|
height: 28px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -194,7 +194,7 @@
|
|||||||
border-top: 1px solid #e4e7ed;
|
border-top: 1px solid #e4e7ed;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-menu button {
|
.ce-date-menu button {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@@ -216,18 +216,18 @@
|
|||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-menu button:hover {
|
.ce-date-menu button:hover {
|
||||||
color: #5175F4;
|
color: #5175F4;
|
||||||
border-color: #5175F4;
|
border-color: #5175F4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-menu button.date-menu__time {
|
.ce-date-menu button.ce-date-menu__time {
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-menu button.date-menu__time:hover {
|
.ce-date-menu button.ce-date-menu__time:hover {
|
||||||
color: #5175F4;
|
color: #5175F4;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
.ce-hyperlink-popup {
|
||||||
|
min-width: 100px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 20px;
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: 0 2px 12px 0 rgb(98 107 132 / 20%);
|
||||||
|
border-radius: 2px;
|
||||||
|
color: #3d4757;
|
||||||
|
padding: 16px;
|
||||||
|
white-space: nowrap;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
text-align: center;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-hyperlink-popup a {
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-bottom-style: solid;
|
||||||
|
padding-bottom: 2px;
|
||||||
|
color: #0000ff;
|
||||||
|
}
|
||||||
@@ -1,8 +1,13 @@
|
|||||||
@import './control/select.css';
|
@import './control/select.css';
|
||||||
@import './date/datePicker.css';
|
@import './date/datePicker.css';
|
||||||
@import './block/block.css';
|
@import './block/block.css';
|
||||||
|
@import './table/table.css';
|
||||||
|
@import './resizer/resizer.css';
|
||||||
|
@import './previewer/previewer.css';
|
||||||
|
@import './contextmenu/contextmenu.css';
|
||||||
|
@import './hyperlink/hyperlink.css';
|
||||||
|
|
||||||
.inputarea {
|
.ce-inputarea {
|
||||||
width: 0;
|
width: 0;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
@@ -23,7 +28,7 @@
|
|||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cursor {
|
.ce-cursor {
|
||||||
width: 1px;
|
width: 1px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
left: 0;
|
left: 0;
|
||||||
@@ -34,7 +39,7 @@
|
|||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cursor--animation {
|
.ce-cursor.ce-cursor--animation {
|
||||||
animation-duration: 1s;
|
animation-duration: 1s;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-name: cursorAnimation;
|
animation-name: cursorAnimation;
|
||||||
@@ -61,398 +66,3 @@
|
|||||||
opacity: 1
|
opacity: 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.resizer-selection {
|
|
||||||
position: absolute;
|
|
||||||
border: 1px solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-selection>div {
|
|
||||||
position: absolute;
|
|
||||||
width: 10px;
|
|
||||||
height: 10px;
|
|
||||||
box-shadow: 0 1px 4px 0 rgb(0 0 0 / 30%);
|
|
||||||
border-radius: 5px;
|
|
||||||
border: 2px solid #ffffff;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-selection .handle-0 {
|
|
||||||
cursor: nw-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-selection .handle-1 {
|
|
||||||
cursor: n-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-selection .handle-2 {
|
|
||||||
cursor: ne-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-selection .handle-3 {
|
|
||||||
cursor: e-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-selection .handle-4 {
|
|
||||||
cursor: se-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-selection .handle-5 {
|
|
||||||
cursor: s-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-selection .handle-6 {
|
|
||||||
cursor: sw-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-selection .handle-7 {
|
|
||||||
cursor: w-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resizer-image {
|
|
||||||
position: absolute;
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer {
|
|
||||||
position: fixed;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
z-index: 1000;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
background: #f2f4f7;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
animation: previewerAnimation .3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes previewerAnimation {
|
|
||||||
0% {
|
|
||||||
opacity: 0.1;
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-close {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
display: inline-block;
|
|
||||||
position: absolute;
|
|
||||||
right: 50px;
|
|
||||||
top: 30px;
|
|
||||||
z-index: 99;
|
|
||||||
cursor: pointer;
|
|
||||||
background: url(../images/close.svg) no-repeat;
|
|
||||||
background-size: 100% 100%;
|
|
||||||
transition: all .3s;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-close:hover {
|
|
||||||
background-color: #e2e6ed;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-container {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-container img {
|
|
||||||
cursor: move;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-menu {
|
|
||||||
height: 50px;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 50px;
|
|
||||||
z-index: 99;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-menu i {
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
margin: 0 8px;
|
|
||||||
cursor: pointer;
|
|
||||||
display: inline-block;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: 100% 100%;
|
|
||||||
transition: all .3s;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-menu i:hover {
|
|
||||||
background-color: #e2e6ed;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-menu i.zoom-in {
|
|
||||||
background-image: url(../images/zoom-in.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-menu i.zoom-out {
|
|
||||||
background-image: url(../images/zoom-out.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-menu i.rotate {
|
|
||||||
background-image: url(../images/rotate.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-menu i.original-size {
|
|
||||||
background-image: url(../images/original-size.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-previewer .image-menu i.image-download {
|
|
||||||
background-image: url(../images/image-download.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__row {
|
|
||||||
position: absolute;
|
|
||||||
width: 12px;
|
|
||||||
border-radius: 6.5px;
|
|
||||||
overflow: hidden;
|
|
||||||
background-color: #E2E6ED;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__row .table-tool__row__item {
|
|
||||||
width: 100%;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__row .table-tool__row__item::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
left: 2px;
|
|
||||||
width: 8px;
|
|
||||||
height: 1px;
|
|
||||||
background-color: #C0C6CF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__row .table-tool__row__item:last-child:after {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__col {
|
|
||||||
position: absolute;
|
|
||||||
height: 12px;
|
|
||||||
border-radius: 6.5px;
|
|
||||||
overflow: hidden;
|
|
||||||
background-color: #E2E6ED;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__col .table-tool__col__item {
|
|
||||||
height: 100%;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__col .table-tool__col__item::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 2px;
|
|
||||||
left: -1px;
|
|
||||||
width: 1px;
|
|
||||||
height: 8px;
|
|
||||||
z-index: 1;
|
|
||||||
background-color: #C0C6CF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__col .table-tool__col__item:first-child:after {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__row .table-tool__row__item.active,
|
|
||||||
.table-tool__col .table-tool__col__item.active {
|
|
||||||
background-color: #C4D7FA;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__col .table-tool__anchor {
|
|
||||||
right: -5px;
|
|
||||||
width: 10px;
|
|
||||||
height: 12px;
|
|
||||||
z-index: 9;
|
|
||||||
position: absolute;
|
|
||||||
cursor: col-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-tool__row .table-tool__anchor {
|
|
||||||
bottom: -5px;
|
|
||||||
left: 0;
|
|
||||||
width: 12px;
|
|
||||||
height: 10px;
|
|
||||||
z-index: 9;
|
|
||||||
position: absolute;
|
|
||||||
cursor: row-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-anchor__line {
|
|
||||||
z-index: 9;
|
|
||||||
position: absolute;
|
|
||||||
border: 1px dotted #000000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-container {
|
|
||||||
z-index: 9;
|
|
||||||
position: fixed;
|
|
||||||
display: none;
|
|
||||||
padding: 4px;
|
|
||||||
overflow-x: hidden;
|
|
||||||
overflow-y: auto;
|
|
||||||
background: #fff;
|
|
||||||
box-shadow: 0 2px 12px 0 rgb(56 56 56 / 20%);
|
|
||||||
border: 1px solid #e2e6ed;
|
|
||||||
border-radius: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-content {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-content .contextmenu-sub-item::after {
|
|
||||||
position: absolute;
|
|
||||||
content: "";
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
right: 12px;
|
|
||||||
background: url(../images/submenu-dropdown.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-content .contextmenu-item {
|
|
||||||
min-width: 140px;
|
|
||||||
padding: 0 32px 0 16px;
|
|
||||||
height: 30px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
white-space: nowrap;
|
|
||||||
box-sizing: border-box;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-content .contextmenu-item.hover {
|
|
||||||
background: rgba(25, 55, 88, .04);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-content .contextmenu-item span {
|
|
||||||
max-width: 300px;
|
|
||||||
font-size: 12px;
|
|
||||||
color: #3d4757;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-content .contextmenu-item span.shortcut {
|
|
||||||
color: #767c85;
|
|
||||||
height: 30px;
|
|
||||||
flex: 1;
|
|
||||||
text-align: right;
|
|
||||||
line-height: 30px;
|
|
||||||
margin-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-content .contextmenu-item i {
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
vertical-align: middle;
|
|
||||||
display: inline-block;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: 100% 100%;
|
|
||||||
flex-shrink: 0;
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-divider {
|
|
||||||
background-color: #e2e6ed;
|
|
||||||
margin: 4px 16px;
|
|
||||||
height: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-print {
|
|
||||||
background-image: url(../../assets/images/print.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-image {
|
|
||||||
background-image: url(../../assets/images/image.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-image-change {
|
|
||||||
background-image: url(../../assets/images/image-change.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-insert-row-col {
|
|
||||||
background-image: url(../../assets/images/insert-row-col.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-insert-top-row {
|
|
||||||
background-image: url(../../assets/images/insert-top-row.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-insert-bottom-row {
|
|
||||||
background-image: url(../../assets/images/insert-bottom-row.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-insert-left-col {
|
|
||||||
background-image: url(../../assets/images/insert-left-col.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-insert-right-col {
|
|
||||||
background-image: url(../../assets/images/insert-right-col.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-delete-row-col {
|
|
||||||
background-image: url(../../assets/images/delete-row-col.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-delete-row {
|
|
||||||
background-image: url(../../assets/images/delete-row.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-delete-col {
|
|
||||||
background-image: url(../../assets/images/delete-col.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-delete-table {
|
|
||||||
background-image: url(../../assets/images/delete-table.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-merge-cell {
|
|
||||||
background-image: url(../../assets/images/merge-cell.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.contextmenu-merge-cancel-cell {
|
|
||||||
background-image: url(../../assets/images/merge-cancel-cell.svg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hyperlink-popup {
|
|
||||||
min-width: 100px;
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 20px;
|
|
||||||
background: #fff;
|
|
||||||
box-shadow: 0 2px 12px 0 rgb(98 107 132 / 20%);
|
|
||||||
border-radius: 2px;
|
|
||||||
color: #3d4757;
|
|
||||||
padding: 16px;
|
|
||||||
white-space: nowrap;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 1;
|
|
||||||
text-align: center;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hyperlink-popup a {
|
|
||||||
cursor: pointer;
|
|
||||||
text-decoration: none;
|
|
||||||
border-bottom-width: 1px;
|
|
||||||
border-bottom-style: solid;
|
|
||||||
padding-bottom: 2px;
|
|
||||||
color: #0000ff;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
.ce-image-previewer {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 1000;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
background: #f2f4f7;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
animation: previewerAnimation .3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes previewerAnimation {
|
||||||
|
0% {
|
||||||
|
opacity: 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .image-close {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
right: 50px;
|
||||||
|
top: 30px;
|
||||||
|
z-index: 99;
|
||||||
|
cursor: pointer;
|
||||||
|
background: url(../../images/close.svg) no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
transition: all .3s;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .image-close:hover {
|
||||||
|
background-color: #e2e6ed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-container {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-container img {
|
||||||
|
cursor: move;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-menu {
|
||||||
|
height: 50px;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 50px;
|
||||||
|
z-index: 99;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-menu i {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
margin: 0 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
transition: all .3s;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-menu i:hover {
|
||||||
|
background-color: #e2e6ed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-menu i.zoom-in {
|
||||||
|
background-image: url(../../images/zoom-in.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-menu i.zoom-out {
|
||||||
|
background-image: url(../../images/zoom-out.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-menu i.rotate {
|
||||||
|
background-image: url(../../images/rotate.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-menu i.original-size {
|
||||||
|
background-image: url(../../images/original-size.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-image-previewer .ce-image-menu i.image-download {
|
||||||
|
background-image: url(../../images/image-download.svg);
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
.ce-resizer-selection {
|
||||||
|
position: absolute;
|
||||||
|
border: 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-selection>div {
|
||||||
|
position: absolute;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
box-shadow: 0 1px 4px 0 rgb(0 0 0 / 30%);
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 2px solid #ffffff;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-selection .handle-0 {
|
||||||
|
cursor: nw-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-selection .handle-1 {
|
||||||
|
cursor: n-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-selection .handle-2 {
|
||||||
|
cursor: ne-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-selection .handle-3 {
|
||||||
|
cursor: e-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-selection .handle-4 {
|
||||||
|
cursor: se-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-selection .handle-5 {
|
||||||
|
cursor: s-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-selection .handle-6 {
|
||||||
|
cursor: sw-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-selection .handle-7 {
|
||||||
|
cursor: w-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-resizer-image {
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
.ce-table-tool__row {
|
||||||
|
position: absolute;
|
||||||
|
width: 12px;
|
||||||
|
border-radius: 6.5px;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: #E2E6ED;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__row .ce-table-tool__row__item {
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__row .ce-table-tool__row__item::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 2px;
|
||||||
|
width: 8px;
|
||||||
|
height: 1px;
|
||||||
|
background-color: #C0C6CF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__row .ce-table-tool__row__item:last-child:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__col {
|
||||||
|
position: absolute;
|
||||||
|
height: 12px;
|
||||||
|
border-radius: 6.5px;
|
||||||
|
overflow: hidden;
|
||||||
|
background-color: #E2E6ED;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__col .ce-table-tool__col__item {
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__col .ce-table-tool__col__item::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 2px;
|
||||||
|
left: -1px;
|
||||||
|
width: 1px;
|
||||||
|
height: 8px;
|
||||||
|
z-index: 1;
|
||||||
|
background-color: #C0C6CF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__col .ce-table-tool__col__item:first-child:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__row .ce-table-tool__row__item.active,
|
||||||
|
.ce-table-tool__col .ce-table-tool__col__item.active {
|
||||||
|
background-color: #C4D7FA;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__col .ce-table-tool__anchor {
|
||||||
|
right: -5px;
|
||||||
|
width: 10px;
|
||||||
|
height: 12px;
|
||||||
|
z-index: 9;
|
||||||
|
position: absolute;
|
||||||
|
cursor: col-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-tool__row .ce-table-tool__anchor {
|
||||||
|
bottom: -5px;
|
||||||
|
left: 0;
|
||||||
|
width: 12px;
|
||||||
|
height: 10px;
|
||||||
|
z-index: 9;
|
||||||
|
position: absolute;
|
||||||
|
cursor: row-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ce-table-anchor__line {
|
||||||
|
z-index: 9;
|
||||||
|
position: absolute;
|
||||||
|
border: 1px dotted #000000;
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { NAME_PLACEHOLDER } from '../../dataset/constant/ContextMenu'
|
import { NAME_PLACEHOLDER } from '../../dataset/constant/ContextMenu'
|
||||||
import { EDITOR_COMPONENT } from '../../dataset/constant/Editor'
|
import { EDITOR_COMPONENT, EDITOR_PREFIX } from '../../dataset/constant/Editor'
|
||||||
import { EditorComponent } from '../../dataset/enum/Editor'
|
import { EditorComponent } from '../../dataset/enum/Editor'
|
||||||
import { IContextMenuContext, IRegisterContextMenu } from '../../interface/contextmenu/ContextMenu'
|
import { IContextMenuContext, IRegisterContextMenu } from '../../interface/contextmenu/ContextMenu'
|
||||||
import { findParent } from '../../utils'
|
import { findParent } from '../../utils'
|
||||||
@@ -137,7 +137,7 @@ export class ContextMenu {
|
|||||||
|
|
||||||
private _createContextMenuContainer(): HTMLDivElement {
|
private _createContextMenuContainer(): HTMLDivElement {
|
||||||
const contextMenuContainer = document.createElement('div')
|
const contextMenuContainer = document.createElement('div')
|
||||||
contextMenuContainer.classList.add('contextmenu-container')
|
contextMenuContainer.classList.add(`${EDITOR_PREFIX}-contextmenu-container`)
|
||||||
contextMenuContainer.setAttribute(EDITOR_COMPONENT, EditorComponent.CONTEXTMENU)
|
contextMenuContainer.setAttribute(EDITOR_COMPONENT, EditorComponent.CONTEXTMENU)
|
||||||
this.container.append(contextMenuContainer)
|
this.container.append(contextMenuContainer)
|
||||||
return contextMenuContainer
|
return contextMenuContainer
|
||||||
@@ -147,7 +147,7 @@ export class ContextMenu {
|
|||||||
const { contextMenuList, left, top, parentMenuContainer } = payload
|
const { contextMenuList, left, top, parentMenuContainer } = payload
|
||||||
const contextMenuContainer = this._createContextMenuContainer()
|
const contextMenuContainer = this._createContextMenuContainer()
|
||||||
const contextMenuContent = document.createElement('div')
|
const contextMenuContent = document.createElement('div')
|
||||||
contextMenuContent.classList.add('contextmenu-content')
|
contextMenuContent.classList.add(`${EDITOR_PREFIX}-contextmenu-content`)
|
||||||
// 直接子菜单
|
// 直接子菜单
|
||||||
let childMenuContainer: HTMLDivElement | null = null
|
let childMenuContainer: HTMLDivElement | null = null
|
||||||
// 父菜单添加子菜单映射关系
|
// 父菜单添加子菜单映射关系
|
||||||
@@ -160,15 +160,15 @@ export class ContextMenu {
|
|||||||
// 首尾分隔符不渲染
|
// 首尾分隔符不渲染
|
||||||
if (c !== 0 && c !== contextMenuList.length - 1) {
|
if (c !== 0 && c !== contextMenuList.length - 1) {
|
||||||
const divider = document.createElement('div')
|
const divider = document.createElement('div')
|
||||||
divider.classList.add('contextmenu-divider')
|
divider.classList.add(`${EDITOR_PREFIX}-contextmenu-divider`)
|
||||||
contextMenuContent.append(divider)
|
contextMenuContent.append(divider)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const menuItem = document.createElement('div')
|
const menuItem = document.createElement('div')
|
||||||
menuItem.classList.add('contextmenu-item')
|
menuItem.classList.add(`${EDITOR_PREFIX}-contextmenu-item`)
|
||||||
// 菜单事件
|
// 菜单事件
|
||||||
if (menu.childMenus) {
|
if (menu.childMenus) {
|
||||||
menuItem.classList.add('contextmenu-sub-item')
|
menuItem.classList.add(`${EDITOR_PREFIX}-contextmenu-sub-item`)
|
||||||
menuItem.onmouseenter = () => {
|
menuItem.onmouseenter = () => {
|
||||||
this._setHoverStatus(menuItem, true)
|
this._setHoverStatus(menuItem, true)
|
||||||
this._removeSubMenu(contextMenuContainer)
|
this._removeSubMenu(contextMenuContainer)
|
||||||
@@ -208,7 +208,7 @@ export class ContextMenu {
|
|||||||
const icon = document.createElement('i')
|
const icon = document.createElement('i')
|
||||||
menuItem.append(icon)
|
menuItem.append(icon)
|
||||||
if (menu.icon) {
|
if (menu.icon) {
|
||||||
icon.classList.add(`contextmenu-${menu.icon}`)
|
icon.classList.add(`${EDITOR_PREFIX}-contextmenu-${menu.icon}`)
|
||||||
}
|
}
|
||||||
// 文本
|
// 文本
|
||||||
const span = document.createElement('span')
|
const span = document.createElement('span')
|
||||||
@@ -218,7 +218,7 @@ export class ContextMenu {
|
|||||||
// 快捷方式提示
|
// 快捷方式提示
|
||||||
if (menu.shortCut) {
|
if (menu.shortCut) {
|
||||||
const span = document.createElement('span')
|
const span = document.createElement('span')
|
||||||
span.classList.add('shortcut')
|
span.classList.add(`${EDITOR_PREFIX}-shortcut`)
|
||||||
span.append(document.createTextNode(menu.shortCut))
|
span.append(document.createTextNode(menu.shortCut))
|
||||||
menuItem.append(span)
|
menuItem.append(span)
|
||||||
}
|
}
|
||||||
@@ -250,7 +250,7 @@ export class ContextMenu {
|
|||||||
|
|
||||||
private _setHoverStatus(payload: HTMLDivElement, status: boolean) {
|
private _setHoverStatus(payload: HTMLDivElement, status: boolean) {
|
||||||
if (status) {
|
if (status) {
|
||||||
payload.parentNode?.querySelectorAll('.contextmenu-item')
|
payload.parentNode?.querySelectorAll(`${EDITOR_PREFIX}-contextmenu-item`)
|
||||||
.forEach(child => child.classList.remove('hover'))
|
.forEach(child => child.classList.remove('hover'))
|
||||||
payload.classList.add('hover')
|
payload.classList.add('hover')
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { CURSOR_AGENT_HEIGHT } from '../../dataset/constant/Cursor'
|
import { CURSOR_AGENT_HEIGHT } from '../../dataset/constant/Cursor'
|
||||||
|
import { EDITOR_PREFIX } from '../../dataset/constant/Editor'
|
||||||
import { IEditorOption } from '../../interface/Editor'
|
import { IEditorOption } from '../../interface/Editor'
|
||||||
import { Draw } from '../draw/Draw'
|
import { Draw } from '../draw/Draw'
|
||||||
import { CanvasEvent } from '../event/CanvasEvent'
|
import { CanvasEvent } from '../event/CanvasEvent'
|
||||||
@@ -21,7 +22,7 @@ export class Cursor {
|
|||||||
this.options = draw.getOptions()
|
this.options = draw.getOptions()
|
||||||
|
|
||||||
this.cursorDom = document.createElement('div')
|
this.cursorDom = document.createElement('div')
|
||||||
this.cursorDom.classList.add('cursor')
|
this.cursorDom.classList.add(`${EDITOR_PREFIX}-cursor`)
|
||||||
this.container.append(this.cursorDom)
|
this.container.append(this.cursorDom)
|
||||||
this.cursorAgent = new CursorAgent(draw, canvasEvent)
|
this.cursorAgent = new CursorAgent(draw, canvasEvent)
|
||||||
}
|
}
|
||||||
@@ -64,13 +65,13 @@ export class Cursor {
|
|||||||
this.cursorDom.style.display = isReadonly ? 'none' : 'block'
|
this.cursorDom.style.display = isReadonly ? 'none' : 'block'
|
||||||
this.cursorDom.style.height = `${cursorHeight}px`
|
this.cursorDom.style.height = `${cursorHeight}px`
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.cursorDom.classList.add('cursor--animation')
|
this.cursorDom.classList.add(`${EDITOR_PREFIX}-cursor--animation`)
|
||||||
}, 200)
|
}, 200)
|
||||||
}
|
}
|
||||||
|
|
||||||
public recoveryCursor() {
|
public recoveryCursor() {
|
||||||
this.cursorDom.style.display = 'none'
|
this.cursorDom.style.display = 'none'
|
||||||
this.cursorDom.classList.remove('cursor--animation')
|
this.cursorDom.classList.remove(`${EDITOR_PREFIX}-cursor--animation`)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { EDITOR_PREFIX } from '../../dataset/constant/Editor'
|
||||||
import { ElementType } from '../../dataset/enum/Element'
|
import { ElementType } from '../../dataset/enum/Element'
|
||||||
import { debounce } from '../../utils'
|
import { debounce } from '../../utils'
|
||||||
import { getElementListByHTML } from '../../utils/clipboard'
|
import { getElementListByHTML } from '../../utils/clipboard'
|
||||||
@@ -18,7 +19,7 @@ export class CursorAgent {
|
|||||||
// 代理光标绘制
|
// 代理光标绘制
|
||||||
const agentCursorDom = document.createElement('textarea')
|
const agentCursorDom = document.createElement('textarea')
|
||||||
agentCursorDom.autocomplete = 'off'
|
agentCursorDom.autocomplete = 'off'
|
||||||
agentCursorDom.classList.add('inputarea')
|
agentCursorDom.classList.add(`${EDITOR_PREFIX}-inputarea`)
|
||||||
agentCursorDom.innerText = ''
|
agentCursorDom.innerText = ''
|
||||||
this.container.append(agentCursorDom)
|
this.container.append(agentCursorDom)
|
||||||
this.agentCursorDom = agentCursorDom
|
this.agentCursorDom = agentCursorDom
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ import { Previewer } from './particle/previewer/Previewer'
|
|||||||
import { DateParticle } from './particle/date/DateParticle'
|
import { DateParticle } from './particle/date/DateParticle'
|
||||||
import { IMargin } from '../../interface/Margin'
|
import { IMargin } from '../../interface/Margin'
|
||||||
import { BlockParticle } from './particle/block/BlockParticle'
|
import { BlockParticle } from './particle/block/BlockParticle'
|
||||||
import { EDITOR_COMPONENT } from '../../dataset/constant/Editor'
|
import { EDITOR_COMPONENT, EDITOR_PREFIX } from '../../dataset/constant/Editor'
|
||||||
|
|
||||||
export class Draw {
|
export class Draw {
|
||||||
|
|
||||||
@@ -531,7 +531,7 @@ export class Draw {
|
|||||||
|
|
||||||
private _createPageContainer(): HTMLDivElement {
|
private _createPageContainer(): HTMLDivElement {
|
||||||
const pageContainer = document.createElement('div')
|
const pageContainer = document.createElement('div')
|
||||||
pageContainer.classList.add('page-container')
|
pageContainer.classList.add(`${EDITOR_PREFIX}-page-container`)
|
||||||
this.container.append(pageContainer)
|
this.container.append(pageContainer)
|
||||||
return pageContainer
|
return pageContainer
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { EDITOR_COMPONENT } from '../../../../dataset/constant/Editor'
|
import { EDITOR_COMPONENT, EDITOR_PREFIX } from '../../../../dataset/constant/Editor'
|
||||||
import { ControlComponent } from '../../../../dataset/enum/Control'
|
import { ControlComponent } from '../../../../dataset/enum/Control'
|
||||||
import { EditorComponent } from '../../../../dataset/enum/Editor'
|
import { EditorComponent } from '../../../../dataset/enum/Editor'
|
||||||
import { KeyMap } from '../../../../dataset/enum/KeyMap'
|
import { KeyMap } from '../../../../dataset/enum/KeyMap'
|
||||||
@@ -210,7 +210,7 @@ export class SelectControl implements IControlInstance {
|
|||||||
if (!position) return
|
if (!position) return
|
||||||
// dom树:<div><ul><li>item</li></ul></div>
|
// dom树:<div><ul><li>item</li></ul></div>
|
||||||
const selectPopupContainer = document.createElement('div')
|
const selectPopupContainer = document.createElement('div')
|
||||||
selectPopupContainer.classList.add('select-control-popup')
|
selectPopupContainer.classList.add(`${EDITOR_PREFIX}-select-control-popup`)
|
||||||
selectPopupContainer.setAttribute(EDITOR_COMPONENT, EditorComponent.POPUP)
|
selectPopupContainer.setAttribute(EDITOR_COMPONENT, EditorComponent.POPUP)
|
||||||
const ul = document.createElement('ul')
|
const ul = document.createElement('ul')
|
||||||
for (let v = 0; v < valueSets.length; v++) {
|
for (let v = 0; v < valueSets.length; v++) {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { IElement } from '../../..'
|
import { IElement } from '../../..'
|
||||||
|
import { EDITOR_PREFIX } from '../../../dataset/constant/Editor'
|
||||||
import { IEditorOption } from '../../../interface/Editor'
|
import { IEditorOption } from '../../../interface/Editor'
|
||||||
import { IElementPosition } from '../../../interface/Element'
|
import { IElementPosition } from '../../../interface/Element'
|
||||||
import { IRowElement } from '../../../interface/Row'
|
import { IRowElement } from '../../../interface/Row'
|
||||||
@@ -23,7 +24,7 @@ export class HyperlinkParticle {
|
|||||||
|
|
||||||
private _createHyperlinkPopupDom() {
|
private _createHyperlinkPopupDom() {
|
||||||
const hyperlinkPopupContainer = document.createElement('div')
|
const hyperlinkPopupContainer = document.createElement('div')
|
||||||
hyperlinkPopupContainer.classList.add('hyperlink-popup')
|
hyperlinkPopupContainer.classList.add(`${EDITOR_PREFIX}-hyperlink-popup`)
|
||||||
const hyperlinkDom = document.createElement('a')
|
const hyperlinkDom = document.createElement('a')
|
||||||
hyperlinkDom.target = '_blank'
|
hyperlinkDom.target = '_blank'
|
||||||
hyperlinkPopupContainer.append(hyperlinkDom)
|
hyperlinkPopupContainer.append(hyperlinkDom)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { EDITOR_PREFIX } from '../../../../dataset/constant/Editor'
|
||||||
import { ElementType } from '../../../../dataset/enum/Element'
|
import { ElementType } from '../../../../dataset/enum/Element'
|
||||||
import { IRowElement } from '../../../../interface/Row'
|
import { IRowElement } from '../../../../interface/Row'
|
||||||
import { Draw } from '../../Draw'
|
import { Draw } from '../../Draw'
|
||||||
@@ -20,7 +21,7 @@ export class BlockParticle {
|
|||||||
|
|
||||||
private _createBlockContainer(): HTMLDivElement {
|
private _createBlockContainer(): HTMLDivElement {
|
||||||
const blockContainer = document.createElement('div')
|
const blockContainer = document.createElement('div')
|
||||||
blockContainer.classList.add('block-container')
|
blockContainer.classList.add(`${EDITOR_PREFIX}-block-container`)
|
||||||
return blockContainer
|
return blockContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { EDITOR_PREFIX } from '../../../../../dataset/constant/Editor'
|
||||||
import { BlockType } from '../../../../../dataset/enum/Block'
|
import { BlockType } from '../../../../../dataset/enum/Block'
|
||||||
import { IRowElement } from '../../../../../interface/Row'
|
import { IRowElement } from '../../../../../interface/Row'
|
||||||
import { Draw } from '../../../Draw'
|
import { Draw } from '../../../Draw'
|
||||||
@@ -28,7 +29,7 @@ export class BaseBlock {
|
|||||||
|
|
||||||
private _createBlockItem(): HTMLDivElement {
|
private _createBlockItem(): HTMLDivElement {
|
||||||
const blockItem = document.createElement('div')
|
const blockItem = document.createElement('div')
|
||||||
blockItem.classList.add('block-item')
|
blockItem.classList.add(`${EDITOR_PREFIX}-block-item`)
|
||||||
return blockItem
|
return blockItem
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { EDITOR_PREFIX } from '../../../../dataset/constant/Editor'
|
||||||
import { IElement, IElementPosition } from '../../../../interface/Element'
|
import { IElement, IElementPosition } from '../../../../interface/Element'
|
||||||
|
|
||||||
export interface IDatePickerOption {
|
export interface IDatePickerOption {
|
||||||
@@ -60,25 +61,25 @@ export class DatePicker {
|
|||||||
|
|
||||||
private _createDom(): IDatePickerDom {
|
private _createDom(): IDatePickerDom {
|
||||||
const datePickerContainer = document.createElement('div')
|
const datePickerContainer = document.createElement('div')
|
||||||
datePickerContainer.classList.add('date-container')
|
datePickerContainer.classList.add(`${EDITOR_PREFIX}-date-container`)
|
||||||
// title-切换年月、年月显示
|
// title-切换年月、年月显示
|
||||||
const dateWrap = document.createElement('div')
|
const dateWrap = document.createElement('div')
|
||||||
dateWrap.classList.add('date-wrap')
|
dateWrap.classList.add(`${EDITOR_PREFIX}-date-wrap`)
|
||||||
const datePickerTitle = document.createElement('div')
|
const datePickerTitle = document.createElement('div')
|
||||||
datePickerTitle.classList.add('date-title')
|
datePickerTitle.classList.add(`${EDITOR_PREFIX}-date-title`)
|
||||||
const preYearTitle = document.createElement('span')
|
const preYearTitle = document.createElement('span')
|
||||||
preYearTitle.classList.add('date-title__pre-year')
|
preYearTitle.classList.add(`${EDITOR_PREFIX}-date-title__pre-year`)
|
||||||
preYearTitle.innerText = `<<`
|
preYearTitle.innerText = `<<`
|
||||||
const preMonthTitle = document.createElement('span')
|
const preMonthTitle = document.createElement('span')
|
||||||
preMonthTitle.classList.add('date-title__pre-month')
|
preMonthTitle.classList.add(`${EDITOR_PREFIX}-date-title__pre-month`)
|
||||||
preMonthTitle.innerText = `<`
|
preMonthTitle.innerText = `<`
|
||||||
const nowTitle = document.createElement('span')
|
const nowTitle = document.createElement('span')
|
||||||
nowTitle.classList.add('date-title__now')
|
nowTitle.classList.add(`${EDITOR_PREFIX}-date-title__now`)
|
||||||
const nextMonthTitle = document.createElement('span')
|
const nextMonthTitle = document.createElement('span')
|
||||||
nextMonthTitle.classList.add('date-title__next-month')
|
nextMonthTitle.classList.add(`${EDITOR_PREFIX}-date-title__next-month`)
|
||||||
nextMonthTitle.innerText = `>`
|
nextMonthTitle.innerText = `>`
|
||||||
const nextYearTitle = document.createElement('span')
|
const nextYearTitle = document.createElement('span')
|
||||||
nextYearTitle.classList.add('date-title__next-year')
|
nextYearTitle.classList.add(`${EDITOR_PREFIX}-date-title__next-year`)
|
||||||
nextYearTitle.innerText = `>>`
|
nextYearTitle.innerText = `>>`
|
||||||
datePickerTitle.append(preYearTitle)
|
datePickerTitle.append(preYearTitle)
|
||||||
datePickerTitle.append(preMonthTitle)
|
datePickerTitle.append(preMonthTitle)
|
||||||
@@ -87,7 +88,7 @@ export class DatePicker {
|
|||||||
datePickerTitle.append(nextYearTitle)
|
datePickerTitle.append(nextYearTitle)
|
||||||
// week-星期显示
|
// week-星期显示
|
||||||
const datePickerWeek = document.createElement('div')
|
const datePickerWeek = document.createElement('div')
|
||||||
datePickerWeek.classList.add('date-week')
|
datePickerWeek.classList.add(`${EDITOR_PREFIX}-date-week`)
|
||||||
const weekList = ['日', '一', '二', '三', '四', '五', '六']
|
const weekList = ['日', '一', '二', '三', '四', '五', '六']
|
||||||
weekList.forEach(week => {
|
weekList.forEach(week => {
|
||||||
const weekDom = document.createElement('span')
|
const weekDom = document.createElement('span')
|
||||||
@@ -96,14 +97,14 @@ export class DatePicker {
|
|||||||
})
|
})
|
||||||
// day-天数显示
|
// day-天数显示
|
||||||
const datePickerDay = document.createElement('div')
|
const datePickerDay = document.createElement('div')
|
||||||
datePickerDay.classList.add('date-day')
|
datePickerDay.classList.add(`${EDITOR_PREFIX}-date-day`)
|
||||||
// 日期内容构建
|
// 日期内容构建
|
||||||
dateWrap.append(datePickerTitle)
|
dateWrap.append(datePickerTitle)
|
||||||
dateWrap.append(datePickerWeek)
|
dateWrap.append(datePickerWeek)
|
||||||
dateWrap.append(datePickerDay)
|
dateWrap.append(datePickerDay)
|
||||||
// time-时间选择
|
// time-时间选择
|
||||||
const timeWrap = document.createElement('ul')
|
const timeWrap = document.createElement('ul')
|
||||||
timeWrap.classList.add('time-wrap')
|
timeWrap.classList.add(`${EDITOR_PREFIX}-time-wrap`)
|
||||||
let hourTime: HTMLOListElement
|
let hourTime: HTMLOListElement
|
||||||
let minuteTime: HTMLOListElement
|
let minuteTime: HTMLOListElement
|
||||||
let secondTime: HTMLOListElement
|
let secondTime: HTMLOListElement
|
||||||
@@ -135,15 +136,15 @@ export class DatePicker {
|
|||||||
})
|
})
|
||||||
// menu-选择时间、现在、确定
|
// menu-选择时间、现在、确定
|
||||||
const datePickerMenu = document.createElement('div')
|
const datePickerMenu = document.createElement('div')
|
||||||
datePickerMenu.classList.add('date-menu')
|
datePickerMenu.classList.add(`${EDITOR_PREFIX}-date-menu`)
|
||||||
const timeMenu = document.createElement('button')
|
const timeMenu = document.createElement('button')
|
||||||
timeMenu.classList.add('date-menu__time')
|
timeMenu.classList.add(`${EDITOR_PREFIX}-date-menu__time`)
|
||||||
timeMenu.innerText = '时间选择'
|
timeMenu.innerText = '时间选择'
|
||||||
const nowMenu = document.createElement('button')
|
const nowMenu = document.createElement('button')
|
||||||
nowMenu.classList.add('date-menu__now')
|
nowMenu.classList.add(`${EDITOR_PREFIX}-date-menu__now`)
|
||||||
nowMenu.innerText = '此刻'
|
nowMenu.innerText = '此刻'
|
||||||
const submitMenu = document.createElement('button')
|
const submitMenu = document.createElement('button')
|
||||||
submitMenu.classList.add('date-menu__submit')
|
submitMenu.classList.add(`${EDITOR_PREFIX}-date-menu__submit`)
|
||||||
submitMenu.innerText = '确定'
|
submitMenu.innerText = '确定'
|
||||||
datePickerMenu.append(timeMenu)
|
datePickerMenu.append(timeMenu)
|
||||||
datePickerMenu.append(nowMenu)
|
datePickerMenu.append(nowMenu)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { EDITOR_PREFIX } from '../../../../dataset/constant/Editor'
|
||||||
import { IEditorOption } from '../../../../interface/Editor'
|
import { IEditorOption } from '../../../../interface/Editor'
|
||||||
import { IElement, IElementPosition } from '../../../../interface/Element'
|
import { IElement, IElementPosition } from '../../../../interface/Element'
|
||||||
import { IPreviewerCreateResult, IPreviewerDrawOption } from '../../../../interface/Previewer'
|
import { IPreviewerCreateResult, IPreviewerDrawOption } from '../../../../interface/Previewer'
|
||||||
@@ -57,7 +58,7 @@ export class Previewer {
|
|||||||
private _createResizerDom(): IPreviewerCreateResult {
|
private _createResizerDom(): IPreviewerCreateResult {
|
||||||
// 拖拽边框
|
// 拖拽边框
|
||||||
const resizerSelection = document.createElement('div')
|
const resizerSelection = document.createElement('div')
|
||||||
resizerSelection.classList.add('resizer-selection')
|
resizerSelection.classList.add(`${EDITOR_PREFIX}-resizer-selection`)
|
||||||
resizerSelection.style.display = 'none'
|
resizerSelection.style.display = 'none'
|
||||||
resizerSelection.style.borderColor = this.options.resizerColor
|
resizerSelection.style.borderColor = this.options.resizerColor
|
||||||
const resizerHandleList: HTMLDivElement[] = []
|
const resizerHandleList: HTMLDivElement[] = []
|
||||||
@@ -73,7 +74,7 @@ export class Previewer {
|
|||||||
this.container.append(resizerSelection)
|
this.container.append(resizerSelection)
|
||||||
// 拖拽镜像
|
// 拖拽镜像
|
||||||
const resizerImageContainer = document.createElement('div')
|
const resizerImageContainer = document.createElement('div')
|
||||||
resizerImageContainer.classList.add('resizer-image')
|
resizerImageContainer.classList.add(`${EDITOR_PREFIX}-resizer-image`)
|
||||||
resizerImageContainer.style.display = 'none'
|
resizerImageContainer.style.display = 'none'
|
||||||
const resizerImage = document.createElement('img')
|
const resizerImage = document.createElement('img')
|
||||||
resizerImageContainer.append(resizerImage)
|
resizerImageContainer.append(resizerImage)
|
||||||
@@ -175,7 +176,7 @@ export class Previewer {
|
|||||||
|
|
||||||
private _drawPreviewer() {
|
private _drawPreviewer() {
|
||||||
const previewerContainer = document.createElement('div')
|
const previewerContainer = document.createElement('div')
|
||||||
previewerContainer.classList.add('image-previewer')
|
previewerContainer.classList.add(`${EDITOR_PREFIX}-image-previewer`)
|
||||||
// 关闭按钮
|
// 关闭按钮
|
||||||
const closeBtn = document.createElement('i')
|
const closeBtn = document.createElement('i')
|
||||||
closeBtn.classList.add('image-close')
|
closeBtn.classList.add('image-close')
|
||||||
@@ -185,7 +186,7 @@ export class Previewer {
|
|||||||
previewerContainer.append(closeBtn)
|
previewerContainer.append(closeBtn)
|
||||||
// 图片
|
// 图片
|
||||||
const imgContainer = document.createElement('div')
|
const imgContainer = document.createElement('div')
|
||||||
imgContainer.classList.add('image-container')
|
imgContainer.classList.add(`${EDITOR_PREFIX}-image-container`)
|
||||||
const img = document.createElement('img')
|
const img = document.createElement('img')
|
||||||
img.src = this.curElementSrc
|
img.src = this.curElementSrc
|
||||||
img.draggable = false
|
img.draggable = false
|
||||||
@@ -198,7 +199,7 @@ export class Previewer {
|
|||||||
let scaleSize = 1
|
let scaleSize = 1
|
||||||
let rotateSize = 0
|
let rotateSize = 0
|
||||||
const menuContainer = document.createElement('div')
|
const menuContainer = document.createElement('div')
|
||||||
menuContainer.classList.add('image-menu')
|
menuContainer.classList.add(`${EDITOR_PREFIX}-image-menu`)
|
||||||
const zoomIn = document.createElement('i')
|
const zoomIn = document.createElement('i')
|
||||||
zoomIn.classList.add('zoom-in')
|
zoomIn.classList.add('zoom-in')
|
||||||
zoomIn.onclick = () => {
|
zoomIn.onclick = () => {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { IElement } from '../../../..'
|
import { IElement } from '../../../..'
|
||||||
|
import { EDITOR_PREFIX } from '../../../../dataset/constant/Editor'
|
||||||
import { TableOrder } from '../../../../dataset/enum/table/TableTool'
|
import { TableOrder } from '../../../../dataset/enum/table/TableTool'
|
||||||
import { IEditorOption } from '../../../../interface/Editor'
|
import { IEditorOption } from '../../../../interface/Editor'
|
||||||
import { IElementPosition } from '../../../../interface/Element'
|
import { IElementPosition } from '../../../../interface/Element'
|
||||||
@@ -65,17 +66,17 @@ export class TableTool {
|
|||||||
const colList = colgroup!.map(col => col.width)
|
const colList = colgroup!.map(col => col.width)
|
||||||
// 渲染行
|
// 渲染行
|
||||||
const rowContainer = document.createElement('div')
|
const rowContainer = document.createElement('div')
|
||||||
rowContainer.classList.add('table-tool__row')
|
rowContainer.classList.add(`${EDITOR_PREFIX}-table-tool__row`)
|
||||||
rowContainer.style.transform = `translateX(-${this.translate * scale}px)`
|
rowContainer.style.transform = `translateX(-${this.translate * scale}px)`
|
||||||
for (let r = 0; r < rowList.length; r++) {
|
for (let r = 0; r < rowList.length; r++) {
|
||||||
const rowHeight = rowList[r] * scale
|
const rowHeight = rowList[r] * scale
|
||||||
const rowItem = document.createElement('div')
|
const rowItem = document.createElement('div')
|
||||||
rowItem.classList.add('table-tool__row__item')
|
rowItem.classList.add(`${EDITOR_PREFIX}-table-tool__row__item`)
|
||||||
if (r === rowIndex) {
|
if (r === rowIndex) {
|
||||||
rowItem.classList.add('active')
|
rowItem.classList.add('active')
|
||||||
}
|
}
|
||||||
const rowItemAnchor = document.createElement('div')
|
const rowItemAnchor = document.createElement('div')
|
||||||
rowItemAnchor.classList.add('table-tool__anchor')
|
rowItemAnchor.classList.add(`${EDITOR_PREFIX}-table-tool__anchor`)
|
||||||
rowItemAnchor.onmousedown = (evt) => {
|
rowItemAnchor.onmousedown = (evt) => {
|
||||||
this._mousedown({
|
this._mousedown({
|
||||||
evt,
|
evt,
|
||||||
@@ -96,17 +97,17 @@ export class TableTool {
|
|||||||
|
|
||||||
// 渲染列
|
// 渲染列
|
||||||
const colContainer = document.createElement('div')
|
const colContainer = document.createElement('div')
|
||||||
colContainer.classList.add('table-tool__col')
|
colContainer.classList.add(`${EDITOR_PREFIX}-table-tool__col`)
|
||||||
colContainer.style.transform = `translateY(-${this.translate * scale}px)`
|
colContainer.style.transform = `translateY(-${this.translate * scale}px)`
|
||||||
for (let c = 0; c < colList.length; c++) {
|
for (let c = 0; c < colList.length; c++) {
|
||||||
const colHeight = colList[c] * scale
|
const colHeight = colList[c] * scale
|
||||||
const colItem = document.createElement('div')
|
const colItem = document.createElement('div')
|
||||||
colItem.classList.add('table-tool__col__item')
|
colItem.classList.add(`${EDITOR_PREFIX}-table-tool__col__item`)
|
||||||
if (c === colIndex) {
|
if (c === colIndex) {
|
||||||
colItem.classList.add('active')
|
colItem.classList.add('active')
|
||||||
}
|
}
|
||||||
const colItemAnchor = document.createElement('div')
|
const colItemAnchor = document.createElement('div')
|
||||||
colItemAnchor.classList.add('table-tool__anchor')
|
colItemAnchor.classList.add(`${EDITOR_PREFIX}-table-tool__anchor`)
|
||||||
colItemAnchor.onmousedown = (evt) => {
|
colItemAnchor.onmousedown = (evt) => {
|
||||||
this._mousedown({
|
this._mousedown({
|
||||||
evt,
|
evt,
|
||||||
@@ -146,14 +147,14 @@ export class TableTool {
|
|||||||
let startX = 0
|
let startX = 0
|
||||||
let startY = 0
|
let startY = 0
|
||||||
const anchorLine = document.createElement('div')
|
const anchorLine = document.createElement('div')
|
||||||
anchorLine.classList.add('table-anchor__line')
|
anchorLine.classList.add(`${EDITOR_PREFIX}-table-anchor__line`)
|
||||||
if (order === TableOrder.ROW) {
|
if (order === TableOrder.ROW) {
|
||||||
anchorLine.classList.add('table-anchor__line__row')
|
anchorLine.classList.add(`${EDITOR_PREFIX}-table-anchor__line__row`)
|
||||||
anchorLine.style.width = `${width}px`
|
anchorLine.style.width = `${width}px`
|
||||||
startX = 0
|
startX = 0
|
||||||
startY = prePageHeight + this.mousedownY - canvasRect.top
|
startY = prePageHeight + this.mousedownY - canvasRect.top
|
||||||
} else {
|
} else {
|
||||||
anchorLine.classList.add('table-anchor__line__col')
|
anchorLine.classList.add(`${EDITOR_PREFIX}-table-anchor__line__col`)
|
||||||
anchorLine.style.height = `${height}px`
|
anchorLine.style.height = `${height}px`
|
||||||
startX = this.mousedownX - canvasRect.left
|
startX = this.mousedownX - canvasRect.left
|
||||||
startY = prePageHeight
|
startY = prePageHeight
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { Cursor } from '../cursor/Cursor'
|
|||||||
import { Control } from '../draw/control/Control'
|
import { Control } from '../draw/control/Control'
|
||||||
import { Draw } from '../draw/Draw'
|
import { Draw } from '../draw/Draw'
|
||||||
import { HyperlinkParticle } from '../draw/particle/HyperlinkParticle'
|
import { HyperlinkParticle } from '../draw/particle/HyperlinkParticle'
|
||||||
|
import { DateParticle } from '../draw/particle/date/DateParticle'
|
||||||
import { Previewer } from '../draw/particle/previewer/Previewer'
|
import { Previewer } from '../draw/particle/previewer/Previewer'
|
||||||
import { TableTool } from '../draw/particle/table/TableTool'
|
import { TableTool } from '../draw/particle/table/TableTool'
|
||||||
import { RangeManager } from '../range/RangeManager'
|
import { RangeManager } from '../range/RangeManager'
|
||||||
@@ -22,6 +23,7 @@ export class GlobalEvent {
|
|||||||
private tableTool: TableTool
|
private tableTool: TableTool
|
||||||
private hyperlinkParticle: HyperlinkParticle
|
private hyperlinkParticle: HyperlinkParticle
|
||||||
private control: Control
|
private control: Control
|
||||||
|
private dateParticle: DateParticle
|
||||||
|
|
||||||
constructor(draw: Draw, canvasEvent: CanvasEvent) {
|
constructor(draw: Draw, canvasEvent: CanvasEvent) {
|
||||||
this.draw = draw
|
this.draw = draw
|
||||||
@@ -33,6 +35,7 @@ export class GlobalEvent {
|
|||||||
this.previewer = draw.getPreviewer()
|
this.previewer = draw.getPreviewer()
|
||||||
this.tableTool = draw.getTableTool()
|
this.tableTool = draw.getTableTool()
|
||||||
this.hyperlinkParticle = draw.getHyperlinkParticle()
|
this.hyperlinkParticle = draw.getHyperlinkParticle()
|
||||||
|
this.dateParticle = draw.getDateParticle()
|
||||||
this.control = draw.getControl()
|
this.control = draw.getControl()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,6 +84,7 @@ export class GlobalEvent {
|
|||||||
this.tableTool.dispose()
|
this.tableTool.dispose()
|
||||||
this.hyperlinkParticle.clearHyperlinkPopup()
|
this.hyperlinkParticle.clearHyperlinkPopup()
|
||||||
this.control.destroyControl()
|
this.control.destroyControl()
|
||||||
|
this.dateParticle.clearDatePicker()
|
||||||
}
|
}
|
||||||
|
|
||||||
public setDragState = () => {
|
public setDragState = () => {
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
export const EDITOR_COMPONENT = 'editor-component'
|
export const EDITOR_COMPONENT = 'editor-component'
|
||||||
|
export const EDITOR_PREFIX = 'ce'
|
||||||
+2
-5
@@ -609,11 +609,8 @@ ul {
|
|||||||
margin: 80px auto;
|
margin: 80px auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.page-container {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container canvas {
|
.ce-page-container canvas {
|
||||||
box-shadow: rgb(158 161 165 / 40%) 0px 2px 12px 0px;
|
box-shadow: rgb(158 161 165 / 40%) 0px 2px 12px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -761,6 +758,6 @@ ul {
|
|||||||
left: unset;
|
left: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contextmenu-signature {
|
.ce-contextmenu-signature {
|
||||||
background-image: url('./assets/images/signature.svg');
|
background-image: url('./assets/images/signature.svg');
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user