aboutsummaryrefslogtreecommitdiff
path: root/src/components/settings_modal/helpers/unit_setting.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/settings_modal/helpers/unit_setting.js')
-rw-r--r--src/components/settings_modal/helpers/unit_setting.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/components/settings_modal/helpers/unit_setting.js b/src/components/settings_modal/helpers/unit_setting.js
new file mode 100644
index 00000000..c9c23cb0
--- /dev/null
+++ b/src/components/settings_modal/helpers/unit_setting.js
@@ -0,0 +1,48 @@
+import Select from 'src/components/select/select.vue'
+import Setting from './setting.js'
+
+export const allCssUnits = ['cm', 'mm', 'in', 'px', 'pt', 'pc', 'em', 'ex', 'ch', 'rem', 'vw', 'vh', 'vmin', 'vmax', '%']
+export const defaultHorizontalUnits = ['px', 'rem', 'vw']
+export const defaultVerticalUnits = ['px', 'rem', 'vh']
+
+export default {
+ ...Setting,
+ components: {
+ ...Setting.components,
+ Select
+ },
+ props: {
+ ...Setting.props,
+ min: Number,
+ units: {
+ type: Array,
+ default: () => allCssUnits
+ },
+ unitSet: {
+ type: String,
+ default: 'none'
+ }
+ },
+ computed: {
+ ...Setting.computed,
+ stateUnit () {
+ return this.state.replace(/\d+/, '')
+ },
+ stateValue () {
+ return this.state.replace(/\D+/, '')
+ }
+ },
+ methods: {
+ ...Setting.methods,
+ getUnitString (value) {
+ if (this.unitSet === 'none') return value
+ return this.$t(['settings', 'units', this.unitSet, value].join('.'))
+ },
+ updateValue (e) {
+ this.configSink(this.path, parseInt(e.target.value) + this.stateUnit)
+ },
+ updateUnit (e) {
+ this.configSink(this.path, this.stateValue + e.target.value)
+ }
+ }
+}