@stonecrop/beam 0.31.0 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/index.css +645 -1
- package/dist/beam.js +674 -591
- package/dist/beam.js.map +1 -1
- package/dist/src/components/ActionFooter.vue.d.ts +18 -0
- package/dist/src/components/ActionFooter.vue.d.ts.map +1 -0
- package/dist/src/components/BeamArrow.vue.d.ts +7 -0
- package/dist/src/components/BeamArrow.vue.d.ts.map +1 -0
- package/dist/src/components/BeamBtn.vue.d.ts +14 -0
- package/dist/src/components/BeamBtn.vue.d.ts.map +1 -0
- package/dist/src/components/BeamDayDivider.vue.d.ts +17 -0
- package/dist/src/components/BeamDayDivider.vue.d.ts.map +1 -0
- package/dist/src/components/BeamFilter.vue.d.ts +13 -0
- package/dist/src/components/BeamFilter.vue.d.ts.map +1 -0
- package/dist/src/components/BeamFilterOption.vue.d.ts +13 -0
- package/dist/src/components/BeamFilterOption.vue.d.ts.map +1 -0
- package/dist/src/components/BeamHeading.vue.d.ts +14 -0
- package/dist/src/components/BeamHeading.vue.d.ts.map +1 -0
- package/dist/src/components/BeamMetadata.vue.d.ts +23 -0
- package/dist/src/components/BeamMetadata.vue.d.ts.map +1 -0
- package/dist/src/components/BeamModal.vue.d.ts +26 -0
- package/dist/src/components/BeamModal.vue.d.ts.map +1 -0
- package/dist/src/components/BeamModalOutlet.vue.d.ts +10 -0
- package/dist/src/components/BeamModalOutlet.vue.d.ts.map +1 -0
- package/dist/src/components/BeamProgress.vue.d.ts +10 -0
- package/dist/src/components/BeamProgress.vue.d.ts.map +1 -0
- package/dist/src/components/Confirm.vue.d.ts +4 -0
- package/dist/src/components/Confirm.vue.d.ts.map +1 -0
- package/dist/src/components/FixedTop.vue.d.ts +14 -0
- package/dist/src/components/FixedTop.vue.d.ts.map +1 -0
- package/dist/src/components/ItemCheck.vue.d.ts +11 -0
- package/dist/src/components/ItemCheck.vue.d.ts.map +1 -0
- package/dist/src/components/ItemCount.vue.d.ts +19 -0
- package/dist/src/components/ItemCount.vue.d.ts.map +1 -0
- package/dist/src/components/ListAnchor.vue.d.ts +17 -0
- package/dist/src/components/ListAnchor.vue.d.ts.map +1 -0
- package/dist/src/components/ListItem.vue.d.ts +12 -0
- package/dist/src/components/ListItem.vue.d.ts.map +1 -0
- package/dist/src/components/ListView.vue.d.ts +14 -0
- package/dist/src/components/ListView.vue.d.ts.map +1 -0
- package/dist/src/components/Navbar.vue.d.ts +20 -0
- package/dist/src/components/Navbar.vue.d.ts.map +1 -0
- package/dist/src/components/ScanInput.vue.d.ts +12 -0
- package/dist/src/components/ScanInput.vue.d.ts.map +1 -0
- package/dist/src/components/SegmentedDisplay.vue.d.ts +11 -0
- package/dist/src/components/SegmentedDisplay.vue.d.ts.map +1 -0
- package/dist/src/components/SplitColumn.vue.d.ts +21 -0
- package/dist/src/components/SplitColumn.vue.d.ts.map +1 -0
- package/dist/src/components/ToggleArrow.vue.d.ts +7 -0
- package/dist/src/components/ToggleArrow.vue.d.ts.map +1 -0
- package/dist/{tsdoc-metadata.json → src/tsdoc-metadata.json} +1 -1
- package/package.json +31 -26
- package/dist/beam.d.ts +0 -167
- package/dist/beam.tsbuildinfo +0 -1
- package/dist/src/composables/mqtt.js +0 -85
- package/dist/src/index.js +0 -56
- package/dist/src/types/index.js +0 -0
- package/src/components/ActionFooter.vue +0 -31
- package/src/components/BeamArrow.vue +0 -37
- package/src/components/BeamBtn.vue +0 -32
- package/src/components/BeamDayDivider.vue +0 -60
- package/src/components/BeamFilter.vue +0 -58
- package/src/components/BeamFilterOption.vue +0 -150
- package/src/components/BeamHeading.vue +0 -17
- package/src/components/BeamMetadata.vue +0 -118
- package/src/components/BeamModal.vue +0 -28
- package/src/components/BeamModalOutlet.vue +0 -18
- package/src/components/BeamProgress.vue +0 -23
- package/src/components/Confirm.vue +0 -29
- package/src/components/FixedTop.vue +0 -13
- package/src/components/ItemCheck.vue +0 -76
- package/src/components/ItemCount.vue +0 -55
- package/src/components/ListAnchor.vue +0 -17
- package/src/components/ListItem.vue +0 -85
- package/src/components/ListView.vue +0 -62
- package/src/components/Navbar.vue +0 -42
- package/src/components/ScanInput.vue +0 -23
- package/src/components/SegmentedDisplay.vue +0 -55
- package/src/components/SplitColumn.vue +0 -49
- package/src/components/ToggleArrow.vue +0 -35
- package/src/composables/mqtt.ts +0 -102
- package/src/index.ts +0 -87
- package/src/onscan.d.ts +0 -45
- package/src/shims-vue.d.ts +0 -7
- package/src/types/index.ts +0 -77
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<button class="beam_btn">
|
|
3
|
-
<slot>Action</slot>
|
|
4
|
-
</button>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<style scoped>
|
|
8
|
-
.beam_btn {
|
|
9
|
-
font-size: 0.875rem;
|
|
10
|
-
text-align: center;
|
|
11
|
-
padding: 0.3125rem 0.75rem;
|
|
12
|
-
border: 1px solid var(--sc-btn-border);
|
|
13
|
-
color: var(--sc-btn-label-color);
|
|
14
|
-
background-color: var(--sc-btn-color);
|
|
15
|
-
cursor: pointer;
|
|
16
|
-
font-family: var(--sc-font-family);
|
|
17
|
-
|
|
18
|
-
&:hover,
|
|
19
|
-
&:active {
|
|
20
|
-
background-color: var(--sc-btn-hover);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
</style>
|
|
24
|
-
<style>
|
|
25
|
-
.beam_btn a:link,
|
|
26
|
-
.beam_btn a:visited,
|
|
27
|
-
.beam_btn a:hover,
|
|
28
|
-
.beam_btn a:active {
|
|
29
|
-
text-decoration: none;
|
|
30
|
-
color: var(--sc-btn-label-color);
|
|
31
|
-
}
|
|
32
|
-
</style>
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="beam_day-divider">
|
|
3
|
-
<h2>{{ date }}</h2>
|
|
4
|
-
</div>
|
|
5
|
-
|
|
6
|
-
<slot></slot>
|
|
7
|
-
</template>
|
|
8
|
-
|
|
9
|
-
<script setup lang="ts">
|
|
10
|
-
import { computed } from 'vue'
|
|
11
|
-
|
|
12
|
-
import type { ListViewItem } from '../types'
|
|
13
|
-
|
|
14
|
-
defineSlots<{ default(): any }>()
|
|
15
|
-
const { item } = defineProps<{ item: ListViewItem }>()
|
|
16
|
-
|
|
17
|
-
const date = computed(() => {
|
|
18
|
-
if (!item.date || isNaN(Date.parse(item.date))) {
|
|
19
|
-
return item.date
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// if needed, the user can specify a Date format flag that will dictate how the output is formatted,
|
|
23
|
-
// defaults to toDateString(); using switch/case here in case more values wanted to be added
|
|
24
|
-
const dateObj = new Date(item.date)
|
|
25
|
-
if (item.dateFormat) {
|
|
26
|
-
switch (item.dateFormat.toLowerCase()) {
|
|
27
|
-
case 'iso':
|
|
28
|
-
return dateObj.toISOString()
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return dateObj.toDateString()
|
|
32
|
-
})
|
|
33
|
-
</script>
|
|
34
|
-
|
|
35
|
-
<style scoped>
|
|
36
|
-
.beam_day-divider {
|
|
37
|
-
text-align: left;
|
|
38
|
-
padding: 1rem;
|
|
39
|
-
background: var(--sc-cell-changed-color);
|
|
40
|
-
border-bottom: 1px solid var(--sc-row-border-color);
|
|
41
|
-
box-sizing: border-box;
|
|
42
|
-
margin-bottom: 1rem;
|
|
43
|
-
|
|
44
|
-
/* reverse margins only for day-divider elements in list */
|
|
45
|
-
margin-left: calc(-1 * var(--sc-list-margin));
|
|
46
|
-
margin-right: calc(-1 * var(--sc-list-margin));
|
|
47
|
-
|
|
48
|
-
& h2 {
|
|
49
|
-
text-align: left;
|
|
50
|
-
font-size: 1rem;
|
|
51
|
-
color: var(--sc-primary-text-color);
|
|
52
|
-
margin: 0;
|
|
53
|
-
padding: 0;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.beam_day-divider:first-of-type {
|
|
58
|
-
margin-top: 0;
|
|
59
|
-
}
|
|
60
|
-
</style>
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="beam_filters">
|
|
3
|
-
<div class="beam_filters-heading" @click="isFilterExpanded = !isFilterExpanded">
|
|
4
|
-
<ToggleArrow :open="isFilterExpanded" />
|
|
5
|
-
<BeamHeading>Filter</BeamHeading>
|
|
6
|
-
</div>
|
|
7
|
-
|
|
8
|
-
<div v-show="isFilterExpanded" class="beam_filters-options">
|
|
9
|
-
<slot />
|
|
10
|
-
</div>
|
|
11
|
-
</div>
|
|
12
|
-
</template>
|
|
13
|
-
|
|
14
|
-
<script setup lang="ts">
|
|
15
|
-
import { ref } from 'vue'
|
|
16
|
-
|
|
17
|
-
defineSlots<{ default(): any }>()
|
|
18
|
-
|
|
19
|
-
const isFilterExpanded = ref(false)
|
|
20
|
-
</script>
|
|
21
|
-
|
|
22
|
-
<style scoped>
|
|
23
|
-
.beam_filters {
|
|
24
|
-
background-color: var(--sc-primary-color);
|
|
25
|
-
border-bottom: 1px solid var(--sc-row-border-color);
|
|
26
|
-
box-sizing: border-box;
|
|
27
|
-
min-height: 2em;
|
|
28
|
-
overflow: visible;
|
|
29
|
-
padding: 0.625rem;
|
|
30
|
-
transition: all 0.2s ease-in-out;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.beam_filters-heading {
|
|
34
|
-
align-items: center;
|
|
35
|
-
background-color: var(--sc-primary-color);
|
|
36
|
-
box-sizing: border-box;
|
|
37
|
-
cursor: pointer;
|
|
38
|
-
display: flex;
|
|
39
|
-
font-size: 1rem;
|
|
40
|
-
|
|
41
|
-
& > h1 {
|
|
42
|
-
font-size: 1rem;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.beam_filters-options {
|
|
47
|
-
display: flex;
|
|
48
|
-
flex-direction: row;
|
|
49
|
-
justify-content: flex-start;
|
|
50
|
-
margin: 1rem 0;
|
|
51
|
-
padding: 0 1rem;
|
|
52
|
-
gap: 1rem;
|
|
53
|
-
|
|
54
|
-
@media (max-width: 479px) {
|
|
55
|
-
flex-direction: column;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
</style>
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div v-on-click-outside="() => (isMenuOpen = false)" class="beam_filter-container">
|
|
3
|
-
<BeamHeading class="beam_filter-option-heading">{{ title }}</BeamHeading>
|
|
4
|
-
<div class="beam_filter-option" @click="isMenuOpen = !isMenuOpen">
|
|
5
|
-
<div class="beam_filter-option-select">
|
|
6
|
-
<div class="beam_filter-arrow">
|
|
7
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35.36 70.71">
|
|
8
|
-
<polygon points="0 70.71 0 0 35.36 35.36 0 70.71" />
|
|
9
|
-
</svg>
|
|
10
|
-
</div>
|
|
11
|
-
<div class="beam_filter-label">
|
|
12
|
-
<label>{{ label }}</label>
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
<ul v-if="isMenuOpen" ref="menu" class="beam_filter-select-menu">
|
|
17
|
-
<li
|
|
18
|
-
v-for="choice in choices"
|
|
19
|
-
:key="choice.value"
|
|
20
|
-
:class="{ selected: label == choice.label }"
|
|
21
|
-
:data-value="choice.value"
|
|
22
|
-
class="beam_filter-select-option"
|
|
23
|
-
@click="selectChoice(choice)">
|
|
24
|
-
{{ choice.label }}
|
|
25
|
-
</li>
|
|
26
|
-
</ul>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
</template>
|
|
30
|
-
|
|
31
|
-
<script setup lang="ts">
|
|
32
|
-
import { vOnClickOutside } from '@vueuse/components'
|
|
33
|
-
import { ref } from 'vue'
|
|
34
|
-
|
|
35
|
-
import { BeamFilterChoice } from '../types'
|
|
36
|
-
|
|
37
|
-
const emit = defineEmits<{ select: [choice: BeamFilterChoice] }>()
|
|
38
|
-
|
|
39
|
-
const { choices, title = 'title' } = defineProps<{
|
|
40
|
-
choices: BeamFilterChoice[]
|
|
41
|
-
title?: string
|
|
42
|
-
}>()
|
|
43
|
-
|
|
44
|
-
const isMenuOpen = ref(false)
|
|
45
|
-
const label = ref(choices[0].label)
|
|
46
|
-
const value = ref(choices[0].value)
|
|
47
|
-
|
|
48
|
-
const selectChoice = (data: BeamFilterChoice) => {
|
|
49
|
-
label.value = data.label
|
|
50
|
-
value.value = data.value
|
|
51
|
-
emit('select', data)
|
|
52
|
-
}
|
|
53
|
-
</script>
|
|
54
|
-
|
|
55
|
-
<style scoped>
|
|
56
|
-
.beam_filter-option {
|
|
57
|
-
cursor: pointer;
|
|
58
|
-
position: relative;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.beam_filter-option-heading {
|
|
62
|
-
font-size: 1rem !important;
|
|
63
|
-
padding-bottom: 0.25rem;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
.beam_filter-option-select {
|
|
67
|
-
align-items: stretch;
|
|
68
|
-
appearance: none;
|
|
69
|
-
background-color: white;
|
|
70
|
-
border: 1px solid var(--sc-row-border-color);
|
|
71
|
-
color: var(--sc-primary-text-color);
|
|
72
|
-
display: flex;
|
|
73
|
-
font-family: var(--sc-font-family);
|
|
74
|
-
font-size: 0.8rem;
|
|
75
|
-
font-weight: bold;
|
|
76
|
-
position: relative;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
label {
|
|
80
|
-
cursor: pointer;
|
|
81
|
-
padding: 0.5rem;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.beam_filter-arrow {
|
|
85
|
-
background: var(--sc-primary-color);
|
|
86
|
-
color: var(--sc-primary-text-color);
|
|
87
|
-
cursor: pointer;
|
|
88
|
-
display: flex;
|
|
89
|
-
align-items: center;
|
|
90
|
-
width: 5px;
|
|
91
|
-
padding: 0.5rem 0.7rem;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.beam_filter-label {
|
|
95
|
-
display: flex;
|
|
96
|
-
align-items: center;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
svg {
|
|
100
|
-
fill: var(--sc-primary-text-color);
|
|
101
|
-
width: 5px;
|
|
102
|
-
transform: rotate(90deg);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.beam_filter-select-menu {
|
|
106
|
-
background-color: white;
|
|
107
|
-
border-top: none;
|
|
108
|
-
border: 1px solid var(--sc-row-border-color);
|
|
109
|
-
box-sizing: border-box;
|
|
110
|
-
left: 0;
|
|
111
|
-
list-style: none;
|
|
112
|
-
margin: 0;
|
|
113
|
-
max-height: 200px;
|
|
114
|
-
overflow-y: scroll;
|
|
115
|
-
padding: 0rem;
|
|
116
|
-
position: absolute;
|
|
117
|
-
width: 100%;
|
|
118
|
-
z-index: 100;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
.beam_filter-select-option {
|
|
122
|
-
font-size: 0.8rem;
|
|
123
|
-
font-family: var(--sc-font-family);
|
|
124
|
-
font-weight: bold;
|
|
125
|
-
color: var(--sc-primary-text-color);
|
|
126
|
-
border-bottom: 1px solid var(--sc-row-border-color);
|
|
127
|
-
padding: 0.5rem;
|
|
128
|
-
&:hover {
|
|
129
|
-
background: var(--sc-primary-color);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
.selected {
|
|
134
|
-
background: var(--sc-row-border-color);
|
|
135
|
-
|
|
136
|
-
&:hover {
|
|
137
|
-
background: var(--sc-row-border-color);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
.beam_filter-container {
|
|
141
|
-
flex-grow: 1;
|
|
142
|
-
max-width: 300px;
|
|
143
|
-
width: 50%;
|
|
144
|
-
|
|
145
|
-
@media (max-width: 479px) {
|
|
146
|
-
width: 100%;
|
|
147
|
-
max-width: 100%;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
</style>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<h1 class="beam_header">
|
|
3
|
-
<slot></slot>
|
|
4
|
-
</h1>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<style scoped>
|
|
8
|
-
.beam_header {
|
|
9
|
-
border: 1px solid transparent;
|
|
10
|
-
text-align: left;
|
|
11
|
-
font-size: 1.125rem;
|
|
12
|
-
color: var(--sc-primary-text-color);
|
|
13
|
-
margin: 0;
|
|
14
|
-
padding: 0;
|
|
15
|
-
font-family: var(--sc-font-family);
|
|
16
|
-
}
|
|
17
|
-
</style>
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="beam_metadata">
|
|
3
|
-
<div class="beam_metadata_content">
|
|
4
|
-
<slot>
|
|
5
|
-
<div class="beam_metadata_header beam_metadata--two-column"></div>
|
|
6
|
-
<div class="beam_metadata_block">
|
|
7
|
-
<p class="beam_metadata_heading">
|
|
8
|
-
Status:
|
|
9
|
-
<span :class="{ alert: !order.complete }" class="beam_metadata--normal">{{
|
|
10
|
-
order.complete ? 'Complete' : 'In Progress'
|
|
11
|
-
}}</span>
|
|
12
|
-
</p>
|
|
13
|
-
</div>
|
|
14
|
-
<div class="beam_metadata_shipping beam_metadata_block">
|
|
15
|
-
<div class="beam_metadata_source">
|
|
16
|
-
<p class="beam_metadata_heading">Source</p>
|
|
17
|
-
</div>
|
|
18
|
-
|
|
19
|
-
<div class="beam_metadata_source">
|
|
20
|
-
<p class="beam_metadata_heading">Receiving</p>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
</slot>
|
|
24
|
-
</div>
|
|
25
|
-
<hr />
|
|
26
|
-
</div>
|
|
27
|
-
</template>
|
|
28
|
-
|
|
29
|
-
<script setup lang="ts">
|
|
30
|
-
defineProps<{
|
|
31
|
-
order: {
|
|
32
|
-
orderNumber: string
|
|
33
|
-
product: string
|
|
34
|
-
quantity: number
|
|
35
|
-
total: number
|
|
36
|
-
complete: boolean
|
|
37
|
-
}
|
|
38
|
-
}>()
|
|
39
|
-
</script>
|
|
40
|
-
|
|
41
|
-
<style scoped>
|
|
42
|
-
.beam_metadata {
|
|
43
|
-
/* margin:3.125rem; */
|
|
44
|
-
box-sizing: border-box;
|
|
45
|
-
display: flex;
|
|
46
|
-
flex-direction: column;
|
|
47
|
-
max-height: 100vh;
|
|
48
|
-
color: var(--sc-primary-text-color);
|
|
49
|
-
font-family: var(--sc-font-family);
|
|
50
|
-
}
|
|
51
|
-
.beam_metadata_content {
|
|
52
|
-
padding-top: 10px;
|
|
53
|
-
}
|
|
54
|
-
.beam_metadata_header {
|
|
55
|
-
display: flex;
|
|
56
|
-
flex-direction: row;
|
|
57
|
-
align-items: baseline;
|
|
58
|
-
padding: 0px 30px 0px 30px;
|
|
59
|
-
justify-content: space-between;
|
|
60
|
-
}
|
|
61
|
-
.beam_metadata_count {
|
|
62
|
-
font-size: 1.5rem;
|
|
63
|
-
|
|
64
|
-
& p {
|
|
65
|
-
margin: 0;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
.beam_metadata_header-order-num {
|
|
69
|
-
font-weight: bold;
|
|
70
|
-
font-size: 1.5rem;
|
|
71
|
-
}
|
|
72
|
-
.beam_metadata_block {
|
|
73
|
-
padding: 0px 30px;
|
|
74
|
-
margin: 10px 0;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.beam_metadata_shipping {
|
|
78
|
-
display: flex;
|
|
79
|
-
flex-direction: row;
|
|
80
|
-
align-items: baseline;
|
|
81
|
-
justify-content: space-between;
|
|
82
|
-
|
|
83
|
-
& p {
|
|
84
|
-
line-height: 1.5rem;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
@media screen and (max-width: 600px) {
|
|
88
|
-
.beam_metadata_shipping {
|
|
89
|
-
flex-direction: column;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.beam_metadata_component_header {
|
|
94
|
-
display: flex;
|
|
95
|
-
flex-direction: row;
|
|
96
|
-
justify-content: space-between;
|
|
97
|
-
align-items: baseline;
|
|
98
|
-
}
|
|
99
|
-
.beam_metadata_components {
|
|
100
|
-
overflow: scroll;
|
|
101
|
-
}
|
|
102
|
-
hr {
|
|
103
|
-
display: block;
|
|
104
|
-
height: 1px;
|
|
105
|
-
border: 0;
|
|
106
|
-
border-top: 1px solid var(--sc-row-border-color);
|
|
107
|
-
margin: 1em 0;
|
|
108
|
-
padding: 0;
|
|
109
|
-
}
|
|
110
|
-
</style>
|
|
111
|
-
<style>
|
|
112
|
-
.beam_metadata_heading {
|
|
113
|
-
font-size: 1.125rem;
|
|
114
|
-
font-weight: bold;
|
|
115
|
-
margin: 0.625rem 0;
|
|
116
|
-
color: var(--sc-primary-text-color);
|
|
117
|
-
}
|
|
118
|
-
</style>
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<portal to="beam_modal_outlet">
|
|
3
|
-
<div v-show="showModal" class="beam_modal">
|
|
4
|
-
<BeamBtn @click="$emit('closemodal')">Close Modal</BeamBtn>
|
|
5
|
-
<slot @closemodal="$emit('closemodal')" @confirmmodal="$emit('confirmmodal')"></slot>
|
|
6
|
-
</div>
|
|
7
|
-
</portal>
|
|
8
|
-
</template>
|
|
9
|
-
|
|
10
|
-
<script setup lang="ts">
|
|
11
|
-
defineEmits<{ closemodal: []; confirmmodal: [] }>()
|
|
12
|
-
defineProps<{ showModal: boolean }>()
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<style scoped>
|
|
16
|
-
.beam_modal {
|
|
17
|
-
position: fixed;
|
|
18
|
-
top: 0;
|
|
19
|
-
right: 0;
|
|
20
|
-
bottom: 0;
|
|
21
|
-
left: 0;
|
|
22
|
-
background-color: rgba(0, 0, 0, 0.5);
|
|
23
|
-
backdrop-filter: blur(2px);
|
|
24
|
-
z-index: 200;
|
|
25
|
-
text-align: center;
|
|
26
|
-
padding: 1.25rem;
|
|
27
|
-
}
|
|
28
|
-
</style>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<portal-target name="beam_modal_outlet" />
|
|
3
|
-
</template>
|
|
4
|
-
|
|
5
|
-
<script setup lang="ts">
|
|
6
|
-
/* const emit = */ defineEmits<{
|
|
7
|
-
confirmmodal: []
|
|
8
|
-
closemodal: []
|
|
9
|
-
}>()
|
|
10
|
-
|
|
11
|
-
// const confirmModal = () => {
|
|
12
|
-
// emit('confirmmodal')
|
|
13
|
-
// }
|
|
14
|
-
|
|
15
|
-
// const closeModal = () => {
|
|
16
|
-
// emit('closemodal')
|
|
17
|
-
// }
|
|
18
|
-
</script>
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<p class="beam_metadata_heading">
|
|
3
|
-
{{ label }}: <span :class="{ 'beam--alert': !complete }" class="beam--normal">{{ statusMessage }}</span>
|
|
4
|
-
</p>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<script setup lang="ts">
|
|
8
|
-
import { computed } from 'vue'
|
|
9
|
-
|
|
10
|
-
const {
|
|
11
|
-
label = 'Status',
|
|
12
|
-
progressMessage = 'In Progress',
|
|
13
|
-
completeMessage = 'Complete',
|
|
14
|
-
complete = false,
|
|
15
|
-
} = defineProps<{
|
|
16
|
-
label?: string
|
|
17
|
-
progressMessage?: string
|
|
18
|
-
completeMessage?: string
|
|
19
|
-
complete?: boolean
|
|
20
|
-
}>()
|
|
21
|
-
|
|
22
|
-
const statusMessage = computed(() => (complete ? completeMessage : progressMessage))
|
|
23
|
-
</script>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="beam_modal-confirm">
|
|
3
|
-
<h2>Would you like to continue?</h2>
|
|
4
|
-
<BeamBtn @click="$emit('confirmmodal')">Yes</BeamBtn>
|
|
5
|
-
<BeamBtn @click="$emit('confirmmodal')">No</BeamBtn>
|
|
6
|
-
</div>
|
|
7
|
-
</template>
|
|
8
|
-
|
|
9
|
-
<style scoped>
|
|
10
|
-
.beam_modal-confirm {
|
|
11
|
-
background: #ffffff;
|
|
12
|
-
padding: 1.25rem;
|
|
13
|
-
width: 80%;
|
|
14
|
-
max-width: 400px;
|
|
15
|
-
position: absolute;
|
|
16
|
-
top: 50%;
|
|
17
|
-
left: 50%;
|
|
18
|
-
transform: translate(-50%, -50%);
|
|
19
|
-
|
|
20
|
-
& button {
|
|
21
|
-
margin: 0.625rem;
|
|
22
|
-
}
|
|
23
|
-
& h2 {
|
|
24
|
-
border-bottom: 1px solid var(--sc-row-border-color);
|
|
25
|
-
padding-bottom: 0.625rem;
|
|
26
|
-
color: var(--sc-primary-text-color);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
</style>
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<label class="container">
|
|
3
|
-
<input v-model="value" type="checkbox" tabindex="-1" />
|
|
4
|
-
<div class="checkmark" tabindex="0"></div>
|
|
5
|
-
</label>
|
|
6
|
-
</template>
|
|
7
|
-
|
|
8
|
-
<script setup lang="ts">
|
|
9
|
-
const value = defineModel<boolean>({ default: false })
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<style scoped>
|
|
13
|
-
.container {
|
|
14
|
-
display: block;
|
|
15
|
-
position: relative;
|
|
16
|
-
padding-left: 2.5ch;
|
|
17
|
-
margin: 0;
|
|
18
|
-
margin-top: 0.5rem;
|
|
19
|
-
cursor: pointer;
|
|
20
|
-
font-size: 2rem;
|
|
21
|
-
-webkit-user-select: none;
|
|
22
|
-
-moz-user-select: none;
|
|
23
|
-
-ms-user-select: none;
|
|
24
|
-
user-select: none;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/* hide default checkbox */
|
|
28
|
-
.container input {
|
|
29
|
-
position: absolute;
|
|
30
|
-
opacity: 0;
|
|
31
|
-
cursor: pointer;
|
|
32
|
-
height: 0;
|
|
33
|
-
width: 0;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.checkmark {
|
|
37
|
-
position: absolute;
|
|
38
|
-
top: 0;
|
|
39
|
-
left: 0;
|
|
40
|
-
height: 2rem;
|
|
41
|
-
width: 2rem;
|
|
42
|
-
background-color: #eee;
|
|
43
|
-
outline: 2px solid transparent;
|
|
44
|
-
border: 1px solid var(--sc-highlight);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.container:hover input ~ .checkmark {
|
|
48
|
-
background-color: white;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.container input:checked ~ .checkmark {
|
|
52
|
-
background-color: var(--sc-brand-secondary);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.checkmark:after {
|
|
56
|
-
content: '';
|
|
57
|
-
position: absolute;
|
|
58
|
-
display: none;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.container input:checked ~ .checkmark:after {
|
|
62
|
-
display: block;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.container .checkmark:after {
|
|
66
|
-
left: 25%;
|
|
67
|
-
top: 50%;
|
|
68
|
-
width: 0.5rem;
|
|
69
|
-
height: 1rem;
|
|
70
|
-
border: solid var(--sc-text-color);
|
|
71
|
-
border-width: 0 3px 3px 0;
|
|
72
|
-
-webkit-transform: rotate(45deg);
|
|
73
|
-
-ms-transform: rotate(45deg);
|
|
74
|
-
transform: rotate(45deg) translate(-50%, -50%);
|
|
75
|
-
}
|
|
76
|
-
</style>
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="beam_item-count">
|
|
3
|
-
<span
|
|
4
|
-
:contenteditable="editable"
|
|
5
|
-
:class="{ 'beam--alert': !isCountComplete }"
|
|
6
|
-
@click.stop.prevent="validate"
|
|
7
|
-
@input.stop.prevent="debouncedValidate"
|
|
8
|
-
@paste="validate">
|
|
9
|
-
{{ count }}
|
|
10
|
-
</span>
|
|
11
|
-
<span v-if="denominator">/{{ denominator }}</span>
|
|
12
|
-
<span v-if="uom"> {{ uom }}</span>
|
|
13
|
-
</div>
|
|
14
|
-
</template>
|
|
15
|
-
|
|
16
|
-
<script setup lang="ts">
|
|
17
|
-
import { useDebounceFn } from '@vueuse/core'
|
|
18
|
-
import { computed, type HTMLAttributes } from 'vue'
|
|
19
|
-
|
|
20
|
-
const count = defineModel<number>({ required: true })
|
|
21
|
-
const {
|
|
22
|
-
denominator = 0,
|
|
23
|
-
debounce = 300,
|
|
24
|
-
editable = true,
|
|
25
|
-
uom = '',
|
|
26
|
-
} = defineProps<{
|
|
27
|
-
denominator?: number
|
|
28
|
-
debounce?: number
|
|
29
|
-
editable?: HTMLAttributes['contenteditable']
|
|
30
|
-
uom?: string
|
|
31
|
-
}>()
|
|
32
|
-
|
|
33
|
-
const isCountComplete = computed(() => denominator !== 0 && count.value === denominator)
|
|
34
|
-
|
|
35
|
-
const validate = (payload: ClipboardEvent | InputEvent | MouseEvent) => {
|
|
36
|
-
const newValue = Number((payload.target as HTMLElement).innerHTML) || 0
|
|
37
|
-
count.value = denominator ? Math.min(newValue, denominator) : newValue
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const debouncedRequest = useDebounceFn((payload: InputEvent) => validate(payload), debounce)
|
|
41
|
-
const debouncedValidate = async (payload: InputEvent) => await debouncedRequest(payload)
|
|
42
|
-
</script>
|
|
43
|
-
|
|
44
|
-
<style scoped>
|
|
45
|
-
.beam_item-count {
|
|
46
|
-
font-size: 1.3125rem;
|
|
47
|
-
color: var(--sc-primary-text-color);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.beam_item-count span {
|
|
51
|
-
margin: 0;
|
|
52
|
-
padding: 0;
|
|
53
|
-
outline: none;
|
|
54
|
-
}
|
|
55
|
-
</style>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<a :href="to" class="beam_list-anchor">
|
|
3
|
-
<slot />
|
|
4
|
-
</a>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<script setup lang="ts">
|
|
8
|
-
const { to = '' } = defineProps<{ to?: string }>()
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<style scoped>
|
|
12
|
-
.beam_list-anchor {
|
|
13
|
-
text-decoration: none;
|
|
14
|
-
outline: none;
|
|
15
|
-
color: var(--sc-primary-text-color);
|
|
16
|
-
}
|
|
17
|
-
</style>
|