diff --git a/package.json b/package.json index 0f987500..2054fd9d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@soramitsu/soramitsu-js-ui", - "version": "0.2.4", + "version": "0.2.5", "private": false, "publishConfig": { "registry": "https://nexus.iroha.tech/repository/npm-soramitsu-private/" diff --git a/src/components/Breadcrumb/SBreadcrumb.vue b/src/components/Breadcrumb/SBreadcrumb.vue new file mode 100644 index 00000000..2d53a072 --- /dev/null +++ b/src/components/Breadcrumb/SBreadcrumb.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/src/components/Breadcrumb/SBreadcrumbItem.vue b/src/components/Breadcrumb/SBreadcrumbItem.vue new file mode 100644 index 00000000..7d577779 --- /dev/null +++ b/src/components/Breadcrumb/SBreadcrumbItem.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/components/Breadcrumb/index.ts b/src/components/Breadcrumb/index.ts new file mode 100644 index 00000000..d1df7fdf --- /dev/null +++ b/src/components/Breadcrumb/index.ts @@ -0,0 +1,4 @@ +import SBreadcrumb from './SBreadcrumb.vue' +import SBreadcrumbItem from './SBreadcrumbItem.vue' + +export { SBreadcrumb, SBreadcrumbItem } diff --git a/src/components/Button/SButton.vue b/src/components/Button/SButton.vue index 7f0e4a64..5622b21b 100644 --- a/src/components/Button/SButton.vue +++ b/src/components/Button/SButton.vue @@ -5,6 +5,7 @@ :native-type="nativeType" :size="computedSize" :class="computedClasses" + :style="computedStyles" :disabled="disabled" :loading="isLoading" :autofocus="autofocus" @@ -84,6 +85,7 @@ export default class SButton extends Vue { @Inject({ default: '', from: 'elForm' }) elForm!: ElForm @Inject({ default: '', from: 'elFormItem' }) elFormItem!: ElFormItem + private iconLeftOffset = 0 elementIcon = '' get computedSize (): string { @@ -120,6 +122,14 @@ export default class SButton extends Vue { return cssClasses } + get computedStyles () { + const styles = {} as any + if (this.loading) { + styles['--s-button-loading-left'] = `${this.iconLeftOffset}px` + } + return styles + } + get availableIcon (): string { if (!this.icon) { return '' @@ -143,6 +153,16 @@ export default class SButton extends Vue { handleClick (): void { this.$emit('click') } + + mounted (): void { + this.$watch('loading', (value) => { + if (!value) { + return + } + const el = this.$el.querySelector('span') as HTMLSpanElement + this.iconLeftOffset = el.offsetLeft + (el.offsetWidth / 2) - 10 + }, { immediate: true }) + } } @@ -151,12 +171,18 @@ export default class SButton extends Vue { .loading { padding: 12px 17.5px; - > :not(i) { - color: transparent; - } i { position: absolute; - left: 43%; + left: var(--s-button-loading-left); + } + &.small { + padding: 9px 15px; + i { + left: calc(var(--s-button-loading-left) + 2px); + } + } + > :not(i) { + color: transparent; } } diff --git a/src/components/Card/SCard.vue b/src/components/Card/SCard.vue index 6ecbbc98..ba72dfbc 100644 --- a/src/components/Card/SCard.vue +++ b/src/components/Card/SCard.vue @@ -1,6 +1,7 @@