Skip to content

Commit

Permalink
input-modal: delete function
Browse files Browse the repository at this point in the history
  • Loading branch information
kt3k committed Jun 16, 2019
1 parent b8407c9 commit 66310e2
Show file tree
Hide file tree
Showing 8 changed files with 43 additions and 9 deletions.
24 changes: 20 additions & 4 deletions src/common/molecules/input-modal.js
Expand Up @@ -8,17 +8,28 @@ const CLOSE = 'mb/input-modal/CLOSE'
class InputModal {
@wired('.input-modal__input') input
@wired('.input-modal__message') message
@wired('.input-modal__save') saveButton
@wired('.input-modal__delete') deleteButton

@on(OPEN)
@on(Action.INPUT_MODAL_OPEN)
@nextTick
open ({ detail: { value, message, onSave } }) {
this.input.value = value
open ({ detail: { value, message, onSave, onDelete, needsInput = true } }) {
if (needsInput) {
this.input.classList.remove('hidden')
} else {
this.input.classList.add('hidden')
}
this.input.value = typeof value === 'string' ? value : ''
if (message) {
this.message.textContent = message
} else {
this.message.textContent = ''
}
this.onSaveHandler = onSave
this.saveButton.classList.toggle('hidden', typeof onSave !== 'function')
this.onDeleteHandler = onDelete
this.deleteButton.classList.toggle('hidden', typeof onDelete !== 'function')

this.el.parentElement.classList.add('is-visible')
}

Expand All @@ -27,9 +38,14 @@ class InputModal {
this.onSaveHandler(this.input.value)
}

@on.click.at('.input-modal__delete')
onDelete () {
this.onDeleteHandler(this.input.value)
}

@on.outside('click')
@on.click.at('.input-modal__cancel')
@on(CLOSE)
@on(Action.INPUT_MODAL_CLOSE)
close () {
this.el.parentElement.classList.remove('is-visible')
}
Expand Down
1 change: 1 addition & 0 deletions src/common/molecules/input-modal.njk
Expand Up @@ -10,6 +10,7 @@
</div>
<div class="input-modal__button-wrapper">
<button class="input-modal__save button is-primary u-ml8 t-text">ui.form.save</button>
<button class="input-modal__delete button is-danger u-ml8 t-text">ui.form.delete</button>
<button class="input-modal__cancel button t-text">ui.form.cancel</button>
</div>
</div>
Expand Down
7 changes: 6 additions & 1 deletion src/common/molecules/input-modal.scss
Expand Up @@ -8,6 +8,12 @@
border-radius: 8px;
box-shadow: 0 0 5px black;

&__input.hidden,
&__save.hidden,
&__delete.hidden {
display: none;
}

&__button-wrapper {
display: flex;
flex-direction: row-reverse;
Expand Down Expand Up @@ -36,4 +42,3 @@
opacity: 1;
}
}

4 changes: 4 additions & 0 deletions src/const/action-types.js
Expand Up @@ -38,3 +38,7 @@ exports.MODEL_UPDATE = 'mb/model/UPDATE'
// ui
exports.UI_SHOW = 'mb/ui/SHOW'
exports.UI_HIDE = 'mb/ui/HIDE'

// input-modal
exports.INPUT_MODAL_OPEN = 'mb/input-modal/OPEN'
exports.INPUT_MODAL_CLOSE = 'mb/input-modal/CLOSE'
3 changes: 1 addition & 2 deletions src/pages/chart-settings/chart-settings-page.js
Expand Up @@ -25,8 +25,7 @@ class ChartSettingsPage {
}

@on(OPEN_DELETE_MODAL)
@notifies(OPEN_DELETE_MODAL, '.is-open-modal-observer')
@notifies(Action.UI_SHOW, '.overlay-shadow')
@notifies(Action.INPUT_MODAL_OPEN, '.input-modal')
onOpenDeleteModal ({ detail }) {
return detail
}
Expand Down
9 changes: 8 additions & 1 deletion src/pages/chart-settings/edit-chart-tooltip.js
Expand Up @@ -19,11 +19,18 @@ class EditChartTooltip {

@on.click.at('.is-danger')
@emits(OPEN_DELETE_MODAL)
onClickDelete () {}
onClickDelete () {
return {
message: `Are you sure deleting "${this.typeName}"?`,
needsInput: false,
onDelete: () => alert('delete')
}
}

@on(OPEN_TOOLTIP)
onOpenTooltip ({ detail: { id, typeName, disabled } }) {
this.el.dataset.popperRef = `[id="${id}"]`
this.typeName = typeName
this.el.dispatchEvent(new CustomEvent(capsidPopper.UPDATE))
if (disabled) {
this.editButton.disabled = true
Expand Down
1 change: 1 addition & 0 deletions src/pages/chart-settings/index.njk
Expand Up @@ -67,4 +67,5 @@ js: pages/chart-settings/index.js
</p>
</div>
</div>
{% include src + '/common/molecules/input-modal.njk' %}
</main>
3 changes: 2 additions & 1 deletion src/pages/document-settings/title-area.js
Expand Up @@ -22,7 +22,8 @@ class TitleArea {
return {
message: t10.t('app.document.input_title'),
value: this.title.textContent,
onSave: value => this.onInput(value)
onSave: value => this.onInput(value),
needsInput: true
}
}

Expand Down

0 comments on commit 66310e2

Please sign in to comment.