tm-button.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702
  1. <template>
  2. <view class="tm-button " :class="[block ? 'd-block' : 'd-inline-block ']">
  3. <view
  4. class="flex-center tm-button-btn fulled-height"
  5. :class="[block ? '' : customDense_puted ? '' : 'ma-10', block ? 'd-block' : 'd-inline-block', black_tmeme ? 'bk' : '', customStyle]"
  6. >
  7. <!-- @getuserinfo="getuserinfo" -->
  8. <button
  9. @contact="contact"
  10. @error="error"
  11. @getphonenumber="getphonenumber"
  12. @launchapp="launchapp"
  13. @opensetting="opensetting"
  14. @click="onclick"
  15. @longpress="$emit('longpress', $event)"
  16. @touchcancel="$emit('touchcancel', $event)"
  17. @touchend="$emit('touchend', $event)"
  18. @touchstart="$emit('touchstart', $event)"
  19. :disabled="disabled"
  20. :loading="loading"
  21. :open-type="openType"
  22. :hover-start-time="hoverStartTime"
  23. :hover-stay-time="hoverStaySime"
  24. :hover-stop-propagation="hoverStopPropagation"
  25. :send-message-img="sendMessageImg"
  26. :send-message-path="sendMessagePath"
  27. :send-message-title="sendMessageTitle"
  28. :show-message-card="showMessageCard"
  29. :class="[
  30. showValue ? 'showValue' : '',
  31. titl ? 'text-' + color_tmeme : '',
  32. vertical ? 'flex-col flex-center' : 'flex-center',
  33. black_tmeme ? 'bk' : '',
  34. disabled ? color_tmeme + ' grey-lighten-2' : color_tmeme,
  35. block ? '' : sizes,
  36. text || titl ? '' : bgcolor ? 'shadow-' + shadow : 'shadow-' + shadowthemeName + '-' + shadow,
  37. flat ? 'flat' : '',
  38. text ? 'text ' : '',
  39. plan ? 'plan outlined' : '',
  40. titl ? 'titl' : '',
  41. fab?'rounded':'round-' + round,
  42. customClass_puted
  43. ]"
  44. :style="{
  45. background: bgcolor ? bgcolor + ' !important' : 'default',
  46. width: widths != 0 && widths != 'inherit' ? widths : 'inherit',
  47. height: heights,
  48. lineHeight: 'inherit'
  49. }"
  50. >
  51. <slot name="icon" :data="{ icon: icon, size: icon_size.upx, fab: fab }">
  52. <block v-if="vtype == true">
  53. <text
  54. v-if="!fab && icon"
  55. :class="[`${prefx_computed} ${icon}`, fontColor ? `text-${colors.color}` : '', black_tmeme ? 'opacity-6' : '', 'px-12']"
  56. :style="{
  57. fontSize: `${icon_size.px}px`,
  58. lineHeight:'normal'
  59. }"
  60. ></text>
  61. <text
  62. v-if="fab && icon && !loading && !titl"
  63. :class="[`${prefx_computed} ${icon}`, fontColor ? `text-${colors.color}` : '', black_tmeme ? 'opacity-6' : '']"
  64. :style="{
  65. fontSize: `${icon_size.px}px`,
  66. lineHeight:'normal'
  67. }"
  68. ></text>
  69. <text
  70. v-if="fab && icon && !loading && titl"
  71. :class="[`${prefx_computed} ${icon}`, fontColor ? `text-${color_tmeme}` : '', black_tmeme ? 'opacity-6' : '']"
  72. :style="{
  73. fontSize: `${icon_size.px}px`,
  74. lineHeight:'normal'
  75. }"
  76. ></text>
  77. </block>
  78. <block v-if="vtype == false"><tm-icons :size="icon_size.upx" :name="icon"></tm-icons></block>
  79. </slot>
  80. <view v-if="!fab || showValue" class="d-inline-block tm-button-label flex-shrink" :style="{ fontSize: font_size }" :class="[fontColor ? `text-${colors.color}` : '']">
  81. <slot name="default" :data="label">{{ label }}</slot>
  82. </view>
  83. </button>
  84. </view>
  85. </view>
  86. </template>
  87. <script>
  88. /**
  89. * 按钮
  90. * @description 注意,按钮功能同原生按钮功能,所有属性都有。
  91. * @property {Function} contact
  92. * @property {Function} error
  93. * @property {Function} getphonenumber
  94. * @property {Function} getuserinfo
  95. * @property {Function} opensetting
  96. * @property {Function} click
  97. * @property {Boolean} disabled = [true|false] 是否禁用
  98. * @property {Boolean} loading = [true|false] 是否加载中
  99. * @property {String} open-type = [contact|getPhoneNumber|getUserInfo|launchapp|share|openSetting] 同原生btn相同,//当等于getUserProfile时,自动获取微信授权。
  100. * @property {Boolean} block = [true|false] 是否独占一行
  101. * @property {Boolean} show-value = [true|false] fab模式是隐藏文字的。如果这个设置为true,不管在什么情况下都会显示文字。
  102. * @property {String} url = [] 默认"",如果提供将会跳转连接。
  103. * @property {String} size = [xs|s|m|n|l|g] 默认"n",按钮尺寸大小。
  104. * @property {Number|String} font-size = [] 默认 0,自定义文字大小,默认使用主题size的大小。
  105. * @property {Number|String} icon-size = [] upx单位默认 0,自定义图标大小,默认使用主题size的大小。
  106. * @property {String} icon = [] 单位默认 "",自定义按钮图标。
  107. * @property {String} item-class = [] 默认 "",按钮自定样式类。
  108. * @property {String|Number} shadow = [] 默认 5,按钮投影
  109. * @property {String} font-color = [] 默认主题颜色,自定文字颜色
  110. * @property {String} bgcolor = [] 默认主题颜色,自定义-背景颜色
  111. * @property {String} theme = [] 默认 primary,主题颜色
  112. * @property {Boolean|String} black = [true|false] 默认 false, 暗黑模式
  113. * @property {Boolean|String} flat = [true|false] 默认 false, 去除所有投影圆角效果,扁平模式。
  114. * @property {Boolean|String} text = [true|false] 默认 false, 文本模式。背景减淡。文字使用主题色。
  115. * @property {Boolean|String} plan = [true|false] 默认 false, 镂空。
  116. * @property {Boolean|String} fab = [true|false] 默认 false, 圆模式。
  117. * @property {Boolean|String} dense = [true|false] 默认 false, 是否去除外间隙。
  118. * @property {Boolean|String} titl = [true|false] 默认 false, 无背景,无边框,只保留按钮区域和文字颜色或者图标颜色。
  119. * @property {String} label = [] 默认 "", 按钮文字也可以使用插槽模式直接写在组件内部。
  120. * @property {String|Number} width = [] 默认 "", 按钮宽, 单位px ,可以是百分比 如果不设置block为true时,此项设置无效。
  121. * @property {String|Number} height = [] 默认 "", 按钮高, 单位px ,可以是百分比如果不设置block为true时,此项设置无效。
  122. * @property {String|Number} round = [] 默认 2, 圆角
  123. * @property {String|Number} navtie-type = [form] 默认 :'', 可选值form,提供此属性为form时,事件会被表单接替,会触发表单提交事件。
  124. * @property {String} userProfileError = ['auto'] 默认:'auto' 仅open-type='getUserProfile'时有效,当微信授权失败提示的信息,默认为auto,如果非auto将显示自定义错误提示。如果为'',将不显示错误提示。
  125. * @example <tm-button>确定</tm-button>
  126. */
  127. import tmIcons from '@/tm-vuetify/components/tm-icons/tm-icons.vue';
  128. export default {
  129. components: { tmIcons },
  130. name: 'tm-button',
  131. props: {
  132. hoverStartTime:20,
  133. hoverStaySime:70,
  134. appParameter:String,
  135. hoverStopPropagation:{
  136. type:Boolean,
  137. default:false
  138. },
  139. sessionFrom:String,
  140. sendMessageTitle:String,
  141. sendMessagePath:String,
  142. sendMessageImg:String,
  143. showMessageCard:String,
  144. navtieType: {
  145. type: String,
  146. default: '' //form
  147. },
  148. // 内联还是独占一行的块状100%,默认内联样式。
  149. block: {
  150. type: String | Boolean,
  151. default: false
  152. },
  153. // fab模式是隐藏文字的。如果这个设置为true,不管在什么情况下都会显示文字。
  154. showValue: {
  155. type: String | Boolean,
  156. default: false
  157. },
  158. disabled: {
  159. type: String | Boolean,
  160. default: false
  161. },
  162. loading: {
  163. type: String | Boolean,
  164. default: false
  165. },
  166. url: {
  167. type: String,
  168. default: ''
  169. },
  170. // xs,s,n,l,g
  171. size: {
  172. type: String,
  173. default: 'n'
  174. },
  175. // 文字大小。
  176. fontSize: {
  177. type: Number | String,
  178. default: 0
  179. },
  180. // 图标大小。
  181. iconSize: {
  182. type: Number | String,
  183. default: 0
  184. },
  185. // icon-cog-fill
  186. icon: {
  187. type: String,
  188. default: ''
  189. },
  190. // 按钮自定样式类。
  191. itemClass: {
  192. type: String,
  193. default: ''
  194. },
  195. // 同原生btn相同。contact|getPhoneNumber|getUserInfo|launchapp|share|openSetting
  196. //当等于getUserProfile时,自动获取微信授权。
  197. openType: {
  198. type: String,
  199. default: ''
  200. },
  201. shadow: {
  202. type: Number | String,
  203. default: 4
  204. },
  205. vertical: {
  206. type: Boolean | String,
  207. default: false
  208. },
  209. // 自定义-文字颜色。
  210. fontColor: {
  211. type: String,
  212. default: ''
  213. },
  214. // 自定义-背景颜色
  215. bgcolor: {
  216. type: String | Array,
  217. default: ''
  218. },
  219. // 主题颜色
  220. theme: {
  221. type: String,
  222. default: 'primary'
  223. },
  224. //优先级最高: 优先级1
  225. black: {
  226. type: Boolean | String,
  227. default: null
  228. },
  229. // 优先级高:优先级2
  230. flat: {
  231. type: Boolean | String,
  232. default: null
  233. },
  234. // 优先级高:文本模式。背景减淡。文字使用主题色。
  235. text: {
  236. type: Boolean | String,
  237. default: false
  238. },
  239. // 优先级高:镂空。
  240. plan: {
  241. type: Boolean | String,
  242. default: false
  243. },
  244. // 圆模式。
  245. fab: {
  246. type: Boolean | String,
  247. default: false
  248. },
  249. // 无背景,无边框,只保留按钮区域和文字颜色或者图标颜色。
  250. titl: {
  251. type: Boolean | String,
  252. default: false
  253. },
  254. label: {
  255. type: String,
  256. default: ''
  257. },
  258. // 如果不设置block为true时,此项设置无效。
  259. width: {
  260. type: String | Number,
  261. default: NaN
  262. },
  263. // 如果不设置block为true时,此项设置无效。
  264. height: {
  265. type: String | Number,
  266. default: NaN
  267. },
  268. // 圆角
  269. round: {
  270. type: String | Number,
  271. default: 3
  272. },
  273. dense: {
  274. type: Boolean | String,
  275. default: false
  276. },
  277. // 跟随主题色的改变而改变。
  278. fllowTheme: {
  279. type: Boolean | String,
  280. default: true
  281. },
  282. //当微信授权失败提示的信息,默认为auto,如果非auto将显示自定义错误提示。如果为'',将不显示错误提示。
  283. userProfileError:{
  284. type:String,
  285. default:'auto'
  286. }
  287. },
  288. created() {
  289. this.customClass_puted = this.itemClass;
  290. this.customDense_puted = this.dense;
  291. this.color_tmeme = this.theme;
  292. },
  293. watch: {
  294. theme: function() {
  295. this.color_tmeme = this.theme;
  296. }
  297. },
  298. computed: {
  299. prefx_computed() {
  300. let prefix = this.icon.split('-')[0];
  301. if (prefix == 'icon') return 'iconfont';
  302. if (prefix == 'mdi') return 'mdi';
  303. return prefix;
  304. },
  305. customDense_puted: {
  306. get: function() {
  307. return this.customDense;
  308. },
  309. set: function(val) {
  310. this.customDense = val;
  311. }
  312. },
  313. customClass_puted: {
  314. get: function() {
  315. return this.customClass;
  316. },
  317. set: function(val) {
  318. this.customClass = val;
  319. }
  320. },
  321. vtype: function() {
  322. if (this.icon[0] == '.' || this.icon[0] == '/' || this.icon.substring(0, 4) == 'http' || this.icon.substring(0, 5) == 'https' || this.icon.substring(0, 3) == 'ftp') {
  323. return false;
  324. }
  325. return true;
  326. },
  327. black_tmeme: function() {
  328. if (this.black !== null) return this.black;
  329. return this.$tm.vx.state().tmVuetify.black;
  330. },
  331. color_tmeme: {
  332. get: function() {
  333. if (this.$tm.vx.state().tmVuetify.color !== null && this.$tm.vx.state().tmVuetify.color && this.fllowTheme) {
  334. return this.$tm.vx.state().tmVuetify.color;
  335. }
  336. return this.color_tmeme_computed;
  337. },
  338. set: function(val) {
  339. this.color_tmeme_computed = val;
  340. }
  341. },
  342. // 投影的颜色名字。
  343. shadowthemeName: function() {
  344. if (!this.theme) return 'none';
  345. return this.color_tmeme;
  346. },
  347. widths: {
  348. get: function() {
  349. let w;
  350. if (typeof this.width === 'undefined') {
  351. return 'auto';
  352. }
  353. let item = this.$TestUnit(this.width);
  354. if (item) {
  355. if (item.type == 'string') {
  356. w = item.value;
  357. }
  358. if (item.type == 'number') {
  359. w = item.value + 'px';
  360. }
  361. }
  362. return w;
  363. }
  364. },
  365. heights: {
  366. get: function() {
  367. let item = this.$TestUnit(this.height);
  368. if (item) {
  369. if (item.type == 'string') {
  370. return item.value;
  371. }
  372. if (item.type == 'number') {
  373. return item.value + 'px';
  374. }
  375. }
  376. return 'auto';
  377. }
  378. },
  379. sizes: function() {
  380. if (!isNaN(this.width) || !isNaN(this.height)) return;
  381. if (this.size == 'xs') {
  382. return this.fab ? 'fabxs text-size-xs rounded' : 'wxs round-1 text-size-xs';
  383. } else if (this.size == 's') {
  384. return this.fab ? 'fabs text-size-xs rounded' : 'ws round-1 text-size-s';
  385. } else if (this.size == 'm') {
  386. return this.fab ? 'fabm text-size-xs rounded' : 'wm round-1 text-size-n';
  387. } else if (this.size == 'n') {
  388. return this.fab ? 'fabn text-size-xs rounded' : 'wn round-1 text-size-n';
  389. } else if (this.size == 'l') {
  390. return this.fab ? 'fabl text-size-xs rounded' : 'wl round-2 text-size-g';
  391. } else if (this.size == 'g') {
  392. return this.fab ? 'fabg text-size-xs rounded' : 'wg round-3 text-size-g';
  393. }
  394. },
  395. font_size: function() {
  396. if (this.fontSize > 0) {
  397. return this.fontSize + 'rpx';
  398. }
  399. if (this.size == 'xs') {
  400. return uni.upx2px(20) + 'px';
  401. } else if (this.size == 's') {
  402. return uni.upx2px(22) + 'px';
  403. } else if (this.size == 'm') {
  404. return uni.upx2px(24) + 'px';
  405. } else if (this.size == 'n') {
  406. return uni.upx2px(28) + 'px';
  407. } else if (this.size == 'l') {
  408. return uni.upx2px(32) + 'px';
  409. } else if (this.size == 'g') {
  410. return uni.upx2px(36) + 'px';
  411. }
  412. },
  413. icon_size: function() {
  414. if (this.iconSize) {
  415. return { px: uni.upx2px(this.iconSize), upx: this.iconSize };
  416. }
  417. if (this.size == 'xs') {
  418. return { px: uni.upx2px(20), upx: 20 };
  419. } else if (this.size == 's') {
  420. return { px: uni.upx2px(22), upx: 22 };
  421. } else if (this.size == 'm') {
  422. return { px: uni.upx2px(24), upx: 24 };
  423. } else if (this.size == 'n') {
  424. return { px: uni.upx2px(28), upx: 28 };
  425. } else if (this.size == 'l') {
  426. return { px: uni.upx2px(32), upx: 32 };
  427. } else if (this.size == 'g') {
  428. return { px: uni.upx2px(36), upx: 36 };
  429. }
  430. },
  431. defaultfontsize: function() {
  432. if (this.iconSize) {
  433. return this.iconSize;
  434. }
  435. if (this.size == 'xs') {
  436. return uni.upx2px(20);
  437. } else if (this.size == 's') {
  438. return uni.upx2px(22);
  439. } else if (this.size == 'm') {
  440. return uni.upx2px(24);
  441. } else if (this.size == 'n') {
  442. return uni.upx2px(28);
  443. } else if (this.size == 'l') {
  444. return uni.upx2px(32);
  445. } else if (this.size == 'g') {
  446. return uni.upx2px(36);
  447. }
  448. },
  449. colors: function() {
  450. let color = this.$TestColor(this.fontColor);
  451. return color;
  452. }
  453. },
  454. data() {
  455. return {
  456. customClass: '',
  457. customDense: false,
  458. customStyle: '',
  459. color_tmeme_computed: ''
  460. };
  461. },
  462. methods: {
  463. setConfigStyle(val) {
  464. this.customStyle = val;
  465. },
  466. onclick() {
  467. let t = this;
  468. this.$emit('click', ...arguments);
  469. if(this.openType=='getUserInfo' || this.openType == 'getUserProfile'){
  470. // #ifdef MP-WEIXIN
  471. uni.getUserProfile({
  472. desc: '需要获取用户信息',
  473. lang: 'zh',
  474. complete: function (userProfile) {
  475. if(userProfile.errMsg !='getUserProfile:ok'){
  476. if(t.userProfileError==''||t.userProfileError=='true') return;
  477. if(t.userProfileError!='auto'){
  478. uni.showToast({
  479. title:t.userProfileError,icon:'error',mask:true
  480. })
  481. return;
  482. }
  483. uni.showToast({
  484. title:userProfile.errMsg,icon:'error',mask:true
  485. })
  486. return;
  487. }
  488. t.$emit('getUserInfo', userProfile);
  489. t.$emit('getUserProfile', userProfile);
  490. },
  491. fail: (error) => {
  492. if(t.userProfileError==''||t.userProfileError=='true') return;
  493. if(t.userProfileError!='auto'){
  494. uni.showToast({
  495. title:t.userProfileError,icon:'error',mask:true
  496. })
  497. return;
  498. }
  499. uni.showToast({
  500. title:error
  501. })
  502. }
  503. });
  504. // #endif
  505. }
  506. if (this.url !== '' && typeof this.url === 'string') {
  507. let url = this.url;
  508. if (url[0] !== '/') url = '/' + url;
  509. uni.navigateTo({
  510. url: url
  511. });
  512. }
  513. },
  514. contact() {
  515. this.$emit('contact', ...arguments);
  516. },
  517. error() {
  518. this.$emit('error', ...arguments);
  519. },
  520. getphonenumber() {
  521. this.$emit('getphonenumber', ...arguments);
  522. },
  523. getuserinfo() {
  524. this.$emit('getuserinfo', ...arguments);
  525. },
  526. launchapp() {
  527. this.$emit('launchapp', ...arguments);
  528. },
  529. opensetting() {
  530. this.$emit('opensetting', ...arguments);
  531. }
  532. }
  533. };
  534. </script>
  535. <style lang="scss" scoped>
  536. .tm-button {
  537. vertical-align: middle;
  538. .tm-button-btn button {
  539. background: none;
  540. border: none;
  541. width: 100%;
  542. height: auto;
  543. line-height: 88upx;
  544. height: 88upx;
  545. vertical-align: middle;
  546. // #ifdef H5
  547. transition: all 0.3s;
  548. // #endif
  549. .tm-button-label {
  550. vertical-align: middle;
  551. }
  552. &::after {
  553. border: none;
  554. }
  555. &.fabxs {
  556. width: 48upx;
  557. height: 48upx !important;
  558. line-height: 48upx;
  559. text-align: center;
  560. padding: 0 !important;
  561. }
  562. &.fabs {
  563. width: 64upx;
  564. height: 64upx !important;
  565. line-height: 64upx;
  566. text-align: center;
  567. padding: 0 !important;
  568. }
  569. &.fabm {
  570. width: 90upx;
  571. height: 90upx !important;
  572. line-height: 90upx;
  573. text-align: center;
  574. padding: 0 !important;
  575. }
  576. &.fabn {
  577. width: 110upx;
  578. height: 110upx !important;
  579. line-height: 110upx;
  580. text-align: center;
  581. padding: 0 !important;
  582. }
  583. &.fabl {
  584. width: 140upx;
  585. height: 140upx !important;
  586. line-height: 140upx;
  587. text-align: center;
  588. padding: 0 !important;
  589. }
  590. &.fabg {
  591. width: 180upx;
  592. height: 180upx !important;
  593. line-height: 180upx;
  594. text-align: center;
  595. padding: 0 !important;
  596. }
  597. &.wxs {
  598. min-width: 64upx;
  599. height: 36upx !important;
  600. // line-height: 24upx;
  601. text-align: center;
  602. // padding: 0 !important;
  603. padding: 0 12upx;
  604. }
  605. &.ws {
  606. min-width: 90upx;
  607. height: 48upx !important;
  608. // line-height: 24upx;
  609. text-align: center;
  610. padding: 0 16upx;
  611. }
  612. &.wm {
  613. min-width: 140upx;
  614. height: 64upx !important;
  615. // line-height: 88upx;
  616. text-align: center;
  617. padding: 0 24upx;
  618. }
  619. &.wn {
  620. min-width: 240upx;
  621. height: 72upx !important;
  622. // line-height: 88upx;
  623. text-align: center;
  624. // padding: 0 !important;
  625. padding: 0 32upx;
  626. }
  627. &.wl {
  628. min-width: 280upx;
  629. height: 72upx !important;
  630. // line-height: 88upx;
  631. text-align: center;
  632. padding: 0 32upx;
  633. }
  634. &.wg {
  635. min-width: 400upx;
  636. height: 76upx !important;
  637. // line-height: 88upx;
  638. text-align: center;
  639. padding: 0 32upx;
  640. }
  641. &.plan {
  642. box-shadow: none !important;
  643. // background: transparent !important;
  644. border-width: 1px !important;
  645. border-style: solid;
  646. }
  647. &.titl {
  648. box-shadow: none !important;
  649. background: transparent !important;
  650. border: none;
  651. }
  652. &:active,
  653. &:focus {
  654. opacity: 0.64;
  655. }
  656. &.showValue {
  657. line-height: inherit !important;
  658. }
  659. &.noGutter {
  660. min-width: 0 !important;
  661. margin: 0 !important;
  662. padding: 0 !important;
  663. overflow: unset !important;
  664. }
  665. }
  666. &.d-block {
  667. button {
  668. // padding: 30upx 0;
  669. font-size: 32upx;
  670. &.plan {
  671. box-shadow: none !important;
  672. background: transparent !important;
  673. border-width: 1px !important;
  674. border-style: solid;
  675. }
  676. }
  677. &.showValue {
  678. line-height: inherit !important;
  679. }
  680. }
  681. &.d-inline-block {
  682. vertical-align: middle;
  683. }
  684. }
  685. </style>