8
8
import { LooseGooseyField , LooseyGooseyData } from ' ./loosey-goosey' ;
9
9
import { PhoneInput , Pill } from ' @cardstack/boxel-ui/components' ;
10
10
import { RadioInput } from ' @cardstack/boxel-ui/components' ;
11
+ import { EntityDisplay } from ' ./components/entity-display' ;
11
12
import { tracked } from ' @glimmer/tracking' ;
12
13
import { fn } from ' @ember/helper' ;
13
14
import { action } from ' @ember/object' ;
@@ -58,7 +59,7 @@ export class PhoneNumberType extends LooseGooseyField {
58
59
static edit = PhoneNumberTypeEdit ;
59
60
}
60
61
61
- export class PhoneNumber extends FieldDef {
62
+ export class PhoneField extends FieldDef {
62
63
static displayName = ' Phone Number' ;
63
64
@field number = contains (StringField );
64
65
@field countryCode = contains (StringField );
@@ -71,7 +72,7 @@ export class PhoneNumber extends FieldDef {
71
72
this .countryCode = code ;
72
73
};
73
74
74
- static edit = class Edit extends Component <typeof PhoneNumber > {
75
+ static edit = class Edit extends Component <typeof PhoneField > {
75
76
<template >
76
77
<PhoneInput
77
78
@ countryCode ={{@ model.countryCode }}
@@ -82,33 +83,29 @@ export class PhoneNumber extends FieldDef {
82
83
</template >
83
84
};
84
85
85
- static atom = class Atom extends Component <typeof PhoneNumber > {
86
+ static atom = class Atom extends Component <typeof PhoneField > {
86
87
<template >
87
- <div class =' row' >
88
- <PhoneIcon class =' icon gray' />
89
- {{#if @ model.countryCode }}
90
- <span >+{{@ model.countryCode }}{{@ model.number }} </span >
91
- {{else }}
92
- <span >{{@ model.number }} </span >
93
- {{/if }}
94
- </div >
88
+ <EntityDisplay @ underline ={{ false }} >
89
+ <: title >
90
+ {{#if @ model.countryCode }}
91
+ +{{@ model.countryCode }}{{@ model.number }}
92
+ {{else }}
93
+ {{@ model.number }}
94
+ {{/if }}
95
+ </: title >
96
+ <: thumbnail >
97
+ <PhoneIcon class =' icon' />
98
+ </: thumbnail >
99
+ </EntityDisplay >
95
100
<style scoped >
96
- .row {
97
- display : flex ;
98
- align-items : center ;
99
- word-break : break-all ;
100
- gap : var (--boxel-sp-xxs );
101
- }
102
101
.icon {
103
- width : var (--boxel-icon-xs );
104
- height : var (--boxel-icon-xs );
105
- flex-shrink : 0 ;
102
+ color : var (--boxel-400 );
106
103
}
107
104
< /style >
108
105
</template >
109
106
};
110
107
111
- static embedded = class Embedded extends Component <typeof PhoneNumber > {
108
+ static embedded = class Embedded extends Component <typeof PhoneField > {
112
109
<template >
113
110
{{#if @ model.countryCode }}
114
111
<span >+{{@ model.countryCode }}{{@ model.number }} </span >
@@ -120,32 +117,38 @@ export class PhoneNumber extends FieldDef {
120
117
}
121
118
122
119
export class ContactPhoneNumber extends FieldDef {
123
- @field phoneNumber = contains (PhoneNumber );
120
+ @field phoneNumber = contains (PhoneField );
124
121
@field type = contains (PhoneNumberType );
125
122
126
123
static atom = class Atom extends Component <typeof ContactPhoneNumber > {
127
124
<template >
128
- <div class =' row' >
129
- <@ fields.phoneNumber @ format =' atom' />
130
- {{#if @ model.type.label }}
131
- <Pill class =' gray' >
132
- {{@ model.type.label }}
133
- </Pill >
134
- {{/if }}
135
- </div >
125
+ <EntityDisplay @ underline ={{ false }} >
126
+ <: title >
127
+ {{#if @ model.phoneNumber.countryCode }}
128
+ +{{@ model.phoneNumber.countryCode }}{{@ model.phoneNumber.number }}
129
+ {{else }}
130
+ {{@ model.phoneNumber.number }}
131
+ {{/if }}
132
+ </: title >
133
+ <: thumbnail >
134
+ <PhoneIcon class =' icon' />
135
+ </: thumbnail >
136
+ <: tag >
137
+ {{#if @ model.type.label }}
138
+ <Pill class =' pill-gray' >
139
+ {{@ model.type.label }}
140
+ </Pill >
141
+ {{/if }}
142
+ </: tag >
143
+ </EntityDisplay >
136
144
<style scoped >
137
- .row {
138
- display : flex ;
139
- align-items : center ;
140
- gap : var (--boxel-sp-xxs );
141
- word-break : break-all ;
145
+ .icon {
146
+ color : var (--boxel-400 );
142
147
}
143
- .gray {
144
- font-weight : 300 ;
145
- font-size : 10px ;
146
- word-break : keep-all ;
147
- --pill-background-color : var (--boxel-200 );
148
- border : none ;
148
+ .pill-gray {
149
+ --default-pill-padding : 0 var (--boxel-sp-xxxs );
150
+ background-color : var (--boxel-200 );
151
+ border-color : transparent ;
149
152
}
150
153
< /style >
151
154
</template >
@@ -155,12 +158,7 @@ export class ContactPhoneNumber extends FieldDef {
155
158
typeof ContactPhoneNumber
156
159
> {
157
160
<template >
158
- {{#if @ model.phoneNumber.countryCode }}
159
- <span
160
- >+{{@ model.phoneNumber.countryCode }}{{@ model.phoneNumber.number }} </span >
161
- {{else }}
162
- <span >{{@ model.phoneNumber.number }} </span >
163
- {{/if }}
161
+ <@ fields.phoneNumber @ format =' embedded' />
164
162
</template >
165
163
};
166
164
}
0 commit comments