<ModalDialog :label :shown :closed :title background="var(--main-bg)"> <ul class="post-privacy"> {{#each postPrivacyOptions as option}} <li class="post-privacy-item"> <button class="post-privacy-button" on:click="onClick(option)"> <svg> <use xlink:href="{{option.icon}}" /> </svg> <span> {{option.label}} </span> <svg class="{{isSelected(option, postPrivacy) ? '' : 'hidden'}}" aria-hidden="{{!isSelected(option, postPrivacy)}}"> <use xlink:href="#fa-check" /> </svg> </button> </li> {{/each}} </ul> </ModalDialog> <style> .post-privacy { list-style: none; width: 100%; border: 1px solid var(--settings-list-item-border); box-sizing: border-box; min-width: 300px; max-width: calc(100vw - 20px); } .post-privacy-item { border: 1px solid var(--settings-list-item-border); font-size: 1.2em; display: flex; } .post-privacy-item svg { width: 24px; height: 24px; fill: var(--svg-fill); } .post-privacy-button { flex: 1; padding: 20px; background: var(--settings-list-item-bg); border: none; margin: 0; display: flex; flex-direction: row; } .post-privacy-button span { flex: 1; text-align: left; margin-left: 20px; } .post-privacy-button:hover { background: var(--settings-list-item-bg-hover); } .post-privacy-button:active { background: var(--settings-list-item-bg-active); } </style> <script> import ModalDialog from './ModalDialog.html' import { store } from '../../_store/store' import { POST_PRIVACY_OPTIONS } from '../../_static/statuses' import { setPostPrivacy } from '../../_actions/postPrivacy' export default { components: { ModalDialog }, store: () => store, data: () => ({ postPrivacyOptions: POST_PRIVACY_OPTIONS }), helpers: { isSelected: (option, postPrivacy) => postPrivacy.key === option.key }, methods: { async show() { this.set({shown: true}) }, onClick(option) { setPostPrivacy(this.get('realm'), option.key) this.set({closed: true}) } }, computed: { composeData: ($currentComposeData, realm) => $currentComposeData[realm] || {}, postPrivacy: (postPrivacyKey) => { return POST_PRIVACY_OPTIONS.find(_ => _.key === postPrivacyKey) }, postPrivacyKey: (composeData, $currentVerifyCredentials) => { return composeData.postPrivacy || $currentVerifyCredentials.source.privacy } } } </script>