feat: Adds storybook for search component. (#2444)
* feat: Adds storybook for search component. * Review fixes * Uses woot-label for conv-id Co-authored-by: Nithin David Thomas <1277421+nithindavid@users.noreply.github.com>
This commit is contained in:
parent
bd1b17baf3
commit
d840b7b13d
4 changed files with 111 additions and 29 deletions
|
@ -0,0 +1,41 @@
|
||||||
|
import ResultItem from './ResultItem';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
title: 'Components/Search/Result Items',
|
||||||
|
component: ResultItem,
|
||||||
|
argTypes: {
|
||||||
|
conversationId: {
|
||||||
|
defaultValue: '1',
|
||||||
|
control: {
|
||||||
|
type: 'number',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
userName: {
|
||||||
|
defaultValue: 'John davies',
|
||||||
|
control: {
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
inboxName: {
|
||||||
|
defaultValue: 'Support',
|
||||||
|
control: {
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
timestamp: {
|
||||||
|
defaultValue: '1618046084',
|
||||||
|
control: {
|
||||||
|
type: 'number',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const Template = (args, { argTypes }) => ({
|
||||||
|
props: Object.keys(argTypes),
|
||||||
|
components: { ResultItem },
|
||||||
|
template: '<result-item v-bind="$props"></result-item>',
|
||||||
|
});
|
||||||
|
|
||||||
|
export const ResultItems = Template.bind({});
|
||||||
|
ResultItems.args = {};
|
|
@ -4,11 +4,15 @@
|
||||||
<div class="message">
|
<div class="message">
|
||||||
<i class="ion-ios-chatboxes-outline" />
|
<i class="ion-ios-chatboxes-outline" />
|
||||||
<div class="conversation">
|
<div class="conversation">
|
||||||
<div class="name-wrap">
|
<div class="user-wrap">
|
||||||
<span class="user-name">{{ userName }}</span>
|
<div class="name-wrap">
|
||||||
<div>
|
<span class="sub-block-title">{{ userName }}</span>
|
||||||
<span class="conversation-id"># {{ conversationId }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
<woot-label
|
||||||
|
:title="conversationsId"
|
||||||
|
:small="true"
|
||||||
|
color-scheme="secondary"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span class="inbox-name">{{ inboxName }}</span>
|
<span class="inbox-name">{{ inboxName }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -69,6 +73,9 @@ export default {
|
||||||
...mapGetters({
|
...mapGetters({
|
||||||
accountId: 'getCurrentAccountId',
|
accountId: 'getCurrentAccountId',
|
||||||
}),
|
}),
|
||||||
|
conversationsId() {
|
||||||
|
return `# ${this.conversationId}`;
|
||||||
|
},
|
||||||
readableTime() {
|
readableTime() {
|
||||||
if (!this.timestamp) {
|
if (!this.timestamp) {
|
||||||
return '';
|
return '';
|
||||||
|
@ -124,10 +131,6 @@ export default {
|
||||||
.ion-ios-chatboxes-outline {
|
.ion-ios-chatboxes-outline {
|
||||||
color: var(--white);
|
color: var(--white);
|
||||||
}
|
}
|
||||||
.conversation-id {
|
|
||||||
background: var(--w-50);
|
|
||||||
color: var(--s-500);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,35 +152,26 @@ export default {
|
||||||
padding: var(--space-smaller) var(--space-one);
|
padding: var(--space-smaller) var(--space-one);
|
||||||
}
|
}
|
||||||
|
|
||||||
.name-wrap {
|
.user-wrap {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 20rem;
|
|
||||||
|
|
||||||
.user-name {
|
.name-wrap {
|
||||||
font-size: var(--font-size-default);
|
max-width: 20rem;
|
||||||
font-weight: var(--font-weight-bold);
|
|
||||||
margin-right: var(--space-micro);
|
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
|
||||||
|
|
||||||
.conversation-id {
|
.sub-block-title {
|
||||||
background: var(--w-400);
|
font-weight: var(--font-weight-bold);
|
||||||
border-radius: var(--border-radius-normal);
|
margin-right: var(--space-micro);
|
||||||
color: var(--w-50);
|
}
|
||||||
align-items: center;
|
|
||||||
font-size: var(--font-size-mini);
|
|
||||||
font-weight: var(--font-weight-bold);
|
|
||||||
padding: 0 var(--space-smaller);
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.inbox-name {
|
.inbox-name {
|
||||||
border-radius: var(--border-radius-normal);
|
border-radius: var(--border-radius-normal);
|
||||||
color: var(--s-500);
|
color: var(--s-500);
|
||||||
font-size: var(--font-size-normal);
|
font-size: var(--font-size-mini);
|
||||||
font-weight: var(--font-weight-medium);
|
font-weight: var(--font-weight-medium);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
import SearchMessage from './SearchMessageItem';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
title: 'Components/Search/Messages',
|
||||||
|
component: SearchMessage,
|
||||||
|
argTypes: {
|
||||||
|
userName: {
|
||||||
|
defaultValue: 'John davies',
|
||||||
|
control: {
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
timestamp: {
|
||||||
|
defaultValue: '1618046084',
|
||||||
|
control: {
|
||||||
|
type: 'number',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
messageType: {
|
||||||
|
control: {
|
||||||
|
type: 'number',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
defaultValue:
|
||||||
|
'some designers and developers around the web know this and have put together a bunch of text generators',
|
||||||
|
control: {
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
searchTerm: {
|
||||||
|
defaultValue: 'developers',
|
||||||
|
control: {
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const Template = (args, { argTypes }) => ({
|
||||||
|
props: Object.keys(argTypes),
|
||||||
|
components: { SearchMessage },
|
||||||
|
template: '<search-message v-bind="$props"></-item>',
|
||||||
|
});
|
||||||
|
|
||||||
|
export const Messages = Template.bind({});
|
||||||
|
Messages.args = {};
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="search-message">
|
<div class="search-message">
|
||||||
<div class="user-wrap">
|
<div class="user-wrap">
|
||||||
<div class="name-wrap">
|
<div class="name-wrap">
|
||||||
<span class="user-name">{{ userName }}</span>
|
<span class="text-block-title">{{ userName }}</span>
|
||||||
<div>
|
<div>
|
||||||
<i v-if="isOutgoingMessage" class="ion-headphone" />
|
<i v-if="isOutgoingMessage" class="ion-headphone" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -109,10 +109,9 @@ export default {
|
||||||
|
|
||||||
.name-wrap {
|
.name-wrap {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 22rem;
|
max-width: 22rem;
|
||||||
|
|
||||||
.user-name {
|
.text-block-title {
|
||||||
font-size: var(--font-size-small);
|
|
||||||
font-weight: var(--font-weight-bold);
|
font-weight: var(--font-weight-bold);
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
@ -141,6 +140,7 @@ p {
|
||||||
.message-content {
|
.message-content {
|
||||||
font-size: var(--font-size-small);
|
font-size: var(--font-size-small);
|
||||||
margin-bottom: var(--space-micro);
|
margin-bottom: var(--space-micro);
|
||||||
|
margin-top: var(--space-micro);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
line-height: 1.35;
|
line-height: 1.35;
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
|
|
Loading…
Reference in a new issue