@monoui/vuejs 1.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +27 -0
  2. package/dist/main.js +410 -0
  3. package/package.json +105 -0
  4. package/src/components/BreadCrumb/BreadCrumb.vue +59 -0
  5. package/src/components/BreadCrumb/index.js +3 -0
  6. package/src/components/Button/Button.vue +118 -0
  7. package/src/components/Button/ButtonCore.vue +59 -0
  8. package/src/components/Button/ButtonEdit.vue +15 -0
  9. package/src/components/Button/ButtonRemove.vue +15 -0
  10. package/src/components/Button/index.js +4 -0
  11. package/src/components/Card/Card.vue +82 -0
  12. package/src/components/Card/CardBody.vue +72 -0
  13. package/src/components/Card/CardFooter.vue +55 -0
  14. package/src/components/Card/CardHeader.vue +58 -0
  15. package/src/components/Card/CardSubTitle.vue +43 -0
  16. package/src/components/Card/CardText.vue +21 -0
  17. package/src/components/Card/CardTitle.vue +38 -0
  18. package/src/components/Card/index.js +17 -0
  19. package/src/components/Checkbox/Checkbox.vue +72 -0
  20. package/src/components/Checkbox/index.js +3 -0
  21. package/src/components/Cron/Cron.vue +68 -0
  22. package/src/components/Cron/index.js +3 -0
  23. package/src/components/Date/DatePicker.vue +406 -0
  24. package/src/components/Date/index.js +3 -0
  25. package/src/components/Dropdown/Dropdown.vue +51 -0
  26. package/src/components/Dropdown/DropdownDivider.vue +12 -0
  27. package/src/components/Dropdown/DropdownItem.vue +23 -0
  28. package/src/components/Dropdown/index.js +5 -0
  29. package/src/components/DynamicInput/DynamicInput.vue +192 -0
  30. package/src/components/DynamicInput/index.js +3 -0
  31. package/src/components/DynamicInput/inputTypes.js +14 -0
  32. package/src/components/Icon/Icon.vue +43 -0
  33. package/src/components/Icon/index.js +3 -0
  34. package/src/components/Info/Info.vue +19 -0
  35. package/src/components/Info/index.js +3 -0
  36. package/src/components/Input/Input.vue +73 -0
  37. package/src/components/Input/index.js +3 -0
  38. package/src/components/KeyValue/KeyValue.vue +138 -0
  39. package/src/components/KeyValue/index.js +3 -0
  40. package/src/components/KeyValueInput/KeyValueInput.vue +203 -0
  41. package/src/components/KeyValueInput/index.js +3 -0
  42. package/src/components/Loader/Loader.vue +82 -0
  43. package/src/components/Loader/content-loader.js +150 -0
  44. package/src/components/Loader/index.js +2 -0
  45. package/src/components/Modal/Alert.vue +96 -0
  46. package/src/components/Modal/Modal.vue +125 -0
  47. package/src/components/Modal/RemoveAlert.vue +58 -0
  48. package/src/components/Modal/UnsavedChangesAlert.vue +83 -0
  49. package/src/components/Modal/index.js +6 -0
  50. package/src/components/MultiKeyValue/MultiKeyValue.vue +359 -0
  51. package/src/components/MultiKeyValue/index.js +3 -0
  52. package/src/components/NoData/NoData.vue +20 -0
  53. package/src/components/NoData/index.js +3 -0
  54. package/src/components/Popover/Popover.vue +91 -0
  55. package/src/components/Popover/index.js +3 -0
  56. package/src/components/Select/Select.vue +71 -0
  57. package/src/components/Select/index.js +3 -0
  58. package/src/components/Spinner/Spinner.vue +19 -0
  59. package/src/components/Spinner/index.js +3 -0
  60. package/src/components/Table/Icons/ArrowDown.vue +18 -0
  61. package/src/components/Table/Icons/ArrowDownLong.vue +18 -0
  62. package/src/components/Table/Icons/ArrowUp.vue +18 -0
  63. package/src/components/Table/Icons/ArrowUpLong.vue +18 -0
  64. package/src/components/Table/Icons/BaseIcon.vue +46 -0
  65. package/src/components/Table/Icons/Sorting.vue +16 -0
  66. package/src/components/Table/Icons/SortingAZ.vue +18 -0
  67. package/src/components/Table/Icons/SortingArrows.vue +18 -0
  68. package/src/components/Table/Table.vue +548 -0
  69. package/src/components/Table/index.js +3 -0
  70. package/src/components/Tabs/Tab.vue +36 -0
  71. package/src/components/Tabs/Tabs.vue +44 -0
  72. package/src/components/Tabs/index.js +4 -0
  73. package/src/components/TagInput/TagInput.vue +129 -0
  74. package/src/components/TagInput/index.js +3 -0
  75. package/src/components/Timeline/Timeline.vue +33 -0
  76. package/src/components/Timeline/TimelineItem.vue +40 -0
  77. package/src/components/Timeline/index.js +4 -0
  78. package/src/components/Tooltip/Tooltip.vue +62 -0
  79. package/src/components/Tooltip/index.js +3 -0
  80. package/src/functions/alert.js +40 -0
  81. package/src/functions/notification.js +51 -0
  82. package/src/icons.js +144 -0
  83. package/src/index.js +133 -0
@@ -0,0 +1,203 @@
1
+ <template>
2
+ <div>
3
+ <b-form-group>
4
+ <mui-editor
5
+ v-show="showEditor"
6
+ ref="editor"
7
+ language="json"
8
+ id="Editor"
9
+ v-model="dataForEditor"
10
+ value
11
+ ></mui-editor>
12
+ </b-form-group>
13
+
14
+ <div id="InputForm" v-show="showInput">
15
+ <b-form inline v-for="([k, v], i) in templatePairs" :key="i">
16
+ <b-form-input
17
+ :ref="'Key' + i"
18
+ :state="duplicates.includes(i) ? false : null"
19
+ style="flex-grow:1"
20
+ class="mb-3 mt-1 mr-sm-3 mb-sm-3"
21
+ :placeholder="keysLabel"
22
+ :value="k"
23
+ @input="key => changeKey(i, key)"
24
+ data-test="key-input"
25
+ />
26
+ <b-form-input
27
+ :ref="'Value' + i"
28
+ :state="duplicates.includes(i) ? false : null"
29
+ style="flex-grow:1"
30
+ class="mb-3 mt-1 mr-sm-3 mb-sm-3"
31
+ :placeholder="valuesLabel"
32
+ :value="v"
33
+ :disabled="k === ''"
34
+ @input="value => changeValue(i, value)"
35
+ data-test="value-input"
36
+ />
37
+ <b-button
38
+ variant="outline-default"
39
+ @click="deleteValue(k)"
40
+ class="mb-3 mt-1 mr-sm-3 mb-sm-3"
41
+ size="sm"
42
+ >
43
+ <i class="fas fa-trash"></i>
44
+ </b-button>
45
+ </b-form>
46
+ </div>
47
+ <b-form-group>
48
+ <div class="pull-right" style="margin-right:13px">
49
+ <b-button
50
+ size="sm"
51
+ @click="toggle"
52
+ :pressed="showEditor"
53
+ variant="outline"
54
+ >
55
+ <i class="fas fa-code"></i>
56
+ </b-button>
57
+ </div>
58
+ </b-form-group>
59
+ </div>
60
+ </template>
61
+ <script>
62
+ const isString = v => v === null || v === undefined || typeof v === "string";
63
+
64
+ const addPropIfNotPresent = (obj, [key, value]) =>
65
+ obj[key] !== undefined ? obj : { ...obj, [key]: value };
66
+
67
+ const objectFromPairs = pairs =>
68
+ pairs.reduce((acc, curr) => addPropIfNotPresent(acc, curr), {});
69
+
70
+ const pairsFromObject = object => Object.entries(object);
71
+
72
+ function areEqualShallow(a, b) {
73
+ for (let key in a) {
74
+ if (!(key in b) || a[key] !== b[key]) {
75
+ return false;
76
+ }
77
+ }
78
+ for (let key in b) {
79
+ if (!(key in a) || a[key] !== b[key]) {
80
+ return false;
81
+ }
82
+ }
83
+ return true;
84
+ }
85
+
86
+ export default {
87
+ name: "mui-key-value-input",
88
+ props: {
89
+ keysLabel: {
90
+ type: String,
91
+ required: false,
92
+ default: "Key"
93
+ },
94
+ valuesLabel: {
95
+ type: String,
96
+ required: false,
97
+ default: "Value"
98
+ },
99
+ value: {
100
+ type: Object,
101
+ required: false,
102
+ default: null,
103
+ validator: value => Object.values(value).every(isString)
104
+ }
105
+ },
106
+
107
+ data: function() {
108
+ return {
109
+ internalValue: this.value ? pairsFromObject(this.value) : [],
110
+ showEditor: false,
111
+ showInput: true
112
+ };
113
+ },
114
+ watch: {
115
+ value(newValue) {
116
+ const currentValueAsObject = objectFromPairs(this.effectiveValue);
117
+ if (!areEqualShallow(newValue, currentValueAsObject)) {
118
+ this.effectiveValue = pairsFromObject(newValue);
119
+ }
120
+ }
121
+ },
122
+
123
+ computed: {
124
+ dataForEditor: {
125
+ get: function() {
126
+ return JSON.stringify(this.value);
127
+ },
128
+ set: function(value) {
129
+ try {
130
+ if (value) {
131
+ this.$emit("input", JSON.parse(value));
132
+ } else {
133
+ this.$emit("input", {});
134
+ }
135
+ // eslint-disable-next-line no-empty
136
+ } catch {}
137
+ }
138
+ },
139
+
140
+ effectiveValue: {
141
+ get() {
142
+ return this.internalValue;
143
+ },
144
+ set(v) {
145
+ const newValueAsObject = objectFromPairs(v);
146
+ const currentValueAsObject = objectFromPairs(
147
+ this.internalValue
148
+ );
149
+ this.internalValue = v;
150
+ if (!areEqualShallow(newValueAsObject, currentValueAsObject)) {
151
+ /**
152
+ *
153
+ *
154
+ * @event input
155
+ * @type {object}
156
+ */
157
+ this.$emit("input", objectFromPairs(v));
158
+ }
159
+ }
160
+ },
161
+
162
+ templatePairs: {
163
+ get() {
164
+ return this.effectiveValue.concat([["", ""]]);
165
+ },
166
+ set(newPairs) {
167
+ const newValue = newPairs.filter(([k]) => k);
168
+ this.effectiveValue = newValue;
169
+ }
170
+ },
171
+
172
+ duplicates() {
173
+ return this.effectiveValue
174
+ .map(v => v[0])
175
+ .map((value, idx, array) =>
176
+ array.findIndex(el => el === value) < idx ? idx : null
177
+ )
178
+ .filter(el => el !== null);
179
+ }
180
+ },
181
+ methods: {
182
+ deleteValue: function(key) {
183
+ this.$delete(this.value, key);
184
+ },
185
+ toggle: function() {
186
+ this.showEditor = !this.showEditor;
187
+ this.showInput = !this.showInput;
188
+ },
189
+ changeKey(index, key) {
190
+ const head = this.templatePairs.slice(0, index);
191
+ const updatedPair = [key, this.templatePairs[index][1]];
192
+ const tail = this.templatePairs.slice(index + 1);
193
+ this.templatePairs = head.concat([updatedPair]).concat(tail);
194
+ },
195
+ changeValue(index, value) {
196
+ const head = this.templatePairs.slice(0, index);
197
+ const updatedPair = [this.templatePairs[index][0], value];
198
+ const tail = this.templatePairs.slice(index + 1);
199
+ this.templatePairs = head.concat([updatedPair]).concat(tail);
200
+ }
201
+ }
202
+ };
203
+ </script>
@@ -0,0 +1,3 @@
1
+ import KeyValueInput from "./KeyValueInput.vue";
2
+
3
+ export default KeyValueInput;
@@ -0,0 +1,82 @@
1
+ <template>
2
+ <div v-if="loading">
3
+ <content-loader v-bind="$attrs">
4
+ <slot>
5
+ <rect x="51" y="45" rx="3" ry="3" width="906" height="17" />
6
+ <circle cx="879" cy="123" r="11" />
7
+ <circle cx="914" cy="123" r="11" />
8
+ <rect x="104" y="115" rx="3" ry="3" width="141" height="15" />
9
+ <rect x="305" y="114" rx="3" ry="3" width="299" height="15" />
10
+ <rect x="661" y="114" rx="3" ry="3" width="141" height="15" />
11
+ <rect x="55" y="155" rx="3" ry="3" width="897" height="2" />
12
+ <circle cx="880" cy="184" r="11" />
13
+ <circle cx="915" cy="184" r="11" />
14
+ <rect x="105" y="176" rx="3" ry="3" width="141" height="15" />
15
+ <rect x="306" y="175" rx="3" ry="3" width="299" height="15" />
16
+ <rect x="662" y="175" rx="3" ry="3" width="141" height="15" />
17
+ <rect x="56" y="216" rx="3" ry="3" width="897" height="2" />
18
+ <circle cx="881" cy="242" r="11" />
19
+ <circle cx="916" cy="242" r="11" />
20
+ <rect x="106" y="234" rx="3" ry="3" width="141" height="15" />
21
+ <rect x="307" y="233" rx="3" ry="3" width="299" height="15" />
22
+ <rect x="663" y="233" rx="3" ry="3" width="141" height="15" />
23
+ <rect x="57" y="274" rx="3" ry="3" width="897" height="2" />
24
+ <circle cx="882" cy="303" r="11" />
25
+ <circle cx="917" cy="303" r="11" />
26
+ <rect x="107" y="295" rx="3" ry="3" width="141" height="15" />
27
+ <rect x="308" y="294" rx="3" ry="3" width="299" height="15" />
28
+ <rect x="664" y="294" rx="3" ry="3" width="141" height="15" />
29
+ <rect x="58" y="335" rx="3" ry="3" width="897" height="2" />
30
+ <circle cx="881" cy="363" r="11" />
31
+ <circle cx="916" cy="363" r="11" />
32
+ <rect x="106" y="355" rx="3" ry="3" width="141" height="15" />
33
+ <rect x="307" y="354" rx="3" ry="3" width="299" height="15" />
34
+ <rect x="663" y="354" rx="3" ry="3" width="141" height="15" />
35
+ <rect x="57" y="395" rx="3" ry="3" width="897" height="2" />
36
+ <circle cx="882" cy="424" r="11" />
37
+ <circle cx="917" cy="424" r="11" />
38
+ <rect x="107" y="416" rx="3" ry="3" width="141" height="15" />
39
+ <rect x="308" y="415" rx="3" ry="3" width="299" height="15" />
40
+ <rect x="664" y="415" rx="3" ry="3" width="141" height="15" />
41
+ <rect x="55" y="453" rx="3" ry="3" width="897" height="2" />
42
+ <rect x="51" y="49" rx="3" ry="3" width="2" height="465" />
43
+ <rect x="955" y="49" rx="3" ry="3" width="2" height="465" />
44
+ <circle cx="882" cy="484" r="11" />
45
+ <circle cx="917" cy="484" r="11" />
46
+ <rect x="107" y="476" rx="3" ry="3" width="141" height="15" />
47
+ <rect x="308" y="475" rx="3" ry="3" width="299" height="15" />
48
+ <rect x="664" y="475" rx="3" ry="3" width="141" height="15" />
49
+ <rect x="55" y="513" rx="3" ry="3" width="897" height="2" />
50
+ <rect x="52" y="80" rx="3" ry="3" width="906" height="17" />
51
+ <rect x="53" y="57" rx="3" ry="3" width="68" height="33" />
52
+ <rect x="222" y="54" rx="3" ry="3" width="149" height="33" />
53
+ <rect x="544" y="55" rx="3" ry="3" width="137" height="33" />
54
+ <rect x="782" y="56" rx="3" ry="3" width="72" height="33" />
55
+ <rect x="933" y="54" rx="3" ry="3" width="24" height="33" />
56
+ </slot>
57
+ </content-loader>
58
+ </div>
59
+ </template>
60
+
61
+ <script>
62
+ import ContentLoader from "./content-loader";
63
+ export default {
64
+ name: "mui-loader",
65
+ props: {
66
+ loading: {
67
+ type: Boolean,
68
+ default: true
69
+ }
70
+ },
71
+ mounted() {},
72
+ components: {
73
+ ContentLoader
74
+ }
75
+ };
76
+ </script>
77
+
78
+ <style scoped>
79
+ svg {
80
+ width: 100%;
81
+ }
82
+ </style>
@@ -0,0 +1,150 @@
1
+ const uid = () =>
2
+ Math.random()
3
+ .toString(36)
4
+ .substring(2);
5
+
6
+ export default {
7
+ name: "ContentLoader",
8
+
9
+ functional: true,
10
+
11
+ props: {
12
+ width: {
13
+ type: [Number, String],
14
+ default: 1000
15
+ },
16
+ height: {
17
+ type: [Number, String],
18
+ default: 550
19
+ },
20
+ speed: {
21
+ type: Number,
22
+ default: 2
23
+ },
24
+ preserveAspectRatio: {
25
+ type: String,
26
+ default: "xMidYMid meet"
27
+ },
28
+ baseUrl: {
29
+ type: String,
30
+ default: ""
31
+ },
32
+ primaryColor: {
33
+ type: String,
34
+ default: "#f9f9f9"
35
+ },
36
+ secondaryColor: {
37
+ type: String,
38
+ default: "#ecebeb"
39
+ },
40
+ primaryOpacity: {
41
+ type: Number,
42
+ default: 1
43
+ },
44
+ secondaryOpacity: {
45
+ type: Number,
46
+ default: 1
47
+ },
48
+ uniqueKey: {
49
+ type: String
50
+ },
51
+ animate: {
52
+ type: Boolean,
53
+ default: true
54
+ },
55
+ customStyle: {
56
+ type: Object,
57
+ default: () => {
58
+ return {
59
+ width: "100%"
60
+ };
61
+ }
62
+ }
63
+ },
64
+
65
+ render(h, { props, data, children }) {
66
+ const idClip = props.uniqueKey ? `${props.uniqueKey}-idClip` : uid();
67
+ const idGradient = props.uniqueKey
68
+ ? `${props.uniqueKey}-idGradient`
69
+ : uid();
70
+
71
+ return (
72
+ <svg
73
+ {...data}
74
+ viewBox={`0 0 ${props.width} ${props.height}`}
75
+ version="1.1"
76
+ preserveAspectRatio={props.preserveAspectRatio}
77
+ style={props.customStyle}
78
+ >
79
+ <rect
80
+ style={{ fill: `url(${props.baseUrl}#${idGradient})` }}
81
+ clip-path={`url(${props.baseUrl}#${idClip})`}
82
+ x="0"
83
+ y="0"
84
+ width="100%"
85
+ height="100%"
86
+ />
87
+
88
+ <defs>
89
+ <clipPath id={idClip}>
90
+ {children || (
91
+ <rect
92
+ x="0"
93
+ y="0"
94
+ rx="5"
95
+ ry="5"
96
+ width={props.width}
97
+ height={props.height}
98
+ />
99
+ )}
100
+ </clipPath>
101
+
102
+ <linearGradient id={idGradient}>
103
+ <stop
104
+ offset="0%"
105
+ stop-color={props.primaryColor}
106
+ stop-opacity={props.primaryOpacity}
107
+ >
108
+ {props.animate ? (
109
+ <animate
110
+ attributeName="offset"
111
+ values="-2; 1"
112
+ dur={`${props.speed}s`}
113
+ repeatCount="indefinite"
114
+ />
115
+ ) : null}
116
+ </stop>
117
+ <stop
118
+ offset="50%"
119
+ stop-color={props.secondaryColor}
120
+ stop-opacity={props.secondaryOpacity}
121
+ >
122
+ {props.animate ? (
123
+ <animate
124
+ attributeName="offset"
125
+ values="-1.5; 1.5"
126
+ dur={`${props.speed}s`}
127
+ repeatCount="indefinite"
128
+ />
129
+ ) : null}
130
+ </stop>
131
+ <stop
132
+ offset="100%"
133
+ stop-color={props.primaryColor}
134
+ stop-opacity={props.primaryOpacity}
135
+ >
136
+ {props.animate ? (
137
+ <animate
138
+ attributeName="offset"
139
+ values="-1; 2"
140
+ dur={`${props.speed}s`}
141
+ repeatCount="indefinite"
142
+ />
143
+ ) : null}
144
+ </stop>
145
+ </linearGradient>
146
+ </defs>
147
+ </svg>
148
+ );
149
+ }
150
+ };
@@ -0,0 +1,2 @@
1
+ import Loader from "./Loader.vue";
2
+ export default Loader;
@@ -0,0 +1,96 @@
1
+ <script>
2
+ /**
3
+ * Integration Alert Modal Component
4
+ */
5
+ export default {
6
+ name: "mui-alert",
7
+ components: {},
8
+ props: {
9
+ /**
10
+ * Header title.
11
+ * @type String
12
+ */
13
+ title: {
14
+ type: String,
15
+ required: false
16
+ },
17
+ /**
18
+ * Modal content.
19
+ * @type String
20
+ */
21
+ text: {
22
+ type: String,
23
+ required: false
24
+ },
25
+ /**
26
+ * Modal type.
27
+ * @type String
28
+ */
29
+ type: {
30
+ type: String,
31
+ required: false,
32
+ default: "info"
33
+ },
34
+ /**
35
+ * Confirm button text.
36
+ * @type String
37
+ */
38
+ confirmButtonText: {
39
+ type: String,
40
+ required: false,
41
+ default: "Confirm"
42
+ },
43
+ /**
44
+ * The method triggered when confirm button clicked.
45
+ * @event onConfirm
46
+ * @type Function
47
+ */
48
+ onConfirm: {
49
+ type: Function,
50
+ required: false
51
+ },
52
+ /**
53
+ * Confirm Button Color. Value is HEX value.
54
+ * @type String
55
+ */
56
+ confirmButtonColor: {
57
+ type: String,
58
+ required: false,
59
+ default: "#000"
60
+ },
61
+ /**
62
+ * Cancel button text.
63
+ * @type String
64
+ */
65
+ cancelButtonText: {
66
+ type: String,
67
+ required: false,
68
+ default: "No, cancel!"
69
+ }
70
+ },
71
+ methods: {
72
+ /**
73
+ * Show modal.
74
+ * @public
75
+ */
76
+ show() {
77
+ this.$swal({
78
+ title: this.title,
79
+ type: this.type,
80
+ // text: this.text,
81
+ html: this.text,
82
+ showCancelButton: true,
83
+ focusConfirm: false,
84
+ reverseButtons: true,
85
+ confirmButtonColor: this.confirmButtonColor,
86
+ confirmButtonText: this.confirmButtonText,
87
+ cancelButtonText: this.cancelButtonText
88
+ }).then(result => {
89
+ if (result.value === true) {
90
+ this.onConfirm();
91
+ }
92
+ });
93
+ }
94
+ }
95
+ };
96
+ </script>
@@ -0,0 +1,125 @@
1
+ <template>
2
+ <b-modal
3
+ ref="modal"
4
+ v-on="$listeners"
5
+ v-bind="$props"
6
+ :title="displayTitle"
7
+ v-model="visible"
8
+ :hide-footer="hideFooter"
9
+ >
10
+ <mui-loader :loading="loading" />
11
+
12
+ <slot v-if="!loading"> </slot>
13
+
14
+ <template v-if="!loading" #default>
15
+ <slot name="default"> </slot>
16
+ </template>
17
+
18
+ <!-- TODO: DONT USE! -->
19
+ <!-- <template v-if="!loading" #modal-title>
20
+ <slot name="modal-title"></slot>
21
+ </template> -->
22
+
23
+ <template v-if="!loading" #modal-header>
24
+ <slot name="modal-header"></slot>
25
+ </template>
26
+
27
+ <template v-slot:modal-footer="{ ok, cancel }">
28
+ <slot name="modal-footer-part"></slot>
29
+
30
+ <slot name="modal-footer" :ok="ok" :cancel="cancel">
31
+ <b-button :variant="cancelVariant" @click="cancel">
32
+ {{ cancelTitle }}
33
+ </b-button>
34
+
35
+ <b-button
36
+ :variant="okVariant"
37
+ @click="ok"
38
+ :disabled="okDisabled"
39
+ >
40
+ {{ okTitle }}
41
+ </b-button>
42
+ </slot>
43
+ </template>
44
+ </b-modal>
45
+ </template>
46
+ <script>
47
+ export default {
48
+ name: "mui-modal",
49
+ computed: {
50
+ visible: {
51
+ get() {
52
+ return this.value;
53
+ },
54
+ set(value) {
55
+ this.$emit("input", value);
56
+ }
57
+ },
58
+ displayTitle: {
59
+ get() {
60
+ return this.loading ? "" : this.title;
61
+ }
62
+ }
63
+ },
64
+ props: {
65
+ "hide-header": {},
66
+ "hide-footer": {},
67
+ "custom-class": {},
68
+ "ok-disabled": {},
69
+ title: {},
70
+ loading: {
71
+ type: Boolean,
72
+ default: false
73
+ },
74
+ value: {
75
+ type: Boolean,
76
+ default: false
77
+ },
78
+ size: {
79
+ type: String,
80
+ default: "lg"
81
+ },
82
+ scrollable: {
83
+ type: Boolean,
84
+ default: false
85
+ },
86
+ centered: {
87
+ type: Boolean,
88
+ default: false
89
+ },
90
+ hideFooter: {
91
+ type: Boolean,
92
+ default: false
93
+ },
94
+ okDisabled: {
95
+ type: Boolean,
96
+ default: false
97
+ },
98
+ okVariant: {
99
+ type: String,
100
+ default: "primary"
101
+ },
102
+ cancelVariant: {
103
+ type: String,
104
+ default: "secondary"
105
+ },
106
+ okTitle: {
107
+ type: String,
108
+ default: "Ok"
109
+ },
110
+ cancelTitle: {
111
+ type: String,
112
+ default: "Cancel"
113
+ }
114
+ },
115
+ methods: {
116
+ show() {
117
+ this.$refs.modal.show();
118
+ },
119
+ hide() {
120
+ this.$refs.modal.hide();
121
+ }
122
+ }
123
+ };
124
+ </script>
125
+ <style scoped></style>