feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
This commit is contained in:
82
f_scripts/shared/datepicker/date-range-picker.css
Normal file
82
f_scripts/shared/datepicker/date-range-picker.css
Normal file
@@ -0,0 +1,82 @@
|
||||
.dr-cals {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
background: white;
|
||||
box-shadow: 8px 8px 32px -16px rgba(0, 0, 0, 0.5);
|
||||
padding-top: 6px;
|
||||
position: relative;
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.dr-cals:before {
|
||||
content: ' ';
|
||||
height: 6px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: #3B99FC;
|
||||
background: linear-gradient(-90deg, #3B99FC 0%, #8AEFC8 100%);
|
||||
}
|
||||
|
||||
.dr-cals .dp-edge-day {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.dr-cals .dp-cal-footer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dr-cals .dp {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.dr-cals .dp-permanent {
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.dr-cals .dp-selected:focus,
|
||||
.dr-cals .dp-selected,
|
||||
.dr-cals .dp-current:focus,
|
||||
.dr-cals .dp-current {
|
||||
background: transparent;
|
||||
color: inherit;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.dr-cal-end .dp {
|
||||
border-left: 8px solid #F5F5F5;
|
||||
}
|
||||
|
||||
.dr-cal-start .dp-next,
|
||||
.dr-cal-end .dp-prev {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.dr-cals .dp-current:hover,
|
||||
.dr-cals .dr-in-range:hover,
|
||||
.dr-cals .dr-in-range:focus,
|
||||
.dr-cals .dr-in-range {
|
||||
background: #75BCFC;
|
||||
color: white;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.dr-cals .dr-selected:hover,
|
||||
.dr-cals .dr-selected:focus,
|
||||
.dr-cals .dr-selected {
|
||||
background: #3B99FC;
|
||||
color: white;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 616px), (max-height: 480px) {
|
||||
.dr-cal-end {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dr-cal-start .dp-next {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
1274
f_scripts/shared/datepicker/date-range-picker.js
Normal file
1274
f_scripts/shared/datepicker/date-range-picker.js
Normal file
File diff suppressed because it is too large
Load Diff
1
f_scripts/shared/datepicker/date-range-picker.min.css
vendored
Normal file
1
f_scripts/shared/datepicker/date-range-picker.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.dr-cals{display:flex;justify-content:space-between;background:white;box-shadow:8px 8px 32px -16px rgba(0,0,0,0.5);padding-top:6px;position:relative;border-radius:6px;overflow:hidden}.dr-cals:before{content:' ';height:6px;position:absolute;top:0;left:0;right:0;background:#3b99fc;background:linear-gradient(-90deg,#3b99fc 0,#8aefc8 100%)}.dr-cals .dp-edge-day{visibility:hidden}.dr-cals .dp-cal-footer{display:none}.dr-cals .dp{border:0}.dr-cals .dp-permanent{max-width:300px}.dr-cals .dp-selected:focus,.dr-cals .dp-selected,.dr-cals .dp-current:focus,.dr-cals .dp-current{background:transparent;color:inherit;border-radius:0}.dr-cal-end .dp{border-left:8px solid #f5f5f5}.dr-cal-start .dp-next,.dr-cal-end .dp-prev{visibility:hidden}.dr-cals .dp-current:hover,.dr-cals .dr-in-range:hover,.dr-cals .dr-in-range:focus,.dr-cals .dr-in-range{background:#75bcfc;color:white;border-radius:0}.dr-cals .dr-selected:hover,.dr-cals .dr-selected:focus,.dr-cals .dr-selected{background:#3b99fc;color:white;border-radius:0}@media(max-width:616px),(max-height:480px){.dr-cal-end{display:none}.dr-cal-start .dp-next{visibility:visible}}
|
||||
2
f_scripts/shared/datepicker/date-range-picker.min.js
vendored
Normal file
2
f_scripts/shared/datepicker/date-range-picker.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
f_scripts/shared/datepicker/date-range-picker.min.js.map
Normal file
1
f_scripts/shared/datepicker/date-range-picker.min.js.map
Normal file
File diff suppressed because one or more lines are too long
305
f_scripts/shared/datepicker/tiny-date-picker.css
Normal file
305
f_scripts/shared/datepicker/tiny-date-picker.css
Normal file
@@ -0,0 +1,305 @@
|
||||
.dp-modal {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(255, 255, 255, 0.75);
|
||||
}
|
||||
|
||||
.dp {
|
||||
position: relative;
|
||||
background: #FFF;
|
||||
box-shadow: 2px 2px 16px rgba(0, 0, 0, 0.25);
|
||||
line-height: 1.4;
|
||||
border-radius: 4px;
|
||||
max-height: 400px;
|
||||
z-index: 1000;
|
||||
padding-top: 6px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.dp:before {
|
||||
content: ' ';
|
||||
height: 6px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: #3B99FC;
|
||||
background: linear-gradient(-90deg, #3B99FC 0%, #8AEFC8 100%);
|
||||
}
|
||||
|
||||
.dp-permanent .dp {
|
||||
padding-top: 0;
|
||||
border: 1px solid #EEE;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.dp-permanent .dp:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dp-cal {
|
||||
min-height: 300px;
|
||||
}
|
||||
|
||||
.dp-below {
|
||||
position: absolute;
|
||||
font-size: 0.8em;
|
||||
width: 400px;
|
||||
max-width: 100vw;
|
||||
}
|
||||
|
||||
.dp-permanent {
|
||||
position: relative;
|
||||
font-size: 0.8em;
|
||||
width: 400px;
|
||||
max-width: 100vw;
|
||||
}
|
||||
|
||||
.dp-permanent .dp{
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.dp-modal .dp {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
max-width: 600px;
|
||||
width: calc(100% - 4em);
|
||||
transform: translate(-50%, -50%);
|
||||
animation: slide-up 0.3s forwards;
|
||||
}
|
||||
|
||||
.dp-months {
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
.dp-years {
|
||||
box-sizing: border-box;
|
||||
max-height: 400px;
|
||||
padding: 8px 0;
|
||||
overflow: auto !important; /* HACK for Chrome on Android */
|
||||
}
|
||||
|
||||
.dp-cal-month,
|
||||
.dp-cal-year,
|
||||
.dp-day,
|
||||
.dp-month,
|
||||
.dp-year {
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
color: #3B404D !important;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.dp-cal-header {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
padding-bottom: 16px;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.dp-next,
|
||||
.dp-prev {
|
||||
position: absolute;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
overflow: hidden;
|
||||
top: 14px;
|
||||
color: #777 !important;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.dp-next:focus,
|
||||
.dp-prev:focus,
|
||||
.dp-next:hover,
|
||||
.dp-prev:hover {
|
||||
outline: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.dp-prev {
|
||||
left: 24px;
|
||||
}
|
||||
|
||||
.dp-next {
|
||||
right: 24px;
|
||||
}
|
||||
|
||||
.dp-prev:before,
|
||||
.dp-next:before {
|
||||
content: '';
|
||||
border: 2px solid;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
display: inline-block;
|
||||
transform: rotate(-45deg);
|
||||
transition: border-color 0.2s;
|
||||
margin: 9px 0 40px 4px;
|
||||
}
|
||||
|
||||
.dp-prev:before {
|
||||
border-right: 0;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.dp-next:before {
|
||||
border-left: 0;
|
||||
border-top: 0;
|
||||
margin-left: 0;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.dp-cal-month,
|
||||
.dp-cal-year {
|
||||
display: inline-block;
|
||||
font-size: 1.4em;
|
||||
padding: 16px 8px 8px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.dp-cal-footer {
|
||||
text-align: center;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.dp-day-today:after {
|
||||
content: '';
|
||||
height: 0;
|
||||
width: 0;
|
||||
border: 7px solid #227BD7;
|
||||
border-bottom-color: transparent;
|
||||
border-left-color: transparent;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.dp-close,
|
||||
.dp-clear,
|
||||
.dp-today {
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
width: 33%;
|
||||
padding: 8px;
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.dp-permanent .dp-close,
|
||||
.dp-permanent .dp-clear {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dp-close:hover,
|
||||
.dp-close:focus,
|
||||
.dp-clear:hover,
|
||||
.dp-clear:focus,
|
||||
.dp-today:hover,
|
||||
.dp-today:focus,
|
||||
.dp-next:hover,
|
||||
.dp-next:focus,
|
||||
.dp-prev:hover,
|
||||
.dp-prev:focus,
|
||||
.dp-cal-month:focus,
|
||||
.dp-cal-month:hover,
|
||||
.dp-cal-year:hover,
|
||||
.dp-cal-year:focus {
|
||||
background: #75BCFC;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.dp-col-header,
|
||||
.dp-day {
|
||||
width: 14.28571429%;
|
||||
display: inline-block;
|
||||
padding: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dp-col-header {
|
||||
color: #AAA;
|
||||
text-transform: uppercase;
|
||||
font-weight: 300;
|
||||
font-size: 0.8em;
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.dp-month {
|
||||
width: 33%;
|
||||
display: inline-block;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.dp-year {
|
||||
display: block;
|
||||
padding: 8px 40px;
|
||||
}
|
||||
|
||||
.dp-edge-day {
|
||||
color: #AAA;
|
||||
}
|
||||
|
||||
.dp-day:hover,
|
||||
.dp-month:hover,
|
||||
.dp-year:hover,
|
||||
.dp-current:focus,
|
||||
.dp-current,
|
||||
.dp-day:focus,
|
||||
.dp-month:focus,
|
||||
.dp-year:focus {
|
||||
outline: none;
|
||||
background: #75BCFC;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.dp-selected:hover,
|
||||
.dp-selected:focus,
|
||||
.dp-selected {
|
||||
background: #3B99FC;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
.dp-day-disabled {
|
||||
background: transparent;
|
||||
color: #DDD;
|
||||
}
|
||||
|
||||
.dp-day-disabled:focus,
|
||||
.dp-day-disabled:hover {
|
||||
background: #DDD;
|
||||
}
|
||||
|
||||
.dp-focuser {
|
||||
position: absolute;
|
||||
z-index: 0;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
}
|
||||
|
||||
/* Responsive overrides */
|
||||
@media (max-width: 480px), (max-height: 480px) {
|
||||
.dp-modal .dp {
|
||||
font-size: 0.9em;
|
||||
width: auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.dp-day-of-week,
|
||||
.dp-day {
|
||||
padding: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slide-up {
|
||||
0% {
|
||||
transform: translate(-50%, 100%);
|
||||
}
|
||||
100% {
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
}
|
||||
1114
f_scripts/shared/datepicker/tiny-date-picker.js
Normal file
1114
f_scripts/shared/datepicker/tiny-date-picker.js
Normal file
File diff suppressed because it is too large
Load Diff
1
f_scripts/shared/datepicker/tiny-date-picker.min.css
vendored
Normal file
1
f_scripts/shared/datepicker/tiny-date-picker.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.dp-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,0.75)}.dp{position:relative;background:#FFF;box-shadow:2px 2px 16px rgba(0,0,0,0.25);line-height:1.4;border-radius:4px;max-height:400px;z-index:1000;padding-top:6px;overflow:hidden}.dp:before{content:' ';height:6px;position:absolute;top:0;left:0;right:0;background:#3b99fc;background:linear-gradient(-90deg,#3b99fc 0,#8aefc8 100%)}.dp-permanent .dp{padding-top:0;border:1px solid #EEE;box-shadow:none}.dp-permanent .dp:before{display:none}.dp-cal{min-height:300px}.dp-below{position:absolute;font-size:.8em;width:400px;max-width:100vw}.dp-permanent{position:relative;font-size:.8em;width:400px;max-width:100vw}.dp-permanent .dp{z-index:0}.dp-modal .dp{position:absolute;top:50%;left:50%;max-width:600px;width:calc(100% - 4em);transform:translate(-50%,-50%);animation:slide-up .3s forwards}.dp-months{padding:24px}.dp-years{box-sizing:border-box;max-height:400px;padding:8px 0;overflow:auto !important}.dp-cal-month,.dp-cal-year,.dp-day,.dp-month,.dp-year{box-sizing:border-box;text-align:center;text-decoration:none;position:relative;color:#3b404d !important;border-radius:2px}.dp-cal-header{position:relative;text-align:center;padding-bottom:16px;background:#f5f5f5}.dp-next,.dp-prev{position:absolute;width:30px;height:30px;overflow:hidden;top:14px;color:#777 !important;border-radius:2px}.dp-next:focus,.dp-prev:focus,.dp-next:hover,.dp-prev:hover{outline:0;color:inherit}.dp-prev{left:24px}.dp-next{right:24px}.dp-prev:before,.dp-next:before{content:'';border:2px solid;width:10px;height:10px;display:inline-block;transform:rotate(-45deg);transition:border-color .2s;margin:9px 0 40px 4px}.dp-prev:before{border-right:0;border-bottom:0}.dp-next:before{border-left:0;border-top:0;margin-left:0;margin-right:4px}.dp-cal-month,.dp-cal-year{display:inline-block;font-size:1.4em;padding:16px 8px 8px;outline:0}.dp-cal-footer{text-align:center;background:#f5f5f5}.dp-day-today:after{content:'';height:0;width:0;border:7px solid #227bd7;border-bottom-color:transparent;border-left-color:transparent;position:absolute;top:0;right:0}.dp-close,.dp-clear,.dp-today{box-sizing:border-box;display:inline-block;width:33%;padding:8px;text-decoration:none;color:inherit}.dp-permanent .dp-close,.dp-permanent .dp-clear{display:none}.dp-close:hover,.dp-close:focus,.dp-clear:hover,.dp-clear:focus,.dp-today:hover,.dp-today:focus,.dp-next:hover,.dp-next:focus,.dp-prev:hover,.dp-prev:focus,.dp-cal-month:focus,.dp-cal-month:hover,.dp-cal-year:hover,.dp-cal-year:focus{background:#75bcfc;color:white}.dp-col-header,.dp-day{width:14.28571429%;display:inline-block;padding:8px;text-align:center}.dp-col-header{color:#AAA;text-transform:uppercase;font-weight:300;font-size:.8em;padding:8px 0}.dp-month{width:33%;display:inline-block;padding:8px}.dp-year{display:block;padding:8px 40px}.dp-edge-day{color:#AAA}.dp-day:hover,.dp-month:hover,.dp-year:hover,.dp-current:focus,.dp-current,.dp-day:focus,.dp-month:focus,.dp-year:focus{outline:0;background:#75bcfc;color:white}.dp-selected:hover,.dp-selected:focus,.dp-selected{background:#3b99fc;color:#FFF}.dp-day-disabled{background:transparent;color:#DDD}.dp-day-disabled:focus,.dp-day-disabled:hover{background:#DDD}.dp-focuser{position:absolute;z-index:0;top:50%;left:50%}@media(max-width:480px),(max-height:480px){.dp-modal .dp{font-size:.9em;width:auto;width:100%}.dp-day-of-week,.dp-day{padding:8px}}@keyframes slide-up{0%{transform:translate(-50%,100%)}100%{transform:translate(-50%,-50%)}}
|
||||
2
f_scripts/shared/datepicker/tiny-date-picker.min.js
vendored
Normal file
2
f_scripts/shared/datepicker/tiny-date-picker.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
f_scripts/shared/datepicker/tiny-date-picker.min.js.map
Normal file
1
f_scripts/shared/datepicker/tiny-date-picker.min.js.map
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user