aboutsummaryrefslogtreecommitdiff
path: root/src/components/settings_modal/helpers/number_setting.js
diff options
context:
space:
mode:
authorHJ <30-hj@users.noreply.git.pleroma.social>2023-03-20 20:31:20 +0000
committerHJ <30-hj@users.noreply.git.pleroma.social>2023-03-20 20:31:20 +0000
commitfa532b1f005220743d036b7d103c47a043be7ae4 (patch)
tree09d5e4d409f7298a328e3feaac6a062e9082df4d /src/components/settings_modal/helpers/number_setting.js
parent19618db1929f1aea6183de3102581844298d1d39 (diff)
parent493120b5456282756d05d9afaf66b11a2f87d8fc (diff)
Merge branch 'pleroma-akkoma-emoji-port' into 'develop'
Custom emoji reaction support See merge request pleroma/pleroma-fe!1792
Diffstat (limited to 'src/components/settings_modal/helpers/number_setting.js')
-rw-r--r--src/components/settings_modal/helpers/number_setting.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/components/settings_modal/helpers/number_setting.js b/src/components/settings_modal/helpers/number_setting.js
new file mode 100644
index 00000000..73c39948
--- /dev/null
+++ b/src/components/settings_modal/helpers/number_setting.js
@@ -0,0 +1,56 @@
+import { get, set } from 'lodash'
+import ModifiedIndicator from './modified_indicator.vue'
+export default {
+ components: {
+ ModifiedIndicator
+ },
+ props: {
+ path: String,
+ disabled: Boolean,
+ min: Number,
+ step: Number,
+ truncate: Number,
+ expert: [Number, String]
+ },
+ computed: {
+ pathDefault () {
+ const [firstSegment, ...rest] = this.path.split('.')
+ return [firstSegment + 'DefaultValue', ...rest].join('.')
+ },
+ parent () {
+ return this.$parent.$parent
+ },
+ state () {
+ const value = get(this.parent, this.path)
+ if (value === undefined) {
+ return this.defaultState
+ } else {
+ return value
+ }
+ },
+ defaultState () {
+ return get(this.parent, this.pathDefault)
+ },
+ isChanged () {
+ return this.state !== this.defaultState
+ },
+ matchesExpertLevel () {
+ return (this.expert || 0) <= this.parent.expertLevel
+ }
+ },
+ methods: {
+ truncateValue (value) {
+ if (!this.truncate) {
+ return value
+ }
+
+ return Math.trunc(value / this.truncate) * this.truncate
+ },
+ update (e) {
+ set(this.parent, this.path, this.truncateValue(parseFloat(e.target.value)))
+ },
+ reset () {
+ set(this.parent, this.path, this.defaultState)
+ }
+ }
+}