From f60e9b9c9f32e8133b8e63042f08403db3dde7b3 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Wed, 13 Oct 2021 10:05:18 -0700 Subject: [PATCH] Sticker upload affordances, fix 'recent media' --- _locales/en/messages.json | 8 ++++++++ sticker-creator/components/StickerFrame.tsx | 8 +++++++- sticker-creator/components/StickerGrid.tsx | 7 ++++++- sticker-creator/elements/DropZone.stories.tsx | 2 +- sticker-creator/elements/DropZone.tsx | 4 +++- sticker-creator/elements/LabeledCheckbox.scss | 9 ++++++++- ts/views/conversation_view.ts | 2 +- 7 files changed, 34 insertions(+), 6 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 9bd0ed990b..013b90414d 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3047,6 +3047,14 @@ "message": "Add your stickers", "description": "Title for the drop stage of the sticker creator" }, + "StickerCreator--DropStage--removeSticker": { + "message": "Remove sticker", + "description": "Label for the X button used to remove a staged sticker" + }, + "StickerCreator--DropStage--dragDrop": { + "message": "Click or drag/drop a file to add a sticker", + "description": "Shown on the + section of the file addition stage of sticker pack creation" + }, "StickerCreator--DropStage--help": { "message": "Stickers must be in PNG, APNG, or WebP format with a transparent background and 512x512 pixels. Recommended margin is 16px.", "description": "Help text for the drop stage of the sticker creator" diff --git a/sticker-creator/components/StickerFrame.tsx b/sticker-creator/components/StickerFrame.tsx index 94d4c178de..45a5362c82 100644 --- a/sticker-creator/components/StickerFrame.tsx +++ b/sticker-creator/components/StickerFrame.tsx @@ -202,11 +202,17 @@ export const StickerFrame = React.memo(
) : null} {mode === 'add' && onDrop ? ( - + ) : null} {mode === 'removable' ? (
); diff --git a/sticker-creator/elements/DropZone.stories.tsx b/sticker-creator/elements/DropZone.stories.tsx index 5e18dcd283..3d53b91d85 100644 --- a/sticker-creator/elements/DropZone.stories.tsx +++ b/sticker-creator/elements/DropZone.stories.tsx @@ -8,5 +8,5 @@ import { action } from '@storybook/addon-actions'; import { DropZone } from './DropZone'; storiesOf('Sticker Creator/elements', module).add('DropZone', () => { - return ; + return ; }); diff --git a/sticker-creator/elements/DropZone.tsx b/sticker-creator/elements/DropZone.tsx index 0060eb1ebd..1baa3242d5 100644 --- a/sticker-creator/elements/DropZone.tsx +++ b/sticker-creator/elements/DropZone.tsx @@ -9,6 +9,7 @@ import { useStickerDropzone } from '../util/useStickerDropzone'; export type Props = { readonly inner?: boolean; + readonly label: string; onDrop(files: Array): unknown; onDragActive?(active: boolean): unknown; }; @@ -26,7 +27,7 @@ const getClassName = ({ inner }: Props, isDragActive: boolean) => { }; export const DropZone: React.ComponentType = props => { - const { inner, onDrop, onDragActive } = props; + const { inner, label, onDrop, onDragActive } = props; const i18n = useI18n(); const handleDrop = React.useCallback( @@ -50,6 +51,7 @@ export const DropZone: React.ComponentType = props => {
diff --git a/sticker-creator/elements/LabeledCheckbox.scss b/sticker-creator/elements/LabeledCheckbox.scss index 6243070e04..b61f2d97ec 100644 --- a/sticker-creator/elements/LabeledCheckbox.scss +++ b/sticker-creator/elements/LabeledCheckbox.scss @@ -8,6 +8,14 @@ display: flex; flex-direction: row; align-items: center; + + padding: 2px; + + // We'd really like to use focus-within-visible or :has(:focus-visible), to ensure that + // this doesn't show when using the mouse, but neither are ready yet! + &:focus-within { + outline: 2px solid -webkit-focus-ring-color; + } } .input { @@ -48,6 +56,5 @@ .label { margin-left: 6px; position: relative; - top: 1px; user-select: none; } diff --git a/ts/views/conversation_view.ts b/ts/views/conversation_view.ts index fe2cb90972..42049684ef 100644 --- a/ts/views/conversation_view.ts +++ b/ts/views/conversation_view.ts @@ -1870,7 +1870,7 @@ export class ConversationView extends window.Backbone.View { } showAllMedia(): void { - if (this.panels && this.panels.length) { + if (document.querySelectorAll('.module-media-gallery').length) { return; }