Skip to content

Commit 57e71b5

Browse files
committed
feat: add option to take a photo or upload an image
1 parent dc6efed commit 57e71b5

File tree

12 files changed

+209
-128
lines changed

12 files changed

+209
-128
lines changed
File renamed without changes.
File renamed without changes.

assets/external-link.svg

Lines changed: 17 additions & 0 deletions
Loading

assets/photo-camera.svg

Lines changed: 1 addition & 0 deletions
Loading
File renamed without changes.

assets/upload.svg

Lines changed: 1 addition & 0 deletions
Loading

assets/video-camera.svg

Lines changed: 28 additions & 0 deletions
Loading

css/index.css

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ img {
238238
display: none;
239239
}
240240

241-
.scanner-container .header .upload-image-btn {
241+
.scanner-container .header .upload-menu-btn {
242242
width: 30px;
243243
height: 30px;
244244
cursor: pointer;
@@ -247,15 +247,59 @@ img {
247247
cursor: pointer;
248248
}
249249

250-
.scanner-container .header .upload-image-icon {
250+
.scanner-container .header .upload-menu-icon {
251251
width: 24px;
252252
height: 24px;
253253
}
254254

255-
.scanner-container .header .upload-image-icon:hover {
255+
.scanner-container .header .upload-menu-list {
256+
position: absolute;
257+
top: 54px; /* Header height 46px + triangle 8px*/
258+
left: 70px;
259+
background-color: #000000;
260+
z-index: 3;
261+
display: none;
262+
border-right: #aaaaaa;
263+
}
264+
265+
/* Tooltip Triangle */
266+
.scanner-container .header .upload-menu-list::after {
267+
content: "";
268+
position: absolute;
269+
top: -16px; /* At the top of the information list */
270+
left: 1rem; /* 1rem margin */
271+
/* margin-left: -5px; */
272+
border-width: 8px;
273+
border-style: solid;
274+
border-color: transparent transparent #2b2b2b transparent; /* triangle */
275+
}
276+
277+
.scanner-container .header .upload-menu-list .menu-item {
278+
width: 100%;
279+
border-bottom: 1px solid rgb(55, 55, 55);
280+
padding: 10px;
281+
cursor: pointer;
282+
background-color: #2b2b2b;
283+
display: flex;
284+
align-items: center;
285+
justify-content: space-between;
286+
gap: 5px;
287+
overflow: hidden;
288+
user-select: none;
289+
color: #aaaaaa;
290+
font-size: 12px;
291+
font-family: OpenSans-Regular;
292+
text-decoration: none;
293+
}
294+
295+
.scanner-container .header .upload-menu-list .menu-item:hover {
256296
opacity: 0.8;
257297
}
258298

299+
.scanner-container .header .upload-menu-list .menu-item:last-child {
300+
border: unset;
301+
}
302+
259303
.result-container {
260304
position: absolute;
261305
width: 100%;

index.html

Lines changed: 19 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -47,45 +47,24 @@ <h3 style="font-weight: normal">Quick Start Options</h3>
4747
<div class="scanner-container">
4848
<div class="header">
4949
<div class="camera-selector" title="Select Camera">
50-
<svg data-v-10660718="" viewBox="0 0 29.308 17" class="camera-svg">
51-
<g data-v-10660718="" transform="translate(-346.925 -627.702)">
52-
<g data-v-10660718="" transform="translate(347.425 628.202)">
53-
<g data-v-10660718="">
54-
<path
55-
data-v-10660718=""
56-
d="M365.791,644.2H348.656a1.231,1.231,0,0,1-1.231-1.231V629.433a1.231,1.231,0,0,1,1.231-1.231h16a1.231,1.231,0,0,1,1.231,1.231v14.733"
57-
transform="translate(-347.425 -628.202)"
58-
fill="none"
59-
stroke="#aaa"
60-
stroke-linecap="round"
61-
stroke-linejoin="round"
62-
stroke-width="1"
63-
></path>
64-
<path
65-
data-v-10660718=""
66-
d="M371.81,640.606a1.23,1.23,0,0,1-1.781,1.1l-4.923-2.462a1.229,1.229,0,0,1-.681-1.1v-4.633a1.232,1.232,0,0,1,.681-1.1l4.923-2.462a1.231,1.231,0,0,1,1.781,1.1Z"
67-
transform="translate(-343.502 -627.828)"
68-
fill="none"
69-
stroke="#aaa"
70-
stroke-linecap="round"
71-
stroke-linejoin="round"
72-
stroke-width="1"
73-
></path>
74-
</g>
75-
</g>
76-
</g>
77-
</svg>
78-
<img class="down" src="./assets/arrow-down 1.svg" alt="down" />
79-
<img class="up" src="./assets/arrow-up 1.svg" alt="up" />
50+
<img class="camera-svg" src="./assets/video-camera.svg" alt="camera" />
51+
<img class="down" src="./assets/arrow-down.svg" alt="down" />
52+
<img class="up" src="./assets/arrow-up.svg" alt="up" />
8053
</div>
8154
<div class="camera-list"></div>
82-
<input type="file" class="upload-image-input" style="display: none" />
83-
<div
84-
class="upload-image-btn"
85-
onclick="document.querySelector('.upload-image-input').click()"
86-
title="Upload Image"
87-
>
88-
<img class="upload-image-icon" src="./assets/upload-image.svg" alt="upload-image" />
55+
<div class="upload-menu-btn">
56+
<img class="upload-menu-icon" src="./assets/upload-menu.svg" alt="upload-menu" />
57+
</div>
58+
<div class="upload-menu-list">
59+
<div class="menu-item take-photo-btn">
60+
Take a photo
61+
<img src="./assets/photo-camera.svg" alt="take-photo-icon" />
62+
</div>
63+
<div class="menu-item upload-image-btn" onclick="document.querySelector('.upload-image-input').click()">
64+
Upload an image
65+
<img src="./assets/upload.svg" alt="upload-icon" />
66+
</div>
67+
<input type="file" class="upload-image-input" style="display: none" />
8968
</div>
9069
<div class="music-container">
9170
<img class="music" src="./assets/music-selected.svg" alt="music" title="Turn sound off" />
@@ -117,67 +96,19 @@ <h3 style="font-weight: normal">Quick Start Options</h3>
11796
target="_blank"
11897
>
11998
About
120-
<svg
121-
xmlns="http://www.w3.org/2000/svg"
122-
class="icon icon-tabler icon-tabler-external-link"
123-
width="18"
124-
height="18"
125-
viewBox="0 0 24 24"
126-
stroke-width="1.5"
127-
stroke="#aaaaaa"
128-
fill="none"
129-
stroke-linecap="round"
130-
stroke-linejoin="round"
131-
>
132-
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
133-
<path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6" />
134-
<path d="M11 13l9 -9" />
135-
<path d="M15 4h5v5" />
136-
</svg>
99+
<img src="./assets/external-link.svg" alt="link-icon" />
137100
</a>
138101
<a class="information-item" href="https://github.com/Dynamsoft/mrz-scanner-javascript/" target="_blank">
139102
Github Projects
140-
<svg
141-
xmlns="http://www.w3.org/2000/svg"
142-
class="icon icon-tabler icon-tabler-external-link"
143-
width="18"
144-
height="18"
145-
viewBox="0 0 24 24"
146-
stroke-width="1.5"
147-
stroke="#aaaaaa"
148-
fill="none"
149-
stroke-linecap="round"
150-
stroke-linejoin="round"
151-
>
152-
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
153-
<path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6" />
154-
<path d="M11 13l9 -9" />
155-
<path d="M15 4h5v5" />
156-
</svg>
103+
<img src="./assets/external-link.svg" alt="link-icon" />
157104
</a>
158105
<a
159106
class="information-item"
160107
href="https://www.dynamsoft.com/contact/?utm_source=mrzdemo&package=js"
161108
target="_blank"
162109
>
163110
Contact Us
164-
<svg
165-
xmlns="http://www.w3.org/2000/svg"
166-
class="icon icon-tabler icon-tabler-external-link"
167-
width="18"
168-
height="18"
169-
viewBox="0 0 24 24"
170-
stroke-width="1.5"
171-
stroke="#aaaaaa"
172-
fill="none"
173-
stroke-linecap="round"
174-
stroke-linejoin="round"
175-
>
176-
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
177-
<path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6" />
178-
<path d="M11 13l9 -9" />
179-
<path d="M15 4h5v5" />
180-
</svg>
111+
<img src="./assets/external-link.svg" alt="link-icon" />
181112
</a>
182113
</div>
183114
<span id="notification"></span>

js/const.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,15 @@ const homePage = document.querySelector(".home-page");
2828

2929
const cameraViewContainer = document.querySelector(".camera-view-container");
3030

31-
const uploadImageInput = document.querySelector(".upload-image-input");
32-
3331
const cameraListContainer = document.querySelector(".camera-list");
3432
const cameraSelector = document.querySelector(".camera-selector");
3533

34+
const uploadMenuBtn = document.querySelector(".upload-menu-btn");
35+
const uploadMenuList = document.querySelector(".upload-menu-list");
36+
const uploadImageBtn = document.querySelector(".upload-image-btn");
37+
const uploadImageInput = document.querySelector(".upload-image-input");
38+
const takePhotoBtn = document.querySelector(".take-photo-btn");
39+
3640
const informationBtn = document.querySelectorAll(".information-btn");
3741
const informationListContainer = document.querySelector(".information-list");
3842

0 commit comments

Comments
 (0)