{"id":11027,"date":"2023-05-02T15:27:31","date_gmt":"2023-05-02T13:27:31","guid":{"rendered":"https:\/\/schedulejs.com\/?p=11027"},"modified":"2024-07-02T09:28:01","modified_gmt":"2024-07-02T07:28:01","slug":"drawing-animations","status":"publish","type":"post","link":"https:\/\/schedulejs.com\/en\/drawing-animations\/","title":{"rendered":"Drawing animations"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"11027\" class=\"elementor elementor-11027\" data-elementor-settings=\"[]\">\n\t\t\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<div class=\"elementor-section elementor-top-section elementor-element elementor-element-ae92876 elementor-section-stretched schedulejs-header-menu elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ae92876\" data-element_type=\"section\" id=\"schedulejs-header-menu\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;none&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-fee1607\" data-id=\"fee1607\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a6a075e elementor-widget elementor-widget-image\" data-id=\"a6a075e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"300\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/05\/logo_schedulejs_blue_1500x500-2-1024x341.png\" class=\"attachment-large size-large\" alt=\"ScheduleJS logo with scheduling interface and calendar features.\" srcset=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/05\/logo_schedulejs_blue_1500x500-2-1024x341.png 1024w, https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/05\/logo_schedulejs_blue_1500x500-2-300x100.png 300w, https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/05\/logo_schedulejs_blue_1500x500-2-768x256.png 768w, https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/05\/logo_schedulejs_blue_1500x500-2-730x243.png 730w, https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/05\/logo_schedulejs_blue_1500x500-2.png 1500w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-87efabb\" data-id=\"87efabb\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-03a8e64 elementor-widget elementor-widget-ekit-nav-menu\" data-id=\"03a8e64\" data-element_type=\"widget\" data-widget_type=\"ekit-nav-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"ekit-wid-con ekit_menu_responsive_tablet\" data-hamburger-icon=\"fas fa-bars\" data-hamburger-icon-type=\"icon\" data-responsive-breakpoint=\"1024\">            <button class=\"elementskit-menu-hamburger elementskit-menu-toggler\">\n                <i aria-hidden=\"true\" class=\"ekit-menu-icon fas fa-bars\"><\/i>            <\/button>\n            <div id=\"ekit-megamenu-schedulejs-primary-menu\" class=\"elementskit-menu-container elementskit-menu-offcanvas-elements elementskit-navbar-nav-default elementskit_line_arrow ekit-nav-menu-one-page-\"><ul id=\"main-menu\" class=\"elementskit-navbar-nav elementskit-menu-po-right submenu-click-on-\"><li id=\"menu-item-11511\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-11511 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/blog-javascript-framework\/\" class=\"ekit-menu-nav-link\">Blog<\/a><\/li>\n<li id=\"menu-item-2859\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-2859 nav-item delay-1 nav-item elementskit-dropdown-has relative_position elementskit-dropdown-menu-default_width elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/presentation-angular-gantt-library\/\" class=\"ekit-menu-nav-link ekit-menu-dropdown-toggle\">Product<i class=\"icon icon-down-arrow1 elementskit-submenu-indicator\"><\/i><\/a>\n<ul class=\"elementskit-dropdown elementskit-submenu-panel\">\n\t<li id=\"menu-item-2860\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2860 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/presentation-angular-gantt-library\/\" class=\" dropdown-item\">ScheduleJS<\/a>\t<li id=\"menu-item-10522\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-10522 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/schedule-js-viewer-2\/\" class=\" dropdown-item\">ScheduleJS Viewer<\/a>\t<li id=\"menu-item-12063\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-12063 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/api-code-typescript-gantt-library\/\" class=\" dropdown-item\">API &amp; Code<\/a>\t<li id=\"menu-item-2892\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2892 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/example-gantt-js\/\" class=\" dropdown-item\">Use Case Example<\/a>\t<li id=\"menu-item-2890\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2890 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/faqs-gantt-js\/\" class=\" dropdown-item\">FAQs<\/a><\/ul>\n<\/li>\n<li id=\"menu-item-11895\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-11895 nav-item delay-1 nav-item elementskit-dropdown-has relative_position elementskit-dropdown-menu-default_width elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/services-gantt-js\/\" class=\"ekit-menu-nav-link ekit-menu-dropdown-toggle\">Services<i class=\"icon icon-down-arrow1 elementskit-submenu-indicator\"><\/i><\/a>\n<ul class=\"elementskit-dropdown elementskit-submenu-panel\">\n\t<li id=\"menu-item-5624\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-5624 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/maintenance-support\/\" class=\" dropdown-item\">Maintenance &#038; Support<\/a>\t<li id=\"menu-item-11589\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-11589 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/training-gantt-js-2\/\" class=\" dropdown-item\">Training<\/a>\t<li id=\"menu-item-5622\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-5622 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/development\/\" class=\" dropdown-item\">Development<\/a>\t<li id=\"menu-item-5626\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-5626 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/ui-ux-design\/\" class=\" dropdown-item\">UI \/ UX Design<\/a>\t<li id=\"menu-item-5623\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-5623 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/flexgantt-migration\/\" class=\" dropdown-item\">FlexGantt Migration<\/a>\t<li id=\"menu-item-5621\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-5621 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/proof-of-concept-gantt-js\/\" class=\" dropdown-item\">Proof of Concept<\/a><\/ul>\n<\/li>\n<li id=\"menu-item-11590\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-11590 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/pricing-js-gantt\/\" class=\"ekit-menu-nav-link\">Pricing<\/a><\/li>\n<li id=\"menu-item-6751\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-6751 nav-item delay-1 nav-item elementskit-dropdown-has relative_position elementskit-dropdown-menu-default_width elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/job-openings\/\" class=\"ekit-menu-nav-link ekit-menu-dropdown-toggle\">Careers<i class=\"icon icon-down-arrow1 elementskit-submenu-indicator\"><\/i><\/a>\n<ul class=\"elementskit-dropdown elementskit-submenu-panel\">\n\t<li id=\"menu-item-7071\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7071 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/our-work-gantt-js\/\" class=\" dropdown-item\">Our Work<\/a>\t<li id=\"menu-item-7072\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7072 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/job-openings\/\" class=\" dropdown-item\">Job Openings<\/a><\/ul>\n<\/li>\n<li id=\"menu-item-2937\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-2937 nav-item delay-1 nav-item elementskit-dropdown-has relative_position elementskit-dropdown-menu-default_width elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/contact-support-schedulejs\/\" class=\"ekit-menu-nav-link ekit-menu-dropdown-toggle\">Support<i class=\"icon icon-down-arrow1 elementskit-submenu-indicator\"><\/i><\/a>\n<ul class=\"elementskit-dropdown elementskit-submenu-panel\">\n\t<li id=\"menu-item-13480\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-13480 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/enterprise-license\/\" class=\" dropdown-item\">Enterprise License<\/a>\t<li id=\"menu-item-13481\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-13481 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/internal-development-license\/\" class=\" dropdown-item\">Internal License<\/a>\t<li id=\"menu-item-13491\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-13491 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/schedulejs-viewer-license\/\" class=\" dropdown-item\">ScheduleJS Viewer License<\/a>\t<li id=\"menu-item-2935\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2935 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/submit-a-ticket\/\" class=\" dropdown-item\">Submit a ticket<\/a>\t<li id=\"menu-item-3367\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-3367 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a target=\"_blank\" href=\"https:\/\/www.schedulejs.com\/api\/docs\/index.html\" class=\" dropdown-item\">API Documentation<\/a>\t<li id=\"menu-item-7319\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-7319 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a target=\"_blank\" href=\"https:\/\/www.schedulejs.com\/manual\/index.html\" class=\" dropdown-item\">Developer Manual<\/a><\/ul>\n<\/li>\n<li id=\"menu-item-12479\" class=\"contact-menu menu-item menu-item-type-post_type menu-item-object-page menu-item-12479 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/contact-schedulejs\/\" class=\"ekit-menu-nav-link\">Contact<\/a><\/li>\n<li id=\"menu-item-11921\" class=\"trp-language-switcher-container menu-item menu-item-type-post_type menu-item-object-language_switcher menu-item-has-children current-language-menu-item menu-item-11921 nav-item delay-1 nav-item elementskit-dropdown-has relative_position elementskit-dropdown-menu-default_width elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/posts\/11027\" class=\"ekit-menu-nav-link ekit-menu-dropdown-toggle\"><span data-no-translation><img loading=\"lazy\" decoding=\"async\" class=\"trp-flag-image\" src=\"https:\/\/schedulejs.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/images\/flags\/en_US.png\" width=\"18\" height=\"12\" alt=\"en_US\" title=\"English\"><span class=\"trp-ls-language-name\">English<\/span><\/span><i class=\"icon icon-down-arrow1 elementskit-submenu-indicator\"><\/i><\/a>\n<ul class=\"elementskit-dropdown elementskit-submenu-panel\">\n\t<li id=\"menu-item-11922\" class=\"trp-language-switcher-container menu-item menu-item-type-post_type menu-item-object-language_switcher menu-item-11922 nav-item delay-1 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/schedulejs.com\/fr\/wp-json\/wp\/v2\/posts\/11027\/\" class=\" dropdown-item\"><span data-no-translation><img loading=\"lazy\" decoding=\"async\" class=\"trp-flag-image\" src=\"https:\/\/schedulejs.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/images\/flags\/fr_FR.png\" width=\"18\" height=\"12\" alt=\"fr_FR\" title=\"Fran\u00e7ais\"><span class=\"trp-ls-language-name\">Fran\u00e7ais<\/span><\/span><\/a><\/ul>\n<\/li>\n<\/ul>\n\t\t\t\t<div class=\"elementskit-nav-identity-panel\">\n\t\t\t\t\t<div class=\"elementskit-site-title\">\n\t\t\t\t\t\t<a class=\"elementskit-nav-logo\" href=\"https:\/\/schedulejs.com\/en\" target=\"_self\" rel=\"\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/04\/logo_schedulejs_blue_1128x191-1.png\" alt=\"ScheduleJS logo and scheduling interface for efficient appointment management.\">\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<button class=\"elementskit-menu-close elementskit-menu-toggler\" type=\"button\">X<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div><div class=\"elementskit-menu-overlay elementskit-menu-offcanvas-elements elementskit-menu-toggler ekit-nav-menu--overlay\"><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-db2e1c4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"db2e1c4\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9bf4f10 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9bf4f10\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;,&quot;shape_divider_top&quot;:&quot;mountains&quot;,&quot;shape_divider_bottom&quot;:&quot;mountains&quot;}\">\n\t\t\t\t\t<div class=\"elementor-shape elementor-shape-top\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" opacity=\"0.33\" d=\"M473,67.3c-203.9,88.3-263.1-34-320.3,0C66,119.1,0,59.7,0,59.7V0h1000v59.7 c0,0-62.1,26.1-94.9,29.3c-32.8,3.3-62.8-12.3-75.8-22.1C806,49.6,745.3,8.7,694.9,4.7S492.4,59,473,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" opacity=\"0.66\" d=\"M734,67.3c-45.5,0-77.2-23.2-129.1-39.1c-28.6-8.7-150.3-10.1-254,39.1 s-91.7-34.4-149.2,0C115.7,118.3,0,39.8,0,39.8V0h1000v36.5c0,0-28.2-18.5-92.1-18.5C810.2,18.1,775.7,67.3,734,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M766.1,28.9c-200-57.5-266,65.5-395.1,19.5C242,1.8,242,5.4,184.8,20.6C128,35.8,132.3,44.9,89.9,52.5C28.6,63.7,0,0,0,0 h1000c0,0-9.9,40.9-83.6,48.1S829.6,47,766.1,28.9z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t<div class=\"elementor-shape elementor-shape-bottom\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" opacity=\"0.33\" d=\"M473,67.3c-203.9,88.3-263.1-34-320.3,0C66,119.1,0,59.7,0,59.7V0h1000v59.7 c0,0-62.1,26.1-94.9,29.3c-32.8,3.3-62.8-12.3-75.8-22.1C806,49.6,745.3,8.7,694.9,4.7S492.4,59,473,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" opacity=\"0.66\" d=\"M734,67.3c-45.5,0-77.2-23.2-129.1-39.1c-28.6-8.7-150.3-10.1-254,39.1 s-91.7-34.4-149.2,0C115.7,118.3,0,39.8,0,39.8V0h1000v36.5c0,0-28.2-18.5-92.1-18.5C810.2,18.1,775.7,67.3,734,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M766.1,28.9c-200-57.5-266,65.5-395.1,19.5C242,1.8,242,5.4,184.8,20.6C128,35.8,132.3,44.9,89.9,52.5C28.6,63.7,0,0,0,0 h1000c0,0-9.9,40.9-83.6,48.1S829.6,47,766.1,28.9z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b3f9623\" data-id=\"b3f9623\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-230fb91 elementor-invisible elementor-widget elementor-widget-image\" data-id=\"230fb91\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/elementor\/thumbs\/calendar-blue-rnoicsj44uachjqvpj61n8n87xjs0f72zl4v2i5bxc.png\" title=\"calendar-blue\" alt=\"Gantt Organnisation\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9b38a48 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9b38a48\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;,&quot;shape_divider_top&quot;:&quot;mountains&quot;}\">\n\t\t\t\t\t<div class=\"elementor-shape elementor-shape-top\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" opacity=\"0.33\" d=\"M473,67.3c-203.9,88.3-263.1-34-320.3,0C66,119.1,0,59.7,0,59.7V0h1000v59.7 c0,0-62.1,26.1-94.9,29.3c-32.8,3.3-62.8-12.3-75.8-22.1C806,49.6,745.3,8.7,694.9,4.7S492.4,59,473,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" opacity=\"0.66\" d=\"M734,67.3c-45.5,0-77.2-23.2-129.1-39.1c-28.6-8.7-150.3-10.1-254,39.1 s-91.7-34.4-149.2,0C115.7,118.3,0,39.8,0,39.8V0h1000v36.5c0,0-28.2-18.5-92.1-18.5C810.2,18.1,775.7,67.3,734,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M766.1,28.9c-200-57.5-266,65.5-395.1,19.5C242,1.8,242,5.4,184.8,20.6C128,35.8,132.3,44.9,89.9,52.5C28.6,63.7,0,0,0,0 h1000c0,0-9.9,40.9-83.6,48.1S829.6,47,766.1,28.9z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-693262b\" data-id=\"693262b\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-74339fd elementor-invisible elementor-widget elementor-widget-elementskit-button\" data-id=\"74339fd\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInLeft&quot;}\" data-widget_type=\"elementskit-button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"ekit-wid-con\" >\t\t<div class=\"ekit-btn-wraper\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/www.schedulejs.com\/blog\" class=\"elementskit-btn  whitespace--normal\" >\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tBack to the Blog\t\t\t\t<\/a>\n\t\t\t\t\t\t<\/div>\n        <\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a689bad elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"6a689bad\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInLeft&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h1 class=\"elementor-heading-title elementor-size-xl\">Drawing animations in ScheduleJS<\/h1>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-452009b6 elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"452009b6\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInLeft&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<p>ScheduleJS uses the HTML Canvas rendering engine to draw the grid, activities, additional layers and links. This article explains how to design a simple ScheduleJS rendering animation using the HTML Canvas API<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-344eb0c elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"344eb0c\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInRight&quot;,&quot;_animation_delay&quot;:600}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">Tuesday, May 2nd, 2023 - 4 minutes read<\/h6>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-13c5fd21 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"13c5fd21\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1b6ca9da\" data-id=\"1b6ca9da\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-abd97a4 elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"abd97a4\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<h2 style=\"color: #181926; margin-bottom: 25px;\">A few words on HTML Canvas<\/h2><p>Have you ever been using the Canvas technology before? The canvas element is an HTML container used to draw programmatically using JavaScript at a surprisingly low cost for the browser.<\/p><p>The most significant feature of the canvas element is that its possibilities are endless in terms of design and interactions. The only limit to what&#8217;s on the screen is our imagination.<\/p><p>If you want to wrap your head around the canvas element, you can compare it to a blank drawing paper.<\/p><p>According to the <a href=\"https:\/\/developer.mozilla.org\">MDN web documentation<\/a>:<\/p><div style=\"margin: 50px 7%; font-style: italic;\"><p>MDN: The <strong>Canvas API<\/strong> provides a means for drawing graphics via <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\">JavaScript<\/a>\u00a0and the\u00a0<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTML\">HTML<\/a>\u00a0<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTML\/Element\/canvas\">canvas<\/a>\u00a0element. Among other things, it can be used for animation, game graphics, data visualization, photo manipulation, and real-time video processing.<\/p><p>The Canvas API largely focuses on 2D graphics. The\u00a0<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/WebGL_API\">WebGL API<\/a>, which also uses the canvas element, draws hardware-accelerated 2D and 3D graphics.<\/p><\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b4f0f27 elementor-widget elementor-widget-image\" data-id=\"b4f0f27\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"500\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2022\/04\/ScheduleJSReader.gif\" class=\"attachment-large size-large\" alt=\"schedule js reader\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4300baf elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"4300baf\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<h2 style=\"color: #181926; margin-bottom: 25px;\">How does ScheduleJS use it?<\/h2><p>Once you draw your activities on the canvas, the only way to get it to change is to clean it up and start drawing again.<\/p><p>Under the hood, ScheduleJS implements multiple tools to handle this behavior in the context of a scheduling application. These APIs are sometimes exposed to the developer and sometimes they work silently to let the developer focus on the core features of the application, like the following:<\/p><ul><li>The <strong>System Layers API<\/strong> handle successive drawings and stacking order.<\/li><li>The <strong>Viewport API<\/strong> optimizes the rendering and navigation.<\/li><li>The <strong>Renderer API\u00a0<\/strong>defines how activities and layers are drawn.<\/li><li>The <strong>Redraw API<\/strong> can be called at will to trigger\u00a0<strong>redraws<\/strong>, <strong>operations on the rows,<\/strong> etc&#8230;<\/li><\/ul><p>The most significant item for the developer in this architecture is the ScheduleJS <strong>Renderer<\/strong> <strong>API<\/strong>. Renderers use overridable functions allowing the developer to create his or her unique way of drawing specific parts of the application:<\/p><ul><li>The <strong>Background<\/strong><\/li><li>The <strong>Grid<\/strong><\/li><li>The <strong>Activities<\/strong><\/li><li>\u00a0The <strong>Activity Links<\/strong><\/li><li>The <strong>Drag and Drop<\/strong> layer<\/li><li>And every additional <strong>System Layers<\/strong><\/li><\/ul><p>Although this may seem complicated to some people, it is a workflow that developers will get used to quickly. The flexibility of the <strong>Renderer architecture<\/strong> and its well-thought implementation allows endless design and interaction scenarios.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9e60f03 elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"9e60f03\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<h2 style=\"color: #181926; margin-bottom: 25px;\">Animating your ScheduleJS activities<\/h2><p>To animate your Canvas, you have to break down your animation in frames and tell the renderer how to draw each frame. The main ingredient required to create a simple linear animation is the time at which the animation started. If we want to animate every activity on its own, a good place to store this information is the activity data structure.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28b03fe elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"28b03fe\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<p>Let&#8217;s create a simple animated renderer to draw every frame based on animation progression. This simple width animation will animate our activity on creation (from 0% width to full-width).<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1da041c elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"1da041c\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<p>This example focuses on the code required to run the animation. As you can see, we created a ratio (from 0 to 1) describing the duration of our animation and we simply multiply the width by this ratio. As a result, the activity width will expand in a smooth 250ms animation (see below).<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cfbcd0b elementor-aspect-ratio-32 elementor-widget elementor-widget-video\" data-id=\"cfbcd0b\" data-element_type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;aspect_ratio&quot;:&quot;32&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2023\/05\/animated-insertion.mp4\" controls=\"\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a6916c elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"6a6916c\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\tMuch more can be done using the same principle as every drawing layer in ScheduleJS uses the renderer architecture and implements similar drawing methods. On top of this, the same result can be achieved using many different approaches. Anyways, no matter what graphics animation you want to build, the ScheduleJS renderers will let you design and customize the user experience at a pixel level.\n\n<div style=\"text-align: center; margin-top: 45px; margin-bottom: 20px;\"><strong>Feel free to <a href=\"https:\/\/www.schedulejs.com\/contact\">contact us<\/a> if you have any UX\/UI challenges or ideas for ScheduleJS!<\/strong><\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f2eace9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f2eace9\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8bea6f0\" data-id=\"8bea6f0\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-629ebc3 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"629ebc3\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInRight&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">More implementation-related articles<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ddc14ce elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ddc14ce\" data-element_type=\"section\" data-settings=\"{&quot;shape_divider_top&quot;:&quot;mountains&quot;}\">\n\t\t\t\t\t<div class=\"elementor-shape elementor-shape-top\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" opacity=\"0.33\" d=\"M473,67.3c-203.9,88.3-263.1-34-320.3,0C66,119.1,0,59.7,0,59.7V0h1000v59.7 c0,0-62.1,26.1-94.9,29.3c-32.8,3.3-62.8-12.3-75.8-22.1C806,49.6,745.3,8.7,694.9,4.7S492.4,59,473,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" opacity=\"0.66\" d=\"M734,67.3c-45.5,0-77.2-23.2-129.1-39.1c-28.6-8.7-150.3-10.1-254,39.1 s-91.7-34.4-149.2,0C115.7,118.3,0,39.8,0,39.8V0h1000v36.5c0,0-28.2-18.5-92.1-18.5C810.2,18.1,775.7,67.3,734,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M766.1,28.9c-200-57.5-266,65.5-395.1,19.5C242,1.8,242,5.4,184.8,20.6C128,35.8,132.3,44.9,89.9,52.5C28.6,63.7,0,0,0,0 h1000c0,0-9.9,40.9-83.6,48.1S829.6,47,766.1,28.9z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-410297c\" data-id=\"410297c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fe84f8c premium-blog-align-left premium-blog-align-left elementor-invisible elementor-widget elementor-widget-premium-addon-blog\" data-id=\"fe84f8c\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInRight&quot;}\" data-widget_type=\"premium-addon-blog.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t<div class=\"premium-blog\">\n\t\t\t\t<div class=\"premium-blog-wrap  premium-blog-even\" data-scroll=\"1\" data-infinite=\"\" data-layout=\"even\" data-equal=\"true\" data-page=\"11027\" data-carousel=\"1\" data-grid=\"true\" data-fade=\"false\" data-play=\"1\" data-center=\"false\" data-slides-spacing=\"0\" data-speed=\"8000\" data-col=\"3\" data-col-tablet=\"2\" data-col-mobile=\"1\" data-arrows=\"true\" data-dots=\"true\" data-scroll-slides=\"\">\n\t\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1707\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2025\/12\/keyboard-oldschool-scaled.jpg\" class=\"attachment-full size-full\" alt=\"\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/keyboard-events-and-user-interactions\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/keyboard-events-and-user-interactions\/\" target=\"_self\">\n\t\t\t\tKeyboard Events and User Interactions\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>April 9, 2026<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">How to handle application events in ScheduleJS. Manage user inputs while performing ScheduleJS actions, design the perfect UX for your app.<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1784\" height=\"1366\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-13-at-14.47.46.png\" class=\"attachment-full size-full\" alt=\"\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/tree-table-customization\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/tree-table-customization\/\" target=\"_self\">\n\t\t\t\tTree Table Customization\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>March 13, 2026<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">Tree tables can be extensively customised in ScheduleJS: colorful row headers, multiple child levels, display, and interactions<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"2041\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2026\/02\/viewer-on-white-scaled.png\" class=\"attachment-full size-full\" alt=\"\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/building-custom-tree-tables-in-schedulejs\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/building-custom-tree-tables-in-schedulejs\/\" target=\"_self\">\n\t\t\t\tBuilding custom Tree Tables in ScheduleJS\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>February 5, 2026<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">Build custom tree tables in ScheduleJS using schedule-info-column-header-cell and schedule-info-column-row-cell components.<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2023\/08\/Screenshot-2023-08-03-at-16.54.49.png\" class=\"attachment-full size-full\" alt=\"Big Gantt charts\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/row-management-and-layout-control-in-schedulejs\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/row-management-and-layout-control-in-schedulejs\/\" target=\"_self\">\n\t\t\t\tRow Management and Layout Control in ScheduleJS\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>January 17, 2026<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">Unlock flexible row management in ScheduleJS: control individual row heights, mix GanttLayout and ChartLayout in the same view.<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"2880\" height=\"1800\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/05\/curved-link.png\" class=\"attachment-full size-full\" alt=\"JS Gantt charts Screenshot\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/drag-and-drop-operations\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/drag-and-drop-operations\/\" target=\"_self\">\n\t\t\t\tAdvanced Drag and Drop Operations\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>December 15, 2025<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">Master drag and drop in ScheduleJS: render activities while dragging, access the drag canvas via DragViewTransversalSystemLayers.<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"320\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2022\/11\/logo-schedulejs-padded.jpg\" class=\"attachment-full size-full\" alt=\"ScheduleJS Logo\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/schedulejs-1-4-release-note-2\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/schedulejs-1-4-release-note-2\/\" target=\"_self\">\n\t\t\t\tScheduleJS 1.4 Release note\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>November 4, 2025<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">ScheduleJS 1.4 release notes. A step forward towards modern Angular app building.<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"484\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2025\/09\/3910938.webp\" class=\"attachment-full size-full\" alt=\"Angular ScheduleJS logo on a background of code snippets.\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/angular18-vs-angular16\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/angular18-vs-angular16\/\" target=\"_self\">\n\t\t\t\tAngular 18 VS Angular 16\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>July 25, 2025<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">Angular 16 vs Angular 18 comparison: discover what's new in Angular, the arrival of signals, Zoneless mode, zone coalescing, and their impact on your projects.<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"792\" height=\"446\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2025\/09\/Capture-decran-2025-09-29-160604.png\" class=\"attachment-full size-full\" alt=\"\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/angular-rome-conference\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/angular-rome-conference\/\" target=\"_self\">\n\t\t\t\tAngular Rome Conference\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>June 30, 2025<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">Discover the Angular Rome Conference: workshops, domain-driven design, signals, state management, micro frontends.<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"482\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2025\/09\/Whats-New-in-Angular-18.webp\" class=\"attachment-full size-full\" alt=\"Discover the latest features and updates in Angular 18 for improved web development.\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/whats-new-in-angular-18\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/whats-new-in-angular-18\/\" target=\"_self\">\n\t\t\t\tWhat&#8217;s New in Angular 18\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>March 29, 2025<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">Discover Angular 18: zoneless mode, zone coalescing, native await, and TypeScript 5.4 compatibility.<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"2\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-zoomin-effect\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1782\" height=\"1155\" src=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2023\/03\/tr_anonymized_white_bg.png\" class=\"attachment-full size-full\" alt=\"Gantt Charts\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/schedulejs.com\/en\/top-3-best-javascript-gantt-chart-components\/\" target=\"_self\"><\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\t\t\t\t\t<div class=\"premium-blog-content-wrapper-inner\">\n\t\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\t\t\t\t\t\t\t<div class=\"premium-blog-entry-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/top-3-best-javascript-gantt-chart-components\/\" target=\"_self\">\n\t\t\t\tTop 3 Best JavaScript Gantt Chart Components\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-time premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-clock-o\"><\/i>\n\t\t\t\t\t<span>November 26, 2024<\/span>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t\t<span class=\"premium-blog-meta-separator\">\u2022<\/span>\n\t\t\t\t<div class=\"premium-blog-post-categories premium-blog-meta-data\">\n\t\t\t\t\t<i class=\"fa fa-align-left fa-fw\"><\/i>\n\t\t\t\t\t<a href=\"https:\/\/schedulejs.com\/en\/category\/features\/\" rel=\"category tag\">Features<\/a>, <a href=\"https:\/\/schedulejs.com\/en\/category\/implementations\/\" rel=\"category tag\">Implementations<\/a>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<p class=\"premium-blog-post-content\">The TOP 3 JavaScript Gantt chart. Discover their features, advantages, and disadvantages to choose the best tool for your project.<\/p>\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<\/div>\n\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b325336 elementor-widget elementor-widget-shortcode\" data-id=\"b325336\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-shortcode\">    <div class=\"wpdiscuz_top_clearing\"><\/div>\r\n    <div id='comments' class='comments-area'><div id='respond' style='width: 0;height: 0;clear: both;margin: 0;padding: 0;'><\/div>    <div id=\"wpdcom\" class=\"wpdiscuz_unauth wpd-default wpd-layout-1 wpd-comments-open\">\r\n                    <div class=\"wc_social_plugin_wrapper\">\r\n                            <\/div>\r\n            <div class=\"wpd-form-wrap\">\r\n                <div class=\"wpd-form-head\">\r\n                                            <div class=\"wpd-sbs-toggle\">\r\n                            <i class=\"far fa-envelope\"><\/i> <span class=\"wpd-sbs-title\">S\u2019abonner<\/span> <i class=\"fas fa-caret-down\"><\/i>\r\n                        <\/div>\r\n                                            <div class=\"wpd-auth\">\r\n                                                <div class=\"wpd-login\">\r\n                            <a rel=\"nofollow\" href=\"https:\/\/schedulejs.com\/wp-login.php?redirect_to=https%3A%2F%2Fschedulejs.com%2Fen%2Ftop-3-best-javascript-gantt-chart-components%2F\"><i class='fas fa-sign-in-alt'><\/i> Connexion<\/a>                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                                                    <div class=\"wpdiscuz-subscribe-bar wpdiscuz-hidden\">\r\n                                                    <form action=\"https:\/\/schedulejs.com\/wp-admin\/admin-ajax.php?action=wpdAddSubscription\" method=\"post\" id=\"wpdiscuz-subscribe-form\">\r\n                                <div class=\"wpdiscuz-subscribe-form-intro\">Notification pour <\/div>\r\n                                <div class=\"wpdiscuz-subscribe-form-option\" style=\"width:40%;\">\r\n                                    <select class=\"wpdiscuz_select\" name=\"wpdiscuzSubscriptionType\" >\r\n                                                                                    <option value=\"post\">nouveaux commentaires de suivi<\/option>\r\n                                                                                                                                <option value=\"all_comment\" >nouvelles r\u00e9ponses \u00e0 mes commentaires<\/option>\r\n                                                                                <\/select>\r\n                                <\/div>\r\n                                                                    <div class=\"wpdiscuz-item wpdiscuz-subscribe-form-email\">\r\n                                        <input  class=\"email\" type=\"email\" name=\"wpdiscuzSubscriptionEmail\" required=\"required\" value=\"\" placeholder=\"E-mail\"\/>\r\n                                    <\/div>\r\n                                                                    <div class=\"wpdiscuz-subscribe-form-button\">\r\n                                    <input id=\"wpdiscuz_subscription_button\" class=\"wpd-prim-button wpd_not_clicked\" type=\"submit\" value=\"\u203a\" name=\"wpdiscuz_subscription_button\" \/>\r\n                                <\/div> \r\n                                <input type=\"hidden\" id=\"wpdiscuz_subscribe_form_nonce\" name=\"wpdiscuz_subscribe_form_nonce\" value=\"86c07811a1\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/posts\/11027\" \/>                            <\/form>\r\n                                                <\/div>\r\n                            <div class=\"wpd-form wpd-form-wrapper wpd-main-form-wrapper\" id='wpd-main-form-wrapper-0_0'>\r\n                                        <form class=\"wpd_comm_form wpd_main_comm_form\"\r\n                      method=\"post\" enctype=\"multipart\/form-data\" data-uploading=\"false\">\r\n                    <div class=\"wpd-field-comment\">\r\n                        <div class=\"wpdiscuz-item wc-field-textarea\">\r\n                            <div class=\"wpdiscuz-textarea-wrap \">\r\n                                                                                                        <div class=\"wpd-avatar\">\r\n                                        <img alt='guest' src='https:\/\/secure.gravatar.com\/avatar\/?s=56&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/?s=112&#038;d=mm&#038;r=g 2x' class='avatar avatar-56 photo avatar-default' height='56' width='56' \/>                                    <\/div>\r\n                                                <div id=\"wpd-editor-wraper-0_0\" style=\"display: none;\">\r\n                <div id=\"wpd-editor-char-counter-0_0\"\r\n                     class=\"wpd-editor-char-counter\"><\/div>\r\n                <label style=\"display: none;\" for=\"wc-textarea-0_0\">Label<\/label>\r\n                <textarea id=\"wc-textarea-0_0\" name=\"wc_comment\"\r\n                          class=\"wc_comment wpd-field\"><\/textarea>\r\n                <div id=\"wpd-editor-0_0\"><\/div>\r\n                        <div id=\"wpd-editor-toolbar-0_0\">\r\n                            <button title=\"Bold\"\r\n                        class=\"ql-bold\"  ><\/button>\r\n                                <button title=\"Italic\"\r\n                        class=\"ql-italic\"  ><\/button>\r\n                                <button title=\"Underline\"\r\n                        class=\"ql-underline\"  ><\/button>\r\n                                <button title=\"Strike\"\r\n                        class=\"ql-strike\"  ><\/button>\r\n                                <button title=\"Ordered List\"\r\n                        class=\"ql-list\" value='ordered' ><\/button>\r\n                                <button title=\"Unordered List\"\r\n                        class=\"ql-list\" value='bullet' ><\/button>\r\n                                <button title=\"Blockquote\"\r\n                        class=\"ql-blockquote\"  ><\/button>\r\n                                <button title=\"Code Block\"\r\n                        class=\"ql-code-block\"  ><\/button>\r\n                                <button title=\"Link\"\r\n                        class=\"ql-link\"  ><\/button>\r\n                                <button title=\"Source Code\"\r\n                        class=\"ql-sourcecode\"  data-wpde_button_name='sourcecode'>{}<\/button>\r\n                                <button title=\"Spoiler\"\r\n                        class=\"ql-spoiler\"  data-wpde_button_name='spoiler'>[+]<\/button>\r\n                            <div class=\"wpd-editor-buttons-right\">\r\n                <span class='wmu-upload-wrap' wpd-tooltip='Attacher une image \u00e0 ce commentaire' wpd-tooltip-position='left'><label class='wmu-add'><i class='far fa-image'><\/i><input style='display:none;' class='wmu-add-files' type='file' name='wmu_files[]'  accept='image\/*'\/><\/label><\/span>            <\/div>\r\n        <\/div>\r\n                    <\/div>\r\n                                        <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"wpd-form-foot\" style='display:none;'>\r\n                        <div class=\"wpdiscuz-textarea-foot\">\r\n                                                        <div class=\"wpdiscuz-button-actions\"><div class='wmu-action-wrap'><div class='wmu-tabs wmu-images-tab wmu-hide'><\/div><\/div><\/div>\r\n                        <\/div>\r\n                                <div class=\"wpd-form-row\">\r\n                    <div class=\"wpd-form-col-left\">\r\n                        <div class=\"wpdiscuz-item wc_name-wrapper wpd-has-icon\">\r\n                                    <div class=\"wpd-field-icon\"><i class=\"fas fa-user\"><\/i><\/div>\r\n                                    <input id=\"wc_name-0_0\" value=\"\" required='required' aria-required='true' class=\"wc_name wpd-field\" type=\"text\" name=\"wc_name\" placeholder=\"Nom*\" maxlength=\"50\" pattern='.{3,50}' title=\"\">\r\n                <label for=\"wc_name-0_0\" class=\"wpdlb\">Nom*<\/label>\r\n                            <\/div>\r\n                        <div class=\"wpdiscuz-item wc_email-wrapper wpd-has-icon\">\r\n                                    <div class=\"wpd-field-icon\"><i class=\"fas fa-at\"><\/i><\/div>\r\n                                    <input id=\"wc_email-0_0\" value=\"\" required='required' aria-required='true' class=\"wc_email wpd-field\" type=\"email\" name=\"wc_email\" placeholder=\"E-mail*\" \/>\r\n                <label for=\"wc_email-0_0\" class=\"wpdlb\">E-mail*<\/label>\r\n                            <\/div>\r\n                            <div class=\"wpdiscuz-item wc_website-wrapper wpd-has-icon\">\r\n                                            <div class=\"wpd-field-icon\"><i class=\"fas fa-link\"><\/i><\/div>\r\n                                        <input id=\"wc_website-0_0\" value=\"\" class=\"wc_website wpd-field\" type=\"text\" name=\"wc_website\" placeholder=\"Site web\" \/>\r\n                    <label for=\"wc_website-0_0\" class=\"wpdlb\">Site web<\/label>\r\n                                    <\/div>\r\n                        <\/div>\r\n                <div class=\"wpd-form-col-right\">\r\n                    <div class=\"wc-field-submit\">\r\n                                            \r\n                                            <label class=\"wpd_label\" wpd-tooltip=\"Notifier des nouvelles r\u00e9ponses \u00e0 tous mes commentaires\">\r\n                            <input id=\"wc_notification_new_comment-0_0\" class=\"wc_notification_new_comment-0_0 wpd_label__checkbox\" value=\"comment\" type=\"checkbox\" name=\"wpdiscuz_notification_type\" \/>\r\n                            <span class=\"wpd_label__text\">\r\n                                <span class=\"wpd_label__check\">\r\n                                    <i class=\"fas fa-bell wpdicon wpdicon-on\"><\/i>\r\n                                    <i class=\"fas fa-bell-slash wpdicon wpdicon-off\"><\/i>\r\n                                <\/span>\r\n                            <\/span>\r\n                        <\/label>\r\n                                                                <input id=\"wpd-field-submit-0_0\" class=\"wc_comm_submit wpd_not_clicked wpd-prim-button\" type=\"submit\" name=\"submit\" value=\"Publier le commentaire\" \/>\r\n        <\/div>\r\n                <\/div>\r\n                    <div class=\"clearfix\"><\/div>\r\n        <\/div>\r\n                            <\/div>\r\n                                        <input type=\"hidden\" class=\"wpdiscuz_unique_id\" value=\"0_0\"\r\n                           name=\"wpdiscuz_unique_id\">\r\n                                    <\/form>\r\n                        <\/div>\r\n                <div id=\"wpdiscuz_hidden_secondary_form\" style=\"display: none;\">\r\n                    <div class=\"wpd-form wpd-form-wrapper wpd-secondary-form-wrapper\" id='wpd-secondary-form-wrapper-wpdiscuzuniqueid' style='display: none;'>\r\n                            <div class=\"wpd-secondary-forms-social-content\"><\/div>\r\n                <div class=\"clearfix\"><\/div>\r\n                                        <form class=\"wpd_comm_form wpd-secondary-form-wrapper\"\r\n                      method=\"post\" enctype=\"multipart\/form-data\" data-uploading=\"false\">\r\n                    <div class=\"wpd-field-comment\">\r\n                        <div class=\"wpdiscuz-item wc-field-textarea\">\r\n                            <div class=\"wpdiscuz-textarea-wrap \">\r\n                                                                                                        <div class=\"wpd-avatar\">\r\n                                        <img alt='guest' src='https:\/\/secure.gravatar.com\/avatar\/?s=56&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/?s=112&#038;d=mm&#038;r=g 2x' class='avatar avatar-56 photo avatar-default' height='56' width='56' \/>                                    <\/div>\r\n                                                <div id=\"wpd-editor-wraper-wpdiscuzuniqueid\" style=\"display: none;\">\r\n                <div id=\"wpd-editor-char-counter-wpdiscuzuniqueid\"\r\n                     class=\"wpd-editor-char-counter\"><\/div>\r\n                <label style=\"display: none;\" for=\"wc-textarea-wpdiscuzuniqueid\">Label<\/label>\r\n                <textarea id=\"wc-textarea-wpdiscuzuniqueid\" name=\"wc_comment\"\r\n                          class=\"wc_comment wpd-field\"><\/textarea>\r\n                <div id=\"wpd-editor-wpdiscuzuniqueid\"><\/div>\r\n                        <div id=\"wpd-editor-toolbar-wpdiscuzuniqueid\">\r\n                            <button title=\"Bold\"\r\n                        class=\"ql-bold\"  ><\/button>\r\n                                <button title=\"Italic\"\r\n                        class=\"ql-italic\"  ><\/button>\r\n                                <button title=\"Underline\"\r\n                        class=\"ql-underline\"  ><\/button>\r\n                                <button title=\"Strike\"\r\n                        class=\"ql-strike\"  ><\/button>\r\n                                <button title=\"Ordered List\"\r\n                        class=\"ql-list\" value='ordered' ><\/button>\r\n                                <button title=\"Unordered List\"\r\n                        class=\"ql-list\" value='bullet' ><\/button>\r\n                                <button title=\"Blockquote\"\r\n                        class=\"ql-blockquote\"  ><\/button>\r\n                                <button title=\"Code Block\"\r\n                        class=\"ql-code-block\"  ><\/button>\r\n                                <button title=\"Link\"\r\n                        class=\"ql-link\"  ><\/button>\r\n                                <button title=\"Source Code\"\r\n                        class=\"ql-sourcecode\"  data-wpde_button_name='sourcecode'>{}<\/button>\r\n                                <button title=\"Spoiler\"\r\n                        class=\"ql-spoiler\"  data-wpde_button_name='spoiler'>[+]<\/button>\r\n                            <div class=\"wpd-editor-buttons-right\">\r\n                <span class='wmu-upload-wrap' wpd-tooltip='Attacher une image \u00e0 ce commentaire' wpd-tooltip-position='left'><label class='wmu-add'><i class='far fa-image'><\/i><input style='display:none;' class='wmu-add-files' type='file' name='wmu_files[]'  accept='image\/*'\/><\/label><\/span>            <\/div>\r\n        <\/div>\r\n                    <\/div>\r\n                                        <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"wpd-form-foot\" style='display:none;'>\r\n                        <div class=\"wpdiscuz-textarea-foot\">\r\n                                                        <div class=\"wpdiscuz-button-actions\"><div class='wmu-action-wrap'><div class='wmu-tabs wmu-images-tab wmu-hide'><\/div><\/div><\/div>\r\n                        <\/div>\r\n                                <div class=\"wpd-form-row\">\r\n                    <div class=\"wpd-form-col-left\">\r\n                        <div class=\"wpdiscuz-item wc_name-wrapper wpd-has-icon\">\r\n                                    <div class=\"wpd-field-icon\"><i class=\"fas fa-user\"><\/i><\/div>\r\n                                    <input id=\"wc_name-wpdiscuzuniqueid\" value=\"\" required='required' aria-required='true' class=\"wc_name wpd-field\" type=\"text\" name=\"wc_name\" placeholder=\"Nom*\" maxlength=\"50\" pattern='.{3,50}' title=\"\">\r\n                <label for=\"wc_name-wpdiscuzuniqueid\" class=\"wpdlb\">Nom*<\/label>\r\n                            <\/div>\r\n                        <div class=\"wpdiscuz-item wc_email-wrapper wpd-has-icon\">\r\n                                    <div class=\"wpd-field-icon\"><i class=\"fas fa-at\"><\/i><\/div>\r\n                                    <input id=\"wc_email-wpdiscuzuniqueid\" value=\"\" required='required' aria-required='true' class=\"wc_email wpd-field\" type=\"email\" name=\"wc_email\" placeholder=\"E-mail*\" \/>\r\n                <label for=\"wc_email-wpdiscuzuniqueid\" class=\"wpdlb\">E-mail*<\/label>\r\n                            <\/div>\r\n                            <div class=\"wpdiscuz-item wc_website-wrapper wpd-has-icon\">\r\n                                            <div class=\"wpd-field-icon\"><i class=\"fas fa-link\"><\/i><\/div>\r\n                                        <input id=\"wc_website-wpdiscuzuniqueid\" value=\"\" class=\"wc_website wpd-field\" type=\"text\" name=\"wc_website\" placeholder=\"Site web\" \/>\r\n                    <label for=\"wc_website-wpdiscuzuniqueid\" class=\"wpdlb\">Site web<\/label>\r\n                                    <\/div>\r\n                        <\/div>\r\n                <div class=\"wpd-form-col-right\">\r\n                    <div class=\"wc-field-submit\">\r\n                                            \r\n                                            <label class=\"wpd_label\" wpd-tooltip=\"Notifier des nouvelles r\u00e9ponses \u00e0 tous mes commentaires\">\r\n                            <input id=\"wc_notification_new_comment-wpdiscuzuniqueid\" class=\"wc_notification_new_comment-wpdiscuzuniqueid wpd_label__checkbox\" value=\"comment\" type=\"checkbox\" name=\"wpdiscuz_notification_type\" \/>\r\n                            <span class=\"wpd_label__text\">\r\n                                <span class=\"wpd_label__check\">\r\n                                    <i class=\"fas fa-bell wpdicon wpdicon-on\"><\/i>\r\n                                    <i class=\"fas fa-bell-slash wpdicon wpdicon-off\"><\/i>\r\n                                <\/span>\r\n                            <\/span>\r\n                        <\/label>\r\n                                                                <input id=\"wpd-field-submit-wpdiscuzuniqueid\" class=\"wc_comm_submit wpd_not_clicked wpd-prim-button\" type=\"submit\" name=\"submit\" value=\"Publier le commentaire\" \/>\r\n        <\/div>\r\n                <\/div>\r\n                    <div class=\"clearfix\"><\/div>\r\n        <\/div>\r\n                            <\/div>\r\n                                        <input type=\"hidden\" class=\"wpdiscuz_unique_id\" value=\"wpdiscuzuniqueid\"\r\n                           name=\"wpdiscuz_unique_id\">\r\n                                    <\/form>\r\n                        <\/div>\r\n                <\/div>\r\n                    <\/div>\r\n                        <div id=\"wpd-threads\" class=\"wpd-thread-wrapper\">\r\n                <div class=\"wpd-thread-head\">\r\n                    <div class=\"wpd-thread-info \" data-comments-count=\"1\">\r\n                        <span class='wpdtc' title='1'>1<\/span> Commentaire                    <\/div>\r\n                                        <div class=\"wpd-space\"><\/div>\r\n                    <div class=\"wpd-thread-filter\">\r\n                                                    <div class=\"wpd-filter wpdf-reacted wpd_not_clicked\" wpd-tooltip=\"Commentaire avec le plus de r\u00e9actions\"><i class=\"fas fa-bolt\"><\/i><\/div>\r\n                                                        <div class=\"wpd-filter wpdf-hottest wpd_not_clicked\" wpd-tooltip=\"Fil de commentaire le plus chaud\"><i class=\"fas fa-fire\"><\/i><\/div>\r\n                                                        <div class=\"wpd-filter wpdf-sorting\">\r\n                                                                        <span class=\"wpdiscuz-sort-button wpdiscuz-date-sort-asc wpdiscuz-sort-button-active\" data-sorting=\"oldest\">Le plus ancien<\/span>\r\n                                                                        <i class=\"fas fa-sort-down\"><\/i>\r\n                                <div class=\"wpdiscuz-sort-buttons\">\r\n                                                                            <span class=\"wpdiscuz-sort-button wpdiscuz-date-sort-desc\" data-sorting=\"newest\">Le plus r\u00e9cent<\/span>\r\n                                                                                <span class=\"wpdiscuz-sort-button wpdiscuz-vote-sort-up\" data-sorting=\"by_vote\">Le plus populaire<\/span>\r\n                                                                        <\/div>\r\n                            <\/div>\r\n                                                <\/div>\r\n                <\/div>\r\n                <div class=\"wpd-comment-info-bar\">\r\n                    <div class=\"wpd-current-view\"><i class=\"fas fa-quote-left\"><\/i> Comments<\/div>\r\n                    <div class=\"wpd-filter-view-all\">Show all comments<\/div>\r\n                <\/div>\r\n                                <div class=\"wpd-thread-list\">\r\n                    <div id='wpd-comm-73_0' class='comment even thread-even depth-1 wpd-comment wpd_comment_level-1'><div class=\"wpd-comment-wrap wpd-blog-guest\">\r\n    <div class=\"wpd-comment-left \">\r\n    <div class=\"wpd-avatar \">\r\n    <img alt='lenormor' src='https:\/\/secure.gravatar.com\/avatar\/cc853959ecaa102f1edfb92e53cb80ddb39f99aad04bf727c1804947d0b89f38?s=64&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/cc853959ecaa102f1edfb92e53cb80ddb39f99aad04bf727c1804947d0b89f38?s=128&#038;d=mm&#038;r=g 2x' class='avatar avatar-64 photo' height='64' width='64' \/>\r\n<\/div>\r\n    \r\n    \r\n<\/div>\r\n    <div id=\"comment-73\" class=\"wpd-comment-right\">\r\n    <div class=\"wpd-comment-header\">\r\n    <div class=\"wpd-comment-author \">\r\n    lenormor\r\n<\/div>\r\n    <div class=\"wpd-comment-date\" title=\"novembre 26, 2024 10:55 am\">\r\n    <i class='far fa-clock' aria-hidden='true'><\/i>\r\n    1 year \r\n<\/div>\r\n    \r\n    <div class=\"wpd-comment-share wpd-hidden wpd-tooltip wpd-top\">\r\n    <i class='fas fa-share-alt' aria-hidden='true'><\/i>\r\n    <div class=\"wpd-tooltip-content\">\r\n        <a class='wc_tw' rel='noreferrer' target='_blank' href='https:\/\/twitter.com\/intent\/tweet?text=Very good article, thanks for sharing.\n&url=https%3A%2F%2Fschedulejs.com%2Ffr%2Ftop-3-best-javascript-gantt-chart-components%2F%23comment-73' title='Share on Twitter'><i class='fab fa-twitter wpf-cta' aria-hidden='true'><\/i><\/a><a class='wc_vk' rel='noreferrer' target='_blank' href='https:\/\/vk.com\/share.php?url=https:\/\/schedulejs.com\/en\/top-3-best-javascript-gantt-chart-components\/' title='Share on VKontakte'><i class='fab fa-vk wpf-cta' aria-hidden='true'><\/i><\/a><a class='wc_ok' rel='noreferrer' target='_blank' href='https:\/\/connect.ok.ru\/offer?url=https:\/\/schedulejs.com\/en\/top-3-best-javascript-gantt-chart-components\/' title='Share on Odnoklassniki'><i class='fab fa-odnoklassniki wpf-cta' aria-hidden='true'><\/i><\/a>\r\n    <\/div>\r\n<\/div>\r\n    <div class=\"wpd-space\"><\/div>\r\n    <div class=\"wpd-comment-link wpd-hidden\">\r\n    <span wpd-tooltip='Comment link' wpd-tooltip-position='left'><i class='fas fa-link' aria-hidden='true' data-wpd-clipboard='https:\/\/schedulejs.com\/fr\/top-3-best-javascript-gantt-chart-components\/#comment-73'><\/i><\/span>\r\n<\/div>\r\n<\/div>\r\n    \r\n    <div class=\"wpd-comment-text\">\r\n    <p>Very good article, thanks for sharing.<\/p>\n\r\n<\/div>\r\n    <div class=\"wpd-comment-footer\">\r\n    <div class=\"wpd-vote\">\r\n    <div class=\"wpd-vote-up wpd_not_clicked\">\r\n        <svg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='plus' class='svg-inline--fa fa-plus fa-w-14' role='img' xmlns='https:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z'><\/path><\/svg>\r\n    <\/div>\r\n    <div class='wpd-vote-result' title='0'>0<\/div>\r\n    <div class=\"wpd-vote-down wpd_not_clicked\">\r\n        <svg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='minus' class='svg-inline--fa fa-minus fa-w-14' role='img' xmlns='https:\/\/www.w3.org\/2000\/svg' viewBox='0 0 448 512'><path d='M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z'><\/path><\/svg>\r\n    <\/div>\r\n<\/div>\r\n    <div class=\"wpd-reply-button\">\r\n    <svg xmlns='https:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24'><path d='M10 9V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z'\/><path d='M0 0h24v24H0z' fill='none'\/><\/svg>\r\n    <span>Answer<\/span>\r\n<\/div>\r\n    <div class=\"wpd-space\"><\/div>\r\n    \r\n    \r\n<\/div>\r\n<\/div>\r\n<\/div><div id='wpdiscuz_form_anchor-73_0'><\/div><\/div><!-- \/\/ From wpDiscuz's Caches \/\/ -->                    <div class=\"wpdiscuz-comment-pagination\">\r\n                                            <\/div>\r\n                <\/div>\r\n            <\/div>\r\n                <\/div>\r\n        <\/div>\r\n    <div id=\"wpdiscuz-loading-bar\" class=\"wpdiscuz-loading-bar-unauth\"><\/div>\r\n    <div id=\"wpdiscuz-comment-message\" class=\"wpdiscuz-comment-message-unauth\"><\/div>\r\n    <\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>This article proposes a step-by-step implementation of an animation mechanism using JavaScript Date API for your activities.<\/p>\n","protected":false},"author":1,"featured_media":11089,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"footnotes":""},"categories":[57],"tags":[],"class_list":["post-11027","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-implementations","blog-post blog-spacing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Drawing animations - ScheduleJS Blog<\/title>\n<meta name=\"description\" content=\"This article proposes a step-by-step implementation of an drawing animations mechanism using JavaScript Date API for your activities.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/schedulejs.com\/en\/drawing-animations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Drawing animations - ScheduleJS Blog\" \/>\n<meta property=\"og:description\" content=\"This article proposes a step-by-step implementation of an drawing animations mechanism using JavaScript Date API for your activities.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/schedulejs.com\/en\/drawing-animations\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-02T13:27:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-02T07:28:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/schedulejs.com\/wp-content\/uploads\/2022\/11\/calendar-blue.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1080\" \/>\n\t<meta property=\"og:image:height\" content=\"671\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"wordpress\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ScheduleJS\" \/>\n<meta name=\"twitter:site\" content=\"@ScheduleJS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"wordpress\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/\"},\"author\":{\"name\":\"wordpress\",\"@id\":\"https:\\\/\\\/schedulejs.com\\\/#\\\/schema\\\/person\\\/dcf1d1444881cf1c59df51e7f2c07dbd\"},\"headline\":\"Drawing animations\",\"datePublished\":\"2023-05-02T13:27:31+00:00\",\"dateModified\":\"2024-07-02T07:28:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/\"},\"wordCount\":824,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/schedulejs.com\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/calendar-blue.png\",\"articleSection\":[\"Implementations\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/\",\"url\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/\",\"name\":\"Drawing animations - ScheduleJS Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/schedulejs.com\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/calendar-blue.png\",\"datePublished\":\"2023-05-02T13:27:31+00:00\",\"dateModified\":\"2024-07-02T07:28:01+00:00\",\"description\":\"This article proposes a step-by-step implementation of an drawing animations mechanism using JavaScript Date API for your activities.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/#primaryimage\",\"url\":\"https:\\\/\\\/schedulejs.com\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/calendar-blue.png\",\"contentUrl\":\"https:\\\/\\\/schedulejs.com\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/calendar-blue.png\",\"width\":1080,\"height\":671,\"caption\":\"Gantt Organnisation\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/schedulejs.com\\\/drawing-animations\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/schedulejs.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Drawing animations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/schedulejs.com\\\/#website\",\"url\":\"https:\\\/\\\/schedulejs.com\\\/\",\"name\":\"ScheduleJS - Applicative Gantt charts\",\"description\":\"Create advanced Gantt charts using web technologies\",\"publisher\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/#organization\"},\"alternateName\":\"ScheduleJS\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/schedulejs.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/schedulejs.com\\\/#organization\",\"name\":\"ScheduleJS\",\"url\":\"https:\\\/\\\/schedulejs.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/schedulejs.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/schedulejs.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/logo_schedulejs_blue_1500x500.png\",\"contentUrl\":\"https:\\\/\\\/schedulejs.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/logo_schedulejs_blue_1500x500.png\",\"width\":1500,\"height\":500,\"caption\":\"ScheduleJS\"},\"image\":{\"@id\":\"https:\\\/\\\/schedulejs.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/ScheduleJS\",\"https:\\\/\\\/www.linkedin.com\\\/showcase\\\/schedulejs\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/schedulejs.com\\\/#\\\/schema\\\/person\\\/dcf1d1444881cf1c59df51e7f2c07dbd\",\"name\":\"wordpress\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6a75ce3fbea1f5d75b3421485bbb1d13c75ccd55580543fd67bcca73f43984b4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6a75ce3fbea1f5d75b3421485bbb1d13c75ccd55580543fd67bcca73f43984b4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6a75ce3fbea1f5d75b3421485bbb1d13c75ccd55580543fd67bcca73f43984b4?s=96&d=mm&r=g\",\"caption\":\"wordpress\"},\"sameAs\":[\"https:\\\/\\\/schedulejs.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Drawing animations - ScheduleJS Blog","description":"This article proposes a step-by-step implementation of an drawing animations mechanism using JavaScript Date API for your activities.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/schedulejs.com\/en\/drawing-animations\/","og_locale":"en_US","og_type":"article","og_title":"Drawing animations - ScheduleJS Blog","og_description":"This article proposes a step-by-step implementation of an drawing animations mechanism using JavaScript Date API for your activities.","og_url":"https:\/\/schedulejs.com\/en\/drawing-animations\/","article_published_time":"2023-05-02T13:27:31+00:00","article_modified_time":"2024-07-02T07:28:01+00:00","og_image":[{"width":1080,"height":671,"url":"https:\/\/schedulejs.com\/wp-content\/uploads\/2022\/11\/calendar-blue.png","type":"image\/png"}],"author":"wordpress","twitter_card":"summary_large_image","twitter_creator":"@ScheduleJS","twitter_site":"@ScheduleJS","twitter_misc":{"Written by":"wordpress","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/schedulejs.com\/drawing-animations\/#article","isPartOf":{"@id":"https:\/\/schedulejs.com\/drawing-animations\/"},"author":{"name":"wordpress","@id":"https:\/\/schedulejs.com\/#\/schema\/person\/dcf1d1444881cf1c59df51e7f2c07dbd"},"headline":"Drawing animations","datePublished":"2023-05-02T13:27:31+00:00","dateModified":"2024-07-02T07:28:01+00:00","mainEntityOfPage":{"@id":"https:\/\/schedulejs.com\/drawing-animations\/"},"wordCount":824,"commentCount":0,"publisher":{"@id":"https:\/\/schedulejs.com\/#organization"},"image":{"@id":"https:\/\/schedulejs.com\/drawing-animations\/#primaryimage"},"thumbnailUrl":"https:\/\/schedulejs.com\/wp-content\/uploads\/2022\/11\/calendar-blue.png","articleSection":["Implementations"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/schedulejs.com\/drawing-animations\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/schedulejs.com\/drawing-animations\/","url":"https:\/\/schedulejs.com\/drawing-animations\/","name":"Drawing animations - ScheduleJS Blog","isPartOf":{"@id":"https:\/\/schedulejs.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/schedulejs.com\/drawing-animations\/#primaryimage"},"image":{"@id":"https:\/\/schedulejs.com\/drawing-animations\/#primaryimage"},"thumbnailUrl":"https:\/\/schedulejs.com\/wp-content\/uploads\/2022\/11\/calendar-blue.png","datePublished":"2023-05-02T13:27:31+00:00","dateModified":"2024-07-02T07:28:01+00:00","description":"This article proposes a step-by-step implementation of an drawing animations mechanism using JavaScript Date API for your activities.","breadcrumb":{"@id":"https:\/\/schedulejs.com\/drawing-animations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/schedulejs.com\/drawing-animations\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/schedulejs.com\/drawing-animations\/#primaryimage","url":"https:\/\/schedulejs.com\/wp-content\/uploads\/2022\/11\/calendar-blue.png","contentUrl":"https:\/\/schedulejs.com\/wp-content\/uploads\/2022\/11\/calendar-blue.png","width":1080,"height":671,"caption":"Gantt Organnisation"},{"@type":"BreadcrumbList","@id":"https:\/\/schedulejs.com\/drawing-animations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/schedulejs.com\/"},{"@type":"ListItem","position":2,"name":"Drawing animations"}]},{"@type":"WebSite","@id":"https:\/\/schedulejs.com\/#website","url":"https:\/\/schedulejs.com\/","name":"ScheduleJS - Applicative Gantt charts","description":"Create advanced Gantt charts using web technologies","publisher":{"@id":"https:\/\/schedulejs.com\/#organization"},"alternateName":"ScheduleJS","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/schedulejs.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/schedulejs.com\/#organization","name":"ScheduleJS","url":"https:\/\/schedulejs.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/schedulejs.com\/#\/schema\/logo\/image\/","url":"https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/05\/logo_schedulejs_blue_1500x500.png","contentUrl":"https:\/\/schedulejs.com\/wp-content\/uploads\/2021\/05\/logo_schedulejs_blue_1500x500.png","width":1500,"height":500,"caption":"ScheduleJS"},"image":{"@id":"https:\/\/schedulejs.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ScheduleJS","https:\/\/www.linkedin.com\/showcase\/schedulejs\/"]},{"@type":"Person","@id":"https:\/\/schedulejs.com\/#\/schema\/person\/dcf1d1444881cf1c59df51e7f2c07dbd","name":"wordpress","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/6a75ce3fbea1f5d75b3421485bbb1d13c75ccd55580543fd67bcca73f43984b4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6a75ce3fbea1f5d75b3421485bbb1d13c75ccd55580543fd67bcca73f43984b4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6a75ce3fbea1f5d75b3421485bbb1d13c75ccd55580543fd67bcca73f43984b4?s=96&d=mm&r=g","caption":"wordpress"},"sameAs":["https:\/\/schedulejs.com"]}]}},"_links":{"self":[{"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/posts\/11027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/comments?post=11027"}],"version-history":[{"count":0,"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/posts\/11027\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/media\/11089"}],"wp:attachment":[{"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/media?parent=11027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/categories?post=11027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/schedulejs.com\/en\/wp-json\/wp\/v2\/tags?post=11027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}