summaryrefslogtreecommitdiffstats
path: root/vendor/ipl/web/src/Widget/Icon.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ipl/web/src/Widget/Icon.php')
-rw-r--r--vendor/ipl/web/src/Widget/Icon.php67
1 files changed, 67 insertions, 0 deletions
diff --git a/vendor/ipl/web/src/Widget/Icon.php b/vendor/ipl/web/src/Widget/Icon.php
new file mode 100644
index 0000000..5c2617f
--- /dev/null
+++ b/vendor/ipl/web/src/Widget/Icon.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace ipl\Web\Widget;
+
+use ipl\Html\Attributes;
+use ipl\Html\BaseHtmlElement;
+
+/**
+ * Icon element
+ */
+class Icon extends BaseHtmlElement
+{
+ protected $tag = 'i';
+
+ /** @var string Icon style */
+ protected $style;
+
+ /** @var string Icon default style */
+ protected $defaultStyle = 'fa';
+
+ /**
+ * Create an icon element
+ *
+ * Creates an icon element from the given name and HTML attributes. The icon element's tag will be <i>. The given
+ * name will be used as automatically added CSS class for the icon element in the format 'icon-$name'. In addition,
+ * the CSS class 'icon' will be automatically added too.
+ *
+ * @param string $name The name of the icon
+ * @param Attributes|array $attributes The HTML attributes for the element
+ */
+ public function __construct(string $name, $attributes = null)
+ {
+ $this
+ ->getAttributes()
+ ->add('class', ['icon', "fa-$name"])
+ ->add($attributes);
+ }
+
+ /**
+ * Get the icon style
+ *
+ * @return string
+ */
+ public function getStyle(): string
+ {
+ return $this->style ?? $this->defaultStyle;
+ }
+
+ /**
+ * Set the icon style
+ *
+ * @param string $style Style class with prefix
+ *
+ * @return $this
+ */
+ public function setStyle(string $style): self
+ {
+ $this->style = $style;
+
+ return $this;
+ }
+
+ protected function assemble()
+ {
+ $this->addAttributes(['class' => $this->getStyle()]);
+ }
+}