1: <?php
2:
3: namespace LaravelUi5\Core\Enums;
4:
5: /**
6: * Enum representing allowed primitive value types for settings.
7: */
8: enum ValueType: int
9: {
10: /**
11: * A string value (e.g. 'EUR', 'dark', 'ProjectVH')
12: */
13: case String = 1;
14:
15: /**
16: * An integer value (e.g. 42, 0, 365)
17: */
18: case Integer = 2;
19:
20: /**
21: * A floating-point number (e.g. 19.99, 0.875)
22: */
23: case Float = 3;
24:
25: /**
26: * A boolean value (true or false)
27: */
28: case Boolean = 4;
29:
30: /**
31: * An array of strings (e.g. ["bp-123", "bp-456"])
32: */
33: case StringArray = 5;
34:
35: /**
36: * An array of integers (e.g. [1, 2, 3])
37: */
38: case IntegerArray = 6;
39:
40: /**
41: * An array of floats (e.g. [1.0, 2.5, 3.14])
42: */
43: case FloatArray = 7;
44:
45: /**
46: * An array of booleans (e.g. [true, false])
47: */
48: case BooleanArray = 8;
49:
50: /**
51: * A ISO-8601/UTC date string
52: */
53: case Date = 9;
54:
55: /**
56: * An integer representing the foreign key of a Model class
57: */
58: case Model = 10;
59:
60: /**
61: * Returns a human-readable label for this type.
62: *
63: * @return string
64: */
65: public function label(): string
66: {
67: return match ($this) {
68: self::String => 'String',
69: self::Integer => 'Integer',
70: self::Float => 'Float',
71: self::Boolean => 'Boolean',
72: self::StringArray => 'String[]',
73: self::IntegerArray => 'Integer[]',
74: self::FloatArray => 'Float[]',
75: self::BooleanArray => 'Boolean[]',
76: self::Date => 'Date',
77: self::Model => 'Model',
78: };
79: }
80:
81: public function isScalar(): bool
82: {
83: return in_array($this, [
84: self::String,
85: self::Integer,
86: self::Float,
87: self::Boolean,
88: self::Date,
89: ], true);
90: }
91:
92: /**
93: * Checks whether the type is an array-based type.
94: */
95: public function isArray(): bool
96: {
97: return in_array($this, [
98: self::StringArray,
99: self::IntegerArray,
100: self::FloatArray,
101: self::BooleanArray,
102: ], true);
103: }
104:
105: public function requiresModelClass(): bool
106: {
107: return $this === self::Model;
108: }
109: }
110: