maglevcms 1.4.0 → 1.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/components/maglev/content/image.rb +1 -1
- data/app/controllers/maglev/api/assets_controller.rb +3 -3
- data/app/controllers/maglev/application_controller.rb +5 -0
- data/app/controllers/maglev/assets_controller.rb +1 -1
- data/app/controllers/maglev/editor_controller.rb +12 -3
- data/app/frontend/admin/controllers/screenshot_controller.js +5 -1
- data/app/frontend/editor/App.vue +1 -1
- data/app/frontend/editor/components/dynamic-form/dynamic-input.vue +17 -18
- data/app/frontend/editor/components/dynamic-form/index.vue +1 -1
- data/app/frontend/editor/components/header-nav/device-toggler.vue +1 -1
- data/app/frontend/editor/components/header-nav/index.vue +3 -3
- data/app/frontend/editor/components/header-nav/locale-toggler/index.vue +4 -4
- data/app/frontend/editor/components/header-nav/preview-toggler.vue +3 -3
- data/app/frontend/editor/components/header-nav/publish-button.vue +3 -3
- data/app/frontend/editor/components/header-nav/save-button.vue +1 -1
- data/app/frontend/editor/components/icon-library/index.vue +1 -1
- data/app/frontend/editor/components/image-library/index.vue +2 -2
- data/app/frontend/editor/components/image-library/list-item.vue +1 -1
- data/app/frontend/editor/components/image-library/uploader.vue +1 -1
- data/app/frontend/editor/components/kit/accordion.vue +8 -3
- data/app/frontend/editor/components/kit/checkbox-input.vue +1 -1
- data/app/frontend/editor/components/kit/collection-item-input.vue +7 -4
- data/app/frontend/editor/components/kit/color-input/core-input.vue +17 -12
- data/app/frontend/editor/components/kit/color-input/preset-button.vue +14 -10
- data/app/frontend/editor/components/kit/color-input/preset-dropdown.vue +8 -7
- data/app/frontend/editor/components/kit/color-input.vue +2 -4
- data/app/frontend/editor/components/kit/confirmation-button.vue +3 -3
- data/app/frontend/editor/components/kit/divider.vue +4 -4
- data/app/frontend/editor/components/kit/dropdown.vue +1 -1
- data/app/frontend/editor/components/kit/hint.vue +3 -3
- data/app/frontend/editor/components/kit/icon-input.vue +4 -4
- data/app/frontend/editor/components/kit/icon.vue +7 -2
- data/app/frontend/editor/components/kit/image-input.vue +5 -5
- data/app/frontend/editor/components/kit/index.js +25 -25
- data/app/frontend/editor/components/kit/link-input.vue +6 -6
- data/app/frontend/editor/components/kit/list-item-button.vue +2 -2
- data/app/frontend/editor/components/kit/modal-root.vue +3 -3
- data/app/frontend/editor/components/kit/modal.vue +2 -2
- data/app/frontend/editor/components/kit/page-icon.vue +2 -2
- data/app/frontend/editor/components/kit/pagination/index.vue +3 -3
- data/app/frontend/editor/components/kit/rich-text-input/block-button.vue +10 -10
- data/app/frontend/editor/components/kit/rich-text-input/menu-button.vue +1 -1
- data/app/frontend/editor/components/kit/rich-text-input/table-button.vue +18 -12
- data/app/frontend/editor/components/kit/rich-text-input.vue +1 -1
- data/app/frontend/editor/components/kit/search-input.vue +3 -3
- data/app/frontend/editor/components/kit/select-input.vue +19 -5
- data/app/frontend/editor/components/kit/simple-select.vue +1 -1
- data/app/frontend/editor/components/kit/submit-button.vue +4 -4
- data/app/frontend/editor/components/kit/tabs.vue +2 -2
- data/app/frontend/editor/components/kit/text-input.vue +1 -1
- data/app/frontend/editor/components/kit/textarea-input.vue +1 -1
- data/app/frontend/editor/components/link-picker/email.vue +1 -1
- data/app/frontend/editor/components/link-picker/index.vue +1 -1
- data/app/frontend/editor/components/link-picker/page.vue +5 -5
- data/app/frontend/editor/components/link-picker/url.vue +2 -2
- data/app/frontend/editor/components/page/edit.vue +3 -3
- data/app/frontend/editor/components/page/form/main.vue +3 -3
- data/app/frontend/editor/components/page/form/seo.vue +5 -5
- data/app/frontend/editor/components/page/list/list-item.vue +12 -12
- data/app/frontend/editor/components/page/new.vue +3 -3
- data/app/frontend/editor/components/section-block-pane/index.vue +1 -1
- data/app/frontend/editor/components/section-block-pane/setting-list.vue +1 -1
- data/app/frontend/editor/components/section-highlighter/bottom-actions.vue +1 -1
- data/app/frontend/editor/components/section-highlighter/top-left-actions.vue +7 -3
- data/app/frontend/editor/components/section-highlighter/top-right-actions.vue +9 -6
- data/app/frontend/editor/components/section-list/list-item.vue +12 -5
- data/app/frontend/editor/components/section-pane/block-list/list-item.vue +3 -3
- data/app/frontend/editor/components/section-pane/block-list/new-block-button.vue +4 -4
- data/app/frontend/editor/components/section-pane/block-tree/new-nested-block-button.vue +4 -4
- data/app/frontend/editor/components/section-pane/block-tree/tree-node.vue +2 -2
- data/app/frontend/editor/components/section-pane/index.vue +2 -2
- data/app/frontend/editor/components/section-pane/setting-list.vue +1 -1
- data/app/frontend/editor/components/sidebar-nav.vue +5 -5
- data/app/frontend/editor/components/style-pane/index.vue +1 -1
- data/app/frontend/editor/components/theme-section-list/index.vue +2 -2
- data/app/frontend/editor/components/theme-section-list/list-item.vue +1 -1
- data/app/frontend/editor/layouts/slide-pane.vue +1 -1
- data/app/frontend/editor/locales/index.js +5 -2
- data/app/frontend/editor/misc/utils.js +10 -7
- data/app/frontend/editor/mixins/global.js +1 -1
- data/app/frontend/editor/services/api.js +2 -2
- data/app/frontend/editor/services/image.js +6 -2
- data/app/frontend/editor/services/section.js +1 -0
- data/app/frontend/editor/store/actions/page.js +1 -1
- data/app/frontend/editor/store/getters.js +1 -1
- data/app/frontend/editor/views/content-pane.vue +9 -5
- data/app/frontend/editor/views/page-preview.vue +5 -1
- data/app/frontend/editor/views/pages/index.vue +1 -1
- data/app/frontend/live-preview-client/rails.js +1 -1
- data/app/frontend/live-preview-client/run-scripts.js +22 -24
- data/app/models/maglev/asset.rb +14 -0
- data/app/models/maglev/page/search_concern.rb +2 -1
- data/app/models/maglev/page.rb +18 -0
- data/app/models/maglev/page_path.rb +17 -0
- data/app/models/maglev/site.rb +24 -0
- data/db/migrate/20200824085207_create_maglev_sites.rb +2 -1
- data/db/migrate/20200824104648_create_maglev_pages.rb +2 -1
- data/db/migrate/20201206172020_create_maglev_assets.rb +2 -1
- data/db/migrate/20210830085101_create_maglev_page_paths.rb +3 -2
- data/lib/maglev/engine.rb +1 -0
- data/lib/maglev/migration.rb +20 -0
- data/lib/maglev/version.rb +1 -1
- data/lib/maglev.rb +7 -0
- data/lib/tasks/maglev_tasks.rake +1 -1
- data/package.json +21 -17
- data/{postcss.config.js → postcss.config.cjs} +1 -1
- data/yarn.lock +1171 -1009
- metadata +23 -9
- data/.eslintrc.js +0 -49
@@ -12,12 +12,10 @@
|
|
12
12
|
</template>
|
13
13
|
|
14
14
|
<script>
|
15
|
-
import { hexToRgb } from '@/misc/utils'
|
16
|
-
|
17
15
|
import CoreInput from '@/components/kit/color-input/core-input.vue'
|
18
16
|
|
19
17
|
export default {
|
20
|
-
name: '
|
18
|
+
name: 'UIKitColorInput',
|
21
19
|
components: { CoreInput },
|
22
20
|
props: {
|
23
21
|
label: { type: String, default: 'Label' },
|
@@ -27,7 +25,7 @@ export default {
|
|
27
25
|
default: () => [],
|
28
26
|
},
|
29
27
|
value: { type: String },
|
30
|
-
showLabel: { type: Boolean, default: true }
|
28
|
+
showLabel: { type: Boolean, default: true },
|
31
29
|
},
|
32
30
|
computed: {
|
33
31
|
updatableValue: {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<dropdown
|
2
|
+
<uikit-dropdown
|
3
3
|
:placement="placement"
|
4
4
|
v-on="$listeners"
|
5
5
|
class="relative"
|
@@ -33,12 +33,12 @@
|
|
33
33
|
</div>
|
34
34
|
</div>
|
35
35
|
</template>
|
36
|
-
</dropdown>
|
36
|
+
</uikit-dropdown>
|
37
37
|
</template>
|
38
38
|
|
39
39
|
<script>
|
40
40
|
export default {
|
41
|
-
name: '
|
41
|
+
name: 'UIKitConfirmationButton',
|
42
42
|
props: {
|
43
43
|
placement: { type: String, default: 'bottom' },
|
44
44
|
text: { type: String, default: null },
|
@@ -13,10 +13,10 @@
|
|
13
13
|
|
14
14
|
<script>
|
15
15
|
export default {
|
16
|
-
name: '
|
16
|
+
name: 'UIKitDivider',
|
17
17
|
props: {
|
18
18
|
text: { type: String, default: 'Text goes here' },
|
19
|
-
withHint: { type: Boolean, default: false }
|
20
|
-
}
|
19
|
+
withHint: { type: Boolean, default: false },
|
20
|
+
},
|
21
21
|
}
|
22
|
-
</script>
|
22
|
+
</script>
|
@@ -12,7 +12,7 @@
|
|
12
12
|
class="flex items-center justify-center flex-col"
|
13
13
|
@click="openIconPickerModal"
|
14
14
|
>
|
15
|
-
<icon name="ri-book-line" />
|
15
|
+
<uikit-icon name="ri-book-line" />
|
16
16
|
<p class="uppercase text-xs mt-1">{{ $t('iconInput.addButton') }}</p>
|
17
17
|
</button>
|
18
18
|
</div>
|
@@ -32,7 +32,7 @@
|
|
32
32
|
class="flex items-center justify-center flex-col mr-4"
|
33
33
|
@click="openIconPickerModal"
|
34
34
|
>
|
35
|
-
<icon name="ri-book-line" />
|
35
|
+
<uikit-icon name="ri-book-line" />
|
36
36
|
<p class="uppercase text-xs mt-1">
|
37
37
|
{{ $t('iconInput.replaceButton') }}
|
38
38
|
</p>
|
@@ -42,7 +42,7 @@
|
|
42
42
|
class="flex items-center justify-center flex-col"
|
43
43
|
@click="removeIcon"
|
44
44
|
>
|
45
|
-
<icon name="delete-bin-line" />
|
45
|
+
<uikit-icon name="delete-bin-line" />
|
46
46
|
<p class="uppercase text-xs mt-1">
|
47
47
|
{{ $t('iconInput.clearButton') }}
|
48
48
|
</p>
|
@@ -60,7 +60,7 @@ import FocusedInputMixin from '@/mixins/focused-input'
|
|
60
60
|
import IconLibrary from '@/components/icon-library/index.vue'
|
61
61
|
|
62
62
|
export default {
|
63
|
-
name: '
|
63
|
+
name: 'UIKitIconInput',
|
64
64
|
mixins: [FocusedInputMixin],
|
65
65
|
props: {
|
66
66
|
label: { type: String, default: 'Label' },
|
@@ -13,7 +13,7 @@
|
|
13
13
|
import { defineAsyncComponent } from 'vue'
|
14
14
|
|
15
15
|
export default {
|
16
|
-
name: '
|
16
|
+
name: 'UIKitIcon',
|
17
17
|
props: {
|
18
18
|
name: { type: String },
|
19
19
|
size: { type: String, default: '1.25rem' },
|
@@ -21,10 +21,15 @@ export default {
|
|
21
21
|
bounce: { type: Boolean, default: false },
|
22
22
|
library: { type: String, default: 'remixicons' },
|
23
23
|
},
|
24
|
+
data() {
|
25
|
+
return {
|
26
|
+
icons: import.meta.glob(`../../assets/**/*.svg`),
|
27
|
+
}
|
28
|
+
},
|
24
29
|
computed: {
|
25
30
|
icon() {
|
26
31
|
return defineAsyncComponent(() =>
|
27
|
-
|
32
|
+
this.icons[`../../assets/${this.library}/${this.name}.svg`](),
|
28
33
|
)
|
29
34
|
},
|
30
35
|
},
|
@@ -12,7 +12,7 @@
|
|
12
12
|
class="flex items-center justify-center flex-col"
|
13
13
|
@click="openImagePickerModal"
|
14
14
|
>
|
15
|
-
<icon name="camera-line" />
|
15
|
+
<uikit-icon name="camera-line" />
|
16
16
|
<p class="uppercase text-xs mt-1">{{ $t('imageInput.addButton') }}</p>
|
17
17
|
</button>
|
18
18
|
</div>
|
@@ -37,7 +37,7 @@
|
|
37
37
|
class="flex items-center justify-center flex-col mr-4"
|
38
38
|
@click="openImagePickerModal"
|
39
39
|
>
|
40
|
-
<icon name="camera-line" />
|
40
|
+
<uikit-icon name="camera-line" />
|
41
41
|
<p class="uppercase text-xs mt-1">
|
42
42
|
{{ $t('imageInput.replaceButton') }}
|
43
43
|
</p>
|
@@ -47,7 +47,7 @@
|
|
47
47
|
class="flex items-center justify-center flex-col"
|
48
48
|
@click="removeImage"
|
49
49
|
>
|
50
|
-
<icon name="delete-bin-line" />
|
50
|
+
<uikit-icon name="delete-bin-line" />
|
51
51
|
<p class="uppercase text-xs mt-1">
|
52
52
|
{{ $t('imageInput.clearButton') }}
|
53
53
|
</p>
|
@@ -56,7 +56,7 @@
|
|
56
56
|
</transition>
|
57
57
|
</div>
|
58
58
|
|
59
|
-
<text-input
|
59
|
+
<uikit-text-input
|
60
60
|
class="mt-2"
|
61
61
|
:showLabel="false"
|
62
62
|
:placeholder="$t('imageInput.altTextPlaceholder')"
|
@@ -73,7 +73,7 @@ import FocusedInputMixin from '@/mixins/focused-input'
|
|
73
73
|
import ImageLibrary from '@/components/image-library/index.vue'
|
74
74
|
|
75
75
|
export default {
|
76
|
-
name: '
|
76
|
+
name: 'UIKitImageInput',
|
77
77
|
mixins: [FocusedInputMixin],
|
78
78
|
props: {
|
79
79
|
label: { type: String, default: 'Label' },
|
@@ -26,29 +26,29 @@ import ListItemButton from './list-item-button.vue'
|
|
26
26
|
import Divider from './divider.vue'
|
27
27
|
import Hint from './hint.vue'
|
28
28
|
|
29
|
-
Vue.component('icon', Icon)
|
30
29
|
Vue.component('v-popoper', VPopover)
|
31
|
-
Vue.component('
|
32
|
-
Vue.component('
|
33
|
-
Vue.component('modal',
|
34
|
-
Vue.component('
|
35
|
-
Vue.component('
|
36
|
-
Vue.component('
|
37
|
-
Vue.component('
|
38
|
-
Vue.component('
|
39
|
-
Vue.component('
|
40
|
-
Vue.component('
|
41
|
-
Vue.component('
|
42
|
-
Vue.component('
|
43
|
-
Vue.component('
|
44
|
-
Vue.component('
|
45
|
-
Vue.component('
|
46
|
-
Vue.component('
|
47
|
-
Vue.component('
|
48
|
-
Vue.component('
|
49
|
-
Vue.component('
|
50
|
-
Vue.component('
|
51
|
-
Vue.component('
|
52
|
-
Vue.component('
|
53
|
-
Vue.component('
|
54
|
-
Vue.component('
|
30
|
+
Vue.component('uikit-icon', Icon)
|
31
|
+
Vue.component('uikit-dropdown', Dropdown)
|
32
|
+
Vue.component('uikit-modal-root', ModalRoot)
|
33
|
+
Vue.component('uikit-modal', Modal)
|
34
|
+
Vue.component('uikit-tabs', Tabs)
|
35
|
+
Vue.component('uikit-accordion', Accordion)
|
36
|
+
Vue.component('uikit-confirmation-button', ConfirmationButton)
|
37
|
+
Vue.component('uikit-submit-button', SubmitButton)
|
38
|
+
Vue.component('uikit-image-input', ImageInput)
|
39
|
+
Vue.component('uikit-icon-input', IconInput)
|
40
|
+
Vue.component('uikit-link-input', LinkInput)
|
41
|
+
Vue.component('uikit-select-input', SelectInput)
|
42
|
+
Vue.component('uikit-textarea-input', TextAreaInput)
|
43
|
+
Vue.component('uikit-text-input', TextInput)
|
44
|
+
Vue.component('uikit-rich-text-input', RichTextInput)
|
45
|
+
Vue.component('uikit-checkbox-input', CheckboxInput)
|
46
|
+
Vue.component('uikit-search-input', SearchInput)
|
47
|
+
Vue.component('uikit-pagination', Pagination)
|
48
|
+
Vue.component('uikit-page-icon', PageIcon)
|
49
|
+
Vue.component('uikit-color-input', ColorInput)
|
50
|
+
Vue.component('uikit-simple-select', SimpleSelect)
|
51
|
+
Vue.component('uikit-collection-item-input', CollectionItemInput)
|
52
|
+
Vue.component('uikit-list-item-button', ListItemButton)
|
53
|
+
Vue.component('uikit-divider', Divider)
|
54
|
+
Vue.component('uikit-hint', Hint)
|
@@ -4,7 +4,7 @@
|
|
4
4
|
{{ label }}
|
5
5
|
</label>
|
6
6
|
|
7
|
-
<text-input
|
7
|
+
<uikit-text-input
|
8
8
|
v-model="textInput"
|
9
9
|
:showLabel="false"
|
10
10
|
:placeholder="$t('linkInput.nestedTextPlaceholder')"
|
@@ -18,15 +18,15 @@
|
|
18
18
|
@click="openLinkPickerModal"
|
19
19
|
>
|
20
20
|
<div class="flex-1 flex items-center overflow-hidden" v-if="isPage">
|
21
|
-
<page-icon :page="{ path: value.href }" class="flex-shrink-0" />
|
21
|
+
<uikit-page-icon :page="{ path: value.href }" class="flex-shrink-0" />
|
22
22
|
<span class="ml-3">{{ value.linkLabel }}</span>
|
23
23
|
</div>
|
24
24
|
<div class="flex-1 flex items-center overflow-hidden" v-if="isUrl">
|
25
|
-
<icon name="ri-external-link-line" class="flex-shrink-0" />
|
25
|
+
<uikit-icon name="ri-external-link-line" class="flex-shrink-0" />
|
26
26
|
<span class="ml-3 shrink">{{ value.href }}</span>
|
27
27
|
</div>
|
28
28
|
<div class="flex-1 flex items-center overflow-hidden" v-if="isEmail">
|
29
|
-
<icon name="ri-mail-line" class="flex-shrink-0" />
|
29
|
+
<uikit-icon name="ri-mail-line" class="flex-shrink-0" />
|
30
30
|
<span class="ml-3">{{ value.email }}</span>
|
31
31
|
</div>
|
32
32
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
</div>
|
39
39
|
|
40
40
|
<button class="ml-3" @click.prevent.stop="clear" v-if="!isBlank(value)">
|
41
|
-
<icon name="ri-close-line" />
|
41
|
+
<uikit-icon name="ri-close-line" />
|
42
42
|
</button>
|
43
43
|
</div>
|
44
44
|
</div>
|
@@ -49,7 +49,7 @@ import LinkPicker from '@/components/link-picker/index.vue'
|
|
49
49
|
import { pick } from '@/misc/utils'
|
50
50
|
|
51
51
|
export default {
|
52
|
-
name: '
|
52
|
+
name: 'UIKitLinkInput',
|
53
53
|
props: {
|
54
54
|
label: { type: String, default: 'Label' },
|
55
55
|
name: { type: String, default: 'image' },
|
@@ -2,13 +2,13 @@
|
|
2
2
|
<button
|
3
3
|
class="px-1 py-1 rounded-full bg-gray-600 bg-opacity-0 hover:text-gray-900 text-gray-600 focus:outline-none hover:bg-opacity-10 transition-colors duration-200"
|
4
4
|
>
|
5
|
-
<icon :name="iconName" size="1.25rem" />
|
5
|
+
<uikit-icon :name="iconName" size="1.25rem" />
|
6
6
|
</button>
|
7
7
|
</template>
|
8
8
|
|
9
9
|
<script>
|
10
10
|
export default {
|
11
|
-
name: '
|
11
|
+
name: 'UIKitListItemButton',
|
12
12
|
props: {
|
13
13
|
iconName: { type: String, required: true },
|
14
14
|
},
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<modal
|
2
|
+
<uikit-modal
|
3
3
|
:isOpen="!!currentModal"
|
4
4
|
:title="title"
|
5
5
|
:containerClass="containerClass"
|
@@ -14,14 +14,14 @@
|
|
14
14
|
v-on="modal.listeners"
|
15
15
|
v-show="index === stack.length - 1"
|
16
16
|
/>
|
17
|
-
</modal>
|
17
|
+
</uikit-modal>
|
18
18
|
</template>
|
19
19
|
|
20
20
|
<script>
|
21
21
|
import { ModalBus } from '@/plugins/event-bus'
|
22
22
|
|
23
23
|
export default {
|
24
|
-
name: '
|
24
|
+
name: 'UIKitModalRoot',
|
25
25
|
data() {
|
26
26
|
return {
|
27
27
|
stack: [], // NOTE: we stack modals!
|
@@ -14,7 +14,7 @@
|
|
14
14
|
type="button"
|
15
15
|
@click="$emit('on-close', true)"
|
16
16
|
>
|
17
|
-
<icon name="ri-close-circle-line" />
|
17
|
+
<uikit-icon name="ri-close-circle-line" />
|
18
18
|
</button>
|
19
19
|
</div>
|
20
20
|
|
@@ -29,7 +29,7 @@
|
|
29
29
|
|
30
30
|
<script>
|
31
31
|
export default {
|
32
|
-
name: '
|
32
|
+
name: 'UIKitModal',
|
33
33
|
props: {
|
34
34
|
isOpen: Boolean,
|
35
35
|
title: { type: String, default: 'Modal' },
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<template>
|
2
|
-
<icon :name="iconName" />
|
2
|
+
<uikit-icon :name="iconName" />
|
3
3
|
</template>
|
4
4
|
|
5
5
|
<script>
|
6
6
|
export default {
|
7
|
-
name: '
|
7
|
+
name: 'UIKitPageIcon',
|
8
8
|
props: {
|
9
9
|
page: { type: Object, required: true },
|
10
10
|
size: { type: String, default: '1.25rem' },
|
@@ -10,7 +10,7 @@
|
|
10
10
|
</div>
|
11
11
|
<div class="flex items-center" v-if="visible">
|
12
12
|
<page-button :page="activePage - 1" @click="change" class="mr-1">
|
13
|
-
<icon name="arrow-drop-left" />
|
13
|
+
<uikit-icon name="arrow-drop-left" />
|
14
14
|
</page-button>
|
15
15
|
|
16
16
|
<page-button
|
@@ -37,7 +37,7 @@
|
|
37
37
|
/>
|
38
38
|
|
39
39
|
<page-button :page="activePage + 1" @click="change">
|
40
|
-
<icon name="arrow-drop-right" />
|
40
|
+
<uikit-icon name="arrow-drop-right" />
|
41
41
|
</page-button>
|
42
42
|
</div>
|
43
43
|
</div>
|
@@ -48,7 +48,7 @@
|
|
48
48
|
import PageButton from './button.vue'
|
49
49
|
|
50
50
|
export default {
|
51
|
-
name: '
|
51
|
+
name: 'UIKitPagination',
|
52
52
|
components: { PageButton },
|
53
53
|
props: {
|
54
54
|
labelI18nKey: { type: String, default: 'pagination.defaultLabel' },
|
@@ -1,52 +1,52 @@
|
|
1
1
|
<template>
|
2
|
-
<dropdown placement="left" ref="dropdown">
|
2
|
+
<uikit-dropdown placement="left" ref="dropdown">
|
3
3
|
<template v-slot:button>
|
4
4
|
<button
|
5
5
|
class="rounded-sm px-2 py-2 bg-gray-100 hover:bg-gray-200 flex items-center focus:outline-none focus:ring"
|
6
6
|
>
|
7
|
-
<icon :name="iconName" class="w-4 h-4 text-dark" />
|
8
|
-
<icon name="arrow-down-s-line" class="ml-1" />
|
7
|
+
<uikit-icon :name="iconName" class="w-4 h-4 text-dark" />
|
8
|
+
<uikit-icon name="arrow-down-s-line" class="ml-1" />
|
9
9
|
</button>
|
10
10
|
</template>
|
11
11
|
|
12
12
|
<template v-slot:content>
|
13
13
|
<div class="w-full flex">
|
14
14
|
<button class="py-2 px-3 hover:bg-gray-200" @click="commands.paragraph">
|
15
|
-
<icon name="format-paragraph" />
|
15
|
+
<uikit-icon name="format-paragraph" />
|
16
16
|
</button>
|
17
17
|
<button
|
18
18
|
class="py-2 px-3 hover:bg-gray-200"
|
19
19
|
@click="commands.heading({ level: 2 })"
|
20
20
|
>
|
21
|
-
<icon name="format-heading-2" />
|
21
|
+
<uikit-icon name="format-heading-2" />
|
22
22
|
</button>
|
23
23
|
<button
|
24
24
|
class="py-2 px-3 hover:bg-gray-200"
|
25
25
|
@click="commands.heading({ level: 3 })"
|
26
26
|
>
|
27
|
-
<icon name="format-heading-3" />
|
27
|
+
<uikit-icon name="format-heading-3" />
|
28
28
|
</button>
|
29
29
|
<button
|
30
30
|
class="py-2 px-3 hover:bg-gray-200"
|
31
31
|
@click="commands.heading({ level: 4 })"
|
32
32
|
>
|
33
|
-
<icon name="format-heading-4" />
|
33
|
+
<uikit-icon name="format-heading-4" />
|
34
34
|
</button>
|
35
35
|
<button
|
36
36
|
class="py-2 px-3 hover:bg-gray-200"
|
37
37
|
@click="commands.blockquote"
|
38
38
|
>
|
39
|
-
<icon name="format-blockquote" />
|
39
|
+
<uikit-icon name="format-blockquote" />
|
40
40
|
</button>
|
41
41
|
<button
|
42
42
|
class="py-2 px-3 hover:bg-gray-200"
|
43
43
|
@click="commands.code_block"
|
44
44
|
>
|
45
|
-
<icon name="format-code" />
|
45
|
+
<uikit-icon name="format-code" />
|
46
46
|
</button>
|
47
47
|
</div>
|
48
48
|
</template>
|
49
|
-
</dropdown>
|
49
|
+
</uikit-dropdown>
|
50
50
|
</template>
|
51
51
|
|
52
52
|
<script>
|
@@ -5,16 +5,16 @@
|
|
5
5
|
class="block h-full rounded-sm px-2 py-2 bg-gray-100 hover:bg-gray-200 flex items-center focus:outline-none focus:ring"
|
6
6
|
@click="insertTable"
|
7
7
|
>
|
8
|
-
<icon name="ri-table-2" class="w-4 h-4 text-dark" />
|
8
|
+
<uikit-icon name="ri-table-2" class="w-4 h-4 text-dark" />
|
9
9
|
</button>
|
10
10
|
|
11
|
-
<dropdown placement="bottom" ref="dropdown" v-else>
|
11
|
+
<uikit-dropdown placement="bottom" ref="dropdown" v-else>
|
12
12
|
<template v-slot:button>
|
13
13
|
<button
|
14
14
|
class="rounded-sm px-2 py-2 bg-gray-100 hover:bg-gray-200 flex items-center focus:outline-none focus:ring"
|
15
15
|
>
|
16
|
-
<icon name="ri-table-2" class="w-4 h-4 text-dark" />
|
17
|
-
<icon name="arrow-down-s-line" class="ml-1" />
|
16
|
+
<uikit-icon name="ri-table-2" class="w-4 h-4 text-dark" />
|
17
|
+
<uikit-icon name="arrow-down-s-line" class="ml-1" />
|
18
18
|
</button>
|
19
19
|
</template>
|
20
20
|
|
@@ -24,47 +24,53 @@
|
|
24
24
|
class="py-2 px-3 hover:bg-gray-200"
|
25
25
|
@click="commands.deleteTable"
|
26
26
|
>
|
27
|
-
<icon name="delete-bin-line" class="w-4 h-4 text-dark" />
|
27
|
+
<uikit-icon name="delete-bin-line" class="w-4 h-4 text-dark" />
|
28
28
|
</button>
|
29
29
|
<button
|
30
30
|
class="py-2 px-3 hover:bg-gray-200"
|
31
31
|
@click="commands.addColumnBefore"
|
32
32
|
>
|
33
|
-
<icon
|
33
|
+
<uikit-icon
|
34
|
+
name="ri-insert-column-left"
|
35
|
+
class="w-4 h-4 text-dark"
|
36
|
+
/>
|
34
37
|
</button>
|
35
38
|
<button
|
36
39
|
class="py-2 px-3 hover:bg-gray-200"
|
37
40
|
@click="commands.addColumnAfter"
|
38
41
|
>
|
39
|
-
<icon
|
42
|
+
<uikit-icon
|
43
|
+
name="ri-insert-column-right"
|
44
|
+
class="w-4 h-4 text-dark"
|
45
|
+
/>
|
40
46
|
</button>
|
41
47
|
<button
|
42
48
|
class="py-2 px-3 hover:bg-gray-200"
|
43
49
|
@click="commands.deleteColumn"
|
44
50
|
>
|
45
|
-
<icon name="ri-delete-column" class="w-4 h-4 text-dark" />
|
51
|
+
<uikit-icon name="ri-delete-column" class="w-4 h-4 text-dark" />
|
46
52
|
</button>
|
47
53
|
<button
|
48
54
|
class="py-2 px-3 hover:bg-gray-200"
|
49
55
|
@click="commands.addRowBefore"
|
50
56
|
>
|
51
|
-
<icon name="ri-insert-row-top" class="w-4 h-4 text-dark" />
|
57
|
+
<uikit-icon name="ri-insert-row-top" class="w-4 h-4 text-dark" />
|
52
58
|
</button>
|
53
59
|
<button
|
54
60
|
class="py-2 px-3 hover:bg-gray-200"
|
55
61
|
@click="commands.addRowAfter"
|
56
62
|
>
|
57
|
-
<icon name="ri-insert-row-bottom" class="w-4 h-4 text-dark" />
|
63
|
+
<uikit-icon name="ri-insert-row-bottom" class="w-4 h-4 text-dark" />
|
58
64
|
</button>
|
59
65
|
<button
|
60
66
|
class="py-2 px-3 hover:bg-gray-200"
|
61
67
|
@click="commands.deleteRow"
|
62
68
|
>
|
63
|
-
<icon name="ri-delete-row" class="w-4 h-4 text-dark" />
|
69
|
+
<uikit-icon name="ri-delete-row" class="w-4 h-4 text-dark" />
|
64
70
|
</button>
|
65
71
|
</div>
|
66
72
|
</template>
|
67
|
-
</dropdown>
|
73
|
+
</uikit-dropdown>
|
68
74
|
</div>
|
69
75
|
</template>
|
70
76
|
|
@@ -81,7 +81,7 @@ import EditorLinkButtons from './rich-text-input/link-buttons.vue'
|
|
81
81
|
import EditorTableButton from './rich-text-input/table-button.vue'
|
82
82
|
|
83
83
|
export default {
|
84
|
-
name: '
|
84
|
+
name: 'UIKitRichTextInput',
|
85
85
|
mixins: [FocusedInputMixin],
|
86
86
|
components: {
|
87
87
|
EditorContent,
|
@@ -4,7 +4,7 @@
|
|
4
4
|
class="flex items-center py-2 px-4 rounded bg-gray-100 text-gray-800 focus:outline-none focus:ring"
|
5
5
|
>
|
6
6
|
<button class="mr-2" type="submit">
|
7
|
-
<icon name="search-line" class="text-gray-500" />
|
7
|
+
<uikit-icon name="search-line" class="text-gray-500" />
|
8
8
|
</button>
|
9
9
|
|
10
10
|
<input
|
@@ -21,14 +21,14 @@
|
|
21
21
|
@click.stop.prevent="reset"
|
22
22
|
type="button"
|
23
23
|
>
|
24
|
-
<icon name="close-line" />
|
24
|
+
<uikit-icon name="close-line" />
|
25
25
|
</button>
|
26
26
|
</form>
|
27
27
|
</template>
|
28
28
|
|
29
29
|
<script>
|
30
30
|
export default {
|
31
|
-
name: '
|
31
|
+
name: 'UIKitSearchInput',
|
32
32
|
props: {
|
33
33
|
placeholder: { type: String, default: 'Type your query here' },
|
34
34
|
},
|
@@ -22,11 +22,25 @@
|
|
22
22
|
@click.stop.prevent="clear"
|
23
23
|
v-if="canClear"
|
24
24
|
>
|
25
|
-
<icon name="ri-close-line" />
|
25
|
+
<uikit-icon name="ri-close-line" />
|
26
26
|
</button>
|
27
|
-
<div
|
28
|
-
|
29
|
-
|
27
|
+
<div
|
28
|
+
:class="{
|
29
|
+
'flex-shrink-0': true,
|
30
|
+
'ml-1': canClear,
|
31
|
+
'ml-auto': !canClear,
|
32
|
+
}"
|
33
|
+
>
|
34
|
+
<uikit-icon
|
35
|
+
name="arrow-up-s-line"
|
36
|
+
size="1.5rem"
|
37
|
+
:class="{ hidden: !isOpen }"
|
38
|
+
/>
|
39
|
+
<uikit-icon
|
40
|
+
name="arrow-down-s-line"
|
41
|
+
size="1.5rem"
|
42
|
+
:class="{ hidden: isOpen }"
|
43
|
+
/>
|
30
44
|
</div>
|
31
45
|
</div>
|
32
46
|
</button>
|
@@ -78,7 +92,7 @@
|
|
78
92
|
import { debounce } from '@/misc/utils'
|
79
93
|
|
80
94
|
export default {
|
81
|
-
name: '
|
95
|
+
name: 'UIKitSelectInput',
|
82
96
|
props: {
|
83
97
|
label: { type: String, default: 'Label' },
|
84
98
|
name: { type: String, default: 'text' },
|